用户-yms同步新增与修改密码
This commit is contained in:
+61
@@ -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"); // 三方同步需要密码
|
||||
|
||||
+1
@@ -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(",")));
|
||||
|
||||
+20
@@ -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;
|
||||
}
|
||||
@@ -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<String> 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();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user