Преглед изворни кода

♻️ refactor(areas): optimize area tree construction logic

- 移除relations中的children关联,改为手动构建树形结构
- 创建映射时初始化children数组,避免潜在的undefined问题
- 使用新创建的node对象构建树形结构,防止原数据对象污染
- 改进代码注释,提高逻辑可读性
yourname пре 4 месеци
родитељ
комит
11126a4a39
1 измењених фајлова са 8 додато и 6 уклоњено
  1. 8 6
      src/server/modules/areas/area.service.ts

+ 8 - 6
src/server/modules/areas/area.service.ts

@@ -11,7 +11,6 @@ export class AreaService {
   async getAreaTree(): Promise<AreaEntity[]> {
     const areas = await this.areaRepository.find({
       where: { isDeleted: 0 },
-      relations: ['children'],
       order: {
         level: 'ASC',
         name: 'ASC'
@@ -88,19 +87,22 @@ export class AreaService {
     const areaMap = new Map<number, AreaEntity>();
     const tree: AreaEntity[] = [];
 
-    // 创建映射
+    // 创建映射并初始化children数组
     areas.forEach(area => {
-      areaMap.set(area.id, area);
+      const node = new AreaEntity({ ...area });
+      node.children = [];
+      areaMap.set(area.id, node);
     });
 
-    // 构建树
+    // 构建树形结构
     areas.forEach(area => {
+      const node = areaMap.get(area.id)!;
       if (area.parentId === null || area.parentId === 0) {
-        tree.push(area);
+        tree.push(node);
       } else {
         const parent = areaMap.get(area.parentId);
         if (parent && parent.children) {
-          parent.children.push(area);
+          parent.children.push(node);
         }
       }
     });