App_Controller_NewsController.proxy.php 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248
  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. /**
  12. * Class NewsController
  13. * @package App\Controller
  14. */
  15. //#[AutoController]
  16. class NewsController extends AbstractController
  17. {
  18. use \Hyperf\Di\Aop\ProxyTrait;
  19. use \Hyperf\Di\Aop\PropertyHandlerTrait;
  20. function __construct()
  21. {
  22. if (method_exists(parent::class, '__construct')) {
  23. parent::__construct(...func_get_args());
  24. }
  25. $this->__handlePropertyHandler(__CLASS__);
  26. }
  27. #[Inject]
  28. protected ValidatorFactoryInterface $validationFactory;
  29. /**
  30. * @var NewsServiceInterface
  31. */
  32. #[Inject]
  33. private $newsServiceClient;
  34. /**
  35. * 导航池列表
  36. * @return void
  37. */
  38. public function getCategoryList()
  39. {
  40. $requireData = $this->request->all();
  41. $validator = $this->validationFactory->make($requireData, ['page' => 'required', 'pageSize' => 'required'], ['page.required' => '第几页不能为空', 'pageSize.required' => '每页显示条数不能为空']);
  42. if ($validator->fails()) {
  43. $errorMessage = $validator->errors()->first();
  44. return Result::error($errorMessage);
  45. }
  46. $result = $this->newsServiceClient->getCategoryList($requireData);
  47. if ($result['data']) {
  48. foreach ($result['data']['rows'] as $k => $v) {
  49. $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr'] ? json_decode($v['pid_arr']) : [0];
  50. }
  51. }
  52. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  53. }
  54. /**
  55. * 站点下的导航池
  56. * @return void
  57. */
  58. public function categoryList()
  59. {
  60. $requireData = $this->request->all();
  61. $validator = $this->validationFactory->make($requireData, ['pid' => 'required'], ['pid.required' => '父级ID不能为空']);
  62. if ($validator->fails()) {
  63. $errorMessage = $validator->errors()->first();
  64. return Result::error($errorMessage);
  65. }
  66. // $requireData['website_id'] = Context::get("SiteId");
  67. $result = $this->newsServiceClient->categoryList($requireData);
  68. $rep = PublicData::buildMenuTree($result['data']);
  69. return $result ? Result::success($rep) : Result::error($result['message']);
  70. }
  71. /**
  72. * 添加导航
  73. * @return array|void
  74. */
  75. public function addCategory()
  76. {
  77. $requireData = $this->request->all();
  78. $validator = $this->validationFactory->make($requireData, ['name' => 'required', 'seo_title' => 'required', 'seo_keywords' => 'required', 'seo_description' => 'required'], ['name.required' => '导航池名称不能为空', 'seo_title.required' => 'seo标题名称不能为空', 'seo_keywords.required' => 'seo关键词不能为空', 'seo_description.required' => 'seo描述不能为空']);
  79. if ($validator->fails()) {
  80. $errorMessage = $validator->errors()->first();
  81. return Result::error($errorMessage);
  82. }
  83. $requireData['pid'] = isset($requireData['pid_arr']) ? end($requireData['pid_arr']) : '';
  84. $requireData['pid_arr'] = isset($requireData['pid_arr']) ? json_encode($requireData['pid_arr']) : '';
  85. $requireData['city_id'] = isset($requireData['city_arr_id']) ? end($requireData['city_arr_id']) : '';
  86. $requireData['city_arr_id'] = isset($requireData['city_arr_id']) ? json_encode($requireData['city_arr_id']) : '';
  87. $requireData['department_id'] = isset($requireData['department_arr_id']) ? end($requireData['department_arr_id']) : '';
  88. $requireData['department_arr_id'] = isset($requireData['department_arr_id']) ? json_encode($requireData['department_arr_id']) : '';
  89. $result = $this->newsServiceClient->addCategory($requireData);
  90. return $result ? Result::success($result['data']) : Result::error($result['message']);
  91. }
  92. /**
  93. * 更新导航池
  94. * @return array
  95. */
  96. public function updateCategory()
  97. {
  98. $requireData = $this->request->all();
  99. $validator = $this->validationFactory->make($requireData, ['id' => 'required', 'name' => 'required', 'seo_title' => 'required', 'seo_keywords' => 'required', 'seo_description' => 'required'], ['id.required' => 'ID不能为空', 'name.required' => '栏目池名称不能为空', 'seo_title.required' => 'seo标题名称不能为空', 'seo_keywords.required' => 'seo关键词不能为空', 'seo_description.required' => 'seo描述不能为空']);
  100. if ($validator->fails()) {
  101. $errorMessage = $validator->errors()->first();
  102. return Result::error($errorMessage);
  103. }
  104. $requireData['pid'] = isset($requireData['pid_arr']) ? end($requireData['pid_arr']) : '';
  105. $requireData['pid_arr'] = isset($requireData['pid_arr']) ? json_encode($requireData['pid_arr']) : '';
  106. $requireData['city_id'] = isset($requireData['city_arr_id']) ? end($requireData['city_arr_id']) : '';
  107. $requireData['city_arr_id'] = isset($requireData['city_arr_id']) ? json_encode($requireData['city_arr_id']) : '';
  108. $requireData['department_id'] = isset($requireData['department_arr_id']) ? end($requireData['department_arr_id']) : '';
  109. $requireData['department_arr_id'] = isset($requireData['department_arr_id']) ? json_encode($requireData['department_arr_id']) : '';
  110. $result = $this->newsServiceClient->updateCategory($requireData);
  111. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  112. }
  113. /**
  114. * 删除分类
  115. * @return array
  116. */
  117. public function delCategory()
  118. {
  119. $requireData = $this->request->all();
  120. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => 'id不能为空']);
  121. if ($validator->fails()) {
  122. $errorMessage = $validator->errors()->first();
  123. return Result::error($errorMessage);
  124. }
  125. $result = $this->newsServiceClient->delCategory($requireData);
  126. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  127. }
  128. /**
  129. * 资讯列表
  130. * @return void
  131. */
  132. public function getArticleList()
  133. {
  134. $requireData = $this->request->all();
  135. $validator = $this->validationFactory->make($requireData, ['page' => 'required', 'pageSize' => 'required'], ['page.required' => 'id不能为空', 'pageSize.required' => 'id不能为空']);
  136. if ($validator->fails()) {
  137. $errorMessage = $validator->errors()->first();
  138. return Result::error($errorMessage);
  139. }
  140. $result = $this->newsServiceClient->getArticleList($requireData);
  141. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  142. }
  143. /**
  144. * 获取导航池信息
  145. * @return void
  146. */
  147. public function getCategoryInfo()
  148. {
  149. $requireData = $this->request->all();
  150. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => 'id不能为空']);
  151. if ($validator->fails()) {
  152. $errorMessage = $validator->errors()->first();
  153. return Result::error($errorMessage);
  154. }
  155. $result = $this->newsServiceClient->getCategoryInfo($requireData);
  156. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  157. }
  158. /**
  159. * 添加分类
  160. * @return array|void
  161. */
  162. public function addArticle()
  163. {
  164. $requireData = $this->request->all();
  165. $validator = $this->validationFactory->make($requireData, ['title' => 'required', 'cat_arr_id' => 'required', 'author' => 'required'], ['title.required' => '标题不能为空', 'cat_arr_id.required' => '导航池ID不能为空', 'author.required' => '作者不能为空']);
  166. if ($validator->fails()) {
  167. $errorMessage = $validator->errors()->first();
  168. return Result::error($errorMessage);
  169. }
  170. $requireData['catid'] = isset($requireData['cat_arr_id']) ? end($requireData['cat_arr_id']) : '';
  171. $requireData['cat_arr_id'] = isset($requireData['cat_arr_id']) ? json_encode($requireData['cat_arr_id']) : '';
  172. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  173. $requireData['ip'] = $loginIp;
  174. $requireData['admin_user_id'] = Context::get("UserId");
  175. $requireData['level'] = isset($requireData['level']) && $requireData['level'] ? $requireData['level'] : 0;
  176. $requireData['hits'] = isset($requireData['hits']) && $requireData['hits'] ? $requireData['hits'] : 0;
  177. $requireData['is_original'] = isset($requireData['is_original']) && $requireData['is_original'] ? $requireData['is_original'] : 0;
  178. $requireData['status'] = isset($requireData['status']) && $requireData['status'] ? $requireData['status'] : 0;
  179. // var_dump("入参:",$requireData);
  180. $result = $this->newsServiceClient->addArticle($requireData);
  181. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  182. }
  183. /**
  184. * 更新资讯
  185. * @return array
  186. */
  187. public function updateArticle()
  188. {
  189. $requireData = $this->request->all();
  190. $validator = $this->validationFactory->make($requireData, ['id' => 'required', 'title' => 'required', 'cat_arr_id' => 'required', 'author' => 'required'], ['title.required' => '标题不能为空', 'cat_arr_id.required' => '导航池ID不能为空', 'author.required' => '作者不能为空', 'id.required' => 'ID不能为空']);
  191. if ($validator->fails()) {
  192. $errorMessage = $validator->errors()->first();
  193. return Result::error($errorMessage);
  194. }
  195. $requireData['catid'] = isset($requireData['cat_arr_id']) ? end($requireData['cat_arr_id']) : '';
  196. $requireData['cat_arr_id'] = isset($requireData['cat_arr_id']) ? json_encode($requireData['cat_arr_id']) : '';
  197. $result = $this->newsServiceClient->updateArticle($requireData);
  198. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  199. }
  200. /**
  201. * 更新资讯状态
  202. * @return array
  203. */
  204. public function upArticleStatus()
  205. {
  206. $requireData = $this->request->all();
  207. $validator = $this->validationFactory->make($requireData, ['id' => 'required', 'status' => 'required'], ['id.required' => 'id不能为空', 'status.required' => '状态不能为空']);
  208. if ($validator->fails()) {
  209. $errorMessage = $validator->errors()->first();
  210. return Result::error($errorMessage);
  211. }
  212. $result = $this->newsServiceClient->upArticleStatus($requireData);
  213. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  214. }
  215. /**
  216. * 删除分类
  217. * @return array
  218. */
  219. public function delArticle()
  220. {
  221. $requireData = $this->request->all();
  222. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => 'id不能为空']);
  223. if ($validator->fails()) {
  224. $errorMessage = $validator->errors()->first();
  225. return Result::error($errorMessage);
  226. }
  227. $result = $this->newsServiceClient->delArticle($requireData);
  228. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  229. }
  230. /**
  231. * 获取资讯信息
  232. * @return array
  233. */
  234. public function getArticleInfo()
  235. {
  236. $requireData = $this->request->all();
  237. $validator = $this->validationFactory->make($requireData, ['id' => 'required'], ['id.required' => 'id不能为空']);
  238. if ($validator->fails()) {
  239. $errorMessage = $validator->errors()->first();
  240. return Result::error($errorMessage);
  241. }
  242. $result = $this->newsServiceClient->getArticleInfo($requireData);
  243. $result['data']['cat_arr_id'] = $result['data']['cat_arr_id'] ? json_decode($result['data']['cat_arr_id']) : [];
  244. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  245. }
  246. }