TaskController.php 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199
  1. <?php
  2. namespace App\Http\Controllers\Admin\Manage;
  3. use App\Exports\Manage\TaskExport;
  4. use App\Http\Controllers\Controller;
  5. use App\Jobs\Manage\AnalysisMessageJob;
  6. use App\Services\Manage\TaskService;
  7. use Illuminate\Http\Request;
  8. use Maatwebsite\Excel\Facades\Excel;
  9. /**
  10. * 任务管理
  11. */
  12. class TaskController extends Controller
  13. {
  14. /**
  15. * @var TaskService
  16. */
  17. private $taskService;
  18. /**
  19. * TaskController constructor.
  20. *
  21. * @param TaskService $taskService
  22. */
  23. public function __construct(TaskService $taskService)
  24. {
  25. parent::__construct();
  26. $this->middleware('checkUserPermission');
  27. $this->taskService = $taskService;
  28. }
  29. /**
  30. * 列表
  31. * @param Request $request
  32. *
  33. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  34. * @throws \Prettus\Repository\Exceptions\RepositoryException
  35. */
  36. public function index(Request $request)
  37. {
  38. $tasks = $this->taskService->handleList($request);
  39. return $this->response->success($tasks);
  40. }
  41. /**
  42. * 新增
  43. * @param Request $request
  44. *
  45. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  46. * @throws \Prettus\Validator\Exceptions\ValidatorException
  47. */
  48. public function store(Request $request)
  49. {
  50. $data = $this->validateData($request, [
  51. 'name' => 'required|string|max:300',
  52. 'type_ids' => 'nullable|array',
  53. 'message_ids' => 'nullable|array',
  54. 'start_date' => 'required|date',
  55. 'end_date' => 'nullable|date',
  56. 'category_id' => 'nullable|integer',
  57. 'rate' => 'required|integer',
  58. ], [
  59. 'name' => '任务名',
  60. 'type_id' => '来源id',
  61. 'message_ids' => '指定对别的数据ids',
  62. 'start_date' => '投诉开始日期',
  63. 'end_date' => '投诉结束日期',
  64. 'category_id' => '分类id',
  65. 'rate' => '相似率',
  66. ]);
  67. $task = $this->taskService->handleStore($data);
  68. $this->dispatch(new AnalysisMessageJob($task->id));
  69. return $this->response->created($task, '创建成功');
  70. }
  71. /**
  72. * 详情
  73. * @param Request $request
  74. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  75. */
  76. public function show(Request $request)
  77. {
  78. $this->validate($request, ['id' => 'required|integer']);
  79. $task = $this->taskService->handleProfile($request->get('id'));
  80. return $this->response->success($task);
  81. }
  82. /**
  83. * 更新
  84. * @param Request $request
  85. *
  86. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  87. * @throws \Prettus\Validator\Exceptions\ValidatorException
  88. */
  89. public function update(Request $request)
  90. {
  91. $data = $this->validateData($request, [
  92. 'id' => 'required|integer',
  93. 'name' => 'required|string|max:300',
  94. 'type_ids' => 'nullable|array',
  95. 'message_ids' => 'nullable|array',
  96. 'start_date' => 'required|date',
  97. 'end_date' => 'nullable|date',
  98. 'category_id' => 'nullable|integer',
  99. 'rate' => 'required|integer',
  100. ], [
  101. 'name' => '任务名',
  102. 'type_id' => '来源id',
  103. 'message_ids' => '指定对别的数据ids',
  104. 'start_date' => '投诉开始日期',
  105. 'end_date' => '投诉结束日期',
  106. 'category_id' => '分类id',
  107. 'rate' => '相似率',
  108. ]);
  109. $task = $this->taskService->handleUpdate($data);
  110. $this->dispatch(new AnalysisMessageJob($task->id));
  111. return $this->response->success($task, '更新成功');
  112. }
  113. /**
  114. * 删除
  115. * @param Request $request
  116. */
  117. public function destroy(Request $request)
  118. {
  119. $this->validate($request, ['id' => 'required|integer']);
  120. $re = $this->taskService->handleDelete($request->get('id'));
  121. if ($re) {
  122. return $this->response->ok('删除成功');
  123. }
  124. return $this->response->fail('删除失败');
  125. }
  126. /**
  127. * 重试分析
  128. * @param Request $request
  129. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\Resource
  130. * @throws \Illuminate\Validation\ValidationException
  131. */
  132. public function retry(Request $request)
  133. {
  134. $this->validate($request, [
  135. 'id' => 'required'
  136. ]);
  137. $id = $request->get('id');
  138. $this->dispatch(new AnalysisMessageJob($id));
  139. return $this->response->ok('操作成功');
  140. }
  141. /**
  142. * 推入主库
  143. * @param Request $request
  144. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  145. * @throws \Illuminate\Validation\ValidationException
  146. */
  147. public function merge(Request $request)
  148. {
  149. $this->validate($request, ['id' => 'required|integer']);
  150. $id = $request->get('id');
  151. $this->taskService->handleMerge($id);
  152. return $this->response->ok('操作成功');
  153. }
  154. /**
  155. * 撤销合并
  156. * @param Request $request
  157. * @return \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
  158. * @throws \Illuminate\Validation\ValidationException
  159. */
  160. public function cancelMerge(Request $request)
  161. {
  162. $this->validate($request, ['id' => 'required|integer']);
  163. $id = $request->get('id');
  164. $this->taskService->handleCancelMerge($id);
  165. return $this->response->ok('操作成功');
  166. }
  167. /**
  168. * 导出数据
  169. * @param Request $request
  170. * @return \Symfony\Component\HttpFoundation\BinaryFileResponse
  171. * @throws \Illuminate\Validation\ValidationException
  172. */
  173. public function export(Request $request)
  174. {
  175. $data = $this->validateData($request, [
  176. 'ids' => 'required|array',
  177. ]);
  178. $file_name = time() . '.xlsx';
  179. return Excel::download(new TaskExport($data), $file_name);
  180. }
  181. }