NewsController.php 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319
  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. /**
  11. * Class NewsController
  12. * @package App\Controller
  13. */
  14. //#[AutoController]
  15. class NewsController extends AbstractController
  16. {
  17. #[Inject]
  18. protected ValidatorFactoryInterface $validationFactory;
  19. /**
  20. * @var NewsServiceInterface
  21. */
  22. #[Inject]
  23. private $newsServiceClient;
  24. /**
  25. * 分类列表
  26. * @return void
  27. */
  28. public function getCategoryList()
  29. {
  30. $requireData = $this->request->all();
  31. $validator = $this->validationFactory->make(
  32. $requireData,
  33. [
  34. 'pid'=> 'required',
  35. ],
  36. [
  37. 'pid.required' => 'pid不能为空',
  38. ]
  39. );
  40. if ($validator->fails()) {
  41. $errorMessage = $validator->errors()->first();
  42. return Result::error($errorMessage);
  43. }
  44. $requireData['website_id'] = $this->websiteId;
  45. $result = $this->newsServiceClient->getCategoryList($requireData);
  46. if($result['data']){
  47. foreach ($result['data']['rows'] as $k=>$v) {
  48. $result['data']['rows'][$k]['pid_arr'] = $v['pid_arr']?json_decode($v['pid_arr']):[0];
  49. }
  50. }
  51. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  52. }
  53. /**
  54. * 分类列表
  55. * @return void
  56. */
  57. public function categoryList()
  58. {
  59. $requireData['website_id'] = $this->websiteId;
  60. $result = $this->newsServiceClient->categoryList($requireData);
  61. var_dump($result);
  62. $rep = PublicData::buildMenuTree($result['data']);
  63. return $result ? Result::success($rep) : Result::error($result['message']);
  64. }
  65. /**
  66. * 添加分类
  67. * @return array|void
  68. */
  69. public function addCategory()
  70. {
  71. $requireData = $this->request->all();
  72. $validator = $this->validationFactory->make(
  73. $requireData,
  74. [
  75. 'name'=> 'required',
  76. ],
  77. [
  78. 'name.required' => '分类名称不能为空',
  79. ]
  80. );
  81. if ($validator->fails()) {
  82. $errorMessage = $validator->errors()->first();
  83. return Result::error($errorMessage);
  84. }
  85. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  86. $requireData['pid_arr'] = json_encode($requireData['pid']);
  87. $requireData['pid'] = end($requireData['pid']);
  88. }else{
  89. $id = [0];
  90. $requireData['pid_arr'] = json_encode($id);
  91. $requireData['pid'] = end($id);
  92. }
  93. $requireData['website_id'] = $this->websiteId;
  94. $result = $this->newsServiceClient->addCategory($requireData);
  95. return $result ? Result::success($result['data']) : Result::error($result['message']);
  96. }
  97. public function updateCategory()
  98. {
  99. $requireData = $this->request->all();
  100. $validator = $this->validationFactory->make(
  101. $requireData,
  102. [
  103. 'id'=>'required',
  104. 'name'=> 'required',
  105. ],
  106. [
  107. 'name.required' => '分类名称不能为空',
  108. 'id.required' =>'ID不能为空'
  109. ]
  110. );
  111. if ($validator->fails()) {
  112. $errorMessage = $validator->errors()->first();
  113. return Result::error($errorMessage);
  114. }
  115. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  116. $requireData['pid_arr'] = json_encode($requireData['pid']);
  117. $requireData['pid'] = end($requireData['pid']);
  118. }else{
  119. $id = [0];
  120. $requireData['pid_arr'] = json_encode($id);
  121. $requireData['pid'] = end($id);
  122. }
  123. $requireData['website_id'] = $this->websiteId;
  124. $result = $this->newsServiceClient->updateCategory($requireData);
  125. return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
  126. }
  127. /**
  128. * 删除分类
  129. * @return array
  130. */
  131. public function delCategory()
  132. {
  133. $requireData = $this->request->all();
  134. $validator = $this->validationFactory->make(
  135. $requireData,
  136. [
  137. 'id'=> 'required',
  138. ],
  139. [
  140. 'id.required' => 'id不能为空',
  141. ]
  142. );
  143. if ($validator->fails()) {
  144. $errorMessage = $validator->errors()->first();
  145. return Result::error($errorMessage);
  146. }
  147. $requireData['website_id'] = $this->websiteId;
  148. $result = $this->newsServiceClient->delCategory($requireData);
  149. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  150. }
  151. /**
  152. * 资讯列表
  153. * @return void
  154. */
  155. public function getArticleList()
  156. {
  157. $requireData = $this->request->all();
  158. $requireData['website_id'] = $this->websiteId;
  159. var_dump("资讯:",$requireData);
  160. $result = $this->newsServiceClient->getArticleList($requireData);
  161. //1通过,2待审核,3待发 4,拒绝 5删除
  162. $statusList = [
  163. '1'=>'通过',
  164. '2'=>'待审核',
  165. '3'=>'待发',
  166. '4'=>'拒绝',
  167. '5'=>'删除',
  168. ];
  169. if($result['data']){
  170. foreach ($result['data']['rows'] as $k=>$v) {
  171. $result['data']['rows'][$k]['cat_arr_id'] = $v['cat_arr_id']?json_decode($v['cat_arr_id']):[0];
  172. $result['data']['rows'][$k]['tag'] = $v['tag']?json_decode($v['tag']):[];
  173. $result['data']['rows'][$k]['status_name'] = $statusList[$v['status']];
  174. $result['data']['rows'][$k]['level'] = (string)$v['level'];
  175. $result['data']['rows'][$k]['islink'] = isset($v['islink']) && $v['islink']>0?true:false;
  176. }
  177. }
  178. return $result['code'] == 200 ? Result::success($result['data']) : Result::error($result['message']);
  179. }
  180. /**
  181. * 添加分类
  182. * @return array|void
  183. */
  184. public function addArticle()
  185. {
  186. $requireData = $this->request->all();
  187. $validator = $this->validationFactory->make(
  188. $requireData,
  189. [
  190. 'title'=> 'required',
  191. 'catid'=> 'required',
  192. 'author'=> 'required',
  193. ],
  194. [
  195. 'title.required' => '标题不能为空',
  196. 'catid.required' => '分类不能为空',
  197. 'author.required' => '作者不能为空',
  198. ]
  199. );
  200. if ($validator->fails()){
  201. $errorMessage = $validator->errors()->first();
  202. return Result::error($errorMessage);
  203. }
  204. if(isset($requireData['catid']) && is_array($requireData['catid'])){
  205. $requireData['cat_arr_id'] = json_encode($requireData['catid']);
  206. $requireData['catid'] = end($requireData['catid']);
  207. }else{
  208. $id = [0];
  209. $requireData['cat_arr_id'] = json_encode($id);
  210. $requireData['catid'] = end($id);
  211. }
  212. $loginIp = $this->request->getHeader('x-forwarded-for')[0] ?? $this->request->getHeader('x-real-ip')[0] ?? $this->request->getServerParams()['remote_addr'] ?? '0.0.0.0';
  213. $requireData['ip'] = $loginIp;
  214. $requireData['website_id'] = $this->websiteId;
  215. $requireData['admin_user_id'] = $this->UserId;
  216. $result = $this->newsServiceClient->addArticle($requireData);
  217. return $result ? Result::success($result['data']) : Result::error($result['message']);
  218. }
  219. public function updateArticle()
  220. {
  221. $requireData = $this->request->all();
  222. $validator = $this->validationFactory->make(
  223. $requireData,
  224. [
  225. 'id'=>'required',
  226. 'name'=> 'required',
  227. ],
  228. [
  229. 'name.required' => '分类名称不能为空',
  230. 'id.required' =>'ID不能为空'
  231. ]
  232. );
  233. if ($validator->fails()) {
  234. $errorMessage = $validator->errors()->first();
  235. return Result::error($errorMessage);
  236. }
  237. if(isset($requireData['pid']) && is_array($requireData['pid'])){
  238. $requireData['pid_arr'] = json_encode($requireData['pid']);
  239. $requireData['pid'] = end($requireData['pid']);
  240. }else{
  241. $id = [0];
  242. $requireData['pid_arr'] = json_encode($id);
  243. $requireData['pid'] = end($id);
  244. }
  245. $requireData['website_id'] = $this->websiteId;
  246. $result = $this->newsServiceClient->updateArticle($requireData);
  247. return $result['code']==200? Result::success($result['data']) : Result::error($result['message']);
  248. }
  249. /**
  250. * 删除分类
  251. * @return array
  252. */
  253. public function delArticle()
  254. {
  255. $requireData = $this->request->all();
  256. $validator = $this->validationFactory->make(
  257. $requireData,
  258. [
  259. 'id'=> 'required',
  260. ],
  261. [
  262. 'id.required' => 'id不能为空',
  263. ]
  264. );
  265. if ($validator->fails()) {
  266. $errorMessage = $validator->errors()->first();
  267. return Result::error($errorMessage);
  268. }
  269. $requireData['website_id'] = $this->websiteId;
  270. $result = $this->newsServiceClient->delArticle($requireData);
  271. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  272. }
  273. /**
  274. * 获取资讯信息
  275. * @return array
  276. */
  277. public function getArticleInfo()
  278. {
  279. $requireData = $this->request->all();
  280. $validator = $this->validationFactory->make(
  281. $requireData,
  282. [
  283. 'id'=> 'required',
  284. ],
  285. [
  286. 'id.required' => 'id不能为空',
  287. ]
  288. );
  289. if ($validator->fails()) {
  290. $errorMessage = $validator->errors()->first();
  291. return Result::error($errorMessage);
  292. }
  293. $result = $this->newsServiceClient->getArticleInfo($requireData);
  294. return $result['code']==200 ? Result::success($result['data']) : Result::error($result['message']);
  295. }
  296. }