ComplaintService.php 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602
  1. <?php
  2. namespace App\Services\Info;
  3. use App\Repositories\Criteria\Info\ComplaintCriteria;
  4. use App\Repositories\Eloquent\Info\ComplaintRepositoryEloquent;
  5. use App\Repositories\Enums\Check\CheckTypeEnum;
  6. use App\Repositories\Enums\Check\StatusEnum;
  7. use App\Repositories\Enums\Info\ComplaintDealStatusEnum;
  8. use App\Repositories\Enums\Manage\DealStatusEnum;
  9. use App\Repositories\Enums\ModelStatusEnum;
  10. use App\Repositories\Enums\ResponseCodeEnum;
  11. use App\Repositories\Models\Base\Department;
  12. use App\Repositories\Models\Base\DictDetail;
  13. use App\Repositories\Models\Base\Resource;
  14. use App\Repositories\Models\Info\Complaint;
  15. use App\Repositories\Models\Info\ComplaintMessage;
  16. use App\Repositories\Models\Manage\Category;
  17. use App\Repositories\Models\Manage\Message;
  18. use App\Repositories\Presenters\Info\ComplaintPresenter;
  19. use Carbon\Carbon;
  20. use Fukuball\Jieba\Finalseg;
  21. use Fukuball\Jieba\Jieba;
  22. use Illuminate\Http\Request;
  23. use Illuminate\Support\Facades\DB;
  24. use Illuminate\Support\Str;
  25. class ComplaintService
  26. {
  27. /**
  28. * @var ComplaintRepositoryEloquent
  29. */
  30. private $complaintRepository;
  31. /**
  32. * ComplaintService constructor.
  33. *
  34. * @param ComplaintRepositoryEloquent $complaintRepositoryEloquent
  35. */
  36. public function __construct(ComplaintRepositoryEloquent $complaintRepositoryEloquent)
  37. {
  38. $this->complaintRepository = $complaintRepositoryEloquent;
  39. }
  40. /**
  41. * @param Request $request
  42. *
  43. * @return mixed
  44. * @throws \Prettus\Repository\Exceptions\RepositoryException
  45. */
  46. public function handleList(Request $request)
  47. {
  48. $this->complaintRepository->pushCriteria(new ComplaintCriteria($request));
  49. $this->complaintRepository->setPresenter(ComplaintPresenter::class);
  50. return $this->complaintRepository->searchComplaintsByPage();
  51. }
  52. /**
  53. * @param $id
  54. *
  55. * @return \Illuminate\Database\Eloquent\Model
  56. */
  57. public function handleProfile($id)
  58. {
  59. $this->complaintRepository->setPresenter(ComplaintPresenter::class);
  60. return $this->complaintRepository->searchComplaintBy($id);
  61. }
  62. /**
  63. * @param array $data
  64. *
  65. * @return mixed
  66. * @throws \Prettus\Validator\Exceptions\ValidatorException
  67. */
  68. public function handleStore($data)
  69. {
  70. $complaint = $this->complaintRepository->create($data);
  71. ComplaintMessage::query()->create([
  72. 'complaint_id' => $complaint->id,
  73. ]);
  74. return $complaint;
  75. }
  76. /**
  77. * @param array $data
  78. *
  79. * @return mixed
  80. * @throws \Prettus\Validator\Exceptions\ValidatorException
  81. */
  82. public function handleUpdate($data)
  83. {
  84. $data_temp = $data;
  85. /**
  86. * 修改-mead
  87. * 判断是否可以指派
  88. * --已修改
  89. */
  90. $com = Complaint::query()->where('id', $data['id'])->first();
  91. if ($com->manage_messages_id) {
  92. // abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '该投诉已经指派');
  93. return false;
  94. }
  95. $complaint = Complaint::query()->where('id', $data['id'])->update([
  96. 'deal_idea' => $data['multiData'][0]['body'],
  97. 'deal_department_id' => $data['multiData'][0]['department_id'],
  98. 'deal_status' => ComplaintDealStatusEnum::IN,
  99. ]);
  100. ComplaintMessage::query()->where('complaint_id', $data['id'])->where('complaint_status', ComplaintDealStatusEnum::IN)->delete();
  101. ComplaintMessage::query()->create([
  102. 'complaint_id' => $data['id'],
  103. 'complaint_status' => ComplaintDealStatusEnum::IN,
  104. 'deal_department_id' => $data['multiData'][0]['department_id'],
  105. ]);
  106. $arr = Category::byCategoryIdGetCategoryArr($data['category_id']);
  107. $category_1_id = 0;
  108. $category_2_id = 0;
  109. $category_3_id = 0;
  110. $category_4_id = 0;
  111. $category_5_id = 0;
  112. if (count($arr) >= 1) $category_1_id = $arr[0];
  113. if (count($arr) >= 2) $category_2_id = $arr[1];
  114. if (count($arr) >= 3) $category_3_id = $arr[2];
  115. if (count($arr) >= 4) $category_4_id = $arr[3];
  116. if (count($arr) >= 5) $category_5_id = $arr[4];
  117. unset($data['category_id']);
  118. //指挥交办里面添加一条数据
  119. $comp = Complaint::query()->where('id', $data['id'])->first();
  120. Jieba::init();
  121. Finalseg::init();
  122. $deal_idea = Jieba::cut(remove_symbol($comp->deal_idea));
  123. $md5 = md5($comp->deal_idea);
  124. $message = Message::query()->create([
  125. 'type_id' => config('site.complaint'),
  126. 'category_1_id' => $category_1_id,
  127. 'category_2_id' => $category_2_id,
  128. 'category_3_id' => $category_3_id,
  129. 'category_4_id' => $category_4_id,
  130. 'category_5_id' => $category_5_id,
  131. 'no' => Str::random(8),
  132. 'name' => $comp->complaint_name,
  133. 'mobile' => $comp->complaint_phone,
  134. 'keywords' => $deal_idea,
  135. 'body' => $comp->deal_idea,
  136. 'body_md5' => $md5,
  137. 'complain_date' => $comp->created_at,
  138. 'deal_department_id' => $comp->deal_department_id,
  139. 'deal_status' => $comp->deal_status,
  140. 'deal_limit_day' => $data['multiData'][0]['limit_day'],
  141. 'deal_limit_date' => Carbon::parse($comp->created_at)->addDays($data['multiData'][0]['limit_day'])->toDateTimeString(),
  142. 'assign_deal_time' => Carbon::now(),
  143. 'assign_admin_id' => login_admin_id(),
  144. 'is_assign_status' => 1,
  145. 'status' => 1,
  146. 'warn_type_id' => 1,
  147. ]);
  148. $comp->update(['manage_messages_id' => $message->id]);
  149. //多部门协作
  150. $data['id'] = $message->id;
  151. $model = Message::query()->where('id', $data['id'])->first();
  152. if (!$model) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '找不到该记录');
  153. if ($model->deal_status == DealStatusEnum::OK) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '已经处理完成,暂不能申请');
  154. if ($model->is_more_department == 1 && $model->check_status == StatusEnum::SUCCESS) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '管理员已经审核通过,暂不支持操作');
  155. $department_ids = array_column($data['multiData'], 'department_id');
  156. if (!in_array($model->deal_department_id, $department_ids)) {
  157. abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '协助部门必须有本部门');
  158. }
  159. unset($data['id']);
  160. unset($data['multiData']['*']);
  161. $model->check_status = StatusEnum::WAIT;
  162. $model->extra = $data;
  163. $model->deal_status = DealStatusEnum::IN;
  164. $model->is_more_department = 1;
  165. $model->save();
  166. $data_temp['id'] = $message->id;
  167. $this->handleCheckApplicationMultiDepartment($data_temp);
  168. return $complaint;
  169. }
  170. /**
  171. * @param $id
  172. *
  173. * @return \Illuminate\Database\Eloquent\Model
  174. */
  175. public function revoke($data)
  176. {
  177. //return $this->complaintRepository->update($data, $data['id']);
  178. return $this->complaintRepository->delete($data['id']);
  179. }
  180. /**
  181. * @param Request $request
  182. *
  183. * @return mixed
  184. * @throws \Prettus\Validator\Exceptions\ValidatorException
  185. */
  186. public function handleDelete($id)
  187. {
  188. $complaint = Complaint::query()->where('id', $id)->first();
  189. if ($complaint->deal_status == ComplaintDealStatusEnum::WAIT) return $complaint->delete();
  190. return false;
  191. }
  192. /**
  193. * 满意度
  194. * @param array $data
  195. * @return mixed
  196. * @throws \Prettus\Validator\Exceptions\ValidatorException
  197. */
  198. public function evaluation($data)
  199. {
  200. $complaint = Complaint::query()->where('id', $data['id'])->update(['deal_evaluation' => $data['deal_evaluation'], 'deal_status' => ComplaintDealStatusEnum::OK]);
  201. $manage_messages_id = Complaint::query()->where('id', $data['id'])->value('manage_messages_id');
  202. //同步指挥交办里面的满意度分数
  203. Message::query()->where('id', $manage_messages_id)->update([
  204. 'deal_evaluation' => $data['deal_evaluation'],
  205. 'deal_status' => DealStatusEnum::OK
  206. ]);
  207. ComplaintMessage::query()->where('complaint_id', $data['id'])->where('complaint_status', ComplaintDealStatusEnum::OK)->delete();
  208. ComplaintMessage::query()->create([
  209. 'complaint_id' => $data['id'],
  210. 'complaint_status' => ComplaintDealStatusEnum::OK
  211. ]);
  212. return $complaint;
  213. }
  214. /**
  215. * 办理结果反馈
  216. * @param array $data
  217. * @return mixed
  218. * @throws \Prettus\Validator\Exceptions\ValidatorException
  219. */
  220. public function feedback($data)
  221. {
  222. $complaint = Complaint::query()->where('id', $data['id'])->update(['feedback' => $data['feedback'], 'deal_status' => ComplaintDealStatusEnum::FEEDBACK]);
  223. return $complaint;
  224. }
  225. /**
  226. * 用户投诉数量查询--客户端
  227. */
  228. public function nums($request)
  229. {
  230. $data = [];
  231. //查询全部
  232. $all_nums = Complaint::query()->where('status', ModelStatusEnum::OK)->where('user_id', login_user_id())->count();
  233. //待处理
  234. $wait_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::WAIT)->where('status', ModelStatusEnum::OK)->where('user_id', login_user_id())->count();
  235. //处理中
  236. $in_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::IN)->where('status', ModelStatusEnum::OK)->where('user_id', login_user_id())->count();
  237. //待评价
  238. $satisfaction_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::SATISFACTION)->where('status', ModelStatusEnum::OK)->where('user_id', login_user_id())->count();
  239. //处理完结
  240. $ok_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::OK)->where('status', ModelStatusEnum::OK)->where('user_id', login_user_id())->count();
  241. $data[] = [
  242. 'name' => '全部',
  243. 'count' => $all_nums,
  244. ];
  245. $data[] = [
  246. 'name' => '待处理',
  247. 'count' => $wait_nums,
  248. ];
  249. $data[] = [
  250. 'name' => '处理中',
  251. 'count' => $in_nums,
  252. ];
  253. $data[] = [
  254. 'name' => '待评价',
  255. 'count' => $satisfaction_nums,
  256. ];
  257. $data[] = [
  258. 'name' => '处理完结',
  259. 'count' => $ok_nums,
  260. ];
  261. return $data;
  262. }
  263. /**
  264. * 用户投诉数量查询--员工端
  265. */
  266. public function complaintNums($request)
  267. {
  268. $data = [];
  269. //查询全部
  270. $all_nums = Complaint::query()->where('status', ModelStatusEnum::OK)->count();
  271. //待处理
  272. $wait_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::WAIT)->where('status', ModelStatusEnum::OK)->count();
  273. //处理中
  274. $in_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::IN)->where('status', ModelStatusEnum::OK)->count();
  275. //待评价
  276. $satisfaction_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::SATISFACTION)->where('status', ModelStatusEnum::OK)->count();
  277. //处理完结
  278. $ok_nums = Complaint::query()->where('deal_status', ComplaintDealStatusEnum::OK)->where('status', ModelStatusEnum::OK)->count();
  279. $data[] = [
  280. 'name' => '全部',
  281. 'count' => $all_nums,
  282. ];
  283. $data[] = [
  284. 'name' => '待处理',
  285. 'count' => $wait_nums,
  286. ];
  287. $data[] = [
  288. 'name' => '处理中',
  289. 'count' => $in_nums,
  290. ];
  291. $data[] = [
  292. 'name' => '待评价',
  293. 'count' => $satisfaction_nums,
  294. ];
  295. $data[] = [
  296. 'name' => '处理完结',
  297. 'count' => $ok_nums,
  298. ];
  299. return $data;
  300. }
  301. /***
  302. * 吹哨处理完结消息通知--客户端
  303. * @param $request
  304. * @return mixed
  305. */
  306. public function messages($request)
  307. {
  308. $data = [];
  309. $complaints = Complaint::query()->where('user_id', login_user_id())->where('deal_status', ComplaintDealStatusEnum::OK)
  310. ->where('status', ModelStatusEnum::OK)->get();
  311. foreach ($complaints as $complaint) {
  312. $department_name = Department::query()->where('id', $complaint->deal_department_id)->value('name');
  313. $message = Message::query()->where('id', $complaint->manage_messages_id)->where('status', ModelStatusEnum::OK)->first();
  314. $category_name = '';
  315. $category_1_name = null;
  316. $category_2_name = null;
  317. $category_3_name = null;
  318. $category_4_name = null;
  319. $category_5_name = null;
  320. if ($message->category_1_id != 0) $category_1_name = Category::query()->where('id', $message->category_1_id)->value('name');
  321. if ($message->category_2_id != 0) $category_2_name = Category::query()->where('id', $message->category_2_id)->value('name');
  322. if ($message->category_3_id != 0) $category_3_name = Category::query()->where('id', $message->category_3_id)->value('name');
  323. if ($message->category_4_id != 0) $category_4_name = Category::query()->where('id', $message->category_4_id)->value('name');
  324. if ($message->category_5_id != 0) $category_5_name = Category::query()->where('id', $message->category_5_id)->value('name');
  325. if ($category_1_name != null) $category_name = $category_1_name;
  326. if ($category_2_name != null) $category_name = $category_name . '/' . $category_2_name;
  327. if ($category_3_name != null) $category_name = $category_name . '/' . $category_3_name;
  328. if ($category_4_name != null) $category_name = $category_name . '/' . $category_4_name;
  329. if ($category_5_name != null) $category_name = $category_name . '/' . $category_5_name;
  330. $data[] = [
  331. 'id' => $complaint->id,
  332. 'category_name' => $category_name,
  333. 'deal_department' => $department_name,
  334. 'time' => date('Y-m-d H:m:s', strtotime($complaint->updated_at))
  335. ];
  336. }
  337. $data = arraySort($data, 'time');
  338. $data_temp = ['data' => $data];
  339. return $data_temp;
  340. }
  341. /***
  342. * 吹哨处理完结消息详情--客户端
  343. * @param $request
  344. * @return mixed
  345. */
  346. public function message($req)
  347. {
  348. $data = [];
  349. $complaint = Complaint::query()->where('id', $req['id'])->first();
  350. $message = Message::query()->where('id', $complaint->manage_messages_id)->where('status', ModelStatusEnum::OK)->first();
  351. $category_name = '';
  352. $category_1_name = null;
  353. $category_2_name = null;
  354. $category_3_name = null;
  355. $category_4_name = null;
  356. $category_5_name = null;
  357. if ($message->category_1_id != 0) $category_1_name = Category::query()->where('id', $message->category_1_id)->value('name');
  358. if ($message->category_2_id != 0) $category_2_name = Category::query()->where('id', $message->category_2_id)->value('name');
  359. if ($message->category_3_id != 0) $category_3_name = Category::query()->where('id', $message->category_3_id)->value('name');
  360. if ($message->category_4_id != 0) $category_4_name = Category::query()->where('id', $message->category_4_id)->value('name');
  361. if ($message->category_5_id != 0) $category_5_name = Category::query()->where('id', $message->category_5_id)->value('name');
  362. if ($category_1_name != null) $category_name = $category_1_name;
  363. if ($category_2_name != null) $category_name = $category_name . '/' . $category_2_name;
  364. if ($category_3_name != null) $category_name = $category_name . '/' . $category_3_name;
  365. if ($category_4_name != null) $category_name = $category_name . '/' . $category_4_name;
  366. if ($category_5_name != null) $category_name = $category_name . '/' . $category_5_name;
  367. $data = [
  368. 'category_name' => $category_name,
  369. 'content' => $complaint->content,
  370. 'deal_result' => $complaint->deal_result,
  371. 'time' => date('Y-m-d H:m:s', strtotime($complaint->updated_at))
  372. ];
  373. return $data;
  374. }
  375. /***
  376. * 吹哨处理完结消息通知--员工端
  377. * @param $request
  378. * @return mixed
  379. */
  380. public function messagesAdmin($request)
  381. {
  382. $data = [];
  383. $complaints = Complaint::query()->where('deal_admin_id', login_admin_id())->where('deal_status', ComplaintDealStatusEnum::OK)
  384. ->where('status', ModelStatusEnum::OK)->get();
  385. foreach ($complaints as $complaint) {
  386. $message = Message::query()->where('id', $complaint->manage_messages_id)->where('status', ModelStatusEnum::OK)->first();
  387. $category_name = '';
  388. $category_1_name = null;
  389. $category_2_name = null;
  390. $category_3_name = null;
  391. $category_4_name = null;
  392. $category_5_name = null;
  393. if ($message->category_1_id != 0) $category_1_name = Category::query()->where('id', $message->category_1_id)->value('name');
  394. if ($message->category_2_id != 0) $category_2_name = Category::query()->where('id', $message->category_2_id)->value('name');
  395. if ($message->category_3_id != 0) $category_3_name = Category::query()->where('id', $message->category_3_id)->value('name');
  396. if ($message->category_4_id != 0) $category_4_name = Category::query()->where('id', $message->category_4_id)->value('name');
  397. if ($message->category_5_id != 0) $category_5_name = Category::query()->where('id', $message->category_5_id)->value('name');
  398. if ($category_1_name != null) $category_name = $category_1_name;
  399. if ($category_2_name != null) $category_name = $category_name . '/' . $category_2_name;
  400. if ($category_3_name != null) $category_name = $category_name . '/' . $category_3_name;
  401. if ($category_4_name != null) $category_name = $category_name . '/' . $category_4_name;
  402. if ($category_5_name != null) $category_name = $category_name . '/' . $category_5_name;
  403. $data[] = [
  404. 'id' => $complaint->id,
  405. 'complaint_name' => $complaint->complaint_name,
  406. 'deal_evaluation' => $complaint->deal_evaluation,
  407. 'category_name' => $category_name,
  408. 'time' => date('Y-m-d H:m:s', strtotime($complaint->updated_at))
  409. ];
  410. }
  411. $data = arraySort($data, 'time');
  412. $data_temp = ['data' => $data];
  413. return $data_temp;
  414. }
  415. /***
  416. * 吹哨处理完结消息详情--员工端
  417. * @param $request
  418. * @return mixed
  419. */
  420. public function messageAdmin($req)
  421. {
  422. $data = [];
  423. $data_image = [];
  424. $complaint = Complaint::query()->where('id', $req['id'])->first();
  425. if (count($complaint->relevant_documents)) {
  426. foreach ($complaint->relevant_documents as $id) {
  427. $resource = Resource::query()->where('id', $id)->first();
  428. //判断图片还是视频,供前端判断
  429. $type = 0;
  430. $img_type = config('site.img_type');
  431. $video_type = config('site.video_type');
  432. $arr = explode('.', $resource->path);
  433. if (strpos($img_type, $arr[1]) !== false) $type = 1;
  434. if (strpos($video_type, $arr[1]) !== false) $type = 2;
  435. $data_image[] = [
  436. 'path' => $resource->path,
  437. 'url' => $resource->url,
  438. 'type' => $type
  439. ];
  440. }
  441. }
  442. $message = Message::query()->where('id', $complaint->manage_messages_id)->where('status', ModelStatusEnum::OK)
  443. ->with(['deal_department'])->with(['deal_admin'])->first();
  444. $data = [
  445. 'content' => $complaint->content,
  446. 'images' => $data_image,
  447. 'complaint_name' => $complaint->complaint_name,
  448. 'complaint_phone' => $complaint->complaint_phone,
  449. 'create_time' => date('Y-m-d H:m:s', strtotime($complaint->updated_at)),
  450. // 'assign_deal_time' => date('Y-m-d H:m:s', strtotime($complaint->updated_at)),
  451. 'deal_department' => $message['deal_department']['name'],
  452. 'deal_admin' => $message['deal_admin']['name'],
  453. 'deal_status' => $complaint->deal_status,
  454. 'assign_deal_time' => date('Y-m-d H:m:s', strtotime($message->deal_time)),
  455. 'deal_limit_day' => $message->deal_limit_day,
  456. 'deal_idea' => $message->deal_idea,
  457. 'deal_evaluation' => $complaint->deal_evaluation,
  458. ];
  459. return $data;
  460. }
  461. /**
  462. * 审核申请--民意直通车自动审核成功
  463. * @param $data
  464. * @return bool
  465. */
  466. public function handleCheckApplicationMultiDepartment($data)
  467. {
  468. ini_set('memory_limit', '1024M');
  469. $model = Message::query()->where('id', $data['id'])->first();
  470. if (!$model) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '找不到该记录');
  471. if ($model->deal_status == DealStatusEnum::OK) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '已经处理完成,暂不能申请');
  472. if ($model->is_more_department == 1 && $model->check_status == StatusEnum::SUCCESS) abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '管理员已经审核通过,暂不支持操作');
  473. $department_ids = array_column($data['multiData'], 'department_id');
  474. if (!in_array($model->deal_department_id, $department_ids)) {
  475. abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, '协助部门必须有本部门');
  476. }
  477. $admin = login_admin();
  478. unset($data['id']);
  479. unset($data['multiData']['*']);
  480. DB::beginTransaction();
  481. try {
  482. $model->check_status = StatusEnum::SUCCESS;
  483. $model->extra = $data;
  484. $model->is_more_department = 1;
  485. $day = 0;
  486. Jieba::init();
  487. Finalseg::init();
  488. foreach ($data['multiData'] as $key => $item) {
  489. $seg_list = Jieba::cut($item['body']);
  490. Message::query()->create([
  491. 'no' => $model['no'] . '-' . ($key + 1),
  492. 'type_id' => $model['type_id'],
  493. 'category_1_id' => $model['category_1_id'],
  494. 'category_2_id' => $model['category_2_id'],
  495. 'category_3_id' => $model['category_3_id'],
  496. 'category_4_id' => $model['category_4_id'],
  497. 'category_5_id' => $model['category_5_id'],
  498. 'name' => $model['name'],
  499. 'mobile' => $model['mobile'],
  500. 'address_id' => $model['address_id'],
  501. 'address_name' => $model['address_name'],
  502. 'complain_date' => $model['complain_date'],
  503. 'warn_type_id' => $model['warn_type_id'],
  504. 'body' => $item['body'],
  505. 'body_md5' => md5($item['body']),
  506. 'keywords' => $seg_list,
  507. 'deal_department_id' => $item['department_id'],
  508. 'deal_admin_id' => 0,
  509. 'deal_evaluation' => 0,
  510. 'deal_status' => DealStatusEnum::IN,
  511. 'assign_deal_time' => Carbon::now()->toDateTimeString(),
  512. 'assign_admin_id' => $admin['id'],
  513. 'is_assign_status' => 1,
  514. 'deal_limit_day' => $item['limit_day'],
  515. 'deal_limit_date' => Carbon::now()->addDays($item['limit_day'])->toDateTimeString(),
  516. 'is_more_department' => 1,
  517. 'extra' => $item,
  518. 'more_pid' => $model->id,
  519. 'import_department_id' => $item['department_id'],
  520. 'status' => 1
  521. ]);
  522. if ($day < $item['limit_day']) $day = $item['limit_day'];
  523. }
  524. $model->deal_limit_day = $day;
  525. $model->deal_limit_date = Carbon::now()->addDays($day);
  526. $model->save();
  527. DB::commit();
  528. } catch (\Exception $exception) {
  529. DB::rollBack();
  530. abort(ResponseCodeEnum::SERVICE_OPERATION_ERROR, $exception->getMessage());
  531. }
  532. return true;
  533. }
  534. }