|
|
@@ -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;
|