正在显示
5 个修改的文件
包含
93 行增加
和
10 行删除
| @@ -7,7 +7,9 @@ use App\Http\Logic\Aside\Task\TaskFollowLogic; | @@ -7,7 +7,9 @@ use App\Http\Logic\Aside\Task\TaskFollowLogic; | ||
| 7 | use App\Http\Logic\Aside\Task\TaskLogic; | 7 | use App\Http\Logic\Aside\Task\TaskLogic; |
| 8 | use App\Http\Requests\Aside\Task\TaskFollowRequest; | 8 | use App\Http\Requests\Aside\Task\TaskFollowRequest; |
| 9 | use App\Http\Requests\Aside\Task\TaskRequest; | 9 | use App\Http\Requests\Aside\Task\TaskRequest; |
| 10 | +use App\Models\Task\Task; | ||
| 10 | use Illuminate\Support\Facades\Request; | 11 | use Illuminate\Support\Facades\Request; |
| 12 | +use Illuminate\Validation\Rule; | ||
| 11 | 13 | ||
| 12 | 14 | ||
| 13 | /** | 15 | /** |
| @@ -57,12 +59,14 @@ class TaskController extends BaseController | @@ -57,12 +59,14 @@ class TaskController extends BaseController | ||
| 57 | */ | 59 | */ |
| 58 | public function status(Request $request, TaskLogic $logic){ | 60 | public function status(Request $request, TaskLogic $logic){ |
| 59 | $request->validate([ | 61 | $request->validate([ |
| 60 | - 'id'=>'required' | 62 | + 'id'=>'required', |
| 63 | + 'status' => ['required', Rule::in(array_keys(Task::statusMap()))] | ||
| 61 | ],[ | 64 | ],[ |
| 62 | - 'id.required' => 'ID不能为空' | 65 | + 'id.required' => 'ID不能为空', |
| 66 | + 'status.required' => '请选择状态', | ||
| 67 | + 'status.in' => '状态值不正确', | ||
| 63 | ]); | 68 | ]); |
| 64 | - //todo 多人任务 | ||
| 65 | - $data = $logic->status($this->param); | 69 | + $data = $logic->status($this->param['id'], $this->param['status']); |
| 66 | return $this->success($data); | 70 | return $this->success($data); |
| 67 | } | 71 | } |
| 68 | 72 | ||
| @@ -75,7 +79,6 @@ class TaskController extends BaseController | @@ -75,7 +79,6 @@ class TaskController extends BaseController | ||
| 75 | * @date 2023/4/27 | 79 | * @date 2023/4/27 |
| 76 | */ | 80 | */ |
| 77 | public function save_follow(TaskFollowRequest $request, TaskFollowLogic $logic){ | 81 | public function save_follow(TaskFollowRequest $request, TaskFollowLogic $logic){ |
| 78 | - //todo 任务是否分配给该用户 | ||
| 79 | $data = $logic->save($this->param); | 82 | $data = $logic->save($this->param); |
| 80 | return $this->success($data); | 83 | return $this->success($data); |
| 81 | } | 84 | } |
| @@ -3,7 +3,9 @@ | @@ -3,7 +3,9 @@ | ||
| 3 | namespace App\Http\Logic\Aside\Task; | 3 | namespace App\Http\Logic\Aside\Task; |
| 4 | 4 | ||
| 5 | 5 | ||
| 6 | +use App\Helper\Arr; | ||
| 6 | use App\Http\Logic\Aside\BaseLogic; | 7 | use App\Http\Logic\Aside\BaseLogic; |
| 8 | +use App\Http\Logic\Aside\LoginLogic; | ||
| 7 | use App\Models\Task\TaskFollow; | 9 | use App\Models\Task\TaskFollow; |
| 8 | 10 | ||
| 9 | /** | 11 | /** |
| @@ -21,5 +23,17 @@ class TaskFollowLogic extends BaseLogic | @@ -21,5 +23,17 @@ class TaskFollowLogic extends BaseLogic | ||
| 21 | $this->model = new TaskFollow(); | 23 | $this->model = new TaskFollow(); |
| 22 | } | 24 | } |
| 23 | 25 | ||
| 26 | + public function save($param){ | ||
| 27 | + $task = $this::getInfo($param['task_id']); | ||
| 28 | + if(!$task){ | ||
| 29 | + $this->fail('任务不存在'); | ||
| 30 | + } | ||
| 31 | + $manage_ids = Arr::pluck($task['owner'], 'manage_id'); | ||
| 32 | + if(!in_array(LoginLogic::manage('id'), $manage_ids)){ | ||
| 33 | + $this->fail('非本人任务,不能添加跟进记录'); | ||
| 34 | + } | ||
| 35 | + parent::save($param); | ||
| 36 | + } | ||
| 37 | + | ||
| 24 | 38 | ||
| 25 | } | 39 | } |
| @@ -5,6 +5,7 @@ namespace App\Http\Logic\Aside\Task; | @@ -5,6 +5,7 @@ namespace App\Http\Logic\Aside\Task; | ||
| 5 | 5 | ||
| 6 | use App\Helper\Arr; | 6 | use App\Helper\Arr; |
| 7 | use App\Http\Logic\Aside\BaseLogic; | 7 | use App\Http\Logic\Aside\BaseLogic; |
| 8 | +use App\Http\Logic\Aside\LoginLogic; | ||
| 8 | use App\Models\Task\Task; | 9 | use App\Models\Task\Task; |
| 9 | use App\Models\Task\TaskOwner; | 10 | use App\Models\Task\TaskOwner; |
| 10 | use Illuminate\Support\Facades\DB; | 11 | use Illuminate\Support\Facades\DB; |
| @@ -24,6 +25,12 @@ class TaskLogic extends BaseLogic | @@ -24,6 +25,12 @@ class TaskLogic extends BaseLogic | ||
| 24 | $this->model = new Task(); | 25 | $this->model = new Task(); |
| 25 | } | 26 | } |
| 26 | 27 | ||
| 28 | + public function getInfo($id) | ||
| 29 | + { | ||
| 30 | + parent::setWith(['owner', 'follow']); //删除缓存要添加带with的cache_key | ||
| 31 | + return parent::getInfo($id); | ||
| 32 | + } | ||
| 33 | + | ||
| 27 | public function save($param){ | 34 | public function save($param){ |
| 28 | 35 | ||
| 29 | DB::beginTransaction(); | 36 | DB::beginTransaction(); |
| @@ -56,13 +63,44 @@ class TaskLogic extends BaseLogic | @@ -56,13 +63,44 @@ class TaskLogic extends BaseLogic | ||
| 56 | * @author zbj | 63 | * @author zbj |
| 57 | * @date 2023/4/27 | 64 | * @date 2023/4/27 |
| 58 | */ | 65 | */ |
| 59 | - public function status($param){ | ||
| 60 | - $data = [ | ||
| 61 | - 'id' => $param['id'], | ||
| 62 | - 'status' => $param['status'], | 66 | + public function status($id, $status){ |
| 67 | + $task = $this::getInfo($id); | ||
| 68 | + if(!$task){ | ||
| 69 | + $this->fail('任务不存在'); | ||
| 70 | + } | ||
| 71 | + $manage_ids = Arr::pluck($task['owner'], 'manage_id', 'id'); | ||
| 72 | + if(!in_array(LoginLogic::manage('id'), $manage_ids)){ | ||
| 73 | + $this->fail('非本人任务,不能更新进程'); | ||
| 74 | + } | ||
| 75 | + $task_data = [ | ||
| 76 | + 'id' => $id, | ||
| 77 | + 'status' => $status, | ||
| 63 | ]; | 78 | ]; |
| 64 | 79 | ||
| 65 | - parent::save($data); | 80 | + //个人任务 |
| 81 | + $task_owner_id = array_search(LoginLogic::manage('id'), $manage_ids); | ||
| 82 | + (new TaskOwnerLogic())->status($task_owner_id, $status); | ||
| 83 | + | ||
| 84 | + //一个人开始,任务开始,所有人完成,任务才完成 | ||
| 85 | + $owner_status = TaskOwner::where('task_id', $id)->pluck('status')->toArray(); | ||
| 86 | + //所有都完成 | ||
| 87 | + if(array_sum($owner_status) == count($owner_status) * TaskOwner::STATUS_DOWN){ | ||
| 88 | + $task_data['status'] = Task::STATUS_DOWN; | ||
| 89 | + $task_data['done_at'] = date('Y-m-d H:i:s'); | ||
| 90 | + }else{ | ||
| 91 | + $task_data['status'] = Task::STATUS_DONGING; | ||
| 92 | + $task_data['doing_at'] = date('Y-m-d H:i:s'); | ||
| 93 | + } | ||
| 94 | + | ||
| 95 | + parent::save($task_data); | ||
| 66 | return $this->success(); | 96 | return $this->success(); |
| 67 | } | 97 | } |
| 98 | + | ||
| 99 | + public function clearCache($id) | ||
| 100 | + { | ||
| 101 | + parent::clearCache($id); | ||
| 102 | + | ||
| 103 | + parent::setWith(['owner', 'follow']); | ||
| 104 | + parent::clearCache($id); | ||
| 105 | + } | ||
| 68 | } | 106 | } |
| @@ -39,4 +39,23 @@ class TaskOwnerLogic extends BaseLogic | @@ -39,4 +39,23 @@ class TaskOwnerLogic extends BaseLogic | ||
| 39 | } | 39 | } |
| 40 | return $this->success(); | 40 | return $this->success(); |
| 41 | } | 41 | } |
| 42 | + | ||
| 43 | + public function status($id, $status){ | ||
| 44 | + $this->model = $this->getCacheInfo($id); | ||
| 45 | + if(!$this->model){ | ||
| 46 | + $this->fail('数据不存在或者已经删除'); | ||
| 47 | + } | ||
| 48 | + $data = [ | ||
| 49 | + 'id' => $id, | ||
| 50 | + 'status' => $status | ||
| 51 | + ]; | ||
| 52 | + if($status == TaskOwner::STATUS_DONGING){ | ||
| 53 | + $data['doing_at'] = date('Y-m-d H:i:s'); | ||
| 54 | + } | ||
| 55 | + if($status == TaskOwner::STATUS_DOWN){ | ||
| 56 | + $data['done_at'] = date('Y-m-d H:i:s'); | ||
| 57 | + } | ||
| 58 | + parent::save($data); | ||
| 59 | + return $this->success(); | ||
| 60 | + } | ||
| 42 | } | 61 | } |
| @@ -31,4 +31,13 @@ class Task extends Base | @@ -31,4 +31,13 @@ class Task extends Base | ||
| 31 | return Upload::path2url($value); | 31 | return Upload::path2url($value); |
| 32 | } | 32 | } |
| 33 | 33 | ||
| 34 | + public function owner(){ | ||
| 35 | + return $this->hasMany(TaskOwner::class,'task_id','id'); | ||
| 36 | + | ||
| 37 | + } | ||
| 38 | + | ||
| 39 | + public function follow(){ | ||
| 40 | + return $this->hasMany(TaskFollow::class,'task_id','id'); | ||
| 41 | + | ||
| 42 | + } | ||
| 34 | } | 43 | } |
-
请 注册 或 登录 后发表评论