FooterController.php 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\FooterServiceInterface;
  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 App\Constants\ErrorCode;
  11. /**
  12. * Class FooterController
  13. * @package App\Controller
  14. */
  15. class FooterController extends AbstractController
  16. {
  17. #[Inject]
  18. protected ValidatorFactoryInterface $validationFactory;
  19. /**
  20. * @var FooterServiceInterface
  21. */
  22. #[Inject]
  23. private $footerServiceClient;
  24. /**
  25. * 获取底部导航
  26. * @return array
  27. */
  28. public function getFooterCategory()
  29. {
  30. $requireData = $this->request->all();
  31. if(isset($requireData['website_name'])){
  32. $validator = $this->validationFactory->make(
  33. $requireData,
  34. [
  35. 'website_name' =>'required|string|max:20',
  36. ],
  37. [
  38. 'website_name.required' => '网站名称不能为空',
  39. 'website_name.string' => '网站名称必须是字符串',
  40. 'website_name.max' => '网站名称不能超过20个字符',
  41. ]
  42. );
  43. if ($validator->fails()){
  44. $errorMessage = $validator->errors()->first();
  45. return Result::error($errorMessage);
  46. }
  47. $data['website_name'] = $requireData['website_name'];
  48. }
  49. if(isset($requireData['name'])){
  50. $validator = $this->validationFactory->make(
  51. $requireData,
  52. [
  53. 'name' =>'required|string|max:20'
  54. ],
  55. [
  56. 'name.required' => '底部导航名称不能为空',
  57. 'name.string' => '底部导航名称必须是字符串',
  58. 'name.max' => '底部导航名称不能超过20个字符',
  59. ]
  60. );
  61. if ($validator->fails()){
  62. $errorMessage = $validator->errors()->first();
  63. return Result::error($errorMessage);
  64. }
  65. $data['name'] = $requireData['name'];
  66. }
  67. $validator = $this->validationFactory->make(
  68. $requireData,
  69. [
  70. 'page' =>'required|integer',
  71. 'pageSize' =>'required|integer'
  72. ],
  73. [
  74. 'page.required' => '第几页不能为空',
  75. 'page.integer' => '第几页必须是整数',
  76. 'pageSize.required' => '每页显示数量不能为空',
  77. 'pageSize.integer' => '每页显示数量必须是整数'
  78. ]
  79. );
  80. if ($validator->fails()){
  81. $errorMessage = $validator->errors()->first();
  82. return Result::error($errorMessage);
  83. }
  84. $data['page'] = $requireData['page'];
  85. $data['pageSize'] = $requireData['pageSize'];
  86. // var_dump($data);
  87. $result = $this->footerServiceClient->getFooterCategory($data);
  88. if ($result['code'] != ErrorCode::SUCCESS) {
  89. return Result::error($result['message'],0,[]);
  90. }else{
  91. return Result::success($result['data']);
  92. }
  93. }
  94. /**
  95. * 添加底部导航
  96. * @return array
  97. */
  98. public function addFooterCategory()
  99. {
  100. $requireData = $this->request->all();
  101. if(!empty($requireData)){
  102. $validator = $this->validationFactory->make(
  103. $requireData,
  104. [
  105. 'website_id' =>'required|integer',
  106. 'name' =>'required|string|max:20',
  107. 'type' =>'required|integer|in:0,1'
  108. ],
  109. [
  110. 'website_id.required' => '网站id不能为空',
  111. 'website_id.integer' => '网站id必须是整数',
  112. 'name.required' => '底部导航名称不能为空',
  113. 'name.string' => '底部导航名称必须是字符串',
  114. 'name.max' => '底部导航名称不能超过20个字符',
  115. 'type.required' => '底部导航类型不能为空',
  116. 'type.integer' => '底部导航类型必须是整数',
  117. 'type.in' => '底部导航类型必须是0或1'
  118. ]
  119. );
  120. if ($validator->fails()){
  121. $errorMessage = $validator->errors()->first();
  122. return Result::error($errorMessage);
  123. }
  124. $data = $requireData;
  125. }else{
  126. $data = [];
  127. }
  128. $result = $this->footerServiceClient->addFooterCategory($data);
  129. if ($result['code'] != ErrorCode::SUCCESS) {
  130. return Result::error($result['message'],0,[]);
  131. }else{
  132. return Result::success($result['data']);
  133. }
  134. }
  135. /**
  136. * 修改底部导航
  137. * @return array
  138. */
  139. public function upFooterCategory()
  140. {
  141. $requireData = $this->request->all();
  142. $validator = $this->validationFactory->make(
  143. $requireData,
  144. [
  145. 'id' =>'required|integer'
  146. ],
  147. [
  148. 'id.required' => '底部导航id不能为空',
  149. 'id.integer' => '底部导航id必须是整数'
  150. ]
  151. );
  152. if ($validator->fails()){
  153. $errorMessage = $validator->errors()->first();
  154. return Result::error($errorMessage);
  155. }
  156. if(isset($requireData['name']) || isset($requireData['website_id'])){
  157. $validator = $this->validationFactory->make(
  158. $requireData,
  159. [
  160. 'name' =>'required|string|max:20'
  161. ],
  162. [
  163. 'name.required' => '底部导航名称不能为空',
  164. 'name.string' => '底部导航名称必须是字符串',
  165. 'name.max' => '底部导航名称不能超过20个字符'
  166. ]
  167. );
  168. if ($validator->fails()){
  169. $errorMessage = $validator->errors()->first();
  170. return Result::error($errorMessage);
  171. }
  172. $data['name'] = $requireData['name'];
  173. }
  174. if(isset($requireData['website_id'])){
  175. $validator = $this->validationFactory->make(
  176. $requireData,
  177. [
  178. 'website_id' =>'required|integer'
  179. ],
  180. [
  181. 'website_id.required' => '网站id不能为空',
  182. 'website_id.integer' => '网站id必须是整数'
  183. ]
  184. );
  185. if ($validator->fails()){
  186. $errorMessage = $validator->errors()->first();
  187. return Result::error($errorMessage);
  188. }
  189. $data['website_id'] = $requireData['website_id'];
  190. }
  191. $data['id'] = $requireData['id'];
  192. // var_dump($data);
  193. $result = $this->footerServiceClient->upFooterCategory($data);
  194. if ($result['code'] != ErrorCode::SUCCESS) {
  195. return Result::error($result['message'],0,[]);
  196. }else{
  197. return Result::success($result['data']);
  198. }
  199. }
  200. /**
  201. * 删除底部导航
  202. * @return array
  203. */
  204. public function delFooterCategory()
  205. {
  206. $requireData = $this->request->all();
  207. $validator = $this->validationFactory->make(
  208. $requireData,
  209. [
  210. 'id' =>'required|integer'
  211. ],
  212. [
  213. 'id.required' => '底部导航id不能为空',
  214. 'id.integer' => '底部导航id必须是整数'
  215. ]
  216. );
  217. $data['id'] = $requireData['id'];
  218. if($validator->fails()){
  219. $errorMessage = $validator->errors()->first();
  220. return Result::error($errorMessage);
  221. }
  222. $result = $this->footerServiceClient->delFooterCategory($data);
  223. if ($result['code']!= ErrorCode::SUCCESS) {
  224. return Result::error($result['message'],0,[]);
  225. }else{
  226. return Result::success($result['data']);
  227. }
  228. }
  229. /**
  230. * 添加底部导航(列表)内容
  231. * @return array
  232. */
  233. public function addFooterContent()
  234. {
  235. $requireData = $this->request->all();
  236. $validator = $this->validationFactory->make(
  237. $requireData,
  238. [
  239. 'type' =>'required|integer|in:0,1',
  240. 'fcat_id' =>'required|integer',
  241. 'con_title' =>'required|string',
  242. 'content' =>'required|string'
  243. ],
  244. [
  245. 'type.required' => '底部导航类型不能为空',
  246. 'type.integer' => '底部导航类型必须是整数',
  247. 'type.in' => '底部导航类型必须是0或1',
  248. 'fcat_id.required' => '底部导航id不能为空',
  249. 'fcat_id.integer' => '底部导航id必须是整数',
  250. 'con_title.required' => '内容标题不能为空',
  251. 'con_title.string' => '内容标题必须是字符串',
  252. 'content.required' => '内容不能为空',
  253. 'content.string' => '内容必须是字符串'
  254. ]
  255. );
  256. if($validator->fails()){
  257. $errorMessage = $validator->errors()->first();
  258. return Result::error($errorMessage);
  259. }
  260. $data['type'] = $requireData['type'];
  261. $data['fcat_id'] = $requireData['fcat_id'];
  262. $data['con_title'] = $requireData['con_title'];
  263. $data['content'] = $requireData['content'];
  264. if(isset($requireData['list_title'])){
  265. $validator = $this->validationFactory->make(
  266. $requireData,
  267. [
  268. 'list_title' =>'required|string'
  269. ],
  270. [
  271. 'list_title.required' => '列表标题不能为空',
  272. 'list_title.string' => '列表标题必须是字符串'
  273. ]
  274. );
  275. if($validator->fails()){
  276. $errorMessage = $validator->errors()->first();
  277. return Result::error($errorMessage);
  278. }
  279. $data['list_title'] = $requireData['list_title'];
  280. }
  281. // return Result::success($data);
  282. $result = $this->footerServiceClient->addFooterContent($data);
  283. if ($result['code']!= ErrorCode::SUCCESS) {
  284. return Result::error($result['message'],0,[]);
  285. }else{
  286. return Result::success($result['data']);
  287. }
  288. }
  289. /**
  290. * 获取并搜索底部导航(列表)内容
  291. * @return array
  292. */
  293. public function getFooterContent()
  294. {
  295. $requireData = $this->request->all();
  296. $validator = $this->validationFactory->make(
  297. $requireData,
  298. [
  299. 'fcat_id' =>'required|integer',
  300. 'page' =>'required|integer',
  301. 'pageSize' =>'required|integer'
  302. ],
  303. [
  304. 'fcat_id.required' => '底部导航id不能为空',
  305. 'fcat_id.integer' => '底部导航id必须是整数',
  306. 'page.required' => '第几页不能为空',
  307. 'page.integer' => '第几页必须是整数',
  308. 'pageSize.required' => '每页显示数量不能为空',
  309. 'pageSize.integer' => '每页显示数量必须是整数'
  310. ]
  311. );
  312. if($validator->fails()){
  313. $errorMessage = $validator->errors()->first();
  314. return Result::error($errorMessage);
  315. }
  316. if(isset($requireData['list_title'])){
  317. $validator = $this->validationFactory->make(
  318. $requireData,
  319. [
  320. 'list_title' =>'required|string|max:30'
  321. ],
  322. [
  323. 'list_title.required' => '列表标题不能为空',
  324. 'list_title.string' => '列表标题必须是字符串',
  325. 'list_title.max' => '列表标题不能超过30个字符'
  326. ]
  327. );
  328. if($validator->fails()){
  329. $errorMessage = $validator->errors()->first();
  330. return Result::error($errorMessage);
  331. }
  332. $data['list_title'] = $requireData['list_title'];
  333. }
  334. if(isset($requireData['con_title'])){
  335. $validator = $this->validationFactory->make(
  336. $requireData,
  337. [
  338. 'con_title' =>'required|string'
  339. ],
  340. [
  341. 'con_title.required' => '内容标题不能为空',
  342. 'con_title.string' => '内容标题必须是字符串'
  343. ]
  344. );
  345. if($validator->fails()){
  346. $errorMessage = $validator->errors()->first();
  347. return Result::error($errorMessage);
  348. }
  349. $data['con_title'] = $requireData['con_title'];
  350. }
  351. $data['fcat_id'] = $requireData['fcat_id'];
  352. $data['page'] = $requireData['page'];
  353. $data['pageSize'] = $requireData['pageSize'];
  354. $result = $this->footerServiceClient->getFooterContent($data);
  355. if ($result['code']!= ErrorCode::SUCCESS) {
  356. return Result::error($result['message'],0,[]);
  357. }else{
  358. return Result::success($result['data']);
  359. }
  360. }
  361. /**
  362. * 获取某个底部导航(列表)内容
  363. * @return array
  364. */
  365. public function getOneFooterContent()
  366. {
  367. $requireData = $this->request->all();
  368. $validator = $this->validationFactory->make(
  369. $requireData,
  370. [
  371. 'id' =>'required|integer'
  372. ],
  373. [
  374. 'id.required' => '底部导航内容id不能为空',
  375. 'id.integer' => '底部导航内容id必须是整数'
  376. ]
  377. );
  378. if($validator->fails()){
  379. $errorMessage = $validator->errors()->first();
  380. return Result::error($errorMessage);
  381. }
  382. $data['id'] = $requireData['id'];
  383. if($validator->fails()){
  384. $errorMessage = $validator->errors()->first();
  385. return Result::error($errorMessage);
  386. }
  387. // var_dump($data);
  388. $result = $this->footerServiceClient->getOneFooterContent($data);
  389. if ($result['code']!= ErrorCode::SUCCESS) {
  390. return Result::error($result['message'],0,[]);
  391. }else{
  392. return Result::success($result['data']);
  393. }
  394. }
  395. /**
  396. * 修改底部导航(列表)内容
  397. * @return array
  398. */
  399. public function upFooterContent()
  400. {
  401. $requireData = $this->request->all();
  402. $validator = $this->validationFactory->make(
  403. $requireData,
  404. [
  405. 'id' =>'required|integer',
  406. 'type' =>'required|integer|in:0,1',
  407. 'con_title' =>'required|string',
  408. 'content' =>'required|string'
  409. ],
  410. [
  411. 'id.required' => '底部导航内容id不能为空',
  412. 'id.integer' => '底部导航内容id必须是整数',
  413. 'type.required' => '底部导航类型不能为空',
  414. 'type.integer' => '底部导航类型必须是整数',
  415. 'type.in' => '底部导航类型必须是0或1',
  416. 'con_title.required' => '内容标题不能为空',
  417. 'con_title.string' => '内容标题必须是字符串',
  418. 'content.required' => '内容不能为空',
  419. 'content.string' => '内容必须是字符串'
  420. ]
  421. );
  422. if($validator->fails()){
  423. $errorMessage = $validator->errors()->first();
  424. return Result::error($errorMessage);
  425. }
  426. $data['id'] = $requireData['id'];
  427. $data['type'] = $requireData['type'];
  428. $data['con_title'] = $requireData['con_title'];
  429. $data['content'] = $requireData['content'];
  430. if(isset($requireData['list_title'])){
  431. $validator = $this->validationFactory->make(
  432. $requireData,
  433. [
  434. 'list_title' =>'required|string'
  435. ],
  436. [
  437. 'list_title.required' => '列表标题不能为空',
  438. 'list_title.string' => '列表标题必须是字符串'
  439. ]
  440. );
  441. if ($validator->fails()){
  442. $errorMessage = $validator->errors()->first();
  443. return Result::error($errorMessage);
  444. }
  445. $data['list_title'] = $requireData['list_title'];
  446. }
  447. // var_dump($data);
  448. $result = $this->footerServiceClient->upFooterContent($data);
  449. if ($result['code']!= ErrorCode::SUCCESS) {
  450. return Result::error($result['message'],0,[]);
  451. }else{
  452. return Result::success($result['data']);
  453. }
  454. }
  455. /**
  456. * 删除底部导航(列表)内容
  457. * @return array
  458. */
  459. public function delFooterContent()
  460. {
  461. $requireData = $this->request->all();
  462. $validator = $this->validationFactory->make(
  463. $requireData,
  464. [
  465. 'id' =>'required|integer'
  466. ],
  467. [
  468. 'id.required' => '底部导航id不能为空',
  469. 'id.integer' => '底部导航id必须是整数'
  470. ]
  471. );
  472. if($validator->fails()){
  473. $errorMessage = $validator->errors()->first();
  474. return Result::error($errorMessage);
  475. }
  476. $data['id'] = $requireData['id'];
  477. // var_dump($data);
  478. $result = $this->footerServiceClient->delFooterContent($data);
  479. if ($result['code']!= ErrorCode::SUCCESS) {
  480. return Result::error($result['message'],0,[]);
  481. }else{
  482. return Result::success($result['data']);
  483. }
  484. }
  485. }