123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127 |
- <?php
- namespace 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];
- }
- }
|