|
@@ -4,20 +4,20 @@ import cn.hutool.core.io.IoUtil;
|
|
|
import cn.hutool.core.util.IdUtil;
|
|
|
import cn.iocoder.yudao.coreservice.modules.infra.service.file.InfFileCoreService;
|
|
|
import cn.iocoder.yudao.coreservice.modules.member.dal.dataobject.user.MbrUserDO;
|
|
|
-import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserInfoRespVO;
|
|
|
import cn.iocoder.yudao.framework.common.enums.CommonStatusEnum;
|
|
|
+import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserInfoRespVO;
|
|
|
import cn.iocoder.yudao.userserver.modules.member.controller.user.vo.MbrUserUpdateMobileReqVO;
|
|
|
import cn.iocoder.yudao.userserver.modules.member.convert.user.UserProfileConvert;
|
|
|
import cn.iocoder.yudao.userserver.modules.member.dal.mysql.user.MbrUserMapper;
|
|
|
import cn.iocoder.yudao.userserver.modules.member.service.user.MbrUserService;
|
|
|
import cn.iocoder.yudao.userserver.modules.system.dal.dataobject.sms.SysSmsCodeDO;
|
|
|
import cn.iocoder.yudao.userserver.modules.system.enums.sms.SysSmsSceneEnum;
|
|
|
-import cn.iocoder.yudao.userserver.modules.system.service.auth.SysAuthService;
|
|
|
import cn.iocoder.yudao.userserver.modules.system.service.sms.SysSmsCodeService;
|
|
|
import com.google.common.annotations.VisibleForTesting;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.springframework.security.crypto.password.PasswordEncoder;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import javax.validation.Valid;
|
|
@@ -28,7 +28,6 @@ import static cn.iocoder.yudao.framework.common.exception.util.ServiceExceptionU
|
|
|
import static cn.iocoder.yudao.framework.common.util.servlet.ServletUtils.getClientIP;
|
|
|
import static cn.iocoder.yudao.userserver.modules.member.enums.MbrErrorCodeConstants.USER_NOT_EXISTS;
|
|
|
import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConstants.USER_SMS_CODE_IS_UNUSED;
|
|
|
-import static cn.iocoder.yudao.userserver.modules.system.enums.SysErrorCodeConstants.USER_SMS_CODE_NOT_CORRECT;
|
|
|
|
|
|
/**
|
|
|
* User Service 实现类
|
|
@@ -49,9 +48,6 @@ public class MbrUserServiceImpl implements MbrUserService {
|
|
|
@Resource
|
|
|
private PasswordEncoder passwordEncoder;
|
|
|
|
|
|
- @Resource
|
|
|
- private SysAuthService sysAuthService;
|
|
|
-
|
|
|
@Resource
|
|
|
private SysSmsCodeService smsCodeService;
|
|
|
|
|
@@ -130,24 +126,23 @@ public class MbrUserServiceImpl implements MbrUserService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
public void updateMobile(Long userId, MbrUserUpdateMobileReqVO reqVO) {
|
|
|
// 检测用户是否存在
|
|
|
checkUserExists(userId);
|
|
|
- // 校验验证码,并标记为已使用
|
|
|
- smsCodeService.useSmsCode(reqVO.getMobile(), SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(), reqVO.getCode(),getClientIP());
|
|
|
-
|
|
|
- // 检测新手机和旧手机的验证码是否在30分钟内
|
|
|
- SysSmsCodeDO smsOldCodeDO = smsCodeService.checkCodeIsExpired(reqVO.getOldMobile(), reqVO.getOldCode(), SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene());
|
|
|
- SysSmsCodeDO smsNewCodeDO = smsCodeService.checkCodeIsExpired(reqVO.getMobile(), reqVO.getCode(), SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene());
|
|
|
|
|
|
- // 判断新旧code是否未被使用,如果是,抛出异常
|
|
|
- if (Boolean.FALSE.equals(smsOldCodeDO.getUsed()) || Boolean.FALSE.equals(smsNewCodeDO.getUsed())){
|
|
|
+ // 校验旧手机和旧验证码
|
|
|
+ SysSmsCodeDO sysSmsCodeDO = smsCodeService.checkCodeIsExpired(reqVO.getOldMobile(), reqVO.getOldCode(), SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene());
|
|
|
+ // 判断旧code是否未被使用,如果是,抛出异常
|
|
|
+ if (Boolean.FALSE.equals(sysSmsCodeDO.getUsed())){
|
|
|
throw exception(USER_SMS_CODE_IS_UNUSED);
|
|
|
}
|
|
|
|
|
|
+ // 使用新验证码
|
|
|
+ smsCodeService.useSmsCode(reqVO.getMobile(), SysSmsSceneEnum.CHANGE_MOBILE_BY_SMS.getScene(), reqVO.getCode(),getClientIP());
|
|
|
+
|
|
|
// 更新用户手机
|
|
|
- MbrUserDO userDO = MbrUserDO.builder().build();
|
|
|
- userDO.setMobile(reqVO.getMobile());
|
|
|
+ MbrUserDO userDO = MbrUserDO.builder().id(userId).mobile(reqVO.getMobile()).build();
|
|
|
userMapper.updateById(userDO);
|
|
|
}
|
|
|
|