| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207 |
- <?php
- // +----------------------------------------------------------------------
- // | Description: 任务
- // +----------------------------------------------------------------------
- // | Author: yykun
- // +----------------------------------------------------------------------
-
- namespace app\work\model;
-
- use app\admin\controller\ApiCommon;
- use think\Db;
- use app\admin\model\Common;
- use app\admin\model\Message;
- use app\admin\model\User as UserModel;
- use app\admin\model\Structure as StructureModel;
- use app\admin\model\Comment as CommentModel;
- use app\work\model\WorkLog as LogModel;
- use app\work\model\WorkLable as lableModel;
- use app\work\model\WorkClass as classModel;
- use com\verify\HonrayVerify;
- use think\Validate;
- use think\Cache;
-
- class Task extends Common
- {
- /**
- * 为了数据库的整洁,同时又不影响Model和Controller的名称
- * 我们约定每个模块的数据表都加上相同的前缀,比如微信模块用weixin作为数据表前缀
- */
- protected $name = 'task';
- protected $createTime = 'create_time';
- protected $updateTime = 'update_time';
- protected $autoWriteTimestamp = true;
- protected $insert = [
- 'status' => 1,
- ];
-
- /**
- * 项目下任务列表(看板视图)
- *
- * @param $request
- * @param $user_id
- * @return array|false
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getDataList($request, $user_id)
- {
- //权限项目判断
- $workModel = model('Work');
- $userModel = new \app\admin\model\User();
- $work_id = $request['work_id'];
- $map=[];
- $ret = $workModel->checkWork($work_id, $user_id);
- if (!$ret) {
- $this->error = $workModel->getError();
- return false;
- }
- $classModel = model('WorkClass');
- //删除还原的任务,归类至未分组列表下,此列表不可拖拽编辑
- if ($this->where(['class_id' => 0, 'ishidden' => 0, 'work_id' => $work_id])->find()) {
- $classArr = ['0' => ['name' => '未分组', 'class_id' => 0]];
- }
- $classList = $classModel->getDataList($work_id);
- if ($classArr && $classList['list']) {
- $newList = array_merge($classArr, $classList['list']);
- } elseif ($classArr) {
- $newList = $classArr;
- } else {
- $newList = $classList['list'];
- }
-
- if ($request['stop_time_type']) {
- if ($request['stop_time_type'] == '5') { //没有截至日期
- $map['stop_time'] = '0';
- } elseif ($request['stop_time_type'] == '6') { //延期的
- $map['stop_time'] = ['between', [1, time()]];
- $map['status'] = 1;
- } elseif ($request['stop_time_type'] == '7') { //今日更新
- $timeAry = getTimeByType('today');
- $map['update_time'] = ['between', [$timeAry[0], $timeAry[1]]];
- } else {
- switch ($request['stop_time_type']) {
- case '1': //今天到期
- $timeAry = getTimeByType('today');
- break;
- case '2': //明天到期
- $temp = getTimeByType('today');
- $timeAry[0] = $temp[1];
- $timeAry[1] = $temp[1] + 3600 * 24;
- break;
- case '3': //一周内到期
- $timeAry = getTimeByType('week');
- break;
- case '4': //一月内到期
- $timeAry = getTimeByType('month');
- break;
- default:
- break;
- }
- $map['stop_time'] = ['between', [$timeAry[0], $timeAry[1]]];
- }
- }
-
- if ($request['lable_id']) {
- $taskIds = [];
- $task_ids = [];
- foreach ($request['lable_id'] as $v) {
- $task_id = [];
- $lableWhere = [];
- $lableWhere['lable_id'] = ['like', '%,' . $v . ',%'];
- $lableWhere['work_id'] = $work_id;
- $lableWhere['status'] = ['in', ['1', '5']];
- $lableWhere['ishidden'] = 0;
- $lableWhere['pid'] = 0;
- $lableWhere['is_archive'] = 0;
- $task_id = $this->where($lableWhere)->column('task_id');
- if ($task_id && $task_ids) {
- $task_ids = array_unique(array_filter(array_merge($task_ids, $task_id)));
- } elseif ($task_id) {
- $task_ids = $task_id;
- }
- }
- $map['task_id'] = ['in', $task_ids];
- }
-
- $data = array();
- foreach ($newList as $key => $value) {
- $data[$key]['class_id'] = $value['class_id'] ?: -1;
- $data[$key]['class_name'] = $value['name'];
-
- $map['status'] = $map['status'] ?: ['in', ['1', '5']];
-
- $map['ishidden'] = 0;
- $map['work_id'] = $request['work_id'];
- $map['class_id'] = $value['class_id'];
- $map['pid'] = 0;
- $map['is_archive'] = 0;
- $map['main_user_id']=$request['main_user_id'];
- $taskList = [];
- $map['search']=$request['search'];
- $resTaskList = $this->getTaskList($map);
- $data[$key]['count'] = $resTaskList['count'];
- $data[$key]['list'] = $resTaskList['list'];
- }
- return $data;
- }
-
- /**
- * 项目下任务列表(负责人视图)
- *
- * @param $request
- * @param $user_id
- * @return array|false
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getOwnerTaskList($request, $user_id)
- {
- //权限项目判断
- $workModel = model('Work');
- $userModel = new \app\admin\model\User();
- $work_id = $request['work_id'];
- $ret = $workModel->checkWork($work_id, $user_id);
- if (!$ret) {
- $this->error = $workModel->getError();
- return false;
- }
-
- $newList = db('task')->alias('task')->join('__ADMIN_USER__ user', 'user.id = task.main_user_id', 'LEFT')
- ->field(['user.id', 'user.realname'])->where('work_id', $work_id)->group('task.main_user_id')->select();
-
- if ($request['main_user_id']) {
- $map['main_user_id'] = ['in', $request['main_user_id']];
- }
- //截止时间
- if ($request['stop_time_type']) {
- if ($request['stop_time_type'] == '5') { //没有截至日期
- $map['stop_time'] = '0';
- } elseif ($request['stop_time_type'] == '6') { //延期的
- $map['stop_time'] = ['between', [1, time()]];
- $map['status'] = 1;
- } elseif ($request['stop_time_type'] == '7') { //今日更新
- $timeAry = getTimeByType('today');
- $map['update_time'] = ['between', [$timeAry[0], $timeAry[1]]];
- } else {
- switch ($request['stop_time_type']) {
- case '1': //今天到期
- $timeAry = getTimeByType('today');
- break;
- case '2': //明天到期
- $temp = getTimeByType('today');
- $timeAry[0] = $temp[1];
- $timeAry[1] = $temp[1] + 3600 * 24;
- break;
- case '3': //一周内到期
- $timeAry = getTimeByType('week');
- break;
- case '4': //一月内到期
- $timeAry = getTimeByType('month');
- break;
- default:
- break;
- }
- $map['stop_time'] = ['between', [$timeAry[0], $timeAry[1]]];
- }
- }
- if ($request['lable_id']) {
- $taskIds = [];
- $task_ids = [];
- foreach ($request['lable_id'] as $v) {
- $task_id = [];
- $lableWhere = [];
- $lableWhere['lable_id'] = ['like', '%,' . $v . ',%'];
- $lableWhere['work_id'] = $work_id;
- $lableWhere['status'] = ['in', ['1', '5']];
- $lableWhere['ishidden'] = 0;
- $lableWhere['pid'] = 0;
- $lableWhere['is_archive'] = 0;
- $task_id = $this->where($lableWhere)->column('task_id');
- if ($task_id && $task_ids) {
- $task_ids = array_unique(array_filter(array_merge($task_ids, $task_id)));
- } elseif ($task_id) {
- $task_ids = $task_id;
- }
- }
- $map['task_id'] = ['in', $task_ids];
- }
- $data = array();
- foreach ($newList as $key => $value) {
- $data[$key]['class_id'] = $value['id'];
- $data[$key]['class_name'] = $value['realname'];
-
- $map['status'] = $map['status'] ?: ['in', ['1', '5']];
- $map['ishidden'] = 0;
- $map['work_id'] = $request['work_id'];
- $map['main_user_id'] = $value['id'];
- $map['pid'] = 0;
- $map['is_archive'] = 0;
-
- $taskList = [];
- $resTaskList = $this->getTaskList($map);
- $data[$key]['count'] = $resTaskList['count'];
- $data[$key]['list'] = $resTaskList['list'];
- }
- return $data;
- }
-
- /**
- * 根据任务ID 获取操作记录
- * @return
- * @author yykun
- */
- public function getTaskLogList($param)
- {
- $list = Db::name('WorkTaskLog')->alias('l')
- ->join('AdminUser u', 'u.id = l.user_id', 'LEFT')
- ->field('l.*,u.realname,u.thumb_img')
- ->where('l.task_id =' . $param['task_id'])
- ->order('l.log_id desc')
- ->select();
- foreach ($list as $key => $value) {
- $list[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
- $list[$key]['create_time'] = !empty($value['create_time']) ? date('Y-m-d H:i:s', $value['create_time']) : null;
- }
- return $list ?: [];
- }
-
- /**
- * 根据主键获取详情
- * @return
- * @author yykun
- */
- public function getDataById($id = '', $userInfo)
- {
- //读取参与人
- $userModel = new UserModel();
- $structModel = new StructureModel();
- $recordModel = new \app\admin\model\Record();
- $taskInfo = $this->where(['task_id' => $id])->find();
- if (!$taskInfo) {
- $this->error = '任务不存在或已删除';
- return false;
- }
-
- # 日期格式
- $taskInfo['start_time'] = !empty($taskInfo['start_time']) ? date('Y-m-d', $taskInfo['start_time']) : null;
- $taskInfo['stop_time'] = !empty($taskInfo['stop_time']) ? date('Y-m-d', $taskInfo['stop_time']) : null;
- $taskInfo['hidden_time'] = !empty($taskInfo['hidden_time']) ? date('Y-m-d H:i:s', $taskInfo['hidden_time']) : null;
-
- $userlist = $userModel->getDataByStr($taskInfo['owner_user_id']);
- $taskInfo['owner_list'] = $userlist ?: array();
-
- $workInfo = Db::name('Work')->where(['work_id' => $taskInfo['work_id']])->find();
- $taskInfo['work_name'] = $workInfo['name'] ?: '';
-
- //读取部门
- $structList = $structModel->getDataByStr($taskInfo['structure_ids']);
- $taskInfo['struct_list'] = $structList ?: array();
-
- //负责人
- $mainData = [];
- if ($taskInfo['main_user_id']) {
- $mainData = $userModel->getDataById($taskInfo['main_user_id']);
- }
- $taskInfo['main_user_name'] = !empty($mainData['realname']) ? $mainData['realname'] : '';
- $taskInfo['main_user_img'] = !empty($mainData['thumb_img']) ? $mainData['thumb_img'] : '';
- $taskInfo['main_user'] = [
- 'id' => !empty($taskInfo['main_user_id']) ? $taskInfo['main_user_id'] : 0,
- 'realname' => $taskInfo['main_user_name'],
- 'img' => $taskInfo['main_user_img']
- ];
- $lablelist = [];
- if ($taskInfo['lable_id']) {
- $lableModel = new \app\work\model\WorkLable();
- $lablelist = $lableModel->getDataByStr($taskInfo['lable_id']);
- }
- $taskInfo['lable_list'] = $lablelist ?: array();
-
- $commonmodel = new \app\admin\model\Comment();
- $param['type_id'] = $taskInfo['task_id'];
- $param['type'] = 'task';
- $taskInfo['replyList'] = $commonmodel->read($param);
- $subTaskList = $this->alias('t')
- ->join('AdminUser u', 'u.id = t.main_user_id', 'LEFT')
- ->field('t.task_id,t.pid,t.name,t.main_user_id,t.stop_time,t.status,t.class_id,u.id as main_user_id,u.realname,u.thumb_img')
- ->where(' t.ishidden = 0 and ( t.status=1 or t.status=5 ) and t.pid =' . $id)
- ->select();
- $complete = 0;
- foreach ($subTaskList as $key => $value) {
- $subTaskList[$key]['main_user'] = [
- 'id' => $value['main_user_id'],
- 'img' => $value['thumb_img'],
- 'realname' => $value['realname']
- ];
- $subTaskList[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
- $subTaskList[$key]['stop_time'] = !empty($value['stop_time']) ? date('Y-m-d', $value['stop_time']) : null;
- if ($value['status'] == 5) ++$complete;
- }
- # 子任务
- $taskInfo['subTaskList'] = $subTaskList;
- # 子任务完成总数
- $taskInfo['subTaskComplete'] = $complete;
- # 附件
- $taskInfo['fileList'] = $this->getTaskFile($id);
- //相关业务
- $relationArr = $recordModel->getListByRelationId('task', $id);
- $taskInfo['businessList'] = $relationArr['businessList'];
- $taskInfo['contactsList'] = $relationArr['contactsList'];
- $taskInfo['contractList'] = $relationArr['contractList'];
- $taskInfo['customerList'] = $relationArr['customerList'];
- if (!strripos($taskInfo['create_time'], '-')) {
- $taskInfo['create_time'] = date('Y-m-d H:i:s', $taskInfo['create_time']);
- }
- if (!strripos($taskInfo['update_time'], '-')) {
- $taskInfo['update_time'] = date('Y-m-d H:i:s', $taskInfo['update_time']);
- }
- $taskInfo['start_time'] = !empty($taskInfo['start_time']) ? $taskInfo['start_time'] : null;
- $taskInfo['stop_time'] = !empty($taskInfo['stop_time']) ? $taskInfo['stop_time'] : null;
- $taskInfo['archive_time'] = !empty($taskInfo['archive_time']) ? date('Y-m-d H:i:s', $taskInfo['archive_time']) : null;
-
- $createUserInfo = $userModel->getDataById($taskInfo['create_user_id']);
- $createUserInfo['thumb_img'] = $createUserInfo['thumb_img'] ? getFullPath($createUserInfo['thumb_img']) : '';
- $taskInfo['create_user_info'] = $createUserInfo;
- return $taskInfo;
- }
-
- /**
- * 获取任务附件列表
- *
- * @param $taskId
- * @return bool|\PDOStatement|string|\think\Collection
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- private function getTaskFile($taskId)
- {
- # 查询文件IDS
- $fileIds = Db::name('work_task_file')->where('task_id', $taskId)->column('file_id');
-
- # 查询附件
- $list = Db::name('admin_file')->whereIn('file_id', $fileIds)->select();
-
- foreach ($list as $key => $value) {
- $list[$key]['size'] = format_bytes($value['size']); //字节转换
- $list[$key]['create_time'] = date('Y-m-d H:i:s', $value['create_time']);
- $list[$key]['ext'] = getExtension($value['save_name']);
- $list[$key]['file_path'] = getFullPath($value['file_path']);
- $list[$key]['file_path_thumb'] = getFullPath($value['file_path_thumb']);
- }
-
- return $list;
- }
-
- /**
- * 创建任务
- * @return
- * @author yykun
- */
- public function createTask($param)
- {
- # 子任务
- $subtask = !empty($param['subtask']) ? $param['subtask'] : [];
- unset($param['subtask']);
-
- # 附件
- $files = !empty($param['files']) ? $param['files'] : '';
- unset($param['files']);
-
- $param['status'] = 1;
- $rdata = [];
- $rdata['customer_ids'] = !empty($param['customer_ids']) ? arrayToString($param['customer_ids']) : '';
- $rdata['contacts_ids'] = !empty($param['contacts_ids']) ? arrayToString($param['contacts_ids']) : '';
- $rdata['business_ids'] = !empty($param['business_ids']) ? arrayToString($param['business_ids']) : '';
- $rdata['contract_ids'] = !empty($param['contract_ids']) ? arrayToString($param['contract_ids']) : '';
- $arr = ['customer_ids', 'contacts_ids', 'business_ids', 'contract_ids'];
- foreach ($arr as $value) {
- unset($param[$value]);
- }
- $main_user_id = $param['main_user_id'] ?: $param['create_user_id'];
- $param['owner_user_id'] = ','.$main_user_id.','; //参与人
- $param['main_user_id'] = $main_user_id; //负责人
- $param['start_time'] = !empty($param['start_time']) ? strtotime($param['start_time']) : 0;
- $param['stop_time'] = !empty($param['stop_time']) ? strtotime($param['stop_time']) : 0;
- if (!empty($param['stop_time']) && $param['start_time'] > $param['stop_time']) {
- $this->error = '截止时间不能在开始时间之前';
- return false;
- }
- if ((!empty($param['start_time']) || !empty($param['stop_time'])) && $param['start_time'] == $param['stop_time']) {
- $param['stop_time'] = $param['start_time'] + 86399;
- }
- $this->data($param)->allowField(true)->save();
- $task_id = $this->task_id;
- if ($task_id) {
- $rdata['status'] = 1;
- $rdata['create_time'] = time();
- $rdata['task_id'] = $task_id;
- Db::name('TaskRelation')->insert($rdata);
-
- if (!$param['pid']) {
- $taskLog = new LogModel();
- $datalog['name'] = $param['name'];
- $datalog['user_id'] = $param['create_user_id'];
- $datalog['task_id'] = $task_id;
- $datalog['work_id'] = $param['work_id'] ?: '';
- $ret = $taskLog->newTaskLog($datalog);
- //抄送站内信
- (new Message())->send(
- Message::TASK_ALLOCATION,
- [
- 'title' => $param['name'],
- 'action_id' => $task_id
- ],
- stringToArray($param['owner_user_id'])
- );
- }
-
- # 添加活动记录
- if (!empty($rdata['customer_ids']) || !empty($rdata['contacts_ids']) || !empty($rdata['business_ids']) || !empty($rdata['contract_ids'])) {
- Db::name('crm_activity')->insert([
- 'type' => 2,
- 'activity_type' => 11,
- 'activity_type_id' => $task_id,
- 'content' => $param['name'],
- 'create_user_id' => $param['create_user_id'],
- 'update_time' => time(),
- 'create_time' => time(),
- 'customer_ids' => !empty($rdata['customer_ids']) ? $rdata['customer_ids'] : '',
- 'contacts_ids' => !empty($rdata['contacts_ids']) ? $rdata['contacts_ids'] : '',
- 'business_ids' => !empty($rdata['business_ids']) ? $rdata['business_ids'] : '',
- 'contract_ids' => !empty($rdata['contract_ids']) ? $rdata['contract_ids'] : ''
- ]);
- }
-
- # 添加附件
- if (!empty($files)) {
- $fileData = [];
- foreach ($files as $key => $value) {
- $fileData[] = ['file_id' => $value, 'task_id' => $task_id];
- }
- db('work_task_file')->insertAll($fileData);
- }
- # 添加子任务
- if (!empty($subtask)) {
- $subtaskData = [];
- foreach ($subtask as $key => $value) {
- $stopTime = !empty($value['stop_time']) ? strtotime($value['stop_time']) : 0;
- $ownerUserId = !empty($value['owner_user_id']) ? $value['owner_user_id'] : $param['create_user_id'];
-
- $subtaskData[] = [
- 'name' => $value['name'],
- 'create_user_id' => $param['create_user_id'],
- 'main_user_id' => $ownerUserId,
- 'owner_user_id' => $ownerUserId,
- 'create_time' => time(),
- 'update_time' => time(),
- 'pid' => $task_id,
- 'start_time' => 0,
- 'stop_time' => $stopTime
- ];
- }
- Db::name('task')->insertAll($subtaskData);
- foreach ($subtaskData as $v){
- RecordActionLog($param['create_user_id'],'work_task','save',$param['name'],'','','新增了子任务'.$v['name']);
- }
- }
- RecordActionLog($param['create_user_id'],'work_task','save',$param['name'],'','','新增任务'.$param['name']);
- return $task_id;
- } else {
- $this->error = '添加失败';
- return false;
- }
- }
-
- /**
- * 编辑任务
- *
- * @param $param
- * @return bool
- * @throws \think\Exception
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- * @throws \think\exception\PDOException
- */
- public function updateDetTask($param)
- {
- $LogModel = new LogModel();
- $userModel = new UserModel();
- $lableModel = new lableModel();
- $StructureModel = new StructureModel();
- $createUserId = $param['create_user_id'];
- $type = $param['type'] ?: '';
- if (!$param['task_id']) {
- $this->error = '参数错误!';
- return false;
- }
- //关联业务
- if (isset($param['customer_ids']) && !empty($param['customer_ids'])) $rdata['customer_ids'] = arrayToString($param['customer_ids']);
- if (isset($param['contacts_ids']) && !empty($param['contacts_ids'])) $rdata['contacts_ids'] = arrayToString($param['contacts_ids']);
- if (isset($param['business_ids']) && !empty($param['business_ids'])) $rdata['business_ids'] = arrayToString($param['business_ids']);
- if (isset($param['contract_ids']) && !empty($param['contract_ids'])) $rdata['contract_ids'] = arrayToString($param['contract_ids']);
-
- $rdata['task_id'] = $param['task_id'];
- $arr = ['customer_ids', 'contacts_ids', 'business_ids', 'contract_ids'];
- foreach ($arr as $value) {
- unset($param[$value]);
- }
-
- # 调整时间参数格式
- if (!empty($param['stop_time'])) $param['stop_time'] = strtotime($param['stop_time']);
- if (!empty($param['start_time'])) $param['start_time'] = strtotime($param['start_time']);
-
- if (empty($param['stop_time']) && $param['stop_time'] === null) unset($param['stop_time']);
- if (empty($param['start_time']) && $param['start_time'] === null) unset($param['start_time']);
-
- $data = array();
- $taskInfo = $this->get($param['task_id']);
- $taskInfo = json_decode(json_encode($taskInfo), true);
- $data['type'] = $param['type'];
- $data['before'] = $taskInfo[$param['type']] ? $taskInfo[$param['type']] : '空';
- $target_name=$taskInfo['name'];
- switch ($type) {
- case 'name' :
- $data['after'] = $param['name'];
- $name='任务名称';
- $count_name=$param['name'];
- break;
- case 'stop_time' :
- if ($param['stop_time']) {
- $data['after'] = date("Y-m-d", $param['stop_time']);
- } else {
- $data['after'] = '无';
- }
- $name='结束时间';
- $count_name=$data['after'];
- break;
- case 'start_time' :
- if (!empty($param['start_time'])) {
- $data['after'] = date("Y-m-d", $param['stop_time']);
- } else {
- $data['after'] = '无';
- }
- $count_name=$data['after'];
- $name='开始时间';
- break;
- case 'class_id' :
- //类型修改
- $classModel = model('WorkClass');
- $taskInfo = $classModel->getDataById($param['class_id']);
- $data['after'] = $taskInfo['name'];
- $name='类型';
- break;
- case 'lable_id_add' :
- //标签添加
- $oldLabel = !empty($taskInfo['lable_id']) ? $lableModel->getNameByIds(stringToArray($taskInfo['lable_id'])) : [];
- $lable = $lableModel->getNameByIds($param['lable_id_add']);
- if ($taskInfo['lable_id'] && $param['lable_id_add']) {
- $param['lable_id_add'] = array_unique(array_merge(stringToArray($taskInfo['lable_id']), $param['lable_id_add']));
- }
- $param['lable_id'] = arrayToString($param['lable_id_add']);
- $addLabel = !empty($lable) ? array_diff($lable, $oldLabel) : '';
- $data['after'] = !empty($addLabel) ? implode(',', $addLabel) : '';
- unset($param['lable_id_add']);
- $count_name=$data['after'];
- $name='标签';
- break;
- case 'lable_id_del' :
- //标签删除
- $lable = $lableModel->getNameByIds($param['lable_id_del']);
- if ($param['lable_id_del']) {
- $lable_id = array_unique(array_diff(stringToArray($taskInfo['lable_id']), $param['lable_id_del']));
- $param['lable_id'] = arrayToString($lable_id);
- } else {
- $param['lable_id'] = $taskInfo['lable_id'];
- }
- $data['after'] = $lable ? implode(',', $lable) : '';
- unset($param['lable_id_del']);
- $count_name=$data['after'];
- $name='删除标签';
- break;
- case 'structure_id_del' :
- //删除参与部门
- $structuredet = $StructureModel->getDataById($param['structure_id']);
- $param['structure_ids'] = str_replace(',' . $param['structure_id_del'] . ',', ',', $taskInfo['structure_ids']); //删除
- $data['after'] = $structuredet['name'];
- unset($param['structure_id_del']);
- $count_name=$data['after'];
- $name='删除参与部门';
- break;
- case 'structure_id_add' :
- //添加参与部门
- $structuredet = $StructureModel->getDataById($param['owner_userid_add']);
- if ($taskInfo['structure_ids']) {
- $param['structure_ids'] = $taskInfo['structure_ids'] . $param['structure_id_add'] . ','; //追加
- } else {
- $param['structure_ids'] = ',' . $param['structure_id_add'] . ','; //首次添加
- }
- $data['after'] = $structuredet['name'];
- unset($param['structure_id_add']);
- $count_name=$data['after'];
- $name='参与部门';
- break;
- case 'owner_userid_del' :
- //删除参与成员
- $userdet = $userModel->getDataById($param['owner_userid_del']);
- $param['owner_user_id'] = str_replace(',' . $param['owner_userid_del'] . ',', ',', $taskInfo['owner_user_id']); //删除
- $data['after'] = $userdet['realname'];
- unset($param['owner_userid_del']);
- $count_name=$data['after'];
- $name='删除参与成员';
- break;
- case 'owner_userid_add' :
- //添加参与成员
- $userdet = $userModel->getDataById($param['owner_userid_add']);
- if ($taskInfo['owner_user_id']) {
- $param['owner_user_id'] = $taskInfo['owner_user_id'] . $param['owner_userid_add'] . ','; //追加
- } else {
- $param['owner_user_id'] = ',' . $param['owner_userid_add'] . ','; //首次添加
- }
- $data['after'] = $userdet['realname'];
- unset($param['owner_userid_add']);
- $count_name=$data['after'];
- $name='参与成员';
- break;
- case 'main_user_id' :
- //设置负责人
- $userdet = $userModel->getDataById($param['main_user_id']);
- $data['after'] = '设定' . $userdet['realname'] . '为主要负责人!';
- (new Message())->send(
- Message::TASK_ALLOCATION,
- [
- 'title' => $taskInfo['name'],
- 'action_id' => $param['task_id']
- ],
- $param['main_user_id']
- );
- $count_name=$userdet['realname'];
- $name='负责人';
- break;
- }
-
- $param['update_time'] = time();
- $data['work_id'] = $param['work_id'];
- $data['task_id'] = $param['task_id'];
- $data['user_id'] = $param['create_user_id'];
- unset($param['type']);
- unset($param['create_user_id']);
- $flag = $this->where(['task_id' => $param['task_id']])->update($param);
- if ($flag || count($rdata)) {
- if ($param['owner_user_id']) {
- $this->where(['task_id' => $param['task_id']])->setField('owner_user_id', $param['owner_user_id']);
- }
- if (!$param['pid']) {
- $LogModel = new LogModel();
- $taskInfo = $LogModel->taskLogAdd($data);
- if(empty($name)){
- if(!empty($param['description'])){
- $name='描述';
- }
- }
- $count_name=empty($count_name)?$target_name:$count_name;
- RecordActionLog($createUserId, 'work_task', 'update',$target_name, '','','修改任务'.$name.':'.$count_name);
- $resRelation = Db::name('TaskRelation')->where(['task_id' => $param['task_id']])->find();
- if ($resRelation) {
- Db::name('TaskRelation')->where(['task_id' => $param['task_id']])->update($rdata); //更新关联关系
- } else {
- $rdata['create_time'] = time();
- $rdata['status'] = 1;
- Db::name('TaskRelation')->insert($rdata); //更新关联关系
- }
- }
- # 删除活动记录
- Db::name('crm_activity')->where(['activity_type' => 11, 'activity_type_id' => $param['task_id']])->delete();
- # 添加活动记录
- if (!empty($rdata['customer_ids']) || !empty($rdata['contacts_ids']) || !empty($rdata['business_ids']) || !empty($rdata['contract_ids'])) {
- Db::name('crm_activity')->insert([
- 'type' => 2,
- 'activity_type' => 11,
- 'activity_type_id' => $param['task_id'],
- 'content' => $param['name'],
- 'create_user_id' => $createUserId,
- 'update_time' => time(),
- 'create_time' => time(),
- 'customer_ids' => !empty($rdata['customer_ids']) ? $rdata['customer_ids'] : '',
- 'contacts_ids' => !empty($rdata['contacts_ids']) ? $rdata['contacts_ids'] : '',
- 'business_ids' => !empty($rdata['business_ids']) ? $rdata['business_ids'] : '',
- 'contract_ids' => !empty($rdata['contract_ids']) ? $rdata['contract_ids'] : ''
- ]);
- }
- return true;
- } else {
- $this->error = '操作失败';
- return false;
- }
- }
-
- //根据IDs获取数组
- public function getDataByStr($idstr)
- {
- $idArr = stringToArray($idstr);
-
- if (!$idArr) {
- return [];
- }
- $list = db('work_task_lable')->where(['lable_id' => ['in', $idArr]])->select();
- return $list;
- }
-
- /**
- * 任务统计不同状态
- * @param
- * @return
- * @author yykun
- */
- public function getCount($status = 0)
- {
- $map = array();
- if ($status > 0) {
- $map['status'] = $status;
- }
- $count = $this->where($map)->count();
- return $count ?: 0;
- }
-
- /**
- * 获取某一月份任务列表
- * @param
- * @return
- * @author yykun
- */
- public function getDateList($param)
- {
- $start_time = $param['start_time'];
- $stop_time = $param['stop_time'];
- $user_id = $param['user_id'];
- // $date_list = dateList($start_time, $stop_time, 1);
- $where = [];
- $where['ishidden'] = 0;
- $where['is_archive'] = 0;
- $where['status'] = 1;
- $where['pid'] = 0;
- $str = ',' . $user_id . ',';
- $whereStr = ' ( create_user_id = ' . $user_id . ' or ( owner_user_id like "%' . $str . '%") or ( main_user_id = ' . $user_id . ' ) )';
- $whereDate = '( stop_time > 0 and stop_time between ' . $start_time . ' and ' . $stop_time . ' ) or ( update_time between ' . $start_time . ' and ' . $stop_time . ' )';
- $list = db('task')
- ->where($where)
- ->where($whereStr)
- ->where($whereDate)
- ->field('task_id,name,priority,start_time,stop_time,priority,update_time')
- ->select();
- return $list ?: [];
- }
-
- /**
- * 删除任务
- * @param
- * @return
- * @author yykun
- */
- public function delTaskById($param)
- {
- if (!$param['task_id']) {
- $this->error = '参数错误';
- return false;
- }
- $taskInfo = $this->get($param['task_id']);
- if (!$taskInfo) {
- $this->error = '数据不存在或已删除';
- return false;
- }
- $map['task_id'] = $param['task_id'];
- $temp['ishidden'] = 1;
- $temp['hidden_time'] = time();
- $flag = $this->where($map)->update($temp);
- if ($flag) {
- # 删除任务的活动记录
- db('crm_activity')->where(['type' => 2, 'activity_type' => 11, 'activity_type_id' => $param['task_id']])->delete();
- return true;
- } else {
- $this->error = '删除失败';
- return false;
- }
- }
-
- /**
- * 归档任务
- * @param
- * @return
- * @author yykun
- */
- public function archiveData($param)
- {
- $data['is_archive'] = 1;
- $data['archive_time'] = time();
- $dataInfo=$this->get($param['task_id']);
- $dataInfo = json_decode(json_encode($dataInfo), true);
- $flag = $this->where(['task_id' => $param['task_id']])->update($data);
- if ($flag) {
- RecordActionLog($param['create_user_id'], 'work_task', 'archiveData',$dataInfo['name'], '','','归档了任务:'.$dataInfo['name']);
- return true;
- } else {
- $this->error = '归档失败';
- return false;
- }
- }
-
- /**
- * 归档任务恢复
- * @param
- * @return
- * @author yykun
- */
- public function recover($param)
- {
- $dataInfo=$this->get($param['task_id']);
- $dataInfo = json_decode(json_encode($dataInfo), true);
- $flag = $this->where(['task_id' => $param['task_id']])->setField('is_archive', 0);
- if ($flag) {
- //添加日志
- RecordActionLog($param['create_user_id'], 'work_task', 'recover',$dataInfo['name'], '','','归档了任务:'.$dataInfo['name']);
- return true;
- } else {
- $this->error = '操作失败';
- return false;
- }
- }
-
- /**
- * 任务权限判断
- * @param
- * @return
- * @author Michael_xu
- */
- public function checkTask($task_id, $userInfo)
- {
- $userModel = new \app\admin\model\User();
- $taskInfo = $this->get($task_id);
-
- if (!$taskInfo) {
- $this->error = '该任务不存在或已删除';
- return false;
- }
- $user_id = $userInfo['id'];
- $structure_id = $userInfo['structure_id'];
- $adminTypes = adminGroupTypes($user_id);
- if (in_array(1, $adminTypes) || in_array(7, $adminTypes)) {
- return true;
- }
- if (($taskInfo['create_user_id'] == $user_id) || ($taskInfo['main_user_id'] == $user_id) || in_array($user_id, stringToArray($taskInfo['owner_user_id'])) || in_array($structure_id, stringToArray($taskInfo['structure_ids']))) {
- return true;
- }
- $workInfo = db('work')->where(['work_id' => $taskInfo['work_id']])->find();
- if ($taskInfo['is_open'] == 1) {
- return true;
- } else {
- //私有项目(只有项目成员可以查看)
- $workUser = db('work_user')->where(['work_id' => $taskInfo['work_id']])->column('user_id');
- if ($workUser && in_array($user_id, $workUser)) {
- return true;
- }
- return false;
- }
- }
-
- /**
- * 查看关联个数
- * @param
- * @return
- * @author yykun
- */
- public function getRelationCount($task_id)
- {
- $relationInfo = Db::name('TaskRelation')->where(['task_id' => $task_id])->find();
- $count = 0;
- if ($relationInfo) {
- $count1 = count(stringToArray($relationInfo['customer_ids']));
- $count2 = count(stringToArray($relationInfo['contacts_ids']));
- $count3 = count(stringToArray($relationInfo['business_ids']));
- $count4 = count(stringToArray($relationInfo['contract_ids']));
- $count = $count1 + $count2 + $count3 + $count4;
- }
- return $count;
- }
-
- /**
- * 任务列表
- *
- * @param $request
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getTaskList($request)
- {
-
- $search = $request['search']?:'';
- $whereStr = $request['whereStr'] ?: [];
- $lable_id = $request['lable_id'] ?: '';
- $main_user_id = $request['main_user_id'] ?: '';
- $taskSearch = !empty($request['taskSearch']) ? $request['taskSearch'] : '';
- $isArchive = !empty($request['is_archive']) ? $request['is_archive'] : 0;
- unset($request['search']);
- unset($request['whereStr']);
- unset($request['lable_id']);
- unset($request['main_user_id']);
- $request = $this->fmtRequest($request);
- $requestMap = $request['map'] ?: [];
- $userModel = new \app\admin\model\User();
- $lableModel = new \app\work\model\WorkLable();
- $map = $requestMap;
- $map['ishidden'] = $requestMap['ishidden'] ?: 0;
- $map = where_arr($map, 'work', 'task', 'index');
- if ($search) {
- //普通筛选
- $map['task.name'] = ['like', '%' . $search . '%'];
- }
- if ($lable_id) {
- $map['task.lable_id'] = array('like', '%' . $lable_id . '%');
- }
- $dataCount = db('task')->alias('task')->where($map)->where($whereStr)->where($taskSearch)->count();
- $taskList = [];
- $logWhere='';
- if ($main_user_id) {
- foreach ($main_user_id as $key => $value) {
- $logWhere.= '( task.owner_user_id like "%,' . $value . ',%") OR ';
- }
- if (!empty($logWhere)) $logWhere = '(' . rtrim($logWhere, 'OR ') . ')';
- }
- if ($dataCount) {
- $taskList = db('task')
- ->alias('task')
- ->join('AdminUser u', 'u.id = task.main_user_id', 'LEFT')
- ->join('Work w', 'w.work_id = task.work_id', 'LEFT')
- ->field('task.task_id,task.name,task.main_user_id,task.is_top,task.work_id,task.lable_id,task.priority,task.stop_time,task.status,task.pid,task.create_time,task.owner_user_id,u.realname as main_user_name,u.thumb_img,w.name as work_name,color')
- ->where($map)
- ->where($whereStr)
- ->where($logWhere)
- ->where($taskSearch)
- ->order('task.status asc,task.order_id asc')
- ->select();
- foreach ($taskList as $key => $value) {
- if ($value['pid'] > 0) {
- $p_det = $this->field('task_id,name')->where(['task_id' => $value['pid']])->find();
- $taskList[$key]['pname'] = $p_det['name'];
- } else {
- $taskList[$key]['pname'] = '';
- }
- $taskList[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
- $subcount = $this->where(['ishidden' => 0, 'status' => 1, 'pid' => $value['task_id']])->count();
- $subdonecount = $this->where(['ishidden' => 0, 'status' => 5, 'pid' => $value['task_id']])->count();
- $taskList[$key]['subcount'] = $subcount; //子任务
- $taskList[$key]['subdonecount'] = $subdonecount; //已完成子任务
- $taskList[$key]['commentcount'] = Db::name('AdminComment')->where(['type' => 'task', 'type_id' => $value['task_id']])->count(); //评论
- $taskList[$key]['filecount'] = Db::name('WorkTaskFile')->where(['task_id' => $value['task_id']])->count();
- $lableList = [];
- if ($value['lable_id']) {
- $lableList = $lableModel->getDataByStr($value['lable_id']);
- $taskList[$key]['lableList'] = $lableList ?: array();
- }
- $taskList[$key]['lableList'] = $lableList ?: array();
- //参与人
- //负责人信息
- $taskList[$key]['main_user'] = $value['main_user_id'] ? $userModel->getDataById($value['main_user_id']) : NULL;
- $taskList[$key]['relationCount'] = $this->getRelationCount($value['task_id']);
- $is_end = 0;
- if (!empty($value['stop_time']) && (strtotime(date('Ymd')) + 86399 > $value['stop_time'])) $is_end = 1;
- $taskList[$key]['is_end'] = $is_end;
- $taskList[$key]['checked'] = ($value['status'] == '5') ? true : false;
- $taskList[$key]['stop_time'] = !empty($value['stop_time']) ? date('Y-m-d H:i:s', $value['stop_time']) : null;
- $taskList[$key]['create_time'] = !empty($value['create_time']) ? date('Y-m-d H:i:s', $value['create_time']) : null;
- }
- }
- # 归档任务
- if (!empty($isArchive)) {
- return $taskList;
- }
- $data = [];
- $data['count'] = $dataCount;
- $data['list'] = $taskList ?: [];
- return $data;
- }
-
- /**
- * 项目-控制台-任务列表(新)
- *
- * @param $request
- * @param $param
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getProjectTaskList($request, $param)
- {
- # 排序
- $order = $this->getSplicingSortParam($param);
- # 搜索
- $whereStr = $request['whereStr'] ?: [];
- $taskSearch = !empty($request['taskSearch']) ? $request['taskSearch'] : '';
- unset($request['whereStr']);
- unset($request['taskSearch']);
- $request = $this->fmtRequest($request);
- $requestMap = $request['map'] ?: [];
- $userModel = new \app\admin\model\User();
- $lableModel = new \app\work\model\WorkLable();
- $map = $requestMap;
- $map['ishidden'] = $requestMap['ishidden'] ?: 0;
- $map = where_arr($map, 'work', 'task', 'index');
- # 成员
- if (!empty($param['owner_user_id']) && is_array($param['owner_user_id'])) {
- $whereStr = '';
- foreach ($param['owner_user_id'] as $key => $value) {
- $whereStr .= '( task.owner_user_id like "%,' . $value . ',%") OR ';
- }
- if (!empty($whereStr)) $whereStr = '(' . rtrim($whereStr, 'OR ') . ')';
- }
- # 截止日期
- $timeWhere = $this->getTimeParam($param['time_type']);
- # 标签
- $labelWhere = '';
- if (!empty($param['label_id']) && is_array($param['label_id'])) {
- foreach ($param['label_id'] as $key => $value) {
- $labelWhere .= '( task.lable_id like "%,' . $value . ',%") OR ';
- }
- if (!empty($labelWhere)) $labelWhere = '(' . rtrim($labelWhere, 'OR ') . ')';
- }
- $dataCount = db('task')->alias('task')->where($map)->where($whereStr)->where($taskSearch)->where($timeWhere)->where($labelWhere)->count();
- $taskList = [];
- if ($dataCount) {
- $taskList = db('task')
- ->alias('task')
- ->join('AdminUser u', 'u.id = task.main_user_id', 'LEFT')
- ->join('Work w', 'w.work_id = task.work_id', 'LEFT')
- ->field('task.task_id,task.name,task.main_user_id,task.is_top,task.work_id,task.lable_id,task.priority,task.stop_time,task.status,task.pid,task.create_time,task.owner_user_id,u.realname as main_user_name,u.thumb_img,w.name as work_name,color')
- ->where($map)
- ->where($whereStr)
- ->where($taskSearch)
- ->where($timeWhere)
- ->where($labelWhere)
- ->order($order)
- ->select();
- foreach ($taskList as $key => $value) {
- if ($value['pid'] > 0) {
- $p_det = $this->field('task_id,name')->where(['task_id' => $value['pid']])->find();
- $taskList[$key]['pname'] = $p_det['name'];
- } else {
- $taskList[$key]['pname'] = '';
- }
- $taskList[$key]['thumb_img'] = $value['thumb_img'] ? getFullPath($value['thumb_img']) : '';
- $subcount = $this->where(['ishidden' => 0, 'status' => 1, 'pid' => $value['task_id']])->count();
- $subdonecount = $this->where(['ishidden' => 0, 'status' => 5, 'pid' => $value['task_id']])->count();
- $taskList[$key]['subcount'] = $subcount; //子任务
- $taskList[$key]['subdonecount'] = $subdonecount; //已完成子任务
- $taskList[$key]['commentcount'] = Db::name('AdminComment')->where(['type' => 'task', 'type_id' => $value['task_id']])->count(); //评论
- $taskList[$key]['filecount'] = Db::name('WorkTaskFile')->where(['task_id' => $value['task_id']])->count();
- $lableList = [];
- if ($value['lable_id']) {
- $lableList = $lableModel->getDataByStr($value['lable_id']);
- $taskList[$key]['lableList'] = $lableList ?: array();
- }
- $taskList[$key]['lableList'] = $lableList ?: array();
- //参与人
- //负责人信息
- $taskList[$key]['main_user'] = $value['main_user_id'] ? $userModel->getDataById($value['main_user_id']) : NULL;
- $taskList[$key]['relationCount'] = $this->getRelationCount($value['task_id']);
- $is_end = 0;
- if (!empty($value['stop_time']) && (strtotime(date('Ymd')) + 86399 > $value['stop_time'])) $is_end = 1;
- $taskList[$key]['is_end'] = $is_end;
- $taskList[$key]['checked'] = ($value['status'] == '5') ? true : false;
- }
- }
- $data = [];
- $data['count'] = $dataCount;
- $data['list'] = $taskList ?: [];
- return $data;
- }
-
- /**
- * 获取截止日期参数
- * @param $type
- * @return array|string
- */
- private function getTimeParam($type)
- {
- $result = [];
-
- # 今天
- if ($type == 1) {
- $result = '(task.stop_time >= ' . strtotime(date('Y-m-d 00:00:00')) . ' AND task.stop_time <= ' . strtotime(date('Y-m-d 23:59:59')) . ')';
- }
-
- # 明天
- if ($type == 2) {
- $tomorrow = date("Y-m-d 23:59:59", strtotime("+1 day"));
- $start = date("Y-m-d 00:00:00", strtotime("+1 day"));
- $result = '(task.stop_time >= ' . strtotime($start) . ' AND task.stop_time <= ' . strtotime($tomorrow) . ')';
- }
-
- # 本周
- if ($type == 3) {
- $week = mktime(23, 59, 59, date("m"), date("d") - date("w") + 7, date("Y"));
- $start_week=mktime(0, 0, 0, date('m'), date('d') - date('w') + 1, date('Y'));
- $result = '(task.stop_time >= ' . $start_week . ' AND task.stop_time <= ' . $week . ')';
- }
-
- # 本月
- if ($type == 4) {
- $timestamp = mktime(0, 0, 0, date('m'), 1, date('Y'));
- $month = mktime(23, 59, 59, date("m"), date("t"), date("Y"));
- $result = '(task.stop_time > ' . $timestamp . ' AND task.stop_time <= ' . $month . ')';
- }
-
- # 未设置截止日期
- if ($type == 5) {
- $result = '(task.stop_time = 0)';;
- }
-
- # 已延期
- if ($type == 6) {
- $result = '(task.status = 2 OR task.stop_time < ' . time() . ')'.'AND task.stop_time <> 0 AND task.status = 1';
- }
-
- # 今日更新
- if ($type == 7) {
- $result = '(task.update_time >= ' . strtotime(date('Y-m-d 00:00:00')) . ' AND task.update_time <= ' . strtotime(date('Y-m-d 23:59:59')) . ')';
- }
-
- return $result;
- }
-
- /**
- * 拼接排序参数
- *
- * @param $param
- * @return string
- */
- private function getSplicingSortParam($param)
- {
- $result = '';
-
- # 排序字段映射
- $sortFieldArray = [1 => 'top_order_id', 2 => 'create_time', 3 => 'stop_time', 4 => 'update_time', 5 => 'priority'];
-
- # 已完成任务默认排在最后
- $completedTask = $param['completed_task'];
-
- # 排序方式:top_order_id按手动拖拽;create_time按最近创建;stop_time按最近截止;update_time按最近更新;priority按最高优先级;
- $sortField = !empty($param['sort_field']) ? $param['sort_field'] : 'task_id';
-
- # 默认是升序
- $sortValue = 'asc';
-
- # 除按手动拖拽以外,全部是降序
- if (in_array($sortField, [2, 3, 4, 5])) $sortValue = 'desc';
-
- if (!empty($completedTask) && ($completedTask != 'false' || $completedTask != false)) $result = 'task.status asc, ';
-
- $result .= 'task.' . $sortFieldArray[$sortField] . ' ' . $sortValue;
-
- return $result;
- }
- }
|