|
|
@@ -4920,4 +4920,54 @@ class UserRepository extends BaseRepository
|
|
4920
|
4920
|
{
|
|
4921
|
4921
|
return $this->dao->saveAll($dataList);
|
|
4922
|
4922
|
}
|
|
|
4923
|
+
|
|
|
4924
|
+ /**
|
|
|
4925
|
+ * 获取用户层级的树状图
|
|
|
4926
|
+ * @param string $field 关系字段名,如 'spread_uid'
|
|
|
4927
|
+ * @return array 树状结构,格式:[{name: '张三', parent: null, children: [...]}]
|
|
|
4928
|
+ */
|
|
|
4929
|
+ public function getUserForTree($field)
|
|
|
4930
|
+ {
|
|
|
4931
|
+ // 获取所有用户数据
|
|
|
4932
|
+ $users = $this->dao->selectWhere([], 'uid,' . $field . ',nickname,account');
|
|
|
4933
|
+ if (empty($users)) {
|
|
|
4934
|
+ return [];
|
|
|
4935
|
+ }
|
|
|
4936
|
+ $users = $users->toArray();
|
|
|
4937
|
+
|
|
|
4938
|
+ // 创建uid到昵称的映射
|
|
|
4939
|
+ $idToName = [];
|
|
|
4940
|
+ foreach ($users as $user) {
|
|
|
4941
|
+ $idToName[$user['uid']] = $user['nickname'] . '(' . $user['account'] .')' ?? ('用户' . $user['uid']);
|
|
|
4942
|
+ }
|
|
|
4943
|
+
|
|
|
4944
|
+ // 构建树
|
|
|
4945
|
+ $tree = $this->buildTree($users, 0, $field, $idToName);
|
|
|
4946
|
+ return $tree;
|
|
|
4947
|
+ }
|
|
|
4948
|
+
|
|
|
4949
|
+ /**
|
|
|
4950
|
+ * 递归构建树
|
|
|
4951
|
+ * @param array $users 所有用户数组
|
|
|
4952
|
+ * @param int $parentId 父ID
|
|
|
4953
|
+ * @param string $field 关系字段名
|
|
|
4954
|
+ * @param array $idToName uid到昵称的映射
|
|
|
4955
|
+ * @return array
|
|
|
4956
|
+ */
|
|
|
4957
|
+ private function buildTree($users, $parentId, $field, $idToName)
|
|
|
4958
|
+ {
|
|
|
4959
|
+ $branch = [];
|
|
|
4960
|
+ foreach ($users as $user) {
|
|
|
4961
|
+ if ($user[$field] == $parentId) {
|
|
|
4962
|
+ $children = $this->buildTree($users, $user['uid'], $field, $idToName);
|
|
|
4963
|
+ $node = [
|
|
|
4964
|
+ 'name' => $user['nickname']. '(' . $user['account'] .')' ?? ('用户' . $user['uid']),
|
|
|
4965
|
+ 'parent' => $parentId == 0 ? null : ($idToName[$parentId] ?? null),
|
|
|
4966
|
+ 'children' => $children
|
|
|
4967
|
+ ];
|
|
|
4968
|
+ $branch[] = $node;
|
|
|
4969
|
+ }
|
|
|
4970
|
+ }
|
|
|
4971
|
+ return $branch;
|
|
|
4972
|
+ }
|
|
4923
|
4973
|
}
|