MeetingController.php 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560
  1. <?php
  2. namespace App\Web\Controllers;
  3. use App\Http\Controllers\BaseController;
  4. use App\Web\Services\MeetingService;
  5. use Illuminate\Http\Request;
  6. class MeetingController extends BaseController
  7. {
  8. protected $service = null;
  9. /**
  10. * 构造函数
  11. * MeetingController constructor.
  12. * @param MeetingService $service
  13. */
  14. public function __construct(MeetingService $service)
  15. {
  16. $this->service = $service;
  17. }
  18. /**
  19. * 获取产品类型列表
  20. * */
  21. public function getMeetingTypeList(Request $request){
  22. $params=$request->only(['page_size','page','status','keyword']);
  23. $ret=$this->service->getMeetingTypeList($params);
  24. return $this->jsonResponse(
  25. 'ok',
  26. $ret
  27. );
  28. }
  29. /**
  30. * 产品类型保存
  31. * */
  32. public function saveMeetingType(Request $request){
  33. $this->validate($request, [
  34. 'type_name' => 'required',
  35. ], [
  36. 'type_name.required' => '类型名称不能为空',
  37. ]);
  38. $params=$request->only(['id','type_name','status','sort','seo_data', 'seo_id','expand_content']);
  39. $ret=$this->service->saveMeetingType($params);
  40. return $this->jsonResponse(
  41. 'ok',
  42. $ret
  43. );
  44. }
  45. /**
  46. * 变更产品类型状态
  47. * */
  48. public function changeMeetingTypeStatus(Request $request){
  49. $this->validate($request, [
  50. 'id' => 'required',
  51. ], [
  52. 'id.required' => 'id不能为空',
  53. ]);
  54. $params=$request->only(['id','status']);
  55. $ret=$this->service->saveMeetingType($params);
  56. return $this->jsonResponse(
  57. 'ok',
  58. $ret
  59. );
  60. }
  61. /**
  62. * 保存产品类型关系
  63. * */
  64. public function typeRelationSave(Request $request){
  65. $this->validate($request, [
  66. 'meeting_id' => 'required',
  67. ], [
  68. 'meeting_id.required' => '产品id不能为空',
  69. ]);
  70. $params=$request->only(['meeting_id','type_ids']);
  71. $ret=$this->service->typeRelationSave($params);
  72. return $this->jsonResponse(
  73. 'ok',
  74. $ret
  75. );
  76. }
  77. /**
  78. * 根据产品类型 保存产品关系
  79. * */
  80. public function addRelationByTypeId(Request $request){
  81. $this->validate($request, [
  82. 'meeting_ids' => 'required',
  83. 'type_id' => 'required',
  84. ], [
  85. 'meeting_ids.required' => '产品id不能为空',
  86. 'type_id.required' => '产品类型id不能为空',
  87. ]);
  88. $typeId=$request->input('type_id',0);
  89. $meetingIds=$request->input('meeting_ids',[]);
  90. $ret=$this->service->addRelationByTypeId($typeId,$meetingIds);
  91. return $this->jsonResponse(
  92. 'ok',
  93. $ret
  94. );
  95. }
  96. /**
  97. * 根据类型id及产品id 删除关联关系
  98. * */
  99. public function delTypeRelation(Request $request){
  100. $this->validate($request, [
  101. 'meeting_id' => 'required',
  102. 'type_id' => 'required',
  103. ], [
  104. 'meeting_id.required' => '产品id不能为空',
  105. 'type_id.required' => '类型id不能未空',
  106. ]);
  107. $meetingId=$request->input('meeting_id','');
  108. $typeId=$request->input('type_id','');
  109. $ret=$this->service->delTypeRelation($typeId,$meetingId);
  110. return $this->jsonResponse(
  111. 'ok',
  112. $ret
  113. );
  114. }
  115. /**
  116. * 获取产品标签列表
  117. * */
  118. public function getMeetingTagList(Request $request){
  119. $params=$request->only(['page_size','page','status','keyword']);
  120. $ret=$this->service->getMeetingTagList($params);
  121. return $this->jsonResponse(
  122. 'ok',
  123. $ret
  124. );
  125. }
  126. /**
  127. * 产品标签保存
  128. * */
  129. public function saveMeetingTag(Request $request){
  130. $this->validate($request, [
  131. 'tag_name' => 'required',
  132. ], [
  133. 'tag_name.required' => '类型名称不能为空',
  134. ]);
  135. $params=$request->only(['id','tag_name','is_hot','status','sort','type','seo_id','seo_data']);
  136. $ret=$this->service->saveMeetingTag($params);
  137. return $this->jsonResponse(
  138. 'ok',
  139. $ret
  140. );
  141. }
  142. /**
  143. * 变更产品类型状态
  144. * */
  145. public function changeMeetingTagStatus(Request $request){
  146. $this->validate($request, [
  147. 'id' => 'required',
  148. ], [
  149. 'id.required' => 'id不能为空',
  150. ]);
  151. $params=$request->only(['id','status']);
  152. $ret=$this->service->saveMeetingTag($params);
  153. return $this->jsonResponse(
  154. 'ok',
  155. $ret
  156. );
  157. }
  158. /**
  159. * 保存产品标签关系
  160. * */
  161. public function tagRelationSave(Request $request){
  162. $this->validate($request, [
  163. 'meeting_id' => 'required',
  164. ], [
  165. 'meeting_id.required' => '产品id不能为空',
  166. ]);
  167. $params=$request->only(['meeting_id','tag_ids']);
  168. $ret=$this->service->tagRelationSave($params);
  169. return $this->jsonResponse(
  170. 'ok',
  171. $ret
  172. );
  173. }
  174. /**
  175. * 根据产品标签 保存产品关系
  176. * */
  177. public function addRelationByTagId(Request $request){
  178. $this->validate($request, [
  179. 'meeting_ids' => 'required',
  180. 'tag_id' => 'required',
  181. ], [
  182. 'meeting_ids.required' => '产品id不能为空',
  183. 'tag_id.required' => '产品标签id不能为空',
  184. ]);
  185. $tagId=$request->input('tag_id',0);
  186. $meetingIds=$request->input('meeting_ids',[]);
  187. $ret=$this->service->addRelationByTagId($tagId,$meetingIds);
  188. return $this->jsonResponse(
  189. 'ok',
  190. $ret
  191. );
  192. }
  193. /**
  194. * 根据标签id及产品id 删除关联关系
  195. * */
  196. public function delTagRelation(Request $request){
  197. $this->validate($request, [
  198. 'meeting_id' => 'required',
  199. 'tag_id' => 'required',
  200. ], [
  201. 'meeting_id.required' => '产品id不能为空',
  202. 'tag_id.required' => '标签id不能未空',
  203. ]);
  204. $meetingId=$request->input('meeting_id','');
  205. $tagId=$request->input('tag_id','');
  206. $ret=$this->service->delTagRelation($tagId,$meetingId);
  207. return $this->jsonResponse(
  208. 'ok',
  209. $ret
  210. );
  211. }
  212. /**
  213. * 获取产品板块列表
  214. * */
  215. public function getMeetingPlateList(Request $request){
  216. $params=$request->only(['page_size','page','status','keyword']);
  217. $ret=$this->service->getMeetingPlateList($params);
  218. return $this->jsonResponse(
  219. 'ok',
  220. $ret
  221. );
  222. }
  223. /**
  224. * 产品板块保存
  225. * */
  226. public function saveMeetingPlate(Request $request){
  227. $this->validate($request, [
  228. 'plate_name' => 'required',
  229. ], [
  230. 'plate_name.required' => '类型名称不能为空',
  231. ]);
  232. $params=$request->only(['id','plate_name','status','sort','seo_id','seo_data']);
  233. $ret=$this->service->saveMeetingPlate($params);
  234. return $this->jsonResponse(
  235. 'ok',
  236. $ret
  237. );
  238. }
  239. /**
  240. * 变更产品板块状态
  241. * */
  242. public function changeMeetingPlateStatus(Request $request){
  243. $this->validate($request, [
  244. 'id' => 'required',
  245. ], [
  246. 'id.required' => 'id不能为空',
  247. ]);
  248. $params=$request->only(['id','status']);
  249. $ret=$this->service->saveMeetingPlate($params);
  250. return $this->jsonResponse(
  251. 'ok',
  252. $ret
  253. );
  254. }
  255. /**
  256. * 获取产品列表
  257. * */
  258. public function getMeetingList(Request $request){
  259. $params=$request->only(['page_size','page','status','keyword','sort']);
  260. $ret=$this->service->getMeetingList($params);
  261. return $this->jsonResponse(
  262. 'ok',
  263. $ret
  264. );
  265. }
  266. /**
  267. * 获取产品详情
  268. * */
  269. public function getMeetingInfo(Request $request){
  270. $this->validate($request, [
  271. 'id' => 'required',
  272. ], [
  273. 'id.required' => '产品id不能为空',
  274. ]);
  275. $id=$request->input('id',0);
  276. $ret=$this->service->getMeetingInfo(['id'=>$id]);
  277. return $this->jsonResponse(
  278. 'ok',
  279. $ret
  280. );
  281. }
  282. /**
  283. * 获取产品分类未关联的产品
  284. * */
  285. public function getUnrelatedMeetingByTypeIds(Request $request){
  286. $this->validate($request, [
  287. 'type_id' => 'required',
  288. ], [
  289. 'type_id.required' => 'id不能为空',
  290. ]);
  291. $params=$request->only(['page_size','page','status','keyword','type_id']);
  292. $ret=$this->service->getUnrelatedMeetingByTypeIds($params);
  293. return $this->jsonResponse(
  294. 'ok',
  295. $ret
  296. );
  297. }
  298. /**
  299. * 获取产品标签未关联的产品
  300. * */
  301. public function getUnrelatedMeetingByTagIds(Request $request){
  302. $this->validate($request, [
  303. 'tag_id' => 'required',
  304. ], [
  305. 'tag_id.required' => 'id不能为空',
  306. ]);
  307. $params=$request->only(['page_size','page','status','keyword','tag_id']);
  308. $ret=$this->service->getUnrelatedMeetingByTagIds($params);
  309. return $this->jsonResponse(
  310. 'ok',
  311. $ret
  312. );
  313. }
  314. /**
  315. * 根据类型id 获取产品列表
  316. * */
  317. public function getMeetingListByType(Request $request){
  318. $params=$request->only(['page_size','page','status','keyword','type_id']);
  319. $ret=$this->service->getMeetingByTypeIds($params);
  320. return $this->jsonResponse(
  321. 'ok',
  322. $ret
  323. );
  324. }
  325. /**
  326. * 根据标签id 获取产品列表
  327. * */
  328. public function getMeetingListByTag(Request $request){
  329. $params=$request->only(['page_size','page','status','keyword','tag_id']);
  330. $ret=$this->service->getMeetingByTagIds($params);
  331. return $this->jsonResponse(
  332. 'ok',
  333. $ret
  334. );
  335. }
  336. /**
  337. * 变更产品板块状态
  338. * */
  339. public function changeMeetingStatus(Request $request){
  340. $this->validate($request, [
  341. 'id' => 'required',
  342. ], [
  343. 'id.required' => 'id不能为空',
  344. ]);
  345. $params=$request->only(['id','status']);
  346. $ret=$this->service->saveMeeting($params);
  347. return $this->jsonResponse(
  348. 'ok',
  349. $ret
  350. );
  351. }
  352. /**
  353. * 保存产品数据
  354. * */
  355. public function saveMeeting(Request $request){
  356. $this->validate($request, [
  357. 'title' => 'required',
  358. /*'content' => 'required|string',*/
  359. 'type_ids' => 'array',
  360. 'tag_ids' => 'array',
  361. ]);
  362. $params = $request->only(['id','pub_date','title','description','content','start_date','end_date','image_url','image_alt',
  363. 'main_image', 'main_image_alt', 'sub_image_urls', 'country','address','virtual_view','total_view',
  364. 'download_url','video_path','video_image_url','video_type','video_desc','seo_data','seo_id','status','tag_ids',
  365. 'type_ids', 'is_top','sort','is_recommend','speech_schedule','page_route','meeting_host','expand_content']);
  366. $ret=$this->service->saveMeeting($params);
  367. return $this->jsonResponse(
  368. 'ok',
  369. $ret
  370. );
  371. }
  372. /**
  373. * 产品推荐设置
  374. * */
  375. public function recommendSet(Request $request){
  376. $this->validate($request, [
  377. 'id' => 'required',
  378. ]);
  379. $params = $request->only(['id','is_recommend']);
  380. $ret=$this->service->recommendSet($params);
  381. return $this->jsonResponse(
  382. 'ok',
  383. $ret
  384. );
  385. }
  386. /**
  387. * 更新产品的浏览量
  388. * */
  389. public function upMeetingPv(Request $request){
  390. $this->validate($request, [
  391. 'id' => 'required',
  392. ], [
  393. 'id.required' => 'id不能为空',
  394. ]);
  395. $meetingId=$request->input('id',0);
  396. $incValue=$request->input('inc_val',1);
  397. $ret=$this->service->upMeetingPv($meetingId,$incValue);
  398. return $this->jsonResponse(
  399. 'ok',
  400. $ret
  401. );
  402. }
  403. /**
  404. * 产品预览
  405. * */
  406. public function previewMeeting(Request $request){
  407. $this->validate($request, [
  408. 'id' => 'required',
  409. ], [
  410. 'id.required' => 'id不能为空',
  411. ]);
  412. $meetingId=$request->input('id',0);
  413. $ret=$this->service->getMeetingRenderData(['id'=>$meetingId]);
  414. return $this->jsonResponse(
  415. 'ok',
  416. $ret
  417. );
  418. }
  419. /**
  420. * 根据类型id获取产品
  421. * */
  422. public function getPublishMeetingListByTypeId(Request $request){
  423. $params=$request->only(['page_size','page','type_id']);
  424. $ret=$this->service->getPublishMeetingListByTypeId($params);
  425. return $this->jsonResponse(
  426. 'ok',
  427. $ret
  428. );
  429. }
  430. /**
  431. * 根据标签id获取产品
  432. * */
  433. public function getPublishMeetingListByTagId(Request $request){
  434. $params=$request->only(['page_size','page','tag_id']);
  435. $ret=$this->service->getPublishMeetingListByTagId($params);
  436. return $this->jsonResponse(
  437. 'ok',
  438. $ret
  439. );
  440. }
  441. /**
  442. * 搜索获取已发布的产品
  443. * */
  444. public function getSearchMeetingList(Request $request){
  445. $params=$request->only(['page_size','keyword']);
  446. $ret=$this->service->getPublishMeetingList($params);
  447. return $this->jsonResponse(
  448. 'ok',
  449. $ret
  450. );
  451. }
  452. /**
  453. * 新闻排序上下移
  454. * @url /api/meeting/change-sort
  455. */
  456. public function changeMeetingSort(Request $request)
  457. {
  458. $this->validate($request, [
  459. 'id' => 'required',
  460. 'sort' => 'required',
  461. ]);
  462. $ret = $this->service->changeMeetingSort($request->input('id'), $request->input('sort'));
  463. return $this->jsonResponse('ok', $ret);
  464. }
  465. // 批量删除
  466. public function batchDeleteMeeting(Request $request)
  467. {
  468. $this->validate($request, [
  469. 'ids' => 'required',
  470. ]);
  471. $ret= $this->service->batchDelete($request->all());
  472. return $this->jsonResponse('ok', $ret);
  473. }
  474. // 批量修改状态
  475. public function batchStatusMeeting(Request $request)
  476. {
  477. $this->validate($request, [
  478. 'ids' => 'required',
  479. ]);
  480. $ret= $this->service->batchStatus($request->all());
  481. return $this->jsonResponse('ok', $ret);
  482. }
  483. // 批量修改分类
  484. public function typePluralEdit(Request $request)
  485. {
  486. $this->validate($request, [
  487. 'ids' => 'required',
  488. ]);
  489. $ret= $this->service->typePluralEdit($request->all());
  490. return $this->jsonResponse('ok', $ret);
  491. }
  492. // 批量修改标签
  493. public function tagPluralEdit(Request $request)
  494. {
  495. $this->validate($request, [
  496. 'ids' => 'required',
  497. ]);
  498. $ret= $this->service->tagPluralEdit($request->all());
  499. return $this->jsonResponse('ok', $ret);
  500. }
  501. /**
  502. * 获取全球展会列表筛选项
  503. * @param Request $request
  504. * @return \Illuminate\Http\JsonResponse
  505. * @throws \Illuminate\Validation\ValidationException
  506. */
  507. public function globalFilterFade(Request $request)
  508. {
  509. $this->validate($request, [
  510. 'tag_id' => 'required',
  511. ]);
  512. $ret = $this->service->getGlobalFilter($request->input('tag_id'), $request->input('part'));
  513. return $this->jsonResponse('ok', $ret);
  514. }
  515. }