WebsiteController.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689
  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller;
  4. use App\JsonRpc\WebsiteServiceInterface;
  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 WebsiteController
  13. * @package App\Controller
  14. */
  15. //#[AutoController]
  16. class WebsiteController extends AbstractController
  17. {
  18. #[Inject]
  19. protected ValidatorFactoryInterface $validationFactory;
  20. /**
  21. * @var WebsiteServiceInterface
  22. */
  23. #[Inject]
  24. private $websiteServiceClient;
  25. /**
  26. * 创建站点
  27. * @return array
  28. */
  29. public function addWebsite()
  30. {
  31. $requireData = $this->request->all();
  32. $validator = $this->validationFactory->make(
  33. $requireData,
  34. [
  35. 'website_column_arr_id' => 'required',
  36. 'website_name' => 'required',
  37. 'website_url' => 'required',
  38. ],
  39. [
  40. 'website_column_id.required' => '上级网系id不能为空',
  41. 'website_name.required' => '站点名称不能为空',
  42. 'website_url.required' => '网站地址不能为空',
  43. ]
  44. );
  45. if ($validator->fails()){
  46. $errorMessage = $validator->errors()->first();
  47. return Result::error($errorMessage);
  48. }
  49. $requireData['website_url'] = json_encode($requireData['website_url']);
  50. $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
  51. $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
  52. $requireData['website_column_id'] = isset($requireData['website_column_arr_id'])?end($requireData['website_column_arr_id']):'';
  53. $requireData['website_column_arr_id'] = isset($requireData['website_column_arr_id'])?json_encode($requireData['website_column_arr_id']):'';
  54. var_dump($requireData);
  55. $result = $this->websiteServiceClient->createWebsite($requireData);
  56. return $result?Result::success($result['data']):Result::error($result['message']);
  57. }
  58. /**
  59. * 获取站点列表
  60. * @return void
  61. */
  62. public function getWebsiteList()
  63. {
  64. $requireData = $this->request->all();
  65. $validator = $this->validationFactory->make(
  66. $requireData,
  67. [
  68. 'page' => 'required',
  69. 'pageSize' => 'required',
  70. ],
  71. [
  72. 'page.required' => '页码不能为空',
  73. 'pageSize.required' => '每页显示条数不能为空',
  74. ]
  75. );
  76. if ($validator->fails()){
  77. $errorMessage = $validator->errors()->first();
  78. return Result::error($errorMessage);
  79. }
  80. $result = $this->websiteServiceClient->getWebsitetList($requireData);
  81. if($result['data']){
  82. foreach ($result['data']['rows'] as $k=>$v) {
  83. $result['data']['rows'][$k]['city_arr_id'] = $v['city_arr_id']?json_decode($v['city_arr_id']):'';
  84. }
  85. }
  86. return $result?Result::success($result['data']):Result::error($result['message']);
  87. }
  88. /**
  89. * 更新站点
  90. * @return array
  91. */
  92. public function updateWebsite()
  93. {
  94. $requireData = $this->request->all();
  95. $validator = $this->validationFactory->make(
  96. $requireData,
  97. [
  98. 'id' => 'required',
  99. 'website_column_arr_id' => 'required',
  100. 'website_name' => 'required',
  101. 'website_url' => 'required',
  102. ],
  103. [
  104. 'id.required' => 'id不能为空',
  105. 'website_column_id.required' => '网系id不能为空',
  106. 'website_name.required' => '站点名称不能为空',
  107. 'website_url.required' => '网站地址不能为空',
  108. ]
  109. );
  110. if ($validator->fails()){
  111. $errorMessage = $validator->errors()->first();
  112. return Result::error($errorMessage);
  113. }
  114. $requireData['website_url'] = json_encode($requireData['website_url']);
  115. $requireData['city_id'] = isset($requireData['city_arr_id'])?end($requireData['city_arr_id']):'';
  116. $requireData['city_arr_id'] = isset($requireData['city_arr_id'])?json_encode($requireData['city_arr_id']):'';
  117. $requireData['website_column_id'] = isset($requireData['website_column_arr_id'])?end($requireData['website_column_arr_id']):'';
  118. $requireData['website_column_arr_id'] = isset($requireData['website_column_arr_id'])?json_encode($requireData['website_column_arr_id']):'';
  119. $result = $this->websiteServiceClient->updateWebsite((int)$requireData['id'],$requireData);
  120. return $result?Result::success($result['data']):Result::error($result['message']);
  121. }
  122. /**
  123. * 删除站点
  124. * @return array
  125. */
  126. public function delWebsite()
  127. {
  128. $requireData = $this->request->all();
  129. $validator = $this->validationFactory->make(
  130. $requireData,
  131. [
  132. 'id' => 'required',
  133. ],
  134. [
  135. 'id.required' => 'id不能为空',
  136. ]
  137. );
  138. if ($validator->fails()){
  139. $errorMessage = $validator->errors()->first();
  140. return Result::error($errorMessage);
  141. }
  142. $id = (int)$requireData['id'];
  143. $result = $this->websiteServiceClient->delWebsite($id);
  144. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  145. }
  146. /**
  147. * 获取站点信息
  148. * @return array
  149. */
  150. public function getWebsiteInfo()
  151. {
  152. $requireData = $this->request->all();
  153. $validator = $this->validationFactory->make(
  154. $requireData,
  155. [
  156. 'id' => 'required',
  157. ],
  158. [
  159. 'id.required' => 'id不能为空',
  160. ]
  161. );
  162. if ($validator->fails()){
  163. $errorMessage = $validator->errors()->first();
  164. return Result::error($errorMessage);
  165. }
  166. $id = (int)$requireData['id'];
  167. $result = $this->websiteServiceClient->getWebsiteInfo($id);
  168. if($result['code']==200){
  169. $result['data']['website_url'] = isset($result['data']['website_url']) && $result['data']['website_url']?json_decode($result['data']['website_url']):'';
  170. $result['data']['website_column_arr_id'] = isset($result['data']['website_column_arr_id']) && $result['data']['website_column_arr_id']?json_decode($result['data']['website_column_arr_id']):'';
  171. $result['data']['city_arr_id'] = isset($result['data']['city_arr_id']) && $result['data']['city_arr_id']?json_decode($result['data']['city_arr_id']):'';
  172. return Result::success($result['data']);
  173. }else{
  174. return Result::error($result['message']);
  175. }
  176. }
  177. public function getWebsiteColumn()
  178. {
  179. $pid = (int)$this->request->input("pid",0);
  180. $result = $this->websiteServiceClient->getWebsiteColumn([]);
  181. $rep = PublicData::buildMenuTree($result['data']);
  182. return $rep?Result::success($rep):Result::error("查询失败");
  183. }
  184. /**
  185. * 获取站点列表
  186. * @return void
  187. */
  188. public function getWebsiteColumnList()
  189. {
  190. $keyword = $this->request->input("keyWord",'');
  191. $page = (int)$this->request->input("page",1);
  192. $pageSize = (int)$this->request->input("pageSize",10);
  193. $result = $this->websiteServiceClient->getWebsiteColumnList($keyword,$page,$pageSize);
  194. if($result['data']){
  195. foreach ($result['data']['rows'] as $k=>$v) {
  196. $result['data']['rows'][$k]['column_arr_id'] = $v['column_arr_id']?json_decode($v['column_arr_id']):[0];
  197. }
  198. }
  199. return $result?Result::success($result['data']):Result::error($result['message']);
  200. }
  201. /**
  202. * 创建栏目
  203. * @return array
  204. */
  205. public function addWebsiteColumn()
  206. {
  207. $requireData = $this->request->all();
  208. $validator = $this->validationFactory->make(
  209. $requireData,
  210. [
  211. 'column_name' => 'required',
  212. 'column_arr_id' => 'required'
  213. ],
  214. [
  215. 'column_name.required' => '栏目名称不能为空',
  216. 'column_arr_id.required' => '栏目ID不能为空'
  217. ]
  218. );
  219. if ($validator->fails()){
  220. $errorMessage = $validator->errors()->first();
  221. return Result::error($errorMessage);
  222. }
  223. if(isset($requireData['column_arr_id']) && is_array($requireData['column_arr_id'])){
  224. $requireData['pid'] = end($requireData['column_arr_id']);
  225. $requireData['column_arr_id'] = json_encode($requireData['column_arr_id']);
  226. }else{
  227. $column_arr_id= [0];
  228. $requireData['column_arr_id'] = json_encode($column_arr_id);
  229. $requireData['pid'] = end($column_arr_id);
  230. }
  231. $result = $this->websiteServiceClient->createWebsiteColumn($requireData);
  232. return $result?Result::success($result['data']):Result::error($result['message']);
  233. }
  234. /**
  235. * 创建栏目
  236. * @return array
  237. */
  238. public function updateWebsiteColumn()
  239. {
  240. $requireData = $this->request->all();
  241. $validator = $this->validationFactory->make(
  242. $requireData,
  243. [
  244. 'column_name' => 'required',
  245. 'column_arr_id' => 'required'
  246. ],
  247. [
  248. 'column_name.required' => '栏目名称不能为空',
  249. 'column_arr_id.required' => '栏目ID不能为空'
  250. ]
  251. );
  252. if ($validator->fails()){
  253. $errorMessage = $validator->errors()->first();
  254. return Result::error($errorMessage);
  255. }
  256. if(isset($requireData['column_arr_id']) && is_array($requireData['column_arr_id'])){
  257. $requireData['pid'] = end($requireData['column_arr_id']);
  258. $requireData['column_arr_id'] = json_encode($requireData['column_arr_id']);
  259. }else{
  260. $column_arr_id= [0];
  261. $requireData['column_arr_id'] = json_encode($column_arr_id);
  262. $requireData['pid'] = end($column_arr_id);
  263. }
  264. $result = $this->websiteServiceClient->updateWebsiteColumn($requireData['id'],$requireData);
  265. return $result?Result::success($result['data']):Result::error($result['message']);
  266. }
  267. /**
  268. * 删除栏目
  269. * @return array
  270. */
  271. public function delWebsiteColumn()
  272. {
  273. $id = (int)$this->request->input("id",'');
  274. $result = $this->websiteServiceClient->delWebsiteColumn($id);
  275. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  276. }
  277. /**
  278. * 获取站点角色列表
  279. * @return void
  280. */
  281. public function getWebsiteRoleList()
  282. {
  283. $requireData = $this->request->all();
  284. $validator = $this->validationFactory->make(
  285. $requireData,
  286. [
  287. 'id' => 'required'
  288. ],
  289. [
  290. 'id.required' => '站点ID不能为空'
  291. ]
  292. );
  293. if ($validator->fails()){
  294. $errorMessage = $validator->errors()->first();
  295. return Result::error($errorMessage);
  296. }
  297. $keyword = $this->request->input("keyword",'');
  298. $page = (int)$this->request->input("page",1);
  299. $pageSize = (int)$this->request->input("pageSize",10);
  300. $websiteId = (int)$this->request->input("id",'');
  301. $result = $this->websiteServiceClient->getWebsiteRoleList($keyword,$page,$pageSize,$websiteId);
  302. return $result?Result::success($result['data']):Result::error($result['message']);
  303. }
  304. /**
  305. * 创建站点角色
  306. * @return array
  307. */
  308. public function createWebsiteRole()
  309. {
  310. $requireData = $this->request->all();
  311. $validator = $this->validationFactory->make(
  312. $requireData,
  313. [
  314. 'type' => 'required',
  315. 'role_id' => 'required',
  316. 'website_id' => 'required'
  317. ],
  318. [
  319. 'type.required' => '类型不能为空',
  320. 'type_id.required' => 'ID不能为空',
  321. 'website_id.required' => '站点ID不能为空',
  322. ]
  323. );
  324. if ($validator->fails()){
  325. $errorMessage = $validator->errors()->first();
  326. return Result::error($errorMessage);
  327. }
  328. $requireData['admin_user_id'] =Context::get("UserId");
  329. $result = $this->websiteServiceClient->createWebsiteRole($requireData);
  330. return $result['code']!=0?Result::success($result['data']):Result::error($result['message']);
  331. }
  332. /**
  333. * 删除站点角色
  334. * @return array
  335. */
  336. public function delWebsiteRole()
  337. {
  338. $id = (int)$this->request->input("id",'');
  339. $result = $this->websiteServiceClient->delWebsiteRole($id);
  340. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  341. }
  342. /**
  343. * 获取站点角色用户列表
  344. * @return void
  345. */
  346. public function getWebsiteRoleUserList()
  347. {
  348. $requireData = $this->request->all();
  349. $validator = $this->validationFactory->make(
  350. $requireData,
  351. [
  352. 'website_id' => 'required',
  353. 'role_id' => 'required',
  354. ],
  355. [
  356. 'website_id.required' => '站点ID不能为空',
  357. 'role_id.required' => '角色ID不能为空',
  358. ]
  359. );
  360. if ($validator->fails()){
  361. $errorMessage = $validator->errors()->first();
  362. return Result::error($errorMessage);
  363. }
  364. $keyword = $this->request->input("keyword",'');
  365. $page = (int)$this->request->input("page",1);
  366. $pageSize = (int)$this->request->input("pageSize",10);
  367. $roleId = (int)$this->request->input("role_id",'');
  368. $websiteId = (int)$this->request->input("website_id",'');
  369. $result = $this->websiteServiceClient->getWebsiteRoleUserList($keyword,$page,$pageSize,$websiteId,$roleId);
  370. return $result?Result::success($result['data']):Result::error($result['message']);
  371. }
  372. /**
  373. * 创建站点角色用户
  374. * @return array
  375. */
  376. public function createWebsiteRoleUser()
  377. {
  378. $requireData = $this->request->all();
  379. $validator = $this->validationFactory->make(
  380. $requireData,
  381. [
  382. 'type' => 'required',
  383. 'role_id' => 'required',
  384. 'website_id' => 'required',
  385. 'user_id' => 'required',
  386. ],
  387. [
  388. 'type.required' => '类型不能为空',
  389. 'website_id.required' => '站点ID不能为空',
  390. 'role_id.required' => '角色ID不能为空',
  391. 'user_id.required' => '用户ID不能为空',
  392. ]
  393. );
  394. if ($validator->fails()){
  395. $errorMessage = $validator->errors()->first();
  396. return Result::error($errorMessage);
  397. }
  398. $requireData['admin_user_id'] =Context::get("UserId");
  399. $requireData['role_id'] = (int)$requireData['role_id'];
  400. $requireData['type'] = (int)$requireData['type'];
  401. $requireData['website_id'] =(int)$requireData['website_id'];
  402. $requireData['user_id'] = (int)$requireData['user_id'];
  403. $result = $this->websiteServiceClient->createWebsiteRoleUser($requireData);
  404. return $result['code']!=0?Result::success($result['data']):Result::error($result['message']);
  405. }
  406. /**
  407. * 删除站点角色用户
  408. * @return array
  409. */
  410. public function delWebsiteRoleUser()
  411. {
  412. $id = (int)$this->request->input("id",'');
  413. $result = $this->websiteServiceClient->delWebsiteRoleUser($id);
  414. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  415. }
  416. /**
  417. * 网站栏目映射
  418. * @return void
  419. */
  420. public function addWebsiteCategory()
  421. {
  422. return [];
  423. }
  424. /**
  425. * 管理后台首页统计
  426. * @return array
  427. */
  428. public function getAdminIndex()
  429. {
  430. return [];
  431. }
  432. /**
  433. * 获取模板皮肤分类
  434. * @return void
  435. */
  436. public function getTemplateClass()
  437. {
  438. $result = $this->websiteServiceClient->getTemplateClass([]);
  439. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  440. }
  441. /**
  442. * 添加模板分类
  443. * @return void
  444. */
  445. public function addTemplateClass()
  446. {
  447. $requireData = $this->request->all();
  448. $validator = $this->validationFactory->make(
  449. $requireData,
  450. [
  451. 'name' => 'required'
  452. ],
  453. [
  454. 'name.required' => '模板类型不能为空'
  455. ]
  456. );
  457. if ($validator->fails()){
  458. $errorMessage = $validator->errors()->first();
  459. return Result::error($errorMessage);
  460. }
  461. $data = [
  462. 'name' => $requireData['name'],
  463. 'sort' => $requireData['sort']??0,
  464. ];
  465. $result = $this->websiteServiceClient->addTemplateClass($data);
  466. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  467. }
  468. /**
  469. * 更新模板分类
  470. * @return array
  471. */
  472. public function upTemplateClass()
  473. {
  474. $requireData = $this->request->all();
  475. $validator = $this->validationFactory->make(
  476. $requireData,
  477. [
  478. 'name' => 'required',
  479. 'id'=> 'required',
  480. ],
  481. [
  482. 'name.required' => '模板类型不能为空',
  483. 'name.id' => '模板类型ID不能为空'
  484. ]
  485. );
  486. if ($validator->fails()){
  487. $errorMessage = $validator->errors()->first();
  488. return Result::error($errorMessage);
  489. }
  490. $data = [
  491. 'id'=> $requireData['id'],
  492. 'name' => $requireData['name'],
  493. 'sort' => $requireData['sort']??0,
  494. ];
  495. $result = $this->websiteServiceClient->upTemplateClass($data);
  496. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  497. }
  498. /**
  499. * 删除模板分类
  500. * @return array
  501. */
  502. public function delTemplateClass()
  503. {
  504. $requireData = $this->request->all();
  505. $validator = $this->validationFactory->make(
  506. $requireData,
  507. [
  508. 'id' => 'required'
  509. ],
  510. [
  511. 'name.required' => '类型id不能为空'
  512. ]
  513. );
  514. if ($validator->fails()){
  515. $errorMessage = $validator->errors()->first();
  516. return Result::error($errorMessage);
  517. }
  518. $data = [
  519. 'id' => $requireData['id']
  520. ];
  521. $result = $this->websiteServiceClient->delTemplateClass($data);
  522. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  523. }
  524. /**
  525. * 获取分类下的模板
  526. * @return array
  527. */
  528. public function getTemplate()
  529. {
  530. $requireData = $this->request->all();
  531. $validator = $this->validationFactory->make(
  532. $requireData,
  533. [
  534. 'template_class_id' => 'required',
  535. 'page' => 'required',
  536. 'pageSize' => 'required',
  537. ],
  538. [
  539. 'template_class_id.required' => '类型template_class_id不能为空',
  540. 'page.required' => 'page不能为空',
  541. 'pageSize.required' => '每页显示条数不能为空',
  542. ]
  543. );
  544. if ($validator->fails()){
  545. $errorMessage = $validator->errors()->first();
  546. return Result::error($errorMessage);
  547. }
  548. $data = [
  549. 'template_class_id' => $requireData['template_class_id'],
  550. 'page' => $requireData['page'],
  551. 'pageSize' => $requireData['pageSize'],
  552. ];
  553. $result = $this->websiteServiceClient->getTemplate($data);
  554. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  555. }
  556. /**
  557. * 创建皮肤模板
  558. * @return array
  559. */
  560. public function addTemplate()
  561. {
  562. $requireData = $this->request->all();
  563. // var_dump("FCK:",$requireData);
  564. $validator = $this->validationFactory->make(
  565. $requireData,
  566. [
  567. 'template_name' => 'required',
  568. 'template_class_id' => 'required',
  569. 'template_img' => 'required'
  570. ],
  571. [
  572. 'template_name.required' => '模板名称不能为空',
  573. 'template_class_id.required' => '模板类型id不能为空',
  574. 'template_img.required' => '模板图片不能为空',
  575. ]
  576. );
  577. if ($validator->fails()){
  578. $errorMessage = $validator->errors()->first();
  579. return Result::error($errorMessage);
  580. }
  581. // var_dump($requireData);
  582. $data = [
  583. 'template_name' => $requireData['template_name'],
  584. 'template_class_id' => $requireData['template_class_id'],
  585. 'template_img' => $requireData['template_img'],
  586. ];
  587. $result = $this->websiteServiceClient->addTemplate($data);
  588. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  589. }
  590. /**
  591. * 更新模板
  592. * @return array
  593. */
  594. public function upTemplate()
  595. {
  596. $requireData = $this->request->all();
  597. $validator = $this->validationFactory->make(
  598. $requireData,
  599. [
  600. 'template_name' => 'required',
  601. 'template_class_id' => 'required',
  602. 'template_img' => 'required',
  603. 'id' => 'required',
  604. ],
  605. [
  606. 'template_name.required' => '模板名称不能为空',
  607. 'template_class_id.required' => '模板类型id不能为空',
  608. 'template_img.required' => '模板图片不能为空',
  609. 'id.required' => '模板id不能为空',
  610. ]
  611. );
  612. if ($validator->fails()){
  613. $errorMessage = $validator->errors()->first();
  614. return Result::error($errorMessage);
  615. }
  616. $data = [
  617. 'id'=> $requireData['id'],
  618. 'template_name' => $requireData['template_name'],
  619. 'template_img' => $requireData['template_img'],
  620. 'template_class_id' => $requireData['template_class_id'],
  621. ];
  622. $result = $this->websiteServiceClient->upTemplate($data);
  623. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  624. }
  625. /**
  626. * 删除模板
  627. * @return array
  628. */
  629. public function delTemplate()
  630. {
  631. $requireData = $this->request->all();
  632. $validator = $this->validationFactory->make(
  633. $requireData,
  634. [
  635. 'id' => 'required'
  636. ],
  637. [
  638. 'name.required' => '模板id不能为空'
  639. ]
  640. );
  641. if ($validator->fails()){
  642. $errorMessage = $validator->errors()->first();
  643. return Result::error($errorMessage);
  644. }
  645. $data = [
  646. 'id' => $requireData['id']
  647. ];
  648. $result = $this->websiteServiceClient->delTemplate($data);
  649. return $result['code']==200?Result::success($result['data']):Result::error($result['message']);
  650. }
  651. }