Przeglądaj źródła

Merge remote-tracking branch 'origin/master'

sunxbiao 5 miesięcy temu
rodzic
commit
6798a2ccfe

+ 19 - 6
app/common/repositories/shared/SharedProsperityUserRepository.php

@@ -528,21 +528,33 @@ class SharedProsperityUserRepository extends BaseRepository
528 528
      */
529 529
     public function getUserTree($userId)
530 530
     {
531
-        /** @var SharedProsperityUserDao $userDao */
532
-        $userDao = app()->make(SharedProsperityUserDao::class);
531
+        /** @var SharedProsperityUserDao $shareUserDao */
532
+        $shareUserDao = app()->make(SharedProsperityUserDao::class);
533 533
         
534 534
         // 获取所有下级用户ID(包括自己)
535
-        $subordinateIds = $userDao->getAllSubordinateUserIds($userId, true);
535
+        $subordinateIds = $shareUserDao->getAllSubordinateUserIds($userId, true);
536 536
         if (empty($subordinateIds)) {
537 537
             return [];
538 538
         }
539 539
         
540 540
         // 获取这些共富用户的基本信息(包含parent_id)
541
-        $sharedUsers = $userDao->getSharedProsperityUserEntityListByUserIdList($subordinateIds);
541
+        $sharedUsers = $shareUserDao->getSharedProsperityUserEntityListByUserIdList($subordinateIds);
542
+
542 543
         if (empty($sharedUsers)) {
543 544
             return [];
544 545
         }
545
-        
546
+
547
+        // 用户身份
548
+        $partnerLevel = [
549
+            0 => '用户',
550
+            1 => '一星合伙人',
551
+            2 => '二星合伙人',
552
+            3 => '三星合伙人',
553
+            4 => '钻石合伙人',
554
+            5 => '总裁合伙人',
555
+            6 => '联席主席团',
556
+        ];
557
+
546 558
         // 获取用户昵称映射
547 559
         $userIds = array_map(function ($entity) {
548 560
             return $entity->getUserId();
@@ -552,7 +564,8 @@ class SharedProsperityUserRepository extends BaseRepository
552 564
         $userInfos = $userDao->getUserEntityListByUidList($userIds);
553 565
         $idToName = [];
554 566
         foreach ($userInfos as $userInfo) {
555
-            $idToName[$userInfo->getUid()] = $userInfo->getNickname()  . '(' . $userInfo->account .')' ?? ('用户' . $userInfo->getUid());
567
+            $sharedUserInfo = $shareUserDao->getSharedProsperityUserEntityListByUserIdList([$userInfo->getUid()]);
568
+            $idToName[$userInfo->getUid()] = $userInfo->getNickname()  . '(' . $userInfo->account .')(身份:' . $partnerLevel[$sharedUserInfo[0]->getPartnerLevel()] . ')' ?? ('用户' . $userInfo->getUid());
556 569
         }
557 570
         
558 571
         // 构建节点数组

+ 53 - 9
app/common/repositories/user/UserRepository.php

@@ -4924,25 +4924,68 @@ class UserRepository extends BaseRepository
4924 4924
     /**
4925 4925
      * 获取用户层级的树状图
4926 4926
      * @param string $field 关系字段名,如 'spread_uid'
4927
-     * @return array 树状结构,格式:[{name: '张三', parent: null, children: [...]}]
4927
+     * @param int $parentId 父ID,默认为0表示根节点
4928
+     * @return array 树状结构,格式:[{name: '张三', parent: null, parentId: null, children: [...]}]
4928 4929
      */
4929
-    public function getUserForTree($field)
4930
+    public function getUserForTree($field,$parentId = 0)
4930 4931
     {
4931 4932
         // 获取所有用户数据
4932
-        $users = $this->dao->selectWhere(['is_del'=>0], 'uid,' . $field . ',nickname,account');
4933
+        $users = $this->dao->selectWhere(['is_del'=>0], 'uid,' . $field . ',nickname,account,user_group');
4933 4934
         if (empty($users)) {
4934 4935
             return [];
4935 4936
         }
4936 4937
         $users = $users->toArray();
4937
-        
4938
+
4939
+        // 用户身份
4940
+        $userGroup = [
4941
+            1 => '用户',
4942
+            2 => '业务员',
4943
+            3 => '业务经理',
4944
+            4 => '初级合伙人',
4945
+            5 => '中级合伙人',
4946
+            6 => '高级合伙人',
4947
+            7 => '董事',
4948
+        ];
4949
+
4938 4950
         // 创建uid到昵称的映射
4939 4951
         $idToName = [];
4940 4952
         foreach ($users as $user) {
4941
-            $idToName[$user['uid']] = $user['nickname'] . '(' . $user['account'] .')' ?? ('用户' . $user['uid']);
4953
+            $idToName[$user['uid']] = $user['nickname'] . '(' . $user['account'] .')(身份:' . $userGroup[$user['user_group']] . ')' ?? ('用户' . $user['uid']);
4942 4954
         }
4943 4955
         
4944 4956
         // 构建树
4945
-        $tree = $this->buildTree($users, 0, $field, $idToName);
4957
+        $tree = $this->buildTree($users, $parentId, $field, $idToName, $userGroup);
4958
+
4959
+        // 如果parentId大于0,需要返回以该用户为根节点的树
4960
+        if ($parentId > 0) {
4961
+            // 查找parentId对应的用户
4962
+            $parentUser = null;
4963
+            foreach ($users as $user) {
4964
+                if ($user['uid'] == $parentId) {
4965
+                    $parentUser = $user;
4966
+                    break;
4967
+                }
4968
+            }
4969
+            
4970
+            if ($parentUser) {
4971
+                // 获取该用户的父节点信息
4972
+                $userParentId = $parentUser[$field] ?? 0;
4973
+                $userParentName = $userParentId > 0 ? ($idToName[$userParentId] ?? null) : null;
4974
+                
4975
+                // 构建以该用户为根节点的树
4976
+                $parentNode = [
4977
+                    'name' => $parentUser['nickname']. '(' .')(身份:' . $userGroup[$user['user_group']] . ')' ?? ('用户' . $parentUser['uid']),
4978
+                    'parent' => $userParentName,
4979
+                    'parentId' => $userParentId > 0 ? $userParentId : null,
4980
+                    'children' => $tree // 子节点就是之前构建的树
4981
+                ];
4982
+                return [$parentNode];
4983
+            } else {
4984
+                // 如果找不到对应的用户,返回空数组
4985
+                return [];
4986
+            }
4987
+        }
4988
+        
4946 4989
         return $tree;
4947 4990
     }
4948 4991
     
@@ -4954,15 +4997,16 @@ class UserRepository extends BaseRepository
4954 4997
      * @param array $idToName uid到昵称的映射
4955 4998
      * @return array
4956 4999
      */
4957
-    private function buildTree($users, $parentId, $field, $idToName)
5000
+    private function buildTree($users, $parentId, $field, $idToName,$userGroup)
4958 5001
     {
4959 5002
         $branch = [];
4960 5003
         foreach ($users as $user) {
4961 5004
             if ($user[$field] == $parentId) {
4962
-                $children = $this->buildTree($users, $user['uid'], $field, $idToName);
5005
+                $children = $this->buildTree($users, $user['uid'], $field, $idToName,$userGroup);
4963 5006
                 $node = [
4964
-                    'name' => $user['nickname']. '(' . $user['account'] .')' ?? ('用户' . $user['uid']),
5007
+                    'name' => $user['nickname']. '(' . $user['account'] .')(身份:' . $userGroup[$user['user_group']] . ')' ?? ('用户' . $user['uid']),
4965 5008
                     'parent' => $parentId == 0 ? null : ($idToName[$parentId] ?? null),
5009
+                    'parentId' => $parentId == 0 ? null : $parentId,
4966 5010
                     'children' => $children
4967 5011
                 ];
4968 5012
                 $branch[] = $node;

+ 1 - 1
app/controller/api/Test.php

@@ -16,7 +16,7 @@ class Test
16 16
         // $field = request()->param('field');
17 17
         // /** @var UserRepository $userRepository */
18 18
         // $userRepository = app()->make(UserRepository::class);
19
-        // $list = $userRepository->getUserForTree($field);
19
+        // $list = $userRepository->getUserForTree($field,43);
20 20
         // var_dump(json_encode($list));
21 21
         // return app('json')->success($list);
22 22
     }