From 028afb57d7c2614b1d1ae177ddc4d3ca984986a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=B5=B5=E8=BE=89?= <2830717623@qq.com> Date: Fri, 11 Sep 2026 15:45:15 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7-yms=E5=90=8C=E6=AD=A5?= =?UTF-8?q?=E6=96=B0=E5=A2=9E=E4=B8=8E=E4=BF=AE=E6=94=B9=E5=AF=86=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UserApplicationService.java | 61 +++++++++++++++++++ .../service/UserYmsDomainService.java | 1 + .../dto/updateDTO/PasswordChangeDTO.java | 20 ++++++ .../mhd/user/interfaces/facade/UserAPI.java | 13 ++++ 4 files changed, 95 insertions(+) create mode 100644 mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/updateDTO/PasswordChangeDTO.java diff --git a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java index 1f44ce5eb..423fe302a 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/application/service/UserApplicationService.java @@ -97,6 +97,7 @@ import com.mhd.system.api.model.LoginUser; import com.mhd.user.interfaces.dto.addDTO.UserDriverDTO; import com.mhd.user.interfaces.dto.queryDTO.UserDocumentWarningQueryDTO; import com.mhd.user.interfaces.dto.updateDTO.UpdateHasDefaultAddressDTO; +import com.mhd.user.interfaces.dto.updateDTO.PasswordChangeDTO; import com.mhd.user.interfaces.facadeApi.Po.UserDriverCountPo; import com.mhd.user.interfaces.vo.QueryAllShipperInfoVo; import lombok.extern.slf4j.Slf4j; @@ -214,6 +215,61 @@ public class UserApplicationService { @Autowired private UserShipperMapper userShipperMapper; + /** + * 修改密码 - 同步 wlhy 与 yms + */ + @Transactional(rollbackFor = Exception.class) + public void changePassword(PasswordChangeDTO passwordChangeDTO) { + // 1. 获取当前登录用户 + LoginUser loginUser = SecurityUtils.getLoginUser(); + if (ObjectUtil.isNull(loginUser)) { + throw new DigitalLogisticsException(UserError.TIMEOUT); + } + + Long userId = loginUser.getUserPo().getUserId(); + if (userId == null) { + throw new ServiceException("用户未登录"); + } + + // 2. 查询用户信息 + UserPo userPO = userDomainService.selectByUserId(userId); + UserEntity userEntity = new UserEntity(); + BeanUtils.copyProperties(userPO,userEntity); + if (ObjectUtil.isNull(userEntity)) { + throw new ServiceException("用户不存在"); + } + + // 3. 解密并加密新密码 + String salt = userEntity.getUserSalt(); + String newPassword = decrypt(passwordChangeDTO.getNewPassword()); + String encodedPassword = PasswordUtil.encrypt(userEntity.getUserAccount(), newPassword, salt); + + // 4. 更新本地密码 + UserDO userDO = new UserDO(); + userDO.setUserId(userId); + userDO.setUserPassword(encodedPassword); + userDomainService.updateUser(userDO); + + // 5. 同步到网货平台(wlhy) + try { + userEntity.setUserPassword(encodedPassword); + wlhyDomainService.addOrEditPlatformUser(userEntity); + } catch (Exception e) { + log.warn("同步密码到网货平台失败,但不影响主流程:{}", e.getMessage()); + } + + // 6. 同步到 YMS 平台 + try { + Integer isQueue = userMapper.getOrdIsQueue(userEntity.getOrganizationId()); + if (isQueue != null && isQueue == 1) { + userEntity.setUserPassword(newPassword); + ymsDomainService.addOrEditYmsUser(userEntity); + } + } catch (Exception e) { + log.warn("同步密码到 YMS 平台失败,但不影响主流程:{}", e.getMessage()); + } + } + /** * @Description 查询用户列表 * @Author Alex @@ -1971,6 +2027,11 @@ public class UserApplicationService { if (StrUtil.isEmpty(userDO.getUserName())) { userDO.setUserName("用户" + userDO.getUserPhone().substring(userDO.getUserPhone().length() - 4)); } + //密码为空则给默认密码 + if (StrUtil.isEmpty(userDO.getUserPassword())) { + String defaultPassword = "Aa123456"; + userDO.setUserPassword(PasswordUtil.encrypt(userDO.getUserAccount(), defaultPassword, userDO.getUserSalt())); + } UserEntity userEntity = userDomainService.addUser(userDO); //给小程序注册用户分配默认普通用户角色(must),本组织没有则找上级 userEntity.setUserPassword("Aa123456"); // 三方同步需要密码 diff --git a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserYmsDomainService.java b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserYmsDomainService.java index 73cfa870d..14c92afd0 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserYmsDomainService.java +++ b/mhd-user-center/src/main/java/com/mhd/user/domain/userAggregate/service/UserYmsDomainService.java @@ -100,6 +100,7 @@ public class UserYmsDomainService { ymsSysUserDTO.setPhonenumber(userEntity.getUserPhone()); ymsSysUserDTO.setAvatar(userEntity.getAvatar()); ymsSysUserDTO.setUserAccountType(userEntity.getUserAccountType()); + ymsSysUserDTO.setPassword(userEntity.getUserPassword()); if (StringUtils.isNotBlank(userEntity.getRoleCode())){ ymsSysUserDTO.setRoleCodes(Arrays.asList(userEntity.getRoleCode().split(","))); diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/updateDTO/PasswordChangeDTO.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/updateDTO/PasswordChangeDTO.java new file mode 100644 index 000000000..c9839ae26 --- /dev/null +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/dto/updateDTO/PasswordChangeDTO.java @@ -0,0 +1,20 @@ +package com.mhd.user.interfaces.dto.updateDTO; + +import lombok.Data; + +import javax.validation.constraints.NotBlank; + +/** + * 修改密码 DTO + * @author AI + * @date 2026/09/10 + */ +@Data +public class PasswordChangeDTO { + + /** + * 新密码 + */ + @NotBlank(message = "新密码不能为空") + private String newPassword; +} \ No newline at end of file diff --git a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java index 52d5058f9..dba2ba695 100644 --- a/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java +++ b/mhd-user-center/src/main/java/com/mhd/user/interfaces/facade/UserAPI.java @@ -32,6 +32,7 @@ import com.mhd.common.security.annotation.InnerAuth; import com.mhd.common.security.service.TokenService; import com.mhd.system.api.model.LoginUser; import com.mhd.user.interfaces.dto.queryDTO.UserDocumentWarningQueryDTO; +import com.mhd.user.interfaces.dto.updateDTO.PasswordChangeDTO; import com.mhd.user.interfaces.dto.updateDTO.UpdateHasDefaultAddressDTO; import com.mhd.user.interfaces.vo.QueryAllShipperInfoVo; import io.swagger.annotations.Api; @@ -1037,4 +1038,16 @@ public class UserAPI extends BaseController { public R finShipperEnterpriseNamedByUserId(@PathVariable("userId") Long userId) { return R.ok(userApplicationService.finShipperEnterpriseNamedByUserId(userId)); } + + /** + * 修改密码 - 同步 wlhy 与 yms + * 根据当前登录用户判断是谁修改,只传新密码,不需要校验旧密码 + */ + @Log(title = "用户中台管理 - 修改密码", description ="修改当前登录用户密码",businessType = BusinessType.UPDATE) + @ApiOperation("修改密码") + @PostMapping("/changePassword") + public AjaxResult changePassword(@RequestBody PasswordChangeDTO passwordChangeDTO) { + userApplicationService.changePassword(passwordChangeDTO); + return AjaxResult.success(); + } } \ No newline at end of file