NewsController.php 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\NewsServiceInterface;
  5. use App\Tools\PublicData;
  6. use Hyperf\Di\Annotation\Inject;
  7. use Hyperf\HttpServer\Annotation\AutoController;
  8. use App\Tools\Result;
  9. use Hyperf\Validation\Contract\ValidatorFactoryInterface;
  10. use Hyperf\Context\Context;
  11. use App\JsonRpc\UserServiceInterface;
  12. /**
  13. * Class NewsController
  14. * @package App\Controller
  15. */
  16. //#[AutoController]
  17. class NewsController extends AbstractController
  18. {
  19. #[Inject]
  20. protected ValidatorFactoryInterface $validationFactory;
  21. /**
  22. * @var NewsServiceInterface
  23. */
  24. #[Inject]
  25. private $newsServiceClient;
  26. /**
  27. * @var UserServiceInterface
  28. */
  29. #[Inject]
  30. private $userServiceClient;
  31. /**
  32. * 导航池列表
  33. * @return void
  34. */
  35. public function getCategoryList()
  36. {
  37. $requireData = $this->request->all();
  38. $validator = $this->validationFactory->make(
  39. $requireData,
  40. [
  41. 'page'=> 'required',
  42. 'pageSize'=> 'required',
  43. ],
  44. [
  45. 'page.required' => '第几页不能为空',
  46. 'pageSize.required' => '每页显示条数不能为空',
  47. ]
  48. );
  49. if ($validator->fails()) {
  50. $errorMessage = $validator->errors()->first();
  51. return Result::error($errorMessage);
  52. }
  53. //获取用户信息
  54. $user_id = Context::get("UserId");
  55. $userInfo = $this->userServiceClient->getUserInfo((int)$user_id);
  56. var_dump("用户信息:",$userInfo);
  57. $sszq = $userInfo['data']['sszq'];
  58. $type_id = $userInfo['data']['type_id']; //'1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)'
  59. $result = $this->newsServiceClient->getCategoryList($requireData);
  60. if($result['data']){
  61. foreach ($result['data']['rows'] as $k=>$v) {
  62. $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
  63. }
  64. }
  65. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  66. }
  67. /**
  68. * 站点下的导航池
  69. * @return void
  70. */
  71. public function categoryList()
  72. {
  73. $requireData = $this->request->all();
  74. $validator = $this->validationFactory->make(
  75. $requireData,
  76. [
  77. 'pid'=> 'required'
  78. ],
  79. [
  80. 'pid.required' => '父级ID不能为空'
  81. ]
  82. );
  83. if ($validator->fails()) {
  84. $errorMessage = $validator->errors()->first();
  85. return Result::error($errorMessage);
  86. }
  87. $requireData['website_id'] = Context::get("SiteId");
  88. //获取用户信息
  89. $user_id = Context::get("UserId");
  90. $userInfo = $this->userServiceClient->getUserInfo((int)$user_id);
  91. var_dump("用户信息:",$userInfo);
  92. $sszq = $userInfo['data']['sszq'];
  93. $type_id = $userInfo['data']['type_id']; //'1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)'
  94. //管理员看所有
  95. if($type_id == 10000){
  96. $result = $this->newsServiceClient->categoryList($requireData);
  97. } else {
  98. $requireData['sszq'] = $sszq;
  99. $result = $this->newsServiceClient->myCategoryList($requireData);
  100. }
  101. // $rep = PublicData::buildMenuTree($result['data']);
  102. return $result ? Result::success($result['data']) : Result::error($result['message']);
  103. }
  104. /**
  105. * 添加导航
  106. * @return array|void
  107. */
  108. public function addCategory()
  109. {
  110. $requireData = $this->request->all();
  111. $validator = $this->validationFactory->make(
  112. $requireData,
  113. [
  114. 'name'=> 'required',
  115. 'seo_title'=> 'required',
  116. 'seo_keywords'=> 'required',
  117. 'seo_description'=> 'required',
  118. ],
  119. [
  120. 'name.required' => '导航池名称不能为空',
  121. 'seo_title.required' => 'seo标题名称不能为空',
  122. 'seo_keywords.required' => 'seo关键词不能为空',
  123. 'seo_description.required' => 'seo描述不能为空',
  124. ]
  125. );
  126. if ($validator->fails()) {
  127. $errorMessage = $validator->errors()->first();
  128. return Result::error($errorMessage);
  129. }
  130. $requireData['pid'] = isset($requireData['pid_arr'])?end($requireData['pid_arr']):'';
  131. $requireData['pid_arr'] = isset($requireData['pid_arr'])?json_encode($requireData['pid_arr']):'';
  132. $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
  133. $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
  134. $requireData['department_id'] = isset($requireData['department_arr_id'])?end($requireData['department_arr_id']):'';
  135. $requireData['department_arr_id'] = isset($requireData['department_arr_id'])?json_encode($requireData['department_arr_id']):'';
  136. $result = $this->newsServiceClient->addCategory($requireData);
  137. return $result ? Result::success($result['data']) : Result::error($result['message']);
  138. }
  139. /**
  140. * 更新导航池
  141. * @return array
  142. */
  143. public function updateCategory()
  144. {
  145. $requireData = $this->request->all();
  146. $validator = $this->validationFactory->make(
  147. $requireData,
  148. [
  149. 'id'=>'required',
  150. 'name'=> 'required',
  151. 'seo_title'=> 'required',
  152. 'seo_keywords'=> 'required',
  153. 'seo_description'=> 'required',
  154. ],
  155. [
  156. 'id.required' =>'ID不能为空',
  157. 'name.required' => '栏目池名称不能为空',
  158. 'seo_title.required' => 'seo标题名称不能为空',
  159. 'seo_keywords.required' => 'seo关键词不能为空',
  160. 'seo_description.required' => 'seo描述不能为空',
  161. ]
  162. );
  163. if ($validator->fails()) {
  164. $errorMessage = $validator->errors()->first();
  165. return Result::error($errorMessage);
  166. }
  167. $requireData['pid'] = isset($requireData['pid_arr'])?end($requireData['pid_arr']):'';
  168. $requireData['pid_arr'] = isset($requireData['pid_arr'])?json_encode($requireData['pid_arr']):'';
  169. $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
  170. $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
  171. $requireData['department_id'] = isset($requireData['department_arr_id'])?end($requireData['department_arr_id']):'';
  172. $requireData['department_arr_id'] = isset($requireData['department_arr_id'])?json_encode($requireData['department_arr_id']):'';
  173. $result = $this->newsServiceClient->updateCategory($requireData);
  174. return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
  175. }
  176. /**
  177. * 删除分类
  178. * @return array
  179. */
  180. public function delCategory()
  181. {
  182. $requireData = $this->request->all();
  183. $validator = $this->validationFactory->make(
  184. $requireData,
  185. [
  186. 'id'=> 'required',
  187. ],
  188. [
  189. 'id.required' => 'id不能为空',
  190. ]
  191. );
  192. if ($validator->fails()) {
  193. $errorMessage = $validator->errors()->first();
  194. return Result::error($errorMessage);
  195. }
  196. $result = $this->newsServiceClient->delCategory($requireData);
  197. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  198. }
  199. /**
  200. * 资讯列表
  201. * @return void
  202. */
  203. public function getArticleList()
  204. {
  205. $requireData = $this->request->all();
  206. $validator = $this->validationFactory->make(
  207. $requireData,
  208. [
  209. 'page'=> 'required',
  210. 'pageSize'=> 'required',
  211. ],
  212. [
  213. 'page.required' => 'id不能为空',
  214. 'pageSize.required' => 'id不能为空',
  215. ]
  216. );
  217. if ($validator->fails()) {
  218. $errorMessage = $validator->errors()->first();
  219. return Result::error($errorMessage);
  220. }
  221. $requireData['website_id'] = Context::get("SiteId");
  222. //获取用户信息
  223. $user_id = Context::get("UserId");
  224. $userInfo = $this->userServiceClient->getUserInfo((int)$user_id);
  225. var_dump("用户信息:",$userInfo);
  226. $sszq = $userInfo['data']['sszq'];
  227. $type_id = $userInfo['data']['type_id']; //'1:个人会员 2:政务会员 3:企业会员 4:调研员 10000:管理员 20000:游客(小程序)'
  228. $requireData['type_id'] = $type_id;
  229. $requireData['user_id'] = $user_id;
  230. var_dump("资讯:",$requireData);
  231. $result = $this->newsServiceClient->getArticleList($requireData);
  232. //1通过,2待审核,3待发 4,拒绝 5删除
  233. $statusList = [
  234. '0'=>'待审核',
  235. '1'=>'已发布',
  236. '2'=>'待审核',
  237. '3'=>'待发',
  238. '4'=>'拒绝',
  239. '5'=>'删除',
  240. ];
  241. if($result['data']){
  242. foreach ($result['data']['rows'] as $k=>$v) {
  243. $result['data']['rows'][$k]['cat_arr_id'] = $v['cat_arr_id']?json_decode($v['cat_arr_id']):[0];
  244. $result['data']['rows'][$k]['tag'] = $v['tag']?json_decode($v['tag']):[];
  245. $result['data']['rows'][$k]['status_name'] = $statusList[$v['status']];
  246. $result['data']['rows'][$k]['level'] = (string)$v['level'];
  247. $result['data']['rows'][$k]['islink'] = isset($v['islink']) && $v['islink']>0?true:false;
  248. }
  249. }
  250. $result = $this->newsServiceClient->getArticleList($requireData);
  251. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  252. }
  253. /**
  254. * 获取导航池信息
  255. * @return void
  256. */
  257. public function getCategoryInfo()
  258. {
  259. $requireData = $this->request->all();
  260. $validator = $this->validationFactory->make(
  261. $requireData,
  262. [
  263. 'id'=> 'required',
  264. ],
  265. [
  266. 'id.required' => 'id不能为空',
  267. ]
  268. );
  269. if ($validator->fails()) {
  270. $errorMessage = $validator->errors()->first();
  271. return Result::error($errorMessage);
  272. }
  273. $result = $this->newsServiceClient->getCategoryInfo($requireData);
  274. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  275. }
  276. /**
  277. * 添加分类
  278. * @return array|void
  279. */
  280. public function addArticle()
  281. {
  282. $requireData = $this->request->all();
  283. $validator = $this->validationFactory->make(
  284. $requireData,
  285. [
  286. 'title'=> 'required',
  287. 'cat_arr_id'=> 'required',
  288. 'author'=> 'required',
  289. ],
  290. [
  291. 'title.required' => '标题不能为空',
  292. 'cat_arr_id.required' => '导航池ID不能为空',
  293. 'author.required' => '作者不能为空',
  294. ]
  295. );
  296. if ($validator->fails()){
  297. $errorMessage = $validator->errors()->first();
  298. return Result::error($errorMessage);
  299. }
  300. $requireData['catid'] = isset($requireData['cat_arr_id'])?end($requireData['cat_arr_id']):'';
  301. $requireData['cat_arr_id'] = isset($requireData['cat_arr_id'])?json_encode($requireData['cat_arr_id']):'';
  302. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  303. $requireData['ip'] = $loginIp;
  304. // $requireData['website_id'] = Context::get("SiteId");
  305. $requireData['admin_user_id'] =Context::get("UserId");
  306. $requireData['level'] = isset($requireData['level']) && $requireData['level']?$requireData['level']:0;
  307. $requireData['hits'] = isset($requireData['hits']) && $requireData['hits']?$requireData['hits']:0;
  308. $requireData['is_original'] = isset($requireData['is_original']) && $requireData['is_original']?$requireData['is_original']:0;
  309. $requireData['status'] = isset($requireData['status']) && $requireData['status']?$requireData['status']:0;
  310. // var_dump("入参:",$requireData);
  311. $result = $this->newsServiceClient->addArticle($requireData);
  312. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  313. }
  314. /**
  315. * 更新资讯
  316. * @return array
  317. */
  318. public function updateArticle()
  319. {
  320. $requireData = $this->request->all();
  321. $validator = $this->validationFactory->make(
  322. $requireData,
  323. [
  324. 'id'=>'required',
  325. 'title'=> 'required',
  326. 'cat_arr_id'=> 'required',
  327. 'author'=> 'required',
  328. ],
  329. [
  330. 'title.required' => '标题不能为空',
  331. 'cat_arr_id.required' => '导航池ID不能为空',
  332. 'author.required' => '作者不能为空',
  333. 'id.required' =>'ID不能为空'
  334. ]
  335. );
  336. if ($validator->fails()) {
  337. $errorMessage = $validator->errors()->first();
  338. return Result::error($errorMessage);
  339. }
  340. $requireData['catid'] = isset($requireData['cat_arr_id'])?end($requireData['cat_arr_id']):'';
  341. $requireData['cat_arr_id'] = isset($requireData['cat_arr_id'])?json_encode($requireData['cat_arr_id']):'';
  342. $result = $this->newsServiceClient->updateArticle($requireData);
  343. return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
  344. }
  345. /**
  346. * 更新资讯状态
  347. * @return array
  348. */
  349. public function upArticleStatus()
  350. {
  351. $requireData = $this->request->all();
  352. $validator = $this->validationFactory->make(
  353. $requireData,
  354. [
  355. 'id'=>'required',
  356. 'status'=> 'required',
  357. ],
  358. [
  359. 'id.required' => 'id不能为空',
  360. 'status.required' => '状态不能为空',
  361. ]
  362. );
  363. if ($validator->fails()) {
  364. $errorMessage = $validator->errors()->first();
  365. return Result::error($errorMessage);
  366. }
  367. $result = $this->newsServiceClient->upArticleStatus($requireData);
  368. return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
  369. }
  370. /**
  371. * 删除分类
  372. * @return array
  373. */
  374. public function delArticle()
  375. {
  376. $requireData = $this->request->all();
  377. $validator = $this->validationFactory->make(
  378. $requireData,
  379. [
  380. 'id'=> 'required',
  381. ],
  382. [
  383. 'id.required' => 'id不能为空',
  384. ]
  385. );
  386. if ($validator->fails()) {
  387. $errorMessage = $validator->errors()->first();
  388. return Result::error($errorMessage);
  389. }
  390. // $requireData['website_id'] = Context::get("SiteId");
  391. $result = $this->newsServiceClient->delArticle($requireData);
  392. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  393. }
  394. /**
  395. * 获取资讯信息
  396. * @return array
  397. */
  398. public function getArticleInfo()
  399. {
  400. $requireData = $this->request->all();
  401. $validator = $this->validationFactory->make(
  402. $requireData,
  403. [
  404. 'id'=> 'required',
  405. ],
  406. [
  407. 'id.required' => 'id不能为空',
  408. ]
  409. );
  410. if ($validator->fails()) {
  411. $errorMessage = $validator->errors()->first();
  412. return Result::error($errorMessage);
  413. }
  414. $result = $this->newsServiceClient->getArticleInfo($requireData);
  415. $result['data']['cat_arr_id'] = $result['data']['cat_arr_id']?json_decode($result['data']['cat_arr_id']):[];
  416. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  417. }
  418. /**
  419. * 检测导航池名称是否存在
  420. * @return array
  421. */
  422. public function checkCategoryName()
  423. {
  424. $requireData = $this->request->all();
  425. $validator = $this->validationFactory->make(
  426. $requireData,
  427. [
  428. 'name'=> 'required',
  429. ],
  430. [
  431. 'name.required' => 'name不能为空',
  432. ]
  433. );
  434. if ($validator->fails()) {
  435. $errorMessage = $validator->errors()->first();
  436. return Result::error($errorMessage);
  437. }
  438. $result = $this->newsServiceClient->checkCategoryName($requireData);
  439. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  440. }
  441. }