build($siteId); return view('admin/work_task/index', [ 'siteStatus' => $siteStatus, 'siteId' => $siteId, 'tasksList' => $tasksList, 'infoList' => $infoList, 'optimizationPersonnel' => $optimizationPersonnel, 'date' => date('Y-m-d') ]); } //菜单里面的客服任务 public function siteTask() { [$siteStatus, $tasksList, $infoList, $optimizationPersonnel] = $this->build(0); return view('admin/work_task/site_task', [ 'sites' => Site::query()->select('id', 'cn_title')->whereIn('status', [1, 2, 3])->get(), 'siteId' => 0, 'date' => date('Y-m-d'), 'optimizationPersonnel' => $optimizationPersonnel, ]); } //异步获取每个项目的对应的客服任务 public function getSiteTaskInfo($siteId) { [$siteStatus, $tasksList, $infoList, $optimizationPersonnel] = $this->build($siteId); $data = [ 'siteStatus' => $siteStatus, 'tasksList' => $tasksList, 'infoList' => $infoList, 'optimizationPersonnel' => $optimizationPersonnel, 'siteId' => $siteId ]; return response()->json(['data' => $data]); } /** * 保存 * @param Request $request * @param $siteId * @param $status * @return JsonResponse */ public function save(Request $request, $siteId, $status) { $infoList = $request->input('infoList'); $dataList = $request->input('dataList'); if (empty($dataList)) { return response()->json(['message' => '还没创建任务'], 400); } foreach ($dataList as $key => $value) { $dataList[$key]['task_id'] = time() . mt_rand(1, 1000000); } $data = [ 'infoList' => $infoList, 'dataList' => $dataList, ]; $updateData = [ 'data' => \GuzzleHttp\json_encode($data), 'site_id' => $siteId, 'status' => $status ]; DB::transaction(function () use ($updateData, $siteId, $status) { DB::table('tasks') ->where('site_id', $siteId) ->where('status', $status) ->delete(); DB::table('tasks')->insert($updateData); }); return response()->json(['message' => '操作成功']); } private function build($siteId) { $infoList = []; $tasksList = []; $siteStatus = DB::table('sites')->where('id', $siteId)->value('status') ?? 0; //客服、优化、软文、外链、前端 $optimizationPersonnel = DB::table('users')->join('roles', 'users.role_id', '=', 'roles.id') ->where('users.status', 1) ->whereIn('users.role_id', [7, 14, 17, 18, 26]) ->whereNull('users.deleted_at') ->orderBy('users.role_id', 'asc') ->select('users.id', 'users.nickname')->get(); $tasksInfo = DB::table('tasks')->where([ ['site_id', '=', $siteId], ['status', '=', $siteStatus] ])->first(); if (!empty($tasksInfo->data)) { $list = \GuzzleHttp\json_decode($tasksInfo->data, true); $infoList = explode(',', $list['infoList']) ?? []; $tasksList = $list['dataList']; } return [$siteStatus, $tasksList, $infoList, $optimizationPersonnel]; } }