From f2b527d32a3abaeb83c279fdee6a583d4320c1f2 Mon Sep 17 00:00:00 2001 From: zhangyue Date: Thu, 27 Nov 2025 15:03:38 +0800 Subject: [PATCH] =?UTF-8?q?1.=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81=202.?= =?UTF-8?q?=E7=A6=81=E7=94=A8=E7=A7=9F=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 11 +++--- .../zcloud/basic/info/web/UserController.java | 8 +++++ .../basic/info/command/CorpInfoUpdateExe.java | 9 +++++ .../basic/info/command/UserUpdateExe.java | 14 ++++++++ .../basic/info/service/UserServiceImpl.java | 5 +++ .../zcloud/basic/info/api/UserServiceI.java | 1 + .../basic/info/dto/UserUpdatePassWordCmd.java | 34 +++++++++++++++++++ .../info/domain/gateway/UserGateway.java | 5 +++ .../zcloud/basic/info/domain/model/UserE.java | 7 ++++ .../info/gatewayimpl/UserGatewayImpl.java | 8 +++++ .../info/persistence/dataobject/UserDO.java | 4 +++ .../repository/UserRepository.java | 4 +++ .../repository/impl/UserRepositoryImpl.java | 26 ++++++++++++++ .../src/main/resources/mapper/UserMapper.xml | 3 +- 14 files changed, 133 insertions(+), 6 deletions(-) create mode 100644 web-client/src/main/java/com/zcloud/basic/info/dto/UserUpdatePassWordCmd.java diff --git a/pom.xml b/pom.xml index 517be2e..2e9311f 100644 --- a/pom.xml +++ b/pom.xml @@ -30,11 +30,6 @@ - - com.jjb.saas - jjb-saas-system-client - 1.7.0-SNAPSHOT - com.zcloud.basic.info @@ -66,6 +61,12 @@ jjb-saas-system-client 1.7.0-SNAPSHOT + + com.jjb.saas + jjb-saas-auth-client + 1.6.6-SNAPSHOT + + 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 d318f73..b45c8b6 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 @@ -135,5 +135,13 @@ public class UserController { userService.changePassword(id); return SingleResponse.buildSuccess(); } + + + @ApiOperation("修改密码") + @PostMapping("/updatePassword") + public Response updatePassword(@Validated @RequestBody UserUpdatePassWordCmd userUpdatePassWordCmd){ + + return userService.updatePassword(userUpdatePassWordCmd); + } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoUpdateExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoUpdateExe.java index 7476f47..f76270d 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/CorpInfoUpdateExe.java @@ -4,6 +4,7 @@ import com.alibaba.cola.dto.Response; import com.alibaba.cola.exception.BizException; import com.jjb.saas.system.client.tenant.facade.TenantFacade; import com.jjb.saas.system.client.tenant.request.OtaPlatformUserUpdateCmd; +import com.jjb.saas.system.client.tenant.request.TenantUpdateStatusCmd; import com.zcloud.basic.info.domain.gateway.CorpInfoGateway; import com.zcloud.basic.info.domain.model.CorpInfoE; import com.zcloud.basic.info.dto.CorpInfoUpdateCmd; @@ -96,6 +97,14 @@ public class CorpInfoUpdateExe { BeanUtils.copyProperties(corpInfoUpdateUseFlagCmd, corpInfoDO); corpInfoRepository.updateById(corpInfoDO); //TODO 通知GBS修改禁用启用标识 + TenantUpdateStatusCmd tenantUpdateStatusCmd = new TenantUpdateStatusCmd(); + tenantUpdateStatusCmd.setId(corpInfoUpdateUseFlagCmd.getId()); + if (corpInfoUpdateUseFlagCmd.getUseFlag() == 1){ + tenantUpdateStatusCmd.setStatusEnum("TRUE"); + } else if (corpInfoUpdateUseFlagCmd.getUseFlag() == 0){ + tenantUpdateStatusCmd.setStatusEnum("FALSE"); + } + tenantFacade.updateStatusEnum(tenantUpdateStatusCmd); } } diff --git a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java index 2f4c392..a18eef0 100644 --- a/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java +++ b/web-app/src/main/java/com/zcloud/basic/info/command/UserUpdateExe.java @@ -1,5 +1,6 @@ package com.zcloud.basic.info.command; +import com.alibaba.cola.dto.Response; import com.alibaba.cola.exception.BizException; import com.jjb.saas.system.client.user.facade.UserFacade; import com.zcloud.basic.info.domain.gateway.UserEmploymentLogGateway; @@ -7,11 +8,13 @@ import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.domain.model.UserEmploymentLogE; import com.zcloud.basic.info.dto.UserUpdateCmd; +import com.zcloud.basic.info.dto.UserUpdatePassWordCmd; 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.UserRepository; import com.zcloud.gbscommon.utils.Const; +import com.zcloud.gbscommon.utils.PageQueryHelper; import com.zcloud.gbscommon.utils.ZcloudRedisUtil; import lombok.AllArgsConstructor; import org.apache.dubbo.config.annotation.DubboReference; @@ -21,6 +24,8 @@ import org.springframework.stereotype.Component; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.ObjectUtils; +import java.util.Map; + /** * web-app @@ -85,5 +90,14 @@ public class UserUpdateExe { userE.resetPassword(); userRepository.changePassword(id, userE.getPassword()); } + + + @Transactional(rollbackFor = Exception.class) + public Response executeUpdatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd) { + UserE userE = new UserE(); + BeanUtils.copyProperties(userUpdatePassWordCmd, userE); + userE.encryptionPassword(); + return userGateway.updatePassword(userE); + } } 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 923e2f1..fdbd836 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 @@ -119,5 +119,10 @@ public class UserServiceImpl implements UserServiceI { userUpdateExe.executeChangePassword(id); } + @Override + public Response updatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd) { + return userUpdateExe.executeUpdatePassword(userUpdatePassWordCmd); + } + } 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 4259296..50c4a66 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 @@ -49,5 +49,6 @@ public interface UserServiceI { UserCO getInfoByUserId(Long aLong); void changePassword(Long id); + Response updatePassword(UserUpdatePassWordCmd userUpdatePassWordCmd); } diff --git a/web-client/src/main/java/com/zcloud/basic/info/dto/UserUpdatePassWordCmd.java b/web-client/src/main/java/com/zcloud/basic/info/dto/UserUpdatePassWordCmd.java new file mode 100644 index 0000000..d6de65e --- /dev/null +++ b/web-client/src/main/java/com/zcloud/basic/info/dto/UserUpdatePassWordCmd.java @@ -0,0 +1,34 @@ +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 UserUpdatePassWordCmd 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; + @ApiModelProperty(value = "新密码", name = "newPassword") + @NotEmpty(message = "新密码不能为空") + private String newPassword; +} + diff --git a/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java b/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java index febe628..3c2d1f4 100644 --- a/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java +++ b/web-domain/src/main/java/com/zcloud/basic/info/domain/gateway/UserGateway.java @@ -32,5 +32,10 @@ public interface UserGateway { Boolean deletedUserByIds(Long[] id); Response countUser(Map params); + + /** + * 修改密码 + */ + Response updatePassword(UserE userE); } 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 4002db7..f2d99b6 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 @@ -129,6 +129,8 @@ public class UserE extends BaseE { //密码 private String password; + //密码 + private String newPassword; // 入职状态 private Integer employmentFlag; // 父级租户id @@ -360,5 +362,10 @@ public class UserE extends BaseE { String encrypt = Sm2Util.encryptHex(MD5.md5(defaultPassword), publicKey); this.setPassword(encrypt); } + + public void encryptionPassword() { + this.setPassword(Sm2Util.encryptHex(MD5.md5(password), publicKey)); + this.setNewPassword(Sm2Util.encryptHex(MD5.md5(newPassword), publicKey)); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java index ae54429..3c7bc70 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/gatewayimpl/UserGatewayImpl.java @@ -6,6 +6,7 @@ import com.zcloud.basic.info.domain.gateway.UserGateway; import com.zcloud.basic.info.domain.model.UserE; import com.zcloud.basic.info.persistence.dataobject.UserDO; import com.zcloud.basic.info.persistence.repository.UserRepository; +import com.zcloud.gbscommon.utils.PageQueryHelper; import lombok.AllArgsConstructor; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -55,5 +56,12 @@ public class UserGatewayImpl implements UserGateway { public Response countUser(Map params) { return userRepository.countUser(params); } + + @Override + public Response updatePassword(UserE userE) { + UserDO userDO = new UserDO(); + BeanUtils.copyProperties(userE, userDO); + return userRepository.updatePassword(userDO); + } } diff --git a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserDO.java b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserDO.java index e19cfc0..7d44a96 100644 --- a/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserDO.java +++ b/web-infrastructure/src/main/java/com/zcloud/basic/info/persistence/dataobject/UserDO.java @@ -131,6 +131,10 @@ public class UserDO extends BaseDO { @ApiModelProperty(value = "密码") @TableField(exist = false) private String password; + //密码 + @ApiModelProperty(value = "新密码") + @TableField(exist = false) + private String newPassword; // 年龄 @ApiModelProperty(value = "年龄") 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 e8a9b98..b9978e7 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 @@ -56,5 +56,9 @@ public interface UserRepository extends BaseRepository { Map getRoleMap(); + + + Response updatePassword(UserDO userDO); + } 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 d9d019f..09f9e44 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 @@ -8,12 +8,16 @@ import com.alibaba.cola.dto.SingleResponse; 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.jjb.saas.auth.client.account.facade.AccountFacade; +import com.jjb.saas.auth.client.account.request.AccountPasswordCheckCmd; import com.jjb.saas.framework.auth.model.SSOUser; import com.jjb.saas.framework.auth.utils.AuthContext; import com.jjb.saas.framework.repository.common.PageHelper; import com.jjb.saas.framework.repository.repo.impl.BaseRepositoryImpl; import com.jjb.saas.system.client.role.facade.RoleFacade; import com.jjb.saas.system.client.role.response.RoleCO; +import com.jjb.saas.system.client.system.facade.SystemFacade; +import com.jjb.saas.system.client.tenant.facade.TenantFacade; import com.jjb.saas.system.client.user.facade.UserFacade; import com.jjb.saas.system.client.user.request.RoleDeptAddCmd; import com.jjb.saas.system.client.user.request.UserAddCmd; @@ -55,6 +59,9 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i @DubboReference(check = false) private RoleFacade roleFacade; + @DubboReference(check = false) + private AccountFacade accountFacade; + @Override public PageResponse listPage(Map params) { IPage iPage = new Query().getPage(params); @@ -62,6 +69,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i queryWrapper = PageQueryHelper.createPageQueryWrapper(queryWrapper, params, "u."); queryWrapper.orderByDesc("u.sort"); queryWrapper.eq("u.delete_enum", "FALSE"); + queryWrapper.apply("u.id != u.corpinfo_id"); IPage result = userMapper.selectUserPage(iPage, queryWrapper); return PageHelper.pageToResponse(result, result.getRecords()); } @@ -106,6 +114,7 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i @Override public UserDO getInfoById(Long id) { + return userMapper.getInfoById(id); } @@ -267,5 +276,22 @@ public class UserRepositoryImpl extends BaseRepositoryImpl i } return null; } + + @Override + public Response updatePassword(UserDO userDO) { + // TODO 验证老密码是否正确 + AccountPasswordCheckCmd accountPasswordCheckCmd = new AccountPasswordCheckCmd(); + accountPasswordCheckCmd.setUserId(userDO.getId()); + accountPasswordCheckCmd.setPassword(userDO.getPassword()); + SingleResponse response = accountFacade.checkPassword(accountPasswordCheckCmd); + if(!response.isSuccess()){ + return Response.buildFailure("原密码不正确"); + } +// 更新密码 + UserUpdatePasswordCmd userUpdatePasswordCmd = new UserUpdatePasswordCmd(); + userUpdatePasswordCmd.setId(userDO.getId()); + userUpdatePasswordCmd.setPassword(userDO.getNewPassword()); + return userFacade.updatePassword(userUpdatePasswordCmd); + } } diff --git a/web-infrastructure/src/main/resources/mapper/UserMapper.xml b/web-infrastructure/src/main/resources/mapper/UserMapper.xml index e21a31e..1ed6a7a 100644 --- a/web-infrastructure/src/main/resources/mapper/UserMapper.xml +++ b/web-infrastructure/src/main/resources/mapper/UserMapper.xml @@ -71,7 +71,8 @@ left join department d on d.id = u.department_id left join post p on p.id = u.post_id - u.delete_enum = 'FALSE' + u.id != u.corpinfo_id + and u.delete_enum = 'FALSE' and u.corpinfo_id = #{params.corpinfoId}