作者 赵彬吉

update

@@ -5,10 +5,12 @@ namespace App\Http\Controllers\Aside\Task; @@ -5,10 +5,12 @@ namespace App\Http\Controllers\Aside\Task;
5 use App\Http\Controllers\Aside\BaseController; 5 use App\Http\Controllers\Aside\BaseController;
6 use App\Http\Logic\Aside\Task\TaskFollowLogic; 6 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\Logic\Aside\Task\TaskOwnerLogic;
8 use App\Http\Requests\Aside\Task\TaskFollowRequest; 9 use App\Http\Requests\Aside\Task\TaskFollowRequest;
9 use App\Http\Requests\Aside\Task\TaskRequest; 10 use App\Http\Requests\Aside\Task\TaskRequest;
10 use App\Models\Task\Task; 11 use App\Models\Task\Task;
11 -use Illuminate\Support\Facades\Request; 12 +use App\Models\Task\TaskOwner;
  13 +use Illuminate\Http\Request;
12 use Illuminate\Validation\Rule; 14 use Illuminate\Validation\Rule;
13 15
14 16
@@ -26,10 +28,17 @@ class TaskController extends BaseController @@ -26,10 +28,17 @@ class TaskController extends BaseController
26 { 28 {
27 $map = []; 29 $map = [];
28 if(!empty($this->param['search'])){ 30 if(!empty($this->param['search'])){
29 - $map[] = ['title', 'like', "%{$this->param['search']}%"]; 31 + $map[] = ['content', 'like', "%{$this->param['search']}%"];
30 } 32 }
  33 + if(!empty($this->param['created_manage_id'])){
  34 + $map[] = ['created_manage_id', $this->param['created_manage_id']];
  35 + }
  36 + if(!empty($this->param['owner_manage_id'])){
  37 + $map[] = ['id', 'in', TaskOwner::where('manage_id', $this->param['owner_manage_id'])->pluck('task_id')];
  38 + }
  39 +
31 $sort = ['id' => 'desc']; 40 $sort = ['id' => 'desc'];
32 - $data = $logic->getList($map, $sort); 41 + $data = $logic->getList($map, $sort, ['id', 'project_id', 'workload', 'priority', 'content', 'attachment', 'status', 'end_at', 'created_manage_id']);
33 42
34 return $this->success($data); 43 return $this->success($data);
35 } 44 }
@@ -46,6 +55,7 @@ class TaskController extends BaseController @@ -46,6 +55,7 @@ class TaskController extends BaseController
46 55
47 public function save(TaskRequest $request, TaskLogic $logic) 56 public function save(TaskRequest $request, TaskLogic $logic)
48 { 57 {
  58 + $this->param['created_manage_id'] = $this->manage->id;
49 $data = $logic->save($this->param); 59 $data = $logic->save($this->param);
50 return $this->success($data); 60 return $this->success($data);
51 } 61 }
@@ -24,7 +24,8 @@ class TaskFollowLogic extends BaseLogic @@ -24,7 +24,8 @@ class TaskFollowLogic extends BaseLogic
24 } 24 }
25 25
26 public function save($param){ 26 public function save($param){
27 - $task = $this::getInfo($param['task_id']); 27 + $task_logic = new TaskLogic();
  28 + $task = $task_logic->getCacheInfo($param['task_id']);
28 if(!$task){ 29 if(!$task){
29 $this->fail('任务不存在'); 30 $this->fail('任务不存在');
30 } 31 }
@@ -33,6 +34,11 @@ class TaskFollowLogic extends BaseLogic @@ -33,6 +34,11 @@ class TaskFollowLogic extends BaseLogic
33 $this->fail('非本人任务,不能添加跟进记录'); 34 $this->fail('非本人任务,不能添加跟进记录');
34 } 35 }
35 parent::save($param); 36 parent::save($param);
  37 +
  38 + //清任务缓存
  39 + $task_logic->clearCache($param['task_id']);
  40 +
  41 + return $this->success();
36 } 42 }
37 43
38 44
@@ -22,7 +22,7 @@ class TaskOwnerLogic extends BaseLogic @@ -22,7 +22,7 @@ class TaskOwnerLogic extends BaseLogic
22 22
23 public function save($param){ 23 public function save($param){
24 //获取已分配了的 24 //获取已分配了的
25 - $manage_ids = $this->model->where('task_id', $param['task_id'])->pluck('manage_id', 'id'); 25 + $manage_ids = $this->model->where('task_id', $param['task_id'])->pluck('manage_id', 'id')->toArray();
26 26
27 //待删除的 27 //待删除的
28 $del_manage_ids = array_diff($manage_ids, $param['manage_ids']); 28 $del_manage_ids = array_diff($manage_ids, $param['manage_ids']);
@@ -2,6 +2,7 @@ @@ -2,6 +2,7 @@
2 2
3 namespace App\Models\Task; 3 namespace App\Models\Task;
4 4
  5 +use App\Http\Logic\Aside\Project\ProjectLogic;
5 use App\Models\Base; 6 use App\Models\Base;
6 use App\Services\Facades\Upload; 7 use App\Services\Facades\Upload;
7 8
@@ -10,6 +11,8 @@ class Task extends Base @@ -10,6 +11,8 @@ class Task extends Base
10 //设置关联表名 11 //设置关联表名
11 protected $table = 'gl_task'; 12 protected $table = 'gl_task';
12 13
  14 + protected $appends = ['project_id_text', 'status_text', 'timeout'];
  15 +
13 const STATUS_WAIT = 0; 16 const STATUS_WAIT = 0;
14 const STATUS_DONGING = 1; 17 const STATUS_DONGING = 1;
15 const STATUS_DOWN = 2; 18 const STATUS_DOWN = 2;
@@ -18,11 +21,20 @@ class Task extends Base @@ -18,11 +21,20 @@ class Task extends Base
18 public static function statusMap(){ 21 public static function statusMap(){
19 return [ 22 return [
20 self::STATUS_WAIT => '未开始', 23 self::STATUS_WAIT => '未开始',
21 - self::STATUS_DONGING => '进中', 24 + self::STATUS_DONGING => '进中',
22 self::STATUS_DOWN => '已完成', 25 self::STATUS_DOWN => '已完成',
23 ]; 26 ];
24 } 27 }
25 28
  29 + public function getProjectIdTextAttribute(){
  30 + $project = ProjectLogic::instance()->getCacheInfo($this->project_id);
  31 + return $project['title'] ?? '';
  32 + }
  33 +
  34 + public function getStatusTextAttribute(){
  35 + return self::statusMap()[$this->status] ?? '';
  36 + }
  37 +
26 public function setAttachmentAttribute($value){ 38 public function setAttachmentAttribute($value){
27 $this->attributes['attachment'] = Upload::url2path($value); 39 $this->attributes['attachment'] = Upload::url2path($value);
28 } 40 }
@@ -31,6 +43,13 @@ class Task extends Base @@ -31,6 +43,13 @@ class Task extends Base
31 return Upload::path2url($value); 43 return Upload::path2url($value);
32 } 44 }
33 45
  46 + public function getTimeoutAttribute(){
  47 + if($this->status != self::STATUS_DOWN && strtotime($this->end_at) < time()){
  48 + return floor((time() - strtotime($this->end_at)) / 60);
  49 + }
  50 + return 0;
  51 + }
  52 +
34 public function owner(){ 53 public function owner(){
35 return $this->hasMany(TaskOwner::class,'task_id','id'); 54 return $this->hasMany(TaskOwner::class,'task_id','id');
36 55