From 9dd1fb1e4c15d6182ac91ca2ce1632587c941139 Mon Sep 17 00:00:00 2001 From: zhangyue Date: Fri, 17 Apr 2026 15:56:41 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BC=81=E4=B8=9A=E5=8F=8A?= =?UTF-8?q?=E5=85=B6=E4=B8=8B=E7=BA=A7=E6=95=B0=E6=8D=AE=E5=88=A0=E9=99=A4?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../basic/info/web/CorpInfoController.java | 9 +++ .../basic/info/command/CorpInfoRemoveExe.java | 73 +++++++++++++++++++ .../info/command/query/CorpInfoQueryExe.java | 8 +- .../info/service/CorpInfoServiceImpl.java | 5 ++ .../basic/info/api/CorpInfoServiceI.java | 2 + .../persistence/dataobject/CorpInfoDO.java | 2 + .../repository/CorpInfoRepository.java | 2 + .../repository/DepartmentRepository.java | 2 + .../repository/PostRepository.java | 2 + .../repository/UserRepository.java | 3 + .../impl/CorpInfoRepositoryImpl.java | 8 ++ .../impl/DepartmentRepositoryImpl.java | 9 +++ .../repository/impl/PostRepositoryImpl.java | 9 +++ .../repository/impl/UserRepositoryImpl.java | 9 +++ 14 files changed, 137 insertions(+), 6 deletions(-) diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java index c1fb4d6f..bf76dc9d 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/CorpInfoController.java @@ -18,6 +18,8 @@ import org.springframework.security.access.prepost.PreAuthorize; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; +import java.util.List; + /** * web-adapter * @@ -37,6 +39,13 @@ public class CorpInfoController { return corpInfoService.add(cmd); } + + @ApiOperation("新增") + @GetMapping("/deleteCorpAndDown/{ids}") + public void deleteCorpAndDown(@PathVariable("ids") List ids) { + corpInfoService.deleteCorpAndDown(ids); + } + @ApiOperation("判断统一社会信用代码是否重复, true:没重复, false:有重复") @PostMapping("/checkCorpCode") public SingleResponse checkCorpCode(@Validated @RequestBody CorpInfoCheckCodeQry qry) { diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoRemoveExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoRemoveExe.java index f0cbb608..14b2f0b3 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoRemoveExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoRemoveExe.java @@ -1,14 +1,29 @@ package com.zcloud.basic.info.command; +import com.alibaba.cola.dto.Response; import com.alibaba.cola.exception.BizException; +import com.jjb.saas.system.client.unit.facade.UnitFacade; +import com.jjb.saas.system.client.user.facade.UserFacade; +import com.jjb.saas.system.client.user.request.UserUpdateQuitCmd; import com.zcloud.basic.info.domain.gateway.CorpInfoGateway; +import com.zcloud.basic.info.persistence.dataobject.CorpInfoDO; +import com.zcloud.basic.info.persistence.dataobject.UserDO; +import com.zcloud.basic.info.persistence.repository.CorpInfoRepository; +import com.zcloud.basic.info.persistence.repository.DepartmentRepository; +import com.zcloud.basic.info.persistence.repository.PostRepository; +import com.zcloud.basic.info.persistence.repository.UserRepository; import com.zcloud.gbscommon.utils.Const; import com.zcloud.gbscommon.utils.ZcloudRedisUtil; import lombok.AllArgsConstructor; +import lombok.extern.slf4j.Slf4j; +import org.apache.dubbo.config.annotation.DubboReference; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.security.core.parameters.P; import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; +import java.util.List; + /** * web-app @@ -18,8 +33,17 @@ import org.springframework.transaction.annotation.Transactional; */ @Component @AllArgsConstructor +@Slf4j public class CorpInfoRemoveExe { private final CorpInfoGateway corpInfoGateway; + private final UserRepository userRepository; + private final PostRepository postRepository; + private final DepartmentRepository departmentRepository; + private final CorpInfoRepository corpInfoRepository; + @DubboReference + private UserFacade userFacade; + @DubboReference + private UnitFacade unitFacade; // @Autowired // private ZcloudRedisUtil zcloudRedisUtil; @@ -45,5 +69,54 @@ public class CorpInfoRemoveExe { // } return true; } + + @Transactional(rollbackFor = Exception.class) + public void deleteCorpAndDown(List ids) { + List corpList = corpInfoRepository.listByIds(ids); + if (corpList != null && !corpList.isEmpty()){ + for (CorpInfoDO corp : corpList){ + log.info("开始清理企业数据:"+corp.getCorpName()+"____"+corp.getId()+"------------------"); + List userList = userRepository.listByCorpInfoId(corp.getId()); + + try { + // 1. 先调用远程服务删除底座数据,确保底座数据删除成功 + log.info("底座---开始删除租户数据----------------------------------------"); + unitFacade.delete(corp.getId()); + log.info("底座---删除租户数据完成----------------------------------------"); + + log.info("开始清理用户数据数据----------------------------------------"); + for (UserDO user : userList){ + log.info("底座---开始清理用户数据:"+user.getName()+"____"+user.getId()); + +// Response quit = userFacade.quit(quitCmd); + if (!user.getId().equals(user.getCorpinfoId())){ + + log.info(user.getId()+"-------"+ corp.getId()); + if (corp.getBroadType() == 2){ // 企业 + userFacade.delete(user.getId()); + } else if (corp.getBroadType() == 3){ // 相关方 + UserUpdateQuitCmd quitCmd = new UserUpdateQuitCmd(); + quitCmd.setId(user.getId()); + userFacade.quit(quitCmd); + } + } + log.info("底座---清理用户数据完成:"+user.getName()+"____"+user.getId()); + } + log.info("清理用户数据完成----------------------------------------"); + + // 2. 远程服务删除成功后,再执行本地软删除 + userRepository.deleteByCorpInfoId(corp.getId()); + postRepository.deleteByCorpInfoId(corp.getId()); + departmentRepository.deleteByCorpInfoId(corp.getId()); + corpInfoRepository.deleteById(corp.getId()); + log.info("清理企业数据完成:"+corp.getCorpName()+"____"+corp.getId()+"------------------"); + } catch (Exception e) { + log.error("清理企业{}数据异常:", corp.getCorpName(), e); + // 抛出异常,触发事务回滚 + throw new BizException("清理企业" + corp.getCorpName() + "数据异常:" + e.getMessage()); + } + } + } + } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java index d93d7ea0..3b1b6793 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/query/CorpInfoQueryExe.java @@ -299,16 +299,12 @@ public class CorpInfoQueryExe { if (!enterpriseType.contains(corpInfoDO.getType())) { return true; } - //corpName,省份编码,单位经营地址,企业规模,法定代表人姓名,主要负责人电话,成立日期,职工人数,资产总额,营业执照开始时间,只要有一个不为空 + //corpName,单位经营地址,法定代表人姓名,主要负责人电话,职工人数,只要有一个不为空 if (StringUtils.isEmpty(corpInfoDO.getCorpName()) - || StringUtils.isEmpty(corpInfoDO.getProvince()) || StringUtils.isEmpty(corpInfoDO.getAddressBusiness()) || StringUtils.isEmpty(corpInfoDO.getLrName()) || StringUtils.isEmpty(corpInfoDO.getContactsPhone()) - || corpInfoDO.getCreateDate() == null - || corpInfoDO.getEmployees()==null - || corpInfoDO.getTotalAssets()==null - || corpInfoDO.getLicenseStart()==null) { + || corpInfoDO.getEmployees()==null) { return false; } return true; diff --git a/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java b/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java index 4b4b5453..118bf5d2 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/basic/info/service/CorpInfoServiceImpl.java @@ -99,6 +99,11 @@ public class CorpInfoServiceImpl implements CorpInfoServiceI { return corpInfoQueryExe.CorpInfoEncryCO(userCheckPassWordCmd); } + @Override + public void deleteCorpAndDown(List ids) { + corpInfoRemoveExe.deleteCorpAndDown(ids); + } + @Override public PageResponse corpDepartlist(CorpDepartmentQry qry) { return corpInfoQueryExe.corpDepartlist(qry); diff --git a/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java b/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java index 7e224654..49e91882 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java +++ b/web-client/src/main/java/com/zcloud/basic/info/api/CorpInfoServiceI.java @@ -53,5 +53,7 @@ public interface CorpInfoServiceI { Boolean verifyCorpInfo(); DecryptCmd getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd); + + void deleteCorpAndDown(List ids); } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpInfoDO.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpInfoDO.java index fc3569d1..02b8c9dd 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpInfoDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/CorpInfoDO.java @@ -56,6 +56,8 @@ public class CorpInfoDO extends BaseDO { @ApiModelProperty(value = "所属区域") private String companyArea; + @ApiModelProperty(value = "企业类型 1:监管 2:企业 3:相关方") + private Integer broadType; //规模 @ApiModelProperty(value = "规模") private String scale; diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java index 6f78aa11..8c44998a 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/CorpInfoRepository.java @@ -42,5 +42,7 @@ public interface CorpInfoRepository extends BaseRepository { List getByIdList(List corpinfoIds); Boolean isSupper(); + + void deleteById(Long id); } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/DepartmentRepository.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/DepartmentRepository.java index e9a9516f..bb3da4b4 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/DepartmentRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/DepartmentRepository.java @@ -39,5 +39,7 @@ public interface DepartmentRepository extends BaseRepository { boolean existsByName(@NotNull(message = "父级id") Long parentId, @NotEmpty(message = "名称不能为空") String name, Long id); List listAllTreeByCorpType(Map parmas); + + void deleteByCorpInfoId(Long corpInfoId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/PostRepository.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/PostRepository.java index d319edd3..18eca246 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/PostRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/PostRepository.java @@ -28,5 +28,7 @@ public interface PostRepository extends BaseRepository { List listByCorpInfoId(Long corpInfoId); Boolean checkPostDepartment(Long id); + + void deleteByCorpInfoId(Long corpInfoId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java index 54e9f631..2075d01c 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/UserRepository.java @@ -100,5 +100,8 @@ public interface UserRepository extends BaseRepository { PageResponse pageByNopermission(Map params); void updateFaceByPhone(@NotEmpty(message = "人脸头像url不能为空") String userAvatarUrl, String phone); + + + void deleteByCorpInfoId(Long corpInfoId); } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java index e319e0c2..edf896e2 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/CorpInfoRepositoryImpl.java @@ -308,5 +308,13 @@ public class CorpInfoRepositoryImpl extends BaseRepositoryImpl(); + updateWrapper.eq("id", id); + updateWrapper.set("delete_enum", "TRUE"); + update(updateWrapper); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/DepartmentRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/DepartmentRepositoryImpl.java index 5ca0b088..917e6638 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/DepartmentRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/DepartmentRepositoryImpl.java @@ -3,6 +3,7 @@ package com.zcloud.basic.info.persistence.repository.impl; import cn.hutool.core.collection.CollUtil; import com.alibaba.cola.dto.PageResponse; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.ObjectUtils; import com.baomidou.mybatisplus.core.toolkit.Wrappers; @@ -145,6 +146,14 @@ public class DepartmentRepositoryImpl extends BaseRepositoryImpl 0; + + } + @Override + public void deleteByCorpInfoId(Long corpInfoId) { + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("corpinfo_id", corpInfoId); + updateWrapper.set("delete_enum", "TRUE"); + update(updateWrapper); } } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/PostRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/PostRepositoryImpl.java index 11e50bda..e683141c 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/PostRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/PostRepositoryImpl.java @@ -1,6 +1,7 @@ package com.zcloud.basic.info.persistence.repository.impl; import com.alibaba.cola.dto.MultiResponse; +import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.repository.common.PageHelper; @@ -111,5 +112,13 @@ public class PostRepositoryImpl extends BaseRepositoryImpl i queryWrapper.eq("delete_enum", "FALSE"); return postMapper.selectCount(queryWrapper) > 0; } + + @Override + public void deleteByCorpInfoId(Long corpInfoId) { + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("corpinfo_id", corpInfoId); + updateWrapper.set("delete_enum", "TRUE"); + update(updateWrapper); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java index c5b799a6..b552ca0b 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/repository/impl/UserRepositoryImpl.java @@ -318,6 +318,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i UserAddCmd userAddCmd = new UserAddCmd(); userAddCmd.setAccount(userDO.getUsername()); userAddCmd.setName(userDO.getName()); + userAddCmd.setPassword(userDO.getPassword()); RoleDeptAddCmd roleDeptAddCmd = new RoleDeptAddCmd(); roleDeptAddCmd.setRoleId(userDO.getRoleId()); roleDeptAddCmd.setDeptId(userDO.getDepartmentId()); @@ -707,5 +708,13 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i userMapper.updateFaceByPhone(userAvatarUrl, phone); } + + @Override + public void deleteByCorpInfoId(Long corpInfoId) { + UpdateWrapper updateWrapper = new UpdateWrapper(); + updateWrapper.eq("corpinfo_id", corpInfoId); + updateWrapper.set("delete_enum", "TRUE"); + update(updateWrapper); + } }