Procházet zdrojové kódy

获取组织架构

sunxbiao před 1 rokem
rodič
revize
7e22ab6550

+ 48 - 0
app/controller/api/store/merchant/Taskorderguquan.php

@@ -16,6 +16,54 @@ class Taskorderguquan
16 16
 
17 17
     public function assignment()
18 18
     {
19
+        try {
20
+            // 1. 获取所有用户数据(按level_id正序排序保证父级在前)
21
+            $users = Db::name('user')
22
+                ->where('is_del', '=', 0)
23
+                ->where('status', '=', 1)
24
+                ->where('user_group', '>=', 2)
25
+                ->order('level_id', 'asc')
26
+                ->field('uid,account,nickname,level_id,is_del,status,user_group')
27
+                ->select()
28
+                ->toArray();
29
+
30
+            // 2. 构建以UID为键的映射表
31
+            $userMap = [];
32
+            foreach ($users as $user) {
33
+                $user['children'] = []; // 初始化子节点
34
+                $userMap[$user['uid']] = [
35
+                    '用户ID' => $user['uid'],
36
+                    '用户账号' => $user['account'],
37
+                    '用户昵称' => $user['nickname'],
38
+                    '用户身份' => $user['user_group'],
39
+                    '上级用户ID' => $user['level_id'],
40
+                    '直属下级用户人数' => 0,
41
+                    '直属下级用户列表' => $user['children'],
42
+                ];
43
+            }
44
+
45
+            // 3. 递归构建树形结构
46
+            $tree = [];
47
+            foreach ($userMap as $uid => &$user) {
48
+                $parentId = $user['上级用户ID'];
49
+
50
+                if ($parentId == 0) {
51
+                    // 顶级节点直接加入树
52
+                    $tree[] = &$user;
53
+                } elseif (isset($userMap[$parentId])) {
54
+                    // 非顶级节点加入父节点的children
55
+                    $userMap[$parentId]['直属下级用户列表'][] = &$user;
56
+                    $userMap[$parentId]['直属下级用户人数']++;
57
+                }
58
+            }
59
+            unset($user); // 销毁引用
60
+
61
+            return json($tree);
62
+        } catch (\Exception $e) {
63
+            // 记录错误日志
64
+            return json(['code' => 0, 'msg' => '树结构生成失败']);
65
+        }
66
+
19 67
         /**
20 68
          * 8000元补贴下面人员
21 69
          * 13231658486周行体1000