diff --git a/.idea/.cache/.Apifox_Helper/.toolWindow.db b/.idea/.cache/.Apifox_Helper/.toolWindow.db
index cca5fda..baa6f5d 100644
Binary files a/.idea/.cache/.Apifox_Helper/.toolWindow.db and b/.idea/.cache/.Apifox_Helper/.toolWindow.db differ
diff --git a/.idea/misc.xml b/.idea/misc.xml
index 608428c..a8fc129 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -8,5 +8,5 @@
-
+
\ No newline at end of file
diff --git a/src/main/java/vvpkassistant/User/model/DTO/UserModelDTO.java b/src/main/java/vvpkassistant/User/model/DTO/UserModelDTO.java
index 2455764..c284b2a 100644
--- a/src/main/java/vvpkassistant/User/model/DTO/UserModelDTO.java
+++ b/src/main/java/vvpkassistant/User/model/DTO/UserModelDTO.java
@@ -25,4 +25,6 @@ public class UserModelDTO {
private String oldPassword;
private String password;
private String token;
+ private String userName;
+ private String userNameOrEmail;
}
diff --git a/src/main/java/vvpkassistant/User/model/UserModel.java b/src/main/java/vvpkassistant/User/model/UserModel.java
index bbbaa7e..84da83a 100644
--- a/src/main/java/vvpkassistant/User/model/UserModel.java
+++ b/src/main/java/vvpkassistant/User/model/UserModel.java
@@ -23,4 +23,5 @@ public class UserModel {
private String email;
private String password;
private Integer mailVerification;
+ private String userName;
}
diff --git a/src/main/java/vvpkassistant/User/service/UserService.java b/src/main/java/vvpkassistant/User/service/UserService.java
index a21c933..f652470 100644
--- a/src/main/java/vvpkassistant/User/service/UserService.java
+++ b/src/main/java/vvpkassistant/User/service/UserService.java
@@ -41,4 +41,7 @@ public interface UserService extends IService {
Object resetPassWord(UserModelDTO userModelDTO);
Boolean updateUserMail(MailModel mailModel);
+
+ Boolean checkUserName(UserModelDTO userModelDTO);
+
}
diff --git a/src/main/java/vvpkassistant/User/service/UserServiceImpl.java b/src/main/java/vvpkassistant/User/service/UserServiceImpl.java
index d133c33..245e23a 100644
--- a/src/main/java/vvpkassistant/User/service/UserServiceImpl.java
+++ b/src/main/java/vvpkassistant/User/service/UserServiceImpl.java
@@ -61,9 +61,14 @@ public class UserServiceImpl extends ServiceImpl implements
@Override
public UserModelVO loginWithMail(UserModelDTO model) {
+ if (model.getUserNameOrEmail().isEmpty()){
+ throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空");
+ }
LambdaQueryWrapper 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 implements
LambdaQueryWrapper 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 implements
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误");
}
LambdaQueryWrapper 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 lambdaQueryWrapper = new LambdaQueryWrapper<>();
+ UserModel userModel = userDao.selectOne(lambdaQueryWrapper
+ .eq(UserModel::getUserName, userModelDTO.getUserName()));
+ return userModel == null;
+ }
+
}
diff --git a/src/main/java/vvpkassistant/common/ErrorCode.java b/src/main/java/vvpkassistant/common/ErrorCode.java
index 0fd8cef..e875198 100644
--- a/src/main/java/vvpkassistant/common/ErrorCode.java
+++ b/src/main/java/vvpkassistant/common/ErrorCode.java
@@ -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,"用户已激活" );
/**
diff --git a/src/main/java/vvpkassistant/config/SaTokenConfigure.java b/src/main/java/vvpkassistant/config/SaTokenConfigure.java
index 95a9a8e..28c4015 100644
--- a/src/main/java/vvpkassistant/config/SaTokenConfigure.java
+++ b/src/main/java/vvpkassistant/config/SaTokenConfigure.java
@@ -51,7 +51,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
"/user/qrcode",
"/user/check/**",
"/user/scan",
- "/user/confirm"
+ "/user/confirm",
+ "/user/checkUserName",
+ "/user/verification"
};
}
diff --git a/src/main/java/vvpkassistant/controller/UserController.java b/src/main/java/vvpkassistant/controller/UserController.java
index 660d84a..9610254 100644
--- a/src/main/java/vvpkassistant/controller/UserController.java
+++ b/src/main/java/vvpkassistant/controller/UserController.java
@@ -461,4 +461,9 @@ public class UserController {
public ResponseData