From d82b054c20afb028eb56c102f3ad15d550c7e271 Mon Sep 17 00:00:00 2001
From: hejianhao <15708179461@qq.com>
Date: 星期二, 18 八月 2026 18:40:03 +0800
Subject: [PATCH] feat0806: 编辑诊所后台接口支持

---
 tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/ClinicAppService.java |   57 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
 1 files changed, 56 insertions(+), 1 deletions(-)

diff --git a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/ClinicAppService.java b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/ClinicAppService.java
index 7b461ce..d3add80 100644
--- a/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/ClinicAppService.java
+++ b/tcm-training-admin-backend/src/main/java/com/tcm/training/admin/member/service/ClinicAppService.java
@@ -4,17 +4,22 @@
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.tcm.training.admin.agent.entity.AgentRegion;
 import com.tcm.training.admin.agent.entity.ProvincialAgent;
 import com.tcm.training.admin.agent.excel.ClinicAgentImportRow;
 import com.tcm.training.admin.agent.mapper.ProvincialAgentMapper;
+import com.tcm.training.admin.app.register.entity.SysRegion;
+import com.tcm.training.admin.app.register.mapper.SysRegionMapper;
 import com.tcm.training.admin.common.DateTimes;
 import com.tcm.training.admin.common.PageResponse;
 import com.tcm.training.admin.common.PhoneMasker;
 import com.tcm.training.admin.live.entity.Clinic;
 import com.tcm.training.admin.live.mapper.ClinicMapper;
 import com.tcm.training.admin.member.dto.ClinicBankAccountUpdateRequest;
+import com.tcm.training.admin.member.entity.AppUser;
 import com.tcm.training.admin.member.excel.ClinicExcelRow;
 import com.tcm.training.admin.member.mapper.ClinicQueryMapper;
+import com.tcm.training.admin.member.mapper.UserMapper;
 import com.tcm.training.admin.member.row.ClinicBoundUserRow;
 import com.tcm.training.admin.member.row.ClinicDetailRow;
 import com.tcm.training.admin.member.row.ClinicListRow;
@@ -39,11 +44,15 @@
     private final ClinicQueryMapper clinicQueryMapper;
     private final ClinicMapper clinicMapper;
     private final ProvincialAgentMapper provincialAgentMapper;
+    private final UserMapper userMapper;
+    private final SysRegionMapper sysRegionMapper;
 
-    public ClinicAppService(ClinicQueryMapper clinicQueryMapper, ClinicMapper clinicMapper, ProvincialAgentMapper provincialAgentMapper) {
+    public ClinicAppService(ClinicQueryMapper clinicQueryMapper, ClinicMapper clinicMapper, ProvincialAgentMapper provincialAgentMapper, UserMapper userMapper, SysRegionMapper sysRegionMapper) {
         this.clinicQueryMapper = clinicQueryMapper;
         this.clinicMapper = clinicMapper;
         this.provincialAgentMapper = provincialAgentMapper;
+        this.userMapper = userMapper;
+        this.sysRegionMapper = sysRegionMapper;
     }
 
     public PageResponse<ClinicListItemVO> page(int page,
@@ -216,11 +225,44 @@
         return vo;
     }
 
+    @Transactional
     public ClinicDetailVO updateBankAccount(Long id, ClinicBankAccountUpdateRequest request) {
         Clinic clinic = clinicMapper.selectById(id);
         if (clinic == null || (clinic.getDeleted() != null && clinic.getDeleted() == 1)) {
             throw new IllegalArgumentException("诊所不存在");
         }
+        String loginAccount = trimToNull(request.getLoginAccount());
+        AppUser user = userMapper.selectOne(new LambdaQueryWrapper<AppUser>().eq(AppUser::getPhone, loginAccount).eq(AppUser::getDeleted, 0).last("limit 1"));
+        if (user == null) {
+            throw new IllegalArgumentException("登录账号不存在");
+        }
+        user.setAvatar(trimToNull(request.getAvatar()));
+        user.setPhone(loginAccount);
+        userMapper.updateById(user);
+        Set<String> codes = new LinkedHashSet<String>();
+        addCode(codes, request.getProvinceCode());
+        addCode(codes, request.getCityCode());
+        addCode(codes, request.getDistrictCode());
+        Map<String, SysRegion> regions = new HashMap<String, SysRegion>();
+        List<SysRegion> regionList = sysRegionMapper.selectList(new LambdaQueryWrapper<SysRegion>().in(SysRegion::getCode, codes));
+        if (!regionList.isEmpty()) {
+            for (SysRegion region : regionList) {
+                regions.put(region.getCode(), region);
+            }
+        }
+
+        clinic.setName(trimToNull(request.getName()));
+        clinic.setContactPhone(loginAccount);
+        clinic.setProvinceCode(trimToNull(request.getProvinceCode()));
+        clinic.setProvinceName(regionName(request.getProvinceCode(), request.getProvinceName(), regions));
+        clinic.setCityCode(trimToNull(request.getCityCode()));
+        clinic.setCityName(regionName(request.getCityCode(), request.getCityName(), regions));
+        clinic.setDistrictCode(trimToNull(request.getDistrictCode()));
+        clinic.setDistrictName(regionName(request.getDistrictCode(), request.getDistrictName(), regions));
+        clinic.setAddress(trimToNull(request.getAddress()));
+        clinic.setBusinessLicenseUrl(trimToNull(request.getBusinessLicenseUrl()));
+        clinic.setStatus(request.getStatus());
+        clinic.setAgentId(request.getAgentId());
         clinic.setBankName(trimToNull(request.getBankName()));
         clinic.setAccountHolder(trimToNull(request.getAccountHolder()));
         clinic.setAccountNumber(trimToNull(request.getAccountNumber()));
@@ -229,6 +271,19 @@
         return detail(id);
     }
 
+    private void addCode(Set<String> codes, String code) {
+        String value = trimToNull(code);
+        if (value != null) {
+            codes.add(value);
+        }
+    }
+
+    private String regionName(String code, String fallback, Map<String, SysRegion> regions) {
+        String value = trimToNull(code);
+        SysRegion region = value == null ? null : regions.get(value);
+        return region == null ? trimToNull(fallback) : region.getName();
+    }
+
     public PageResponse<ClinicBoundUserItemVO> clinicUsers(Long clinicId,
                                                            int page,
                                                            int pageSize,

--
Gitblit v1.7.1