作者 赵彬吉

update

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