1.修改部分逻辑
This commit is contained in:
@@ -25,4 +25,6 @@ public class UserModelDTO {
|
||||
private String oldPassword;
|
||||
private String password;
|
||||
private String token;
|
||||
private String userName;
|
||||
private String userNameOrEmail;
|
||||
}
|
||||
|
||||
@@ -23,4 +23,5 @@ public class UserModel {
|
||||
private String email;
|
||||
private String password;
|
||||
private Integer mailVerification;
|
||||
private String userName;
|
||||
}
|
||||
|
||||
@@ -41,4 +41,7 @@ public interface UserService extends IService<UserModel> {
|
||||
Object resetPassWord(UserModelDTO userModelDTO);
|
||||
|
||||
Boolean updateUserMail(MailModel mailModel);
|
||||
|
||||
Boolean checkUserName(UserModelDTO userModelDTO);
|
||||
|
||||
}
|
||||
|
||||
@@ -61,9 +61,14 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
|
||||
@Override
|
||||
public UserModelVO loginWithMail(UserModelDTO model) {
|
||||
if (model.getUserNameOrEmail().isEmpty()){
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空");
|
||||
}
|
||||
|
||||
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(UserModel::getEmail,model.getEmail())
|
||||
lambdaQueryWrapper.eq(UserModel::getEmail,model.getUserNameOrEmail())
|
||||
.or()
|
||||
.eq(UserModel::getUserName,model.getUserNameOrEmail())
|
||||
.in(UserModel::getStatus, 0,2);
|
||||
|
||||
UserModel userModel = userDao.selectOne(lambdaQueryWrapper);
|
||||
@@ -130,12 +135,23 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail());
|
||||
UserModel userModel = userDao.selectOne(lambdaQueryWrapper);
|
||||
|
||||
UserModel usernameModel = userDao.selectOne(lambdaQueryWrapper
|
||||
.eq(UserModel::getUserName, userModelDTO.getUserName()));
|
||||
|
||||
if (userModel != null) {
|
||||
throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST);
|
||||
}
|
||||
if (usernameModel != null) {
|
||||
throw new BusinessException(ErrorCode.USERNAME_ALREADY_EXIST);
|
||||
}
|
||||
if (userModelDTO.getPassword().length() < 6 ){
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 6 位");
|
||||
}
|
||||
if (userModelDTO.getUserName().isEmpty()){
|
||||
throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名不能为空");
|
||||
}
|
||||
|
||||
userModelDTO.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword()));
|
||||
userModelDTO.setCreateTime(VVTools.currentTimeStamp());
|
||||
//设置状态为待验证
|
||||
@@ -326,12 +342,31 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
|
||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误");
|
||||
}
|
||||
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
|
||||
UserModel duplicateMailUser = userDao.selectOne(lambdaQueryWrapper.eq(UserModel::getEmail, mailModel.getMailAddress()));
|
||||
if (duplicateMailUser != null) {
|
||||
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"邮箱地址已被使用");
|
||||
}
|
||||
|
||||
UserModel userModel = userDao.selectOne(lambdaQueryWrapper
|
||||
.eq(UserModel::getEmail, mail)
|
||||
.eq(UserModel::getStatus, 0));
|
||||
.eq(UserModel::getMailVerification, 0 ));
|
||||
|
||||
if (userModel == null) {
|
||||
throw new BusinessException(ErrorCode.USER_MAIL_NOT_VERIFICATION);
|
||||
}
|
||||
userModel.setEmail(mailModel.getMailAddress());
|
||||
mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId());
|
||||
userModel.setMailVerification(1);
|
||||
return userDao.updateById(userModel) == 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Boolean checkUserName(UserModelDTO userModelDTO) {
|
||||
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||
UserModel userModel = userDao.selectOne(lambdaQueryWrapper
|
||||
.eq(UserModel::getUserName, userModelDTO.getUserName()));
|
||||
return userModel == null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -32,8 +32,11 @@ public enum ErrorCode {
|
||||
WX_GET_USER_INFO_FAILED(50001, "获取用户信息失败,请稍后再试"),
|
||||
USER_DOES_NOT_EXIST(5002,"用户不存在"),
|
||||
MAIL_ALREADY_EXIST(5003,"邮箱已存在"),
|
||||
USERNAME_ALREADY_EXIST(5006,"用户名已存在"),
|
||||
PASSWORD_ERROR(5004, "用户名或密码错误" ),
|
||||
USER_MAIL_NOT_VERIFICATION(5005,"用户邮未验证"),
|
||||
TOKEN_INVALID(40400, "Token无效,请重新登录"),
|
||||
|
||||
USER_HAS_ACTIVATED(5005,"用户已激活" );
|
||||
|
||||
/**
|
||||
|
||||
@@ -51,7 +51,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
|
||||
"/user/qrcode",
|
||||
"/user/check/**",
|
||||
"/user/scan",
|
||||
"/user/confirm"
|
||||
"/user/confirm",
|
||||
"/user/checkUserName",
|
||||
"/user/verification"
|
||||
|
||||
};
|
||||
}
|
||||
|
||||
@@ -461,4 +461,9 @@ public class UserController {
|
||||
public ResponseData<Object>sendUpdateMailConfirmMail(@RequestBody MailModel mailModel){
|
||||
return ResponseData.success(mailService.sendUpdateConfirmMail(mailModel));
|
||||
}
|
||||
|
||||
@PostMapping("/checkUserName")
|
||||
public ResponseData<Boolean>checkUserName(@RequestBody UserModelDTO userModelDTO){
|
||||
return ResponseData.success(userService.checkUserName(userModelDTO));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -384,8 +384,9 @@ public class MailServiceImpl implements MailService {
|
||||
" </div>\n" +
|
||||
"</body>\n" +
|
||||
"</html>\n", true);
|
||||
log.info("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId );
|
||||
log.info("邮箱验证发送成功,邮箱地址:{},用户 Id: {}",emailAddress,userId );
|
||||
}catch (Exception e) {
|
||||
log.error(e.getMessage());
|
||||
log.error("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId );
|
||||
}
|
||||
});
|
||||
@@ -415,6 +416,9 @@ public class MailServiceImpl implements MailService {
|
||||
case 3:
|
||||
sendForgetPassWordMail(mailModel.getMailAddress(), userModel.getId());
|
||||
break;
|
||||
case 4:
|
||||
sendUpdateConfirmMail(mailModel);
|
||||
break;
|
||||
}
|
||||
return true;
|
||||
}else {
|
||||
@@ -608,9 +612,9 @@ public class MailServiceImpl implements MailService {
|
||||
CacheHolder.VERIFICATION_MAIL.put(code, mailModel.getMailAddress());
|
||||
ThreadUtil.execAsync(() -> {
|
||||
try {
|
||||
MailUtil.send(mailModel.getMailAddress(),"your Verification code is :" + code,
|
||||
"your Verification code is :" + code,false);
|
||||
log.info("sendMailto:{},Verification code is :{}", mailModel.getMailAddress(),code);
|
||||
MailUtil.send(mailModel.getMailAddress(),"your Verification code is: " + code,
|
||||
"your Verification code is: " + code,false);
|
||||
log.info("邮箱:{},发送验证码:{}", mailModel.getMailAddress(),code);
|
||||
}catch (Exception e){
|
||||
log.error("发送邮件失败, address={}, code={}", mailModel.getMailAddress(), code, e);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user