1.修改部分逻辑

This commit is contained in:
2025-08-14 20:05:46 +08:00
parent 918ada9a82
commit 43302a00b8
18 changed files with 67 additions and 93 deletions

View File

@@ -25,4 +25,6 @@ public class UserModelDTO {
private String oldPassword;
private String password;
private String token;
private String userName;
private String userNameOrEmail;
}

View File

@@ -23,4 +23,5 @@ public class UserModel {
private String email;
private String password;
private Integer mailVerification;
private String userName;
}

View File

@@ -41,4 +41,7 @@ public interface UserService extends IService<UserModel> {
Object resetPassWord(UserModelDTO userModelDTO);
Boolean updateUserMail(MailModel mailModel);
Boolean checkUserName(UserModelDTO userModelDTO);
}

View File

@@ -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;
}
}

View File

@@ -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,"用户已激活" );
/**

View File

@@ -51,7 +51,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
"/user/qrcode",
"/user/check/**",
"/user/scan",
"/user/confirm"
"/user/confirm",
"/user/checkUserName",
"/user/verification"
};
}

View File

@@ -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));
}
}

View File

@@ -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);
}