| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358 | 
							- <?php
 
- namespace app\admin\service\consultant;
 
- use app\model\Consultant;
 
- use app\model\SysDept;
 
- use app\model\SysUser;
 
- use support\Db;
 
- use support\exception\BusinessException;
 
- use support\Request;
 
- use Tinywan\Jwt\JwtToken;
 
- class TeamService
 
- {
 
-     const DEPT_CATEGORY = '获客团队';
 
-     /**
 
-      * @Desc 营销团队详情
 
-      * @Author Gorden
 
-      * @Date 2024/2/21 10:35
 
-      *
 
-      * @param $id
 
-      * @return \support\Response
 
-      */
 
-     public static function deptInfo($id)
 
-     {
 
-         $dept = SysDept::find($id);
 
-         if (!$dept) {
 
-             return json_fail('营销团队不存在');
 
-         }
 
-         $dept = $dept->toArray();
 
-         return json_success('', $dept);
 
-     }
 
-     /**
 
-      * @Desc 创建营销团队
 
-      * @Author Gorden
 
-      * @Date 2024/2/21 9:22
 
-      *
 
-      * @param $params
 
-      * @return \support\Response
 
-      */
 
-     public static function insertDept($params)
 
-     {
 
-         Db::beginTransaction();
 
-         try {
 
-             $data = [
 
-                 'dept_category' => self::DEPT_CATEGORY,
 
-                 'dept_name' => $params['dept_name'],
 
-                 'dept_super_id' => $params['dept_super_id'] ?? 0,
 
-                 'dept_status' => $params['dept_status'] ?? 'ACTIVED',
 
-                 'dept_sort' => $params['dept_sort'] ?? 1,
 
-                 'dept_addtimes' => time()
 
-             ];
 
-             $where = [
 
-                 ['dept_category', '=', $data['dept_category']],
 
-                 ['dept_name', '=', $data['dept_name']],
 
-                 ['dept_super_id', '=', $data['dept_super_id']],
 
-             ];
 
-             $isExist = SysDept::where($where)->first();
 
-             if ($isExist) {
 
-                 throw new BusinessException('团队已存在');
 
-             }
 
-             $deptId = SysDept::insertGetId($data);
 
-             if (!$deptId) {
 
-                 throw new BusinessException('创建团队失败');
 
-             }
 
-             // 获取上级部门path
 
-             $deptSuperPath = '/0/';
 
-             if ($params['dept_super_id'] != 0) {
 
-                 $deptSuperPath = SysDept::where('dept_id', $params['dept_super_id'])->value('dept_super_path');
 
-             }
 
-             // 更新部门path
 
-             $path = $deptSuperPath . $deptId . '/';
 
-             if (!SysDept::where('dept_id', $deptId)->update(['dept_super_path' => $path])) {
 
-                 throw new \Exception('创建团队失败');
 
-             }
 
-             Db::commit();
 
-         } catch (BusinessException|\Exception $e) {
 
-             Db::rollBack();
 
-             return json_fail($e->getMessage());
 
-         }
 
-         return json_success('团队创建成功');
 
-     }
 
-     /**
 
-      * @Desc 修改营销团队
 
-      * @Author Gorden
 
-      * @Date 2024/2/21 10:15
 
-      *
 
-      * @param $id
 
-      * @param $params
 
-      * @return \support\Response
 
-      */
 
-     public static function updateDept($params)
 
-     {
 
-         $id = $params['id'];
 
-         $dept = SysDept::where('dept_id', $id)->first();
 
-         if (!$dept) {
 
-             return json_fail('团队不存在');
 
-         }
 
-         try {
 
-             $data = [
 
-                 'dept_name' => $params['dept_name'],
 
-                 'dept_sort' => $params['dept_sort'] ?? 0,
 
-                 'dept_status' => $params['dept_status'] ?? 'ACTIVED',
 
-             ];
 
-             $where = [
 
-                 ['dept_category', '=', self::DEPT_CATEGORY],
 
-                 ['dept_name', '=', $data['dept_name']],
 
-                 ['dept_super_id', '=', $dept['dept_super_id']],
 
-                 ['dept_id', '<>', $id],
 
-             ];
 
-             $isExist = SysDept::where($where)->first();
 
-             if ($isExist) {
 
-                 throw new BusinessException('团队已存在');
 
-             }
 
-             // 修改失败,异常
 
-             SysDept::where('dept_id', $id)->update($data);
 
-         } catch (BusinessException|\Exception $e) {
 
-             return json_fail($e->getMessage());
 
-         }
 
-         return json_success('修改团队成功');
 
-     }
 
-     /**
 
-      * @Desc 修改营销团队状态
 
-      * @Author Gorden
 
-      * @Date 2024/2/21 10:41
 
-      *
 
-      * @param $id
 
-      * @param $status
 
-      * @return \support\Response
 
-      */
 
-     public static function updateStatus($id, $status)
 
-     {
 
-         try {
 
-             if (!SysDept::where('dept_id', $id)->update(['dept_status' => $status])) {
 
-                 throw new \Exception('营销团队状态修改失败');
 
-             }
 
-         } catch (\Exception $e) {
 
-             return json_fail('营销团队状态修改失败');
 
-         }
 
-         return json_success('营销团队状态修改成功');
 
-     }
 
-     /**
 
-      * @Desc 删除营销团队
 
-      * @Author Gorden
 
-      * @Date 2024/2/21 10:48
 
-      *
 
-      * @param $id
 
-      * @return \support\Response
 
-      */
 
-     public static function delDept(Request $request)
 
-     {
 
-         $ids = $request->post('dept_id');
 
-         if (!$ids) {
 
-             return json_fail("数据错误");
 
-         }
 
-         if (!is_array($ids)) {
 
-             $ids = [$ids];
 
-         }
 
-         //查询团队下是否存在员工
 
-         $nums = Consultant::whereIn('dept_id', $ids)->count();
 
-         if ($nums > 0) {
 
-             return json_fail('请清除团队下员工后删除团队');
 
-         }
 
-         //查询团队下是否存在管理账号
 
-         $nums = SysUser::whereIn('join_user_dept_id', $ids)->count();
 
-         if ($nums > 0) {
 
-             return json_fail('请清除团队下管理账号后删除团队');
 
-         }
 
-         try {
 
-             if (is_array($ids)) {
 
-                 SysDept::whereIn('dept_id', $ids)->delete();
 
-             } else {
 
-                 SysDept::where('dept_id', $ids)->delete();
 
-             }
 
-         } catch (\Exception $e) {
 
-             return json_fail('删除团队失败');
 
-         }
 
-         return json_success('删除团队成功');
 
-     }
 
-     /**
 
-      * @Desc 检查营销团队是否存在
 
-      * @Author Gorden
 
-      * @Date 2024/2/21 13:37
 
-      *
 
-      * @param $deptId
 
-      * @return bool
 
-      */
 
-     public static function checkDeptExist($deptId)
 
-     {
 
-         return SysDept::where('dept_id', $deptId)->exists();
 
-     }
 
-     /**
 
-      * Notes: 上级团队列表
 
-      * User: yb
 
-      * Date: 2024/8/1
 
-      * Time: 17:17
 
-      */
 
-     public static function parentList()
 
-     {
 
-         $deptIds = TeamService::getIdsByUser(1);
 
-         $where = [
 
-             ['dept_category', '=', self::DEPT_CATEGORY],
 
-             ['dept_super_id', '=',  0]
 
-         ];
 
-         if (false === $deptIds) {
 
-             //无权限
 
-             $where[] = ['dept_id', '=', 0];
 
-         } else if (is_array($deptIds)) {
 
-             //指定团队下的权限
 
-             $where[] = [function($query) use ($deptIds) {
 
-                 $query->whereIn('dept_id', $deptIds);
 
-             }];
 
-         }
 
-         $list = SysDept::where($where)->select(['dept_id','dept_name'])->get();
 
-         $result = $list->toArray();
 
-         $result[] = [
 
-             'dept_id' => 0,
 
-             'dept_name' => '顶级团队',
 
-         ];
 
-         return json_success('请求成功', $result);
 
-     }
 
-     /**
 
-      * Notes: 获取团队信息 只有名字
 
-      * User: yb
 
-      * Date: 2024/8/2
 
-      * Time: 10:00
 
-      * @return array
 
-      */
 
-     public static function getKeys()
 
-     {
 
-         $data = self::getTeams();
 
-         $keys = [];
 
-         if (!empty($data)) {
 
-             $array = $data->toArray();
 
-             foreach ($array as $item) {
 
-                 $keys[$item['dept_id']] = $item['dept_name'];
 
-             }
 
-         }
 
-         return $keys;
 
-     }
 
-     /**
 
-      * Notes: 获取团队信息包含整个item
 
-      * User: yb
 
-      * Date: 2024/8/9
 
-      * Time: 20:31
 
-      */
 
-     public static function getItemKeys()
 
-     {
 
-         $data = self::getTeams();
 
-         $keys = [];
 
-         if (!empty($data)) {
 
-             foreach ($data->toArray() as $item) {
 
-                 $keys[$item['dept_id']] = $item;
 
-             }
 
-         }
 
-         return $keys;
 
-     }
 
-     /**
 
-      * Notes: 根据id获取所有的子集
 
-      * User: yb
 
-      * Date: 2024/8/12
 
-      * Time: 11:34
 
-      * @param $id
 
-      */
 
-     public static function getIds($id, $self = 0)
 
-     {
 
-         $where = [
 
-             ['dept_category', '=', self::DEPT_CATEGORY]
 
-         ];
 
-         $deptInfo = SysDept::where('dept_id', $id)->where('dept_category', self::DEPT_CATEGORY)->first();
 
-         $deptSuperPath = $deptInfo->dept_super_path;
 
-         $where[] = ['dept_super_path', 'like', "{$deptSuperPath}%"];
 
-         if ($self == 1) {
 
-             $where[] = ['dept_id', '<>', $id];
 
-         }
 
-         return SysDept::where($where)->pluck('dept_id')->toArray();
 
-     }
 
-     /**
 
-      * Notes: 通过用户获取所有子集
 
-      * User: yb
 
-      * Date: 2024/8/16
 
-      * Time: 16:48
 
-      */
 
-     public static function getIdsByUser($self = 0)
 
-     {
 
-         $userId = JwtToken::getCurrentId();
 
-         $userInfo = SysUser::firstWhere(['user_id' => $userId]);
 
-         $joinUserDeptId = $userInfo->join_user_dept_id;
 
-         //获取部门信息
 
-         $deptInfo = SysDept::firstWhere(['dept_id' => $joinUserDeptId]);
 
-         if (empty($deptInfo)) {
 
-             //无部门信息
 
-             return false;
 
-         }
 
-         if ($deptInfo->dept_category != self::DEPT_CATEGORY) {
 
-             //超管权限
 
-             return true;
 
-         }
 
-         return self::getIds($joinUserDeptId, $self);
 
-     }
 
-     /**
 
-      * Notes: 获取团队完整名称包含所有父集
 
-      * User: yb
 
-      * Date: 2024/8/9
 
-      * Time: 20:43
 
-      * @param $keys
 
-      * @param $id
 
-      * @return string
 
-      */
 
-     public static function getTeamName($keys, $id)
 
-     {
 
-         if (isset($keys[$id])) {
 
-             $path = $keys[$id]['dept_super_path'];
 
-             $array = explode('/', $path);
 
-             array_shift($array);
 
-             array_pop($array);
 
-             $namesArr = [];
 
-             foreach ($array as $item) {
 
-                 if (!empty($item)) {
 
-                     if (isset($keys[$item]['dept_name'])) {
 
-                         $namesArr[] = $keys[$item]['dept_name'];
 
-                     }
 
-                 }
 
-             }
 
-             $name = implode(' - ', $namesArr);
 
-             return $name;
 
-         }
 
-         return '';
 
-     }
 
-     public static function getTeams()
 
-     {
 
-         $where = [
 
-             ['dept_category', '=', self::DEPT_CATEGORY]
 
-         ];
 
-         $data = SysDept::where($where)->select(['dept_id', 'dept_super_id', 'dept_super_path', 'dept_name'])->get();
 
-         return $data;
 
-     }
 
- }
 
 
  |