| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 | <?phpnamespace App\Http\Controllers\Admin;use App\Http\Models\Site;use Illuminate\Http\JsonResponse;use App\Http\Controllers\Controller;use Illuminate\Http\Request;use Illuminate\Support\Facades\DB;/** * 项目管理下的详情的工作任务 * Class WorkTaskController * @package App\Http\Controllers\Admin */class WorkTaskController extends Controller{    //项目里面的客服任务    public function index($siteId)    {        [$siteStatus, $tasksList, $infoList, $optimizationPersonnel] = $this->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];    }}
 |