DepartmentService.php
3.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<?php
namespace App\Http\Services;
use App\Model\DepartmentModel;
use App\Model\UserInfoModel;
use DB;
//部门数据服务
class DepartmentService
{
public function getSubordinateUserIds($adminId)
{
$departmentId = DB::table('user_info')->where('userId', $adminId)->value('department_id');
$users = $this->getUserByDepartmentId($departmentId);
return array_column($users, 'userId');
}
// 获取部门人员
public function getUserByDepartmentId($departmentId, $status = '', $filter = '')
{
$departmentIds = [];
$this->getSubDepartmentId($departmentId, $departmentIds);
return DB::table('user_info')->whereIn('department_id', $departmentIds)
->where(function ($query) use ($status) {
if ($status !== '') {
$query->where('status', '=', $status);
}
})
->where(function ($query) use ($filter) {
if ($filter) {
$query->whereRaw($filter);
}
})
->select('userId', 'name', 'status')
->get();
}
// 获取下级部门ID
public function getSubDepartmentId($departmentId, &$departmentIds)
{
// 获取下级部门
$sub_department = DB::table('user_department')->where('parent_id', $departmentId)->select('department_id',
'department_name')->get();
if ($sub_department) {
foreach ($sub_department as $v) {
$this->getSubDepartmentId($v['department_id'], $departmentIds);
}
}
$departmentIds[] = $departmentId;
return $departmentIds;
}
//根据用户ip获取顶级部门id
public function getTopDepartmentByUserId($userId)
{
$userModel = new UserInfoModel();
$departmentId = $userModel->where('userId', $userId)->value('department_id');
if (empty($departmentId)) {
return [];
}
//去department表找到顶级id,也可能本身就是顶级id
$departmentModel = new DepartmentModel();
$department = $departmentModel->where('department_id', $departmentId)->first();
if (!empty($department)) {
$department = $department->toArray();
//找出自己的parent_id,如果是0代表自己就是顶级部门信息了
if ($department['parent_id'] == 0) {
return $department;
}
$department = $departmentModel->where('department_id', $department['parent_id'])->first()->toArray();
return $department;
}
return [];
}
public function getDepartmentByUserId($userId)
{
$userModel = new UserInfoModel();
$departmentId = $userModel->where('userId', $userId)->value('department_id');
if (empty($departmentId)) {
return [];
}
//去department表找到顶级id,也可能本身就是顶级id
$departmentModel = new DepartmentModel();
$department = $departmentModel->where('department_id', $departmentId)->first();
return !empty($department) ? $department->toArray() : [];
}
}