| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204 |
- <?php
- /**
- * 项目逻辑类
- *
- * @author qifan
- * @date 2020-12-16
- */
-
- namespace app\work\logic;
-
- use app\work\traits\WorkAuthTrait;
- use think\Db;
-
- class WorkLogic
- {
- use WorkAuthTrait;
-
- public function index($param)
- {
- # 排序
- $orderField = 'work_id';
- $orderSort = 'asc';
- if (!empty($param['sort_type']) && $param['sort_type'] == 1) {
- $orderField = 'work_id';
- $orderSort = 'asc';
- }
- if (!empty($param['sort_type']) && $param['sort_type'] == 2) {
- $orderField = 'work_id';
- $orderSort = 'desc';
- }
- if (!empty($param['sort_type']) && $param['sort_type'] == 3) {
- $orderField = 'update_time';
- $orderSort = 'desc';
- }
-
- # 搜索
- $searchWhere = '';
- $dateWhere = [];
- $userWhere = [];
- $ownerUserId = !empty($param['owner_user_id']) ? $param['owner_user_id'] : '';
- $search = !empty($param['search']) ? $param['search'] : '';
- $type = !empty($param['type']) ? $param['type'] : 0;
- $startTime = !empty($param['start_time']) ? $param['start_time'] : '';
- $endTime = !empty($param['end_time']) ? $param['end_time'] : '';
- unset($param['search']);
- unset($param['type']);
- unset($param['start_time']);
- unset($param['end_time']);
- unset($param['owner_user_id']);
-
- switch ($type) {
- case 1 :
- # 今天
- $dateWhere['update_time'][] = ['egt', strtotime(date('Y-m-d 00:00:00'))];
- $dateWhere['update_time'][] = ['elt', strtotime(date('Y-m-d 23:59:59'))];
- break;
- case 2 :
- # 上周
- $dateWhere['update_time'][] = ['egt', strtotime('last week monday')];
- $dateWhere['update_time'][] = ['elt', strtotime(date('Y-m-d 23:59:59', strtotime('last week sunday')))];
- break;
- case 3 :
- # 上月
- $dateWhere['update_time'][] = ['egt', strtotime(date('Y-m-01 00:00:00', strtotime('last month')))];
- $dateWhere['update_time'][] = ['elt', strtotime(date('Y-m-d 23:59:59', strtotime('Last day of last month')))];
- break;
- case 4 :
- # 去年
- $dateWhere['update_time'][] = ['egt', strtotime(date('Y-01-01 00:00:00', strtotime('last year')))];
- $dateWhere['update_time'][] = ['elt', strtotime(date('Y-12-31 23:59:59', strtotime('last year')))];
- }
-
- # 时间区间
- if (!empty($startTime)) $dateWhere['update_time'] = ['egt', strtotime($startTime . '00:00:00')];
- if (!empty($endTime)) $dateWhere['update_time'] = ['elt', strtotime($endTime . '23:59:59')];
-
- # 搜索内容
- if ($search) $searchWhere = '(name like "%' . $search . '%") OR (description like "%' . $search . '%")';
-
- # 成员
- if (!empty($ownerUserId)) {
- $userIds = Db::name('work_user')->whereIn('user_id', $ownerUserId)->column('work_id');
- $userWhere['work_id'] = ['in', $userIds];
- }
-
- $userModel = new \app\admin\model\User();
- $perUserIds = $userModel->getUserByPer('work', 'work', 'index');
- $authUser = array_unique(array_merge([$param['user_id']], $perUserIds));
-
- $data = Db::name('work')
- ->where(function ($query) {
- $query->where('status', 1);
- $query->where('ishidden', 0);
- })
- ->where(function ($query) use ($param, $authUser) {
- $query->whereOr(['create_user_id' => ['in', $authUser]]);
- $query->whereOr('is_open', 1);
- $query->whereOr(function ($query) use ($param) {
- $query->where('is_open', 0);
- $query->where('owner_user_id', 'like', '%' . $param['user_id'] . '%');
- });
- })
- ->where($searchWhere)
- ->where($dateWhere)
- ->where($userWhere)
- ->order($orderField, $orderSort)->select();
-
- foreach ($data as $key => $value) {
- $data[$key]['authList']['project'] = $this->getRuleList($value['work_id'], $param['user_id'], $value['group_id']);
- }
-
- return $data;
- }
-
- /**
- * @param $param work 排序数组值 user_id用户
- *
- * @author alvin guogaobo
- * @version 1.0 版本号
- * @since 2021/2/23 15:42
- */
- // public function workStart($param)
- // {
- // $item = Db::name('workStart')->where('user_id', $param['user_id'])->find();
- // $data = [];
- // $data['datas'] = $param['work'];
- // $data['user_id'] = $param['user_id'];
- // if (!$item) {
- // return Db::name('workStart')->insertGetId($data);
- // } else {
- // return Db::name('workStart')->where('user_id', $param['user_id'])->update([$data]);
- // }
- // }
-
- /**
- * 根据数组指定键名排序数组
- * @param $array array 被排序数组
- * @param $key_name string 数组键名
- * @param $sort string desc|asc 升序或者降序
- * @return array 返回排序后的数组
- */
- // function gw_sort($array, $param)
- // {
- // $whilr = array
- // (
- // [0] => ['work_id' => 5,
- // 'name' => 222,
- // 'status' => 1,
- // 'create_time' => 1613628469,
- // 'create_user_id' => 7,
- // 'description' => 222,
- // 'color' => '#53D397',
- // 'is_open' => 1,
- // 'owner_user_id' => ',1,2,3,4,5,7,',
- // 'ishidden' => 0,
- // 'archive_time' => 0,
- // 'group_id' => 12,
- // 'cover_url' => 'http://192.168.1.31/72crm-php/public/uploads/20210218/12ece02733c8684ce987f207062173b5.png',
- // 'update_time' => 1613629916,
- // 'is_follow' => 0,
- // 'is_system_cover' => 0,],
- //
- // [1] => [
- //
- // 'work_id' => 7,
- // 'name' => '啊啊',
- // 'status' => 1,
- // 'create_time' => 1614059388,
- // 'create_user_id' => 1,
- // 'description' => '',
- // 'color' => '#53D397',
- // 'is_open' => 0,
- // 'owner_user_id' => ',1,3,',
- // 'ishidden' => 0,
- // 'archive_time' => 0,
- // 'group_id' => 12,
- // 'cover_url' => 'https://file.72crm.com/static/pc/images/pm/project-cover-1.jpg',
- // 'update_time' => 1614059926,
- // 'is_follow' => 0,
- // 'is_system_cover' => 1,
- // ]
- //
- // );
- // $item = Db::name('workStart')->where('user_id', $param['user_id'])->find();
- // $key_name_array = array();//保存被排序数组键名
- // foreach ($whilr as $key => $val) {
- // foreach ($item as $v){
- // $key_name_array[] = array_merge(array_flip($val), $v);
- // }
- // }
- // $key_name_array = array_flip($key_name_array);//反转键名和值得到数组排序后的位置
- // $result = array();
- // foreach($array as $k=>$v){
- // foreach ($item as $vall){
- // $this_key_name_value = $v[$vall];//当前数组键名值依次是20,10,30
- // $save_position = $key_name_array[$this_key_name_value];//获取20,10,30排序后存储位置
- // $result[$save_position] = $v;//当前项存储到数组指定位置
- // }
- // }
- // ksort($result);
- //
- // return $result;
- // }
- }
|