|
@@ -390,4 +390,69 @@ public class BindTaskServiceImpl implements BindTaskService {
|
|
|
throw BusinessRuntimeException.getInstance("邮箱验证码错误,请重新输入");
|
|
throw BusinessRuntimeException.getInstance("邮箱验证码错误,请重新输入");
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public void changeBindAccount(UserBindInfoReq request) {
|
|
|
|
|
+ Long userId = request.getUserId();
|
|
|
|
|
+ User user = userMapper.selectById(userId);
|
|
|
|
|
+ if (user == null) throw BusinessRuntimeException.getGatewayApiCode(GatewayApiCode.CMS_TOKEN_VALID);
|
|
|
|
|
+ String account = request.getAccount();
|
|
|
|
|
+ String code = request.getCode();
|
|
|
|
|
+ Integer type = request.getType();
|
|
|
|
|
+ if (type == 1) {
|
|
|
|
|
+ //是否已注册
|
|
|
|
|
+ User changeUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
|
|
|
|
|
+ .eq(User::getLoginPhone, account).last("limit 1"));
|
|
|
|
|
+ if (changeUser != null) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您更换的手机号已注册,无法更换");
|
|
|
|
|
+ }
|
|
|
|
|
+ //是否已绑定
|
|
|
|
|
+ UserBindDetail changeUserBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
|
|
+ .eq(UserBindDetail::getPhone, account).last("limit 1"));
|
|
|
|
|
+ if (changeUserBindDetail != null) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您更换的手机号已被绑定,无法更换");
|
|
|
|
|
+ }
|
|
|
|
|
+ //校验手机号
|
|
|
|
|
+ checkPhoneCode(account, code);
|
|
|
|
|
+ String loginPhone = user.getLoginPhone();
|
|
|
|
|
+ User phoneUser = user;
|
|
|
|
|
+ Long phoneUserId = phoneUser.getId();
|
|
|
|
|
+ //手机用户
|
|
|
|
|
+ if (StrUtil.isNotBlank(loginPhone)) {
|
|
|
|
|
+ UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
|
|
+ .eq(UserBindDetail::getPhone, loginPhone).last("limit 1"));
|
|
|
|
|
+ if (userBindDetail != null) {
|
|
|
|
|
+ userBindDetail.setPhone(account);
|
|
|
|
|
+ userBindDetail.setPhoneUserId(phoneUserId);
|
|
|
|
|
+ userBindDetailMapper.updateById(userBindDetail);
|
|
|
|
|
+ }
|
|
|
|
|
+ user.setLoginPhone(account);
|
|
|
|
|
+ userMapper.updateById(user);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ //非手机用户
|
|
|
|
|
+ UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
|
|
+ .and(qr -> qr.eq(UserBindDetail::getUserId, userId)
|
|
|
|
|
+ .or().eq(UserBindDetail::getEmailUserId, userId))
|
|
|
|
|
+ .last("limit 1"));
|
|
|
|
|
+ if (userBindDetail == null) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("你未有绑定其他账号");
|
|
|
|
|
+ }
|
|
|
|
|
+ if (StrUtil.isEmpty(userBindDetail.getPhone())) {
|
|
|
|
|
+ throw BusinessRuntimeException.getInstance("您未绑定手机号,无法更换");
|
|
|
|
|
+ }
|
|
|
|
|
+ String phone = userBindDetail.getPhone();
|
|
|
|
|
+ phoneUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
|
|
|
|
|
+ .eq(User::getLoginPhone, phone).last("limit 1"));
|
|
|
|
|
+ if (phoneUser == null) throw BusinessRuntimeException.getInstance("你绑定的手机号未注册");
|
|
|
|
|
+ phoneUserId = phoneUser.getId();
|
|
|
|
|
+ userBindDetail.setPhone(account);
|
|
|
|
|
+ userBindDetail.setPhoneUserId(phoneUserId);
|
|
|
|
|
+ userBindDetailMapper.updateById(userBindDetail);
|
|
|
|
|
+
|
|
|
|
|
+ phoneUser.setLoginPhone(account);
|
|
|
|
|
+ userMapper.updateById(phoneUser);
|
|
|
|
|
+ return;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
}
|
|
}
|