NewsController.php 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: xiaofeng
  5. * Date: 2018/3/13
  6. * Time: 上午8:46
  7. * 资讯,奇葩说
  8. **/
  9. namespace backend\controllers;
  10. use backend\base\CommonController;
  11. use backend\base\Help;
  12. use backend\server\NewsInformation;
  13. use backend\server\UploadFile;
  14. use common\models\House;
  15. use common\models\HouseNews;
  16. use common\models\News;
  17. use common\models\NewsWeirdo;
  18. use backend\server\SetUploadImg;
  19. use Yii;
  20. class NewsController extends CommonController
  21. {
  22. /*
  23. * 资讯显示页面
  24. * **/
  25. public function actionIndex()
  26. {
  27. $model = new \common\models\CategoryNews();
  28. $list = $model->getList([],['id','news_name']);
  29. // $city = new \common\models\CategoryCity();
  30. // $city->pid = 0;
  31. // $cityList = $city->getList([],['city_name','id']);
  32. $city = new \common\models\CategoryCity();
  33. // $city->
  34. // $city->pid = 0;
  35. $cityList = $city->Sonlist();
  36. return $this->render('index',['category'=>$list,'city'=>$cityList]);
  37. }
  38. /*
  39. * 获取资讯信息
  40. * **/
  41. public function actionNewsform()
  42. {
  43. $model = new NewsInformation();
  44. $result = $model->NewsList();
  45. if($result != false)
  46. {
  47. return Help::JsonData(0,'成功',$result['count'],$result['data']);
  48. }
  49. return Help::JsonCode(0,'暂无数据');
  50. }
  51. /*
  52. * 添加资讯页面
  53. * **/
  54. public function actionAdd()
  55. {
  56. $city = new \common\models\CategoryCity();
  57. $cityList = $city->Sonlist();
  58. $news = new \common\models\CategoryNews();
  59. $newsList = $news->getList([],['id','news_name']);
  60. $houseModel = new \common\models\House();
  61. $house = $houseModel->AddNewsHouse();
  62. return $this->render('add',['city'=>$cityList,'news'=>$newsList,'house'=>$house]);
  63. }
  64. /*
  65. * 添加资讯数据
  66. * **/
  67. public function actionAddform()
  68. {
  69. $input = Yii::$app->request->post();
  70. $url = Yii::$app->params['img_url']['news'];
  71. $addImg = [];
  72. try{
  73. $arrImg = \backend\server\UploadFile::InstancesImgName_v1('img',$url); //[0] => 3dc12b64b0efc4bdafa543e65c8a9ec2.jpg
  74. if(is_array($arrImg))
  75. {
  76. $input['thumb'] = json_encode($arrImg);
  77. }
  78. $model = new News();
  79. $model->scenario = 'add';
  80. $model->load($input,'');
  81. if($model->save())
  82. {
  83. //处理水印
  84. if($input['thumb_watermark'] == 1 )
  85. {
  86. $ImgSet = new SetUploadImg();
  87. $ImgSet->SetImgWatermark($input['thumb'],$url);
  88. }
  89. $UserNews = new \common\models\UserNews();
  90. $UserNews->uid = Yii::$app->session['user_info']['uid'];
  91. $UserNews->nid = $model->attributes['id'];
  92. $UserNews->create_at = $_SERVER['REQUEST_TIME'];
  93. $UserNews->insert();
  94. //将资讯关联到楼盘动态
  95. if (!empty($input['hid'])) {
  96. $Nmodel = new HouseNews();
  97. $Nmodel->hid = $input['hid'];
  98. $Nmodel->nid = $model->attributes['id'];
  99. $Nmodel->uid = Yii::$app->session['user_info']['uid'];
  100. $Nmodel->create_at = $_SERVER['REQUEST_TIME'];
  101. $Nmodel->insert();
  102. }
  103. return Help::JsonCode(Help::SUCCESS,'资讯添加成功');
  104. }
  105. return Help::JsonCode(Help::ERROR,'资讯添加失败',$model->errors);
  106. }catch (\Exception $e){
  107. return Help::JsonCode(Help::ERROR,'资讯添加失败',$e->getMessage());
  108. }
  109. exit;
  110. // if(!empty($input['img'])){
  111. //拉取图片
  112. // foreach ($input['img'] as $val)
  113. // {
  114. // $img = (new \backend\server\NewsInformation())->getImgResources($url,$val);
  115. // if(!empty($img))
  116. // {
  117. // array_push($addImg,$img);
  118. // }
  119. // }
  120. // }
  121. if(count($addImg) >3){
  122. return Help::JsonCode(Help::ERROR,'资讯添加失败',['img'=>['图片最大数量为3张']]);
  123. }
  124. if(!empty($addImg))
  125. {
  126. $input['thumb'] =json_encode( array_values($addImg));
  127. }
  128. if($model->load($input,'') && $model->save())
  129. {
  130. }
  131. return Help::JsonCode(Help::ERROR,'资讯添加失败',$model->errors);
  132. //处理图片
  133. // $url = Yii::$app->params['img_url']['news'];
  134. // $input = Yii::$app->request->post();
  135. // $addImg = [];
  136. // if(!empty($_FILES)){
  137. // $addImg = \backend\server\UploadFile::InstancesImgName('img',$url); //[0] => 3dc12b64b0efc4bdafa543e65c8a9ec2.jpg
  138. // }
  139. // if(!empty($input['img'])){
  140. // foreach ($input['img'] as $val)
  141. // {
  142. // $img = (new \backend\server\NewsInformation())->getImgResources($url,$val);
  143. // if(!empty($img))
  144. // {
  145. // array_push($addImg,$img);
  146. // }
  147. // }
  148. // }
  149. //
  150. // if(count($addImg) >3){
  151. // return Help::JsonCode(Help::ERROR,'资讯添加失败',['img'=>['图片最大数量为3张']]);
  152. // }
  153. //
  154. // if(!empty($addImg))
  155. // {
  156. // $input['thumb'] =json_encode( array_values($addImg));
  157. // }
  158. // $model = new News();
  159. // $model->scenario = 'add';
  160. // if($model->load($input,'') && $model->save())
  161. // {
  162. // //处理水印
  163. // if($input['thumb_watermark'] == 1 )
  164. // {
  165. // $ImgSet = new SetUploadImg();
  166. // $ImgSet->SetImgWatermark($addImg,$url);
  167. // }
  168. //
  169. // $UserNews = new \common\models\UserNews();
  170. // $UserNews->uid = Yii::$app->session['user_info']['uid'];
  171. // $UserNews->nid = $model->attributes['id'];
  172. // $UserNews->create_at = $_SERVER['REQUEST_TIME'];
  173. // $UserNews->insert();
  174. // return Help::JsonCode(Help::SUCCESS,'资讯添加成功');
  175. // }
  176. // return Help::JsonCode(Help::ERROR,'资讯添加失败',$model->errors);
  177. }
  178. /*
  179. * 修改资讯页面
  180. * **/
  181. public function actionNewsedit()
  182. {
  183. $model = new \common\models\News();
  184. $newRow = $model->FindId(Yii::$app->request->get('id'));
  185. if($newRow != null)
  186. {
  187. $city = new \common\models\CategoryCity();
  188. $cityList = $city->Sonlist();
  189. $news = new \common\models\CategoryNews();
  190. $newsList = $news->getList([],['id','news_name']);
  191. $newRow['thumb'] = json_decode($newRow['thumb'],true);
  192. $houseModel = new \common\models\House();
  193. $house = $houseModel->AddNewsHouse();
  194. return $this->render('newsedit',['model'=>$newRow,'city'=>$cityList,'news'=>$newsList,'house'=>$house]);
  195. }
  196. }
  197. /*
  198. * 资讯数据修改
  199. * **/
  200. public function actionNewseditform()
  201. {
  202. $input = Yii::$app->request->post();
  203. $model = new News();
  204. $row = $model->FindId($input['id']);
  205. if($row)
  206. {
  207. $row->scenario = 'edit';
  208. $addImg = [];
  209. $input['thumb'] = $row['thumb'];
  210. $ImgUrl = Yii::$app->params['img_url']['news'];
  211. $ImgArr = json_decode($row->thumb,true);
  212. //转换原有图片为数组格式
  213. if(!empty($input['delimg']) && is_array($input['delimg']))
  214. {
  215. $ImgArr = array_diff($ImgArr,$input['delimg']); //需要保留的数组 如果删除全部图片 返回空数组
  216. if(!empty($ImgArr))
  217. {
  218. $input['thumb'] = json_encode($ImgArr);
  219. }
  220. }
  221. if(!empty($_FILES) || !empty($input['img'])){
  222. if(!empty($_FILES)){
  223. $addImg = \backend\server\UploadFile::InstancesImgName('img',$ImgUrl); //[0] => 3dc12b64b0efc4bdafa543e65c8a9ec2.jpg
  224. }
  225. if(!empty($input['img']))
  226. {
  227. foreach ($input['img'] as $val)
  228. {
  229. $getImg = (new \backend\server\NewsInformation())->getImgResources($ImgUrl,$val);
  230. if($getImg)
  231. {
  232. array_push($addImg,$getImg);
  233. }
  234. }
  235. }
  236. if(count($addImg) > 3 || (count($ImgArr) + count($addImg)) >3){
  237. foreach ($addImg as $val){
  238. UploadFile::delImg($ImgUrl,$val);
  239. }
  240. return Help::JsonCode(Help::ERROR,'失败',['img'=>['图片最大数量为3张']]);
  241. }
  242. $input['thumb'] = json_encode(array_values( array_merge($addImg,$ImgArr)));
  243. }
  244. //修改楼盘关联的资讯
  245. if (!empty($input['hid']) && !empty($row['hid']) &&$input['hid'] != $row['hid']) {
  246. $HouseNewsId = HouseNews::find()->andWhere(['hid'=>$row['hid'],'nid'=>$row['id'],'del'=>1])->select(['hnid'])->asArray()->one()['hnid'];
  247. $HouseNews = HouseNews::findOne($HouseNewsId);
  248. if ($HouseNews != null) {
  249. $HouseNews->hid = $input['hid'];
  250. $HouseNews->uid = Yii::$app->session['user_info']['uid'];
  251. $HouseNews->create_at = $_SERVER['REQUEST_TIME'];
  252. $HouseNews->update(false);
  253. }
  254. }
  255. //修改楼盘关联的资讯
  256. if (empty($row['hid']) && !empty($input['hid'])) {
  257. $Nmodel = new HouseNews();
  258. $Nmodel->hid = $input['hid'];
  259. $Nmodel->nid = $row['id'];
  260. $Nmodel->uid = Yii::$app->session['user_info']['uid'];
  261. $Nmodel->create_at = $_SERVER['REQUEST_TIME'];
  262. $Nmodel->insert();
  263. }
  264. if($row->load($input,'') && $row->save())
  265. {
  266. if($input['thumb_watermark'] == 1 && !empty($addImg) )
  267. {
  268. $ImgSet = new SetUploadImg();
  269. $ImgSet->SetImgWatermark($addImg,$ImgUrl);
  270. }
  271. if(!empty($input['delimg'])){
  272. foreach ($input['delimg'] as $val)
  273. {
  274. UploadFile::delImg($ImgUrl,$val);
  275. }
  276. }
  277. return Help::JsonCode(Help::SUCCESS,'成功');
  278. }
  279. return Help::JsonCode(Help::ERROR,'失败',$row->errors);
  280. }
  281. }
  282. /*
  283. * 获取资讯类目
  284. * **/
  285. public function actionNewscategory()
  286. {
  287. // $model = new \common\models\CategoryNews();
  288. // $list = $model->getList([],['id','news_name']);
  289. // if(!empty($list))
  290. // {
  291. // return Help::JsonCode(Help::SUCCESS,'成功',$list);
  292. // }
  293. // return Help::JsonCode(Help::ERROR,'失败');
  294. }
  295. /*
  296. * 删除
  297. * **/
  298. public function actionNewsdel()
  299. {
  300. $model = new NewsInformation();
  301. if($model->delNews() === true)
  302. {
  303. return Help::JsonCode(Help::SUCCESS,'操作成功');
  304. }
  305. return Help::JsonCode(Help::ERROR,'操作失败');
  306. }
  307. /*
  308. * 解审
  309. * **/
  310. public function actionNewsviewcontrol()
  311. {
  312. $model = new NewsInformation();
  313. if($model->delNews(2) === true)
  314. {
  315. return Help::JsonCode(Help::SUCCESS,'操作成功');
  316. }
  317. return Help::JsonCode(Help::ERROR,'操作失败');
  318. }
  319. /*
  320. * 弹窗选择封面图
  321. * **/
  322. public function actionPopup()
  323. {
  324. return $this->render('popup');
  325. }
  326. //修改点击数
  327. public function actionEditclicks()
  328. {
  329. $model = new News();
  330. $input = Yii::$app->request->post();
  331. $row = $model->FindById($input['id']);
  332. if(!empty($row))
  333. {
  334. if(!empty($input['clicks']))
  335. {
  336. $row->clicks = Yii::$app->request->post('clicks');
  337. }
  338. if($row->update(false) == true) return Help::JsonCode(Help::SUCCESS,'操作成功');
  339. }
  340. return Help::JsonCode(Help::ERROR,Yii::t('app','edit_error'));
  341. }
  342. /*
  343. * 奇葩说 页面
  344. **/
  345. public function actionWeirdo()
  346. {
  347. return $this->render('weirdo');
  348. }
  349. /*
  350. * 奇葩说-获取数据列表
  351. **/
  352. public function actionWeirdoform()
  353. {
  354. $model = new NewsWeirdo();
  355. $model->subject = Yii::$app->request->post('title');
  356. $rows = $model->getList(Yii::$app->request->post());
  357. if($rows != null)
  358. {
  359. foreach ($rows as &$val)
  360. {
  361. $val['create_at'] = date('Y-m-d H:i',$val['create_at']);
  362. }
  363. return Help::JsonData(0,Yii::t('app','get_success'),$model->getListTotal(),$rows);
  364. }
  365. return Help::JsonCode(Help::SUCCESS,Yii::t('app','get_error'));
  366. }
  367. /*
  368. * 奇葩说-添加页面
  369. **/
  370. public function actionWeirdoadd()
  371. {
  372. return $this->render('weirdoadd');
  373. }
  374. /*
  375. *奇葩说-添加数据
  376. **/
  377. public function actionWeirdoaddform()
  378. {
  379. $input = Yii::$app->request->post();
  380. $model = new NewsWeirdo();
  381. $model->scenario = 'add';
  382. if(!empty($_FILES['img']))
  383. {
  384. $url = Yii::$app->params['img_url']['weirdo'];
  385. $img = UploadFile::InstanceImgName('img',$url);
  386. if(is_string($img))
  387. {
  388. $model->thumb = $img;
  389. //添加水印
  390. if(isset($input['thumb_watermark']) && $input['thumb_watermark'] == 1)
  391. {
  392. $ImgSet = new SetUploadImg();
  393. $ImgSet->SetImgWatermark($model->thumb,$url);
  394. }
  395. }
  396. }
  397. $auth = $model->Authenticator($input);
  398. if(is_object($auth))
  399. {
  400. if($auth->save())
  401. {
  402. //压缩图片
  403. if(isset($input['compress']) && $input['compress'] == 1)
  404. {
  405. $compressParams = [];
  406. $compressParams['data']['imgname'] = $model->thumb;
  407. $compressParams['data']['url'] = $url;
  408. $compressParams['data']['source'] = '奇葩说@添加';
  409. $model = new \backend\event\TinifyEvent();
  410. $model->CompressImg($compressParams);
  411. }
  412. return Help::JsonCode(Help::SUCCESS,Yii::t('app','add_success'));
  413. }
  414. }
  415. UploadFile::delImg(Yii::$app->params['img_url']['weirdo'],$model->thumb);
  416. return Help::JsonCode(Help::SUCCESS,Yii::t('app','add_error'),$auth);
  417. }
  418. /*
  419. * 奇葩说-修改页面
  420. **/
  421. public function actionWeirdoedit()
  422. {
  423. $input = Yii::$app->request->get();
  424. if(is_numeric($input['id']))
  425. {
  426. $row = NewsWeirdo::findOne(Yii::$app->request->get('id'));
  427. if($row != null)
  428. {
  429. return $this->render('weirdoedit',['model'=>$row]);
  430. }
  431. }
  432. }
  433. /*
  434. * 奇葩说-修改数据
  435. **/
  436. public function actionWeirdoeditform()
  437. {
  438. $input = Yii::$app->request->post();
  439. $model = new NewsWeirdo();
  440. $row = $model->FindById($input['id']);
  441. if(!empty($row))
  442. {
  443. $url = Yii::$app->params['img_url']['weirdo'];
  444. if(!empty($_FILES['img']))
  445. {
  446. $img = UploadFile::InstanceImgName('img',$url);
  447. if(is_string($img))
  448. {
  449. UploadFile::delImg($url,$row->thumb);
  450. $input['thumb'] = $img;
  451. //添加水印
  452. if(isset($input['thumb_watermark']) && $input['thumb_watermark'] == 1)
  453. {
  454. $ImgSet = new SetUploadImg();
  455. $ImgSet->SetImgWatermark($input['thumb'],$url);
  456. }
  457. }
  458. }
  459. $auth = $model->Authenticator($input);
  460. if(is_object($auth))
  461. {
  462. $row = Help::SetAttr($input,$model,$row);
  463. if($row->save()){
  464. //压缩图片
  465. if(isset($input['compress']) && $input['compress'] == 1 && isset($input['thumb']))
  466. {
  467. $compressParams = [];
  468. $compressParams['data']['imgname'] = $input['thumb'];
  469. $compressParams['data']['url'] = $url;
  470. $compressParams['data']['source'] = '奇葩说@修改';
  471. $model = new \backend\event\TinifyEvent();
  472. $model->CompressImg($compressParams);
  473. }
  474. return Help::JsonCode(Help::SUCCESS,Yii::t('app','add_success'));
  475. }
  476. }
  477. return Help::JsonCode(Help::ERROR,Yii::t('app','add_error'),$auth);
  478. }
  479. }
  480. /*
  481. * 奇葩说-排序,点击,
  482. **/
  483. public function actionWeirdoeditcolumn()
  484. {
  485. $input = Yii::$app->request->post();
  486. $model = NewsWeirdo::findOne($input['id']);
  487. if(!empty($model))
  488. {
  489. switch ($input['type'])
  490. {
  491. case 'click':
  492. $model->click = $input['click'];
  493. break;
  494. case 'sort':
  495. $model->sort = $input['sort'];
  496. break;
  497. case 'show':
  498. if($model->is_show == 1)
  499. {
  500. $model->is_show = 2;
  501. }
  502. else
  503. {
  504. $model->is_show = 1;
  505. }
  506. break;
  507. }
  508. if($model->save()) return Help::JsonCode(Help::SUCCESS,Yii::t('app','edit_success'));
  509. }
  510. return Help::JsonCode(Help::ERROR,Yii::t('app','edit_error'));
  511. }
  512. /*
  513. * 奇葩说-批量删除
  514. **/
  515. public function actionWeirdodel()
  516. {
  517. $del = NewsWeirdo::updateAll(['del'=>2],['id'=>Yii::$app->request->post('id')]);
  518. if($del >0)
  519. {
  520. return Help::JsonCode(Help::SUCCESS,Yii::t('app','edit_success'));
  521. }
  522. return Help::JsonCode(Help::ERROR,Yii::t('app','edit_error'));
  523. }
  524. /*
  525. * 批量同步资料显示页面
  526. */
  527. public function actionBatchsync()
  528. {
  529. $input = Yii::$app->request->get();
  530. return $this->render('batchsync',$input);
  531. }
  532. public function actionConfirmsync()
  533. {
  534. $input = Yii::$app->request->post();
  535. if(!empty($input['nid']))
  536. {
  537. $input['id'] = explode(',',trim($input['nid'],','));
  538. $M = new \backend\server\SyncNews();
  539. $res = $M->NewsList($input);
  540. $res = json_decode($res,true);
  541. if(is_array($res) && !empty($res))
  542. {
  543. if($res['code'] == 200) return Help::JsonCode(Help::SUCCESS,'操作成功');
  544. }
  545. return Help::JsonCode(Help::ERROR,$res['msg']);
  546. }
  547. }
  548. public function actionStatistica()
  549. {
  550. $model = new \common\models\CategoryNews();
  551. $list = $model->getList([],['id','news_name']);
  552. return $this->render('statistica',['category'=>$list]);
  553. }
  554. public function actionStatisticaform()
  555. {
  556. $model = new \common\models\User();
  557. $input = Yii::$app->request->post();
  558. if(!empty($input['date_month']))
  559. {
  560. $start_end_time = \common\Helps\Time::getthemonth($input['date_month']);
  561. if(!empty($start_end_time))
  562. {
  563. $startTime = strtotime($start_end_time[0].' 00:00:00');
  564. $endTime = strtotime($start_end_time[1].' 23:59:59');
  565. }
  566. }else{
  567. $startTime= '';
  568. $endTime = '';
  569. }
  570. $query = $model::find();
  571. $query->select(['pfg_user.uid','pfg_user.name']);
  572. $query->andWhere(['pfg_user.status'=>1]);
  573. $query->joinWith(['news'=>function($q) use ($startTime,$endTime) {
  574. $q->select(['pfg_news.author','category','create_at']);
  575. $q->andWhere(['pfg_news.del'=>1]);
  576. if(!empty($startTime) || !empty($endTime)){
  577. // p($startTime);die;
  578. $q->andWhere(['between','pfg_news.create_at',$startTime,$endTime]);
  579. }
  580. }]);
  581. $data = $query->asArray()->all();
  582. $cnmodel = new \common\models\CategoryNews();
  583. $cnmodel->del=1;
  584. $categorynew = $cnmodel->getList([],['id','news_name']);
  585. array_walk($data,function(&$val) use ($categorynew){
  586. $val['total'] = count($val['news']);
  587. $count = array_count_values(array_column($val['news'],'category'));
  588. array_walk($categorynew,function(&$item) use ($count,&$val){
  589. (array_key_exists($item['id'],$count))? $item['num'] = $count[$item['id']] : $item['num']=0;
  590. $val['news_name_'.$item['id']] = $item['num'];
  591. });
  592. unset($val['news']);
  593. });
  594. if(!empty($data)){
  595. return Help::JsonData(0,'成功',0,$data);
  596. }
  597. return Help::JsonCode(Help::ERROR,'暂无数据');
  598. }
  599. }