From 17383694af1af8f39b30cfc3863c541d99a31df5 Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期二, 18 八月 2026 11:46:31 +0800
Subject: [PATCH] feat0806: 下拉树报错

---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java |  143 ++++++++++++++++++++++++++++++++++++++++++-----
 1 files changed, 127 insertions(+), 16 deletions(-)

diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java
index 948e286..1160cb5 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/agent/service/ProvincialAgentAppService.java
@@ -13,32 +13,143 @@
 import com.tcm.training.admin.common.PageResponse;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
+
 import java.util.ArrayList;
 import java.util.List;
 
 @Service
 public class ProvincialAgentAppService {
-    private final ProvincialAgentMapper agentMapper; private final AgentRegionMapper regionMapper;
-    public ProvincialAgentAppService(ProvincialAgentMapper agentMapper, AgentRegionMapper regionMapper) { this.agentMapper = agentMapper; this.regionMapper = regionMapper; }
+    private final ProvincialAgentMapper agentMapper;
+    private final AgentRegionMapper regionMapper;
+
+    public ProvincialAgentAppService(ProvincialAgentMapper agentMapper, AgentRegionMapper regionMapper) {
+        this.agentMapper = agentMapper;
+        this.regionMapper = regionMapper;
+    }
+
     public PageResponse<ProvincialAgentListItemVO> page(int page, int pageSize, String agentName, String province) {
         LambdaQueryWrapper<ProvincialAgent> q = new LambdaQueryWrapper<ProvincialAgent>().eq(ProvincialAgent::getDeleted, 0)
-            .like(agentName != null && !agentName.trim().isEmpty(), ProvincialAgent::getAgentName, trim(agentName))
-            .like(province != null && !province.trim().isEmpty(), ProvincialAgent::getProvince, trim(province))
-            .orderByDesc(ProvincialAgent::getCreatedAt).orderByDesc(ProvincialAgent::getId);
+                .like(agentName != null && !agentName.trim().isEmpty(), ProvincialAgent::getAgentName, trim(agentName))
+                .like(province != null && !province.trim().isEmpty(), ProvincialAgent::getProvince, trim(province))
+                .orderByDesc(ProvincialAgent::getCreatedAt).orderByDesc(ProvincialAgent::getId);
         IPage<ProvincialAgent> result = agentMapper.selectPage(new Page<ProvincialAgent>(page, pageSize), q);
         List<ProvincialAgentListItemVO> list = new ArrayList<ProvincialAgentListItemVO>();
         for (ProvincialAgent item : result.getRecords()) list.add(toList(item));
         return PageResponse.of(list, result.getTotal(), result.getCurrent(), result.getSize());
     }
-    public ProvincialAgentDetailVO detail(Long id) { return toDetail(require(id)); }
-    @Transactional public ProvincialAgentDetailVO create(ProvincialAgentSaveRequest request) { ProvincialAgent a = new ProvincialAgent(); fill(a, request); a.setDeleted(0); agentMapper.insert(a); saveRegions(a, request); return detail(a.getId()); }
-    @Transactional public ProvincialAgentDetailVO update(Long id, ProvincialAgentSaveRequest request) { ProvincialAgent a = require(id); fill(a, request); agentMapper.updateById(a); regionMapper.delete(new LambdaQueryWrapper<AgentRegion>().eq(AgentRegion::getAgentId, id)); saveRegions(a, request); return detail(id); }
-    @Transactional public void delete(Long id) { require(id); agentMapper.deleteById(id); }
-    private void fill(ProvincialAgent a, ProvincialAgentSaveRequest r) { a.setAgentName(trim(r.getAgentName())); a.setProvince(trim(r.getProvince())); a.setBankName(trim(r.getBankName())); a.setAccountNumber(trim(r.getAccountNumber())); a.setAccountHolder(trim(r.getAccountHolder())); a.setBranchName(trim(r.getBranchName())); a.setContactInfo(trim(r.getContactInfo())); a.setAddress(trim(r.getAddress())); }
-    private void saveRegions(ProvincialAgent a, ProvincialAgentSaveRequest r) { if (r.getRegions() == null) return; for (ProvincialAgentSaveRequest.RegionItem x : r.getRegions()) { if (x == null || trim(x.getRegionCode()) == null) continue; AgentRegion ar = new AgentRegion(); ar.setAgentId(a.getId()); ar.setAgentName(a.getAgentName()); ar.setRegionCode(trim(x.getRegionCode())); ar.setRegionName(trim(x.getRegionName())); ar.setRegionLevel(x.getRegionLevel()); regionMapper.insert(ar); } }
-    private ProvincialAgent require(Long id) { ProvincialAgent a = agentMapper.selectOne(new LambdaQueryWrapper<ProvincialAgent>().eq(ProvincialAgent::getId,id).eq(ProvincialAgent::getDeleted,0).last("limit 1")); if (a == null) throw new IllegalArgumentException("省代理不存在"); return a; }
-    private ProvincialAgentListItemVO toList(ProvincialAgent a) { ProvincialAgentListItemVO v = new ProvincialAgentListItemVO(); v.setId(a.getId()); v.setAgentName(a.getAgentName()); v.setProvince(a.getProvince()); v.setContactInfo(a.getContactInfo()); v.setAddress(a.getAddress()); List<AgentRegion> rs = regions(a.getId()); v.setRegionCount(rs.size()); List<String> names = new ArrayList<String>(); for (AgentRegion r:rs) names.add(r.getRegionName() == null ? r.getRegionCode() : r.getRegionName()); v.setRegionNames(names); v.setCreatedAt(a.getCreatedAt()); return v; }
-    private ProvincialAgentDetailVO toDetail(ProvincialAgent a) { ProvincialAgentDetailVO v = new ProvincialAgentDetailVO(); ProvincialAgentListItemVO base=toList(a); v.setId(base.getId()); v.setAgentName(base.getAgentName()); v.setProvince(base.getProvince()); v.setContactInfo(base.getContactInfo()); v.setAddress(base.getAddress()); v.setRegionCount(base.getRegionCount()); v.setRegionNames(base.getRegionNames()); v.setCreatedAt(base.getCreatedAt()); v.setBankName(a.getBankName()); v.setAccountNumber(a.getAccountNumber()); v.setAccountHolder(a.getAccountHolder()); v.setBranchName(a.getBranchName()); v.setUpdatedAt(a.getUpdatedAt()); List<ProvincialAgentDetailVO.RegionVO> out=new ArrayList<ProvincialAgentDetailVO.RegionVO>(); for(AgentRegion r:regions(a.getId())) { ProvincialAgentDetailVO.RegionVO x=new ProvincialAgentDetailVO.RegionVO(); x.setRegionCode(r.getRegionCode()); x.setRegionName(r.getRegionName()); x.setRegionLevel(r.getRegionLevel()); out.add(x); } v.setRegions(out); return v; }
-    private List<AgentRegion> regions(Long id) { return regionMapper.selectList(new LambdaQueryWrapper<AgentRegion>().eq(AgentRegion::getAgentId,id).orderByAsc(AgentRegion::getId)); }
-    private String trim(String s) { if(s==null)return null; String x=s.trim(); return x.isEmpty()?null:x; }
+
+    public ProvincialAgentDetailVO detail(Long id) {
+        return toDetail(require(id));
+    }
+
+    @Transactional
+    public ProvincialAgentDetailVO create(ProvincialAgentSaveRequest request) {
+        ProvincialAgent a = new ProvincialAgent();
+        fill(a, request);
+        a.setDeleted(0);
+        agentMapper.insert(a);
+        saveRegions(a, request);
+        return detail(a.getId());
+    }
+
+    @Transactional
+    public ProvincialAgentDetailVO update(Long id, ProvincialAgentSaveRequest request) {
+        ProvincialAgent a = require(id);
+        fill(a, request);
+        agentMapper.updateById(a);
+        regionMapper.delete(new LambdaQueryWrapper<AgentRegion>().eq(AgentRegion::getAgentId, id));
+        saveRegions(a, request);
+        return detail(id);
+    }
+
+    @Transactional
+    public void delete(Long id) {
+        require(id);
+        agentMapper.deleteById(id);
+    }
+
+    private void fill(ProvincialAgent a, ProvincialAgentSaveRequest r) {
+        a.setAgentName(trim(r.getAgentName()));
+        a.setProvince(trim(r.getProvince()));
+        a.setBankName(trim(r.getBankName()));
+        a.setAccountNumber(trim(r.getAccountNumber()));
+        a.setAccountHolder(trim(r.getAccountHolder()));
+        a.setBranchName(trim(r.getBranchName()));
+        a.setContactInfo(trim(r.getContactInfo()));
+        a.setAddress(trim(r.getAddress()));
+    }
+
+    private void saveRegions(ProvincialAgent a, ProvincialAgentSaveRequest r) {
+        if (r.getRegions() == null) return;
+        for (ProvincialAgentSaveRequest.RegionItem x : r.getRegions()) {
+            if (x == null || trim(x.getRegionCode()) == null) continue;
+            AgentRegion ar = new AgentRegion();
+            ar.setAgentId(a.getId());
+            ar.setAgentName(a.getAgentName());
+            ar.setRegionCode(trim(x.getRegionCode()));
+            ar.setRegionName(trim(x.getRegionName()));
+            ar.setRegionLevel(x.getRegionLevel());
+            regionMapper.insert(ar);
+        }
+    }
+
+    private ProvincialAgent require(Long id) {
+        ProvincialAgent a = agentMapper.selectOne(new LambdaQueryWrapper<ProvincialAgent>().eq(ProvincialAgent::getId, id).eq(ProvincialAgent::getDeleted, 0).last("limit 1"));
+        if (a == null) throw new IllegalArgumentException("省代理不存在");
+        return a;
+    }
+
+    private ProvincialAgentListItemVO toList(ProvincialAgent a) {
+        ProvincialAgentListItemVO v = new ProvincialAgentListItemVO();
+        v.setId(a.getId());
+        v.setAgentName(a.getAgentName());
+        v.setProvince(a.getProvince());
+        v.setContactInfo(a.getContactInfo());
+        v.setAddress(a.getAddress());
+        List<AgentRegion> rs = regions(a.getId());
+        v.setRegionCount(rs.size());
+        List<String> names = new ArrayList<String>();
+        for (AgentRegion r : rs) names.add(r.getRegionName() == null ? r.getRegionCode() : r.getRegionName());
+        v.setRegionNames(names);
+        v.setCreatedAt(a.getCreatedAt());
+        return v;
+    }
+
+    private ProvincialAgentDetailVO toDetail(ProvincialAgent a) {
+        ProvincialAgentDetailVO v = new ProvincialAgentDetailVO();
+        ProvincialAgentListItemVO base = toList(a);
+        v.setId(base.getId());
+        v.setAgentName(base.getAgentName());
+        v.setProvince(base.getProvince());
+        v.setContactInfo(base.getContactInfo());
+        v.setAddress(base.getAddress());
+        v.setRegionCount(base.getRegionCount());
+        v.setRegionNames(base.getRegionNames());
+        v.setCreatedAt(base.getCreatedAt());
+        v.setBankName(a.getBankName());
+        v.setAccountNumber(a.getAccountNumber());
+        v.setAccountHolder(a.getAccountHolder());
+        v.setBranchName(a.getBranchName());
+        v.setUpdatedAt(a.getUpdatedAt());
+        List<ProvincialAgentDetailVO.RegionVO> out = new ArrayList<ProvincialAgentDetailVO.RegionVO>();
+        for (AgentRegion r : regions(a.getId())) {
+            ProvincialAgentDetailVO.RegionVO x = new ProvincialAgentDetailVO.RegionVO();
+            x.setRegionCode(r.getRegionCode());
+            x.setRegionName(r.getRegionName());
+            x.setRegionLevel(r.getRegionLevel());
+            out.add(x);
+        }
+        v.setRegions(out);
+        return v;
+    }
+
+    private List<AgentRegion> regions(Long id) {
+        return regionMapper.selectList(new LambdaQueryWrapper<AgentRegion>().eq(AgentRegion::getAgentId, id).orderByAsc(AgentRegion::getId));
+    }
+
+    private String trim(String s) {
+        if (s == null) return null;
+        String x = s.trim();
+        return x.isEmpty() ? null : x;
+    }
 }

--
Gitblit v1.7.1