Kaynağa Gözat

Merge remote-tracking branch 'origin/master'

sunxbiao 5 ay önce
ebeveyn
işleme
6798a2ccfe

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

@@ -528,21 +528,33 @@ class SharedProsperityUserRepository extends BaseRepository
528
      */
528
      */
529
     public function getUserTree($userId)
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
         // 获取所有下级用户ID(包括自己)
534
         // 获取所有下级用户ID(包括自己)
535
-        $subordinateIds = $userDao->getAllSubordinateUserIds($userId, true);
535
+        $subordinateIds = $shareUserDao->getAllSubordinateUserIds($userId, true);
536
         if (empty($subordinateIds)) {
536
         if (empty($subordinateIds)) {
537
             return [];
537
             return [];
538
         }
538
         }
539
         
539
         
540
         // 获取这些共富用户的基本信息(包含parent_id)
540
         // 获取这些共富用户的基本信息(包含parent_id)
541
-        $sharedUsers = $userDao->getSharedProsperityUserEntityListByUserIdList($subordinateIds);
541
+        $sharedUsers = $shareUserDao->getSharedProsperityUserEntityListByUserIdList($subordinateIds);
542
+
542
         if (empty($sharedUsers)) {
543
         if (empty($sharedUsers)) {
543
             return [];
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
         $userIds = array_map(function ($entity) {
559
         $userIds = array_map(function ($entity) {
548
             return $entity->getUserId();
560
             return $entity->getUserId();
@@ -552,7 +564,8 @@ class SharedProsperityUserRepository extends BaseRepository
552
         $userInfos = $userDao->getUserEntityListByUidList($userIds);
564
         $userInfos = $userDao->getUserEntityListByUidList($userIds);
553
         $idToName = [];
565
         $idToName = [];
554
         foreach ($userInfos as $userInfo) {
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
      * @param string $field 关系字段名,如 'spread_uid'
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
         if (empty($users)) {
4934
         if (empty($users)) {
4934
             return [];
4935
             return [];
4935
         }
4936
         }
4936
         $users = $users->toArray();
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
         // 创建uid到昵称的映射
4950
         // 创建uid到昵称的映射
4939
         $idToName = [];
4951
         $idToName = [];
4940
         foreach ($users as $user) {
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
         return $tree;
4989
         return $tree;
4947
     }
4990
     }
4948
     
4991
     
@@ -4954,15 +4997,16 @@ class UserRepository extends BaseRepository
4954
      * @param array $idToName uid到昵称的映射
4997
      * @param array $idToName uid到昵称的映射
4955
      * @return array
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
         $branch = [];
5002
         $branch = [];
4960
         foreach ($users as $user) {
5003
         foreach ($users as $user) {
4961
             if ($user[$field] == $parentId) {
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
                 $node = [
5006
                 $node = [
4964
-                    'name' => $user['nickname']. '(' . $user['account'] .')' ?? ('用户' . $user['uid']),
5007
+                    'name' => $user['nickname']. '(' . $user['account'] .')(身份:' . $userGroup[$user['user_group']] . ')' ?? ('用户' . $user['uid']),
4965
                     'parent' => $parentId == 0 ? null : ($idToName[$parentId] ?? null),
5008
                     'parent' => $parentId == 0 ? null : ($idToName[$parentId] ?? null),
5009
+                    'parentId' => $parentId == 0 ? null : $parentId,
4966
                     'children' => $children
5010
                     'children' => $children
4967
                 ];
5011
                 ];
4968
                 $branch[] = $node;
5012
                 $branch[] = $node;

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

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