From c8f344ebe211a2735a5f2d49822bd94444b1d5c7 Mon Sep 17 00:00:00 2001 From: zhaokai Date: Fri, 28 Nov 2025 14:21:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=A0=B9=E6=8D=AE=E7=99=BB=E5=BD=95=E4=BA=BA?= =?UTF-8?q?=E5=AF=86=E7=A0=81=E8=8E=B7=E5=8F=96=E6=9F=A5=E8=AF=A2=E4=BA=BA?= =?UTF-8?q?=E6=89=8B=E6=9C=BA=E5=8F=B7=E5=92=8C=E8=BA=AB=E4=BB=BD=E8=AF=81?= =?UTF-8?q?=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zcloud/basic/info/web/UserController.java | 6 ++++ .../zcloud/basic/info/command/UserAddExe.java | 1 + .../command/query/DepartmentQueryExe.java | 3 ++ .../info/command/query/UserQueryExe.java | 35 +++++++++++++++++-- .../basic/info/service/UserServiceImpl.java | 4 +++ .../zcloud/basic/info/api/UserServiceI.java | 2 ++ .../basic/info/dto/UserCheckPassWordCmd.java | 32 +++++++++++++++++ .../zcloud/basic/info/domain/model/UserE.java | 6 +++- .../repository/UserRepository.java | 3 ++ .../repository/impl/UserRepositoryImpl.java | 17 +++++++++ 10 files changed, 105 insertions(+), 4 deletions(-) create mode 100644 web-client/src/main/java/com/zcloud/basic/info/dto/UserCheckPassWordCmd.java diff --git a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java index b45c8b6..efb8ecc 100644 --- a/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java +++ b/web-adapter/src/main/java/com/zcloud/basic/info/web/UserController.java @@ -143,5 +143,11 @@ public class UserController { return userService.updatePassword(userUpdatePassWordCmd); } + @ApiOperation("根据登录人密码获取查询人手机号和身份证号") + @PostMapping("/getEncryInfo") + public SingleResponse getEncryInfo(@Validated @RequestBody UserCheckPassWordCmd userCheckPassWordCmd) { + return userService.getEncryInfo(userCheckPassWordCmd); + } + } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java index 66340e3..f2730b4 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserAddExe.java @@ -83,6 +83,7 @@ public class UserAddExe { userE.setRoleId(roleId); } try { + res = userGateway.add(userE); if(corpInfoDO != null && !ObjectUtils.isEmpty(corpInfoDO.getCorpName())){ corpName = corpInfoDO.getCorpName(); diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/query/DepartmentQueryExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/query/DepartmentQueryExe.java index d911e3e..c10b17b 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/query/DepartmentQueryExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/query/DepartmentQueryExe.java @@ -53,6 +53,9 @@ public class DepartmentQueryExe { if (departmentPageQry.getEqCorpinfoId() == null) { departmentPageQry.setEqCorpinfoId(AuthContext.getTenantId()); } + if(departmentPageQry.getEqParentId() == null){ + departmentPageQry.setEqParentId(AuthContext.getTenantId()); + } Map parmas = PageQueryHelper.toHashMap(departmentPageQry); PageResponse pageResponse = departmentRepository.listPage(parmas); List examCenterCOS = departmentCoConvertor.converDOsToCOs(pageResponse.getData()); diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java index d796164..1c3b042 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/query/UserQueryExe.java @@ -10,6 +10,7 @@ import com.jjb.saas.framework.auth.utils.AuthContext; import com.zcloud.basic.info.command.convertor.UserCoConvertor; import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; +import com.zcloud.basic.info.dto.UserCheckPassWordCmd; import com.zcloud.basic.info.dto.UserPageQry; import com.zcloud.basic.info.dto.UserQryCmd; import com.zcloud.basic.info.dto.UserVerifyQryCmd; @@ -17,6 +18,7 @@ import com.zcloud.basic.info.dto.clientobject.UserCO; import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.repository.UserRepository; import com.zcloud.gbscommon.excelEntity.UserExcelExportEntity; +import com.zcloud.gbscommon.utils.DesensitizationUtils; import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; @@ -66,6 +68,9 @@ public class UserQueryExe { Map params = PageQueryHelper.toHashMap(userQryCmd); List imgFilesDOList = userRepository.listAll(params); List imgFilesCOList = userCoConvertor.converDOsToCOs(imgFilesDOList); + //手机号脱敏 + //身份照脱敏 + imgFilesCOList.forEach(this::desensitize); return MultiResponse.of(imgFilesCOList); } @@ -80,6 +85,7 @@ public class UserQueryExe { UserDO userDO = userRepository.getInfoById(id); UserCO userCO = new UserCO(); BeanUtils.copyProperties(userDO, userCO); + desensitize(userCO); return SingleResponse.of(userCO); } @@ -101,17 +107,28 @@ public class UserQueryExe { QueryWrapper userDOQueryWrapper = new QueryWrapper<>(); userDOQueryWrapper.in("id",collection); List list = userRepository.list(userDOQueryWrapper); - return userCoConvertor.converDOsToCOs(list); + List userCOS = userCoConvertor.converDOsToCOs(list); + userCOS.forEach(this::desensitize); + return userCOS; } public List getUserList() { List list = userRepository.list(); - return userCoConvertor.converDOsToCOs(list); + List userCOS = userCoConvertor.converDOsToCOs(list); + userCOS.forEach(this::desensitize); + return userCOS; + } + + private void desensitize(UserCO userCO) { + userCO.setUserIdCard(DesensitizationUtils.idCardDesensitize(userCO.getUserIdCard())); + userCO.setPhone(DesensitizationUtils.mobileDesensitize(userCO.getPhone())); } public UserCO getInfoByUserId(Long aLong) { UserDO byId = userRepository.getById(aLong); - return userCoConvertor.converDOToCO(byId); + UserCO userCO = userCoConvertor.converDOToCO(byId); + desensitize(userCO); + return userCO; } /** @@ -124,6 +141,9 @@ public class UserQueryExe { params.put("userIdList", Arrays.asList(ids)); } List userDOList = userRepository.listAll(params); + //手机号脱敏 + //身份照脱敏 + userDOList.forEach(userDO -> desensitize(userCoConvertor.converDOToCO(userDO))); List userExcelExportEntities = userCoConvertor.converDOsToExcelEntitys(userDOList); UserE userE = new UserE(); userE.exportUserTable(httpServletResponse, userExcelExportEntities); @@ -143,7 +163,16 @@ public class UserQueryExe { UserDO userDO = userRepository.getInfoById(id); UserCO userCO = new UserCO(); BeanUtils.copyProperties(userDO, userCO); + desensitize(userCO); return SingleResponse.of(userCO); } + + public SingleResponse getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd) { + UserE userE = new UserE(); + BeanUtils.copyProperties(userCheckPassWordCmd, userE); + userE.encryptionPassword(); + UserDO userDO = userRepository.getEncryInfo(userE); + return SingleResponse.of(userCoConvertor.converDOToCO(userDO)); + } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java b/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java index fdbd836..0942b4e 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java +++ b/web-app/src/main/java/com/zcloud/basic/info/service/UserServiceImpl.java @@ -124,5 +124,9 @@ public class UserServiceImpl implements UserServiceI { return userUpdateExe.executeUpdatePassword(userUpdatePassWordCmd); } + @Override + public SingleResponse getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd) { + return userQueryExe.getEncryInfo(userCheckPassWordCmd); + } } diff --git a/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java b/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java index 50c4a66..61edd79 100644 --- a/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java +++ b/web-client/src/main/java/com/zcloud/basic/info/api/UserServiceI.java @@ -50,5 +50,7 @@ public interface UserServiceI { UserCO getInfoByUserId(Long aLong); void changePassword(Long id); Response updatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd); + + SingleResponse getEncryInfo(UserCheckPassWordCmd userCheckPassWordCmd); } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserCheckPassWordCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserCheckPassWordCmd.java new file mode 100644 index 0000000..d569c98 --- /dev/null +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserCheckPassWordCmd.java @@ -0,0 +1,32 @@ +package com.zcloud.basic.info.dto; + +import com.alibaba.cola.dto.Command; +import io.swagger.annotations.ApiModelProperty; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.EqualsAndHashCode; +import lombok.NoArgsConstructor; + +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; + +/** + * web-client + * + * @Author zhangyue + * @Date 2025-11-04 14:07:38 + */ +@EqualsAndHashCode(callSuper = true) +@Data +@NoArgsConstructor +@AllArgsConstructor +public class UserCheckPassWordCmd extends Command { + @ApiModelProperty(value = "GBS用户id", name = "id", required = true) + @NotNull(message = "GBS用户id不能为空") + private Long id; + @ApiModelProperty(value = "原密码", name = "password") + @NotEmpty(message = "原密码不能为空") + private String password; + +} + diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java index f2d99b6..96a782f 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/model/UserE.java @@ -364,8 +364,12 @@ public class UserE extends BaseE { } public void encryptionPassword() { + this.setPassword(Sm2Util.encryptHex(MD5.md5(password), publicKey)); - this.setNewPassword(Sm2Util.encryptHex(MD5.md5(newPassword), publicKey)); + if(StringUtils.isNotEmpty(newPassword)){ + this.setNewPassword(Sm2Util.encryptHex(MD5.md5(newPassword), publicKey)); + } } + } 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 b9978e7..7c3bc78 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 @@ -11,6 +11,8 @@ import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.persistence.dataobject.UserDO; import org.apache.catalina.User; +import javax.validation.constraints.NotEmpty; +import javax.validation.constraints.NotNull; import java.util.List; import java.util.Map; @@ -60,5 +62,6 @@ public interface UserRepository extends BaseRepository { Response updatePassword(UserDO userDO); + UserDO getEncryInfo(UserE userE); } 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 09f9e44..991e39f 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 @@ -5,6 +5,7 @@ import com.alibaba.cola.dto.MultiResponse; import com.alibaba.cola.dto.PageResponse; import com.alibaba.cola.dto.Response; import com.alibaba.cola.dto.SingleResponse; +import com.alibaba.cola.exception.BizException; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; @@ -201,6 +202,9 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i SingleResponse gbsResult = userFacade.add(userAddCmd); userDO.setId(gbsResult.getData()); + if(userDO.getSort() == null){ + userDO.setSort(9999); + } save(userDO); } @@ -293,5 +297,18 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i userUpdatePasswordCmd.setPassword(userDO.getNewPassword()); return userFacade.updatePassword(userUpdatePasswordCmd); } + + @Override + public UserDO getEncryInfo(UserE userE) { + // TODO 验证老密码是否正确 + AccountPasswordCheckCmd accountPasswordCheckCmd = new AccountPasswordCheckCmd(); + accountPasswordCheckCmd.setUserId(AuthContext.getUserId()); + accountPasswordCheckCmd.setPassword(userE.getPassword()); + SingleResponse response = accountFacade.checkPassword(accountPasswordCheckCmd); + if(!response.isSuccess()){ + throw new BizException("密码错误"); + } + return getById(userE.getId()); + } }