|
|
@@ -451,5 +451,61 @@ public class BindTaskServiceImpl implements BindTaskService {
|
|
|
userMapper.updateById(phoneUser);
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ if (type == 2) {
|
|
|
+ //是否已注册
|
|
|
+ User changeUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
|
|
|
+ .eq(User::getEmail, account).last("limit 1"));
|
|
|
+ if (changeUser != null) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您更换的手机号已注册,无法更换");
|
|
|
+ }
|
|
|
+ //是否已绑定
|
|
|
+ UserBindDetail changeUserBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
+ .eq(UserBindDetail::getEmail, account).last("limit 1"));
|
|
|
+ if (changeUserBindDetail != null) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您更换的邮箱已被绑定,无法更换");
|
|
|
+ }
|
|
|
+ //校验邮箱
|
|
|
+ checkEmailCode(account, code);
|
|
|
+ String email = user.getEmail();
|
|
|
+ User emailUser = user;
|
|
|
+ Long emailUserId = emailUser.getId();
|
|
|
+ //邮箱用户
|
|
|
+ if (StrUtil.isNotBlank(email)) {
|
|
|
+ UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
+ .eq(UserBindDetail::getEmail, email).last("limit 1"));
|
|
|
+ if (userBindDetail != null) {
|
|
|
+ userBindDetail.setEmail(account);
|
|
|
+ userBindDetail.setEmailUserId(emailUserId);
|
|
|
+ userBindDetailMapper.updateById(userBindDetail);
|
|
|
+ }
|
|
|
+ user.setEmail(account);
|
|
|
+ userMapper.updateById(user);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ //非邮箱用户
|
|
|
+ UserBindDetail userBindDetail = userBindDetailMapper.selectOne(Wrappers.lambdaQuery(UserBindDetail.class)
|
|
|
+ .and(qr -> qr.eq(UserBindDetail::getUserId, userId)
|
|
|
+ .or().eq(UserBindDetail::getPhoneUserId, userId))
|
|
|
+ .last("limit 1"));
|
|
|
+ if (userBindDetail == null) {
|
|
|
+ throw BusinessRuntimeException.getInstance("你未有绑定其他账号");
|
|
|
+ }
|
|
|
+ if (StrUtil.isEmpty(userBindDetail.getEmail())) {
|
|
|
+ throw BusinessRuntimeException.getInstance("您未绑定邮箱,无法更换");
|
|
|
+ }
|
|
|
+ email = userBindDetail.getEmail();
|
|
|
+ emailUser = userMapper.selectOne(Wrappers.lambdaQuery(User.class)
|
|
|
+ .eq(User::getEmail, email).last("limit 1"));
|
|
|
+ if (emailUser == null) throw BusinessRuntimeException.getInstance("你绑定的邮箱未注册");
|
|
|
+ emailUserId = emailUser.getId();
|
|
|
+ userBindDetail.setEmail(account);
|
|
|
+ userBindDetail.setEmailUserId(emailUserId);
|
|
|
+ userBindDetailMapper.updateById(userBindDetail);
|
|
|
+
|
|
|
+ emailUser.setEmail(account);
|
|
|
+ userMapper.updateById(emailUser);
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|