| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131 |
- <?php
- /**
- * 业绩目标逻辑类
- *
- * @author qifan
- * @date 2020-12-29
- */
-
- namespace app\crm\logic;
-
-
- use think\Db;
-
- class AchievementLogic
- {
- /**
- * 获取部门业绩列表
- *
- * @param $param
- * @return bool|\PDOStatement|string|\think\Collection
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getDepartmentList($param)
- {
- # 获取部门及全部子部门ID
- $departmentIds = $this->getDepartmentIds($param['structure_id']);
-
- $departmentWhere['year'] = $param['year'];
- $departmentWhere['status'] = $param['type'];
- $departmentWhere['type'] = 2;
- $departmentWhere['obj_id'] = ['in', $departmentIds];
-
- # 获取部门数据
- $departments = db('admin_structure')->field(['id', 'name'])->select();
-
- # 处理部门数据
- $departmentData = [];
- foreach ($departments AS $key => $value) {
- $departmentData[$value['id']] = $value['name'];
- }
-
- # 获取部门业绩数据
- $achievements = Db::name('crm_achievement')->where($departmentWhere)->select();
-
- # 处理业绩数据
- foreach ($achievements AS $key => $value) {
- if (!empty($departmentData[$value['obj_id']])) $achievements[$key]['name'] = $departmentData[$value['obj_id']];
- }
-
- return $achievements;
- }
-
- /**
- * 获取员工业绩列表
- *
- * @param $param
- * @return array|bool|\PDOStatement|string|\think\Collection
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getEmployeeList($param)
- {
- $userWhere['year'] = $param['year'];
- $userWhere['status'] = $param['type'];
- $userWhere['type'] = 3;
-
- if (!empty($param['user_id'])) {
- $userWhere['obj_id'] = $param['user_id'];
- } else {
- # 获取部门及全部子部门ID
- $departmentIds = $this->getDepartmentIds($param['structure_id']);
- # 获取部门下的员工
- $userIds = Db::name('admin_user')->whereIn('structure_id', $departmentIds)->column('id');
- if (empty($userIds)) return [];
- # 设置员工条件
- $departmentWhere['obj_id'] = ['in', $userIds];
- }
-
- # 获取员工数据
- $users = db('admin_user')->field(['id', 'realname'])->select();
-
- # 处理员工数据
- $userData = [];
- foreach ($users AS $key => $value) {
- $userData[$value['id']] = $value['realname'];
- }
-
- # 获取业绩数据
- $achievements = Db::name('crm_achievement')->where($userWhere)->select();
-
- # 处理业绩数据
- foreach ($achievements AS $key => $value) {
- if (!empty($userData[$value['obj_id']])) $achievements[$key]['name'] = $userData[$value['obj_id']];
- }
-
-
- return $achievements;
- }
-
- /**
- * 获取部门及全部子部门ID
- *
- * @param $id
- * @return array
- * @throws \think\db\exception\DataNotFoundException
- * @throws \think\db\exception\ModelNotFoundException
- * @throws \think\exception\DbException
- */
- public function getDepartmentIds($id)
- {
- $result[] = $id;
-
- # 父级ID数组
- $parentIds[] = $id;
-
- # 查询部门数据
- $list = Db::name('admin_structure')->select();
-
- foreach ($list AS $key => $value) {
- if (!in_array($value['pid'], $parentIds)) continue;
-
- $parentIds[] = $value['id'];
- $result[] = $value['id'];
- }
-
- return $result;
- }
- }
|