Bladeren bron

✨ feat(contracts-renew): 支持合同续期查询中的客户信息关联查询

- 在合同续期接口中添加contract.client关联关系,实现客户信息的嵌套查询
- 优化通用CRUD服务,支持嵌套关联关系(如['contract', 'contract.client'])的查询处理
- 重构关联查询逻辑,通过拆分关系路径实现多层级关联数据的正确加载
yourname 8 maanden geleden
bovenliggende
commit
8f55abdc40
2 gewijzigde bestanden met toevoegingen van 10 en 3 verwijderingen
  1. 1 1
      src/server/api/contracts-renew/index.ts
  2. 9 2
      src/server/utils/generic-crud.service.ts

+ 1 - 1
src/server/api/contracts-renew/index.ts

@@ -10,7 +10,7 @@ const hetongRenewRoutes = createCrudRoutes({
   getSchema: HetongRenewSchema,
   listSchema: HetongRenewSchema,
   searchFields: ['contractId', 'state', 'auditStatus'],
-  relations: ['contract'],
+  relations: ['contract', 'contract.client'],
   middleware: [authMiddleware]
 });
 

+ 9 - 2
src/server/utils/generic-crud.service.ts

@@ -26,10 +26,17 @@ export abstract class GenericCrudService<T extends ObjectLiteral> {
     const skip = (page - 1) * pageSize;
     const query = this.repository.createQueryBuilder('entity');
 
-    // 添加关联关系
+    // 添加关联关系(支持嵌套关联,如 ['contract', 'contract.client'])
     if (relations.length > 0) {
       relations.forEach(relation => {
-        query.leftJoinAndSelect(`entity.${relation}`, relation);
+        const parts = relation.split('.');
+        let currentAlias = 'entity';
+        
+        parts.forEach((part, index) => {
+          const newAlias = index === 0 ? part : `${currentAlias}_${part}`;
+          query.leftJoinAndSelect(`${currentAlias}.${part}`, newAlias);
+          currentAlias = newAlias;
+        });
       });
     }