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 ResponseDatasendUpdateMailConfirmMail(@RequestBody MailModel mailModel){ return ResponseData.success(mailService.sendUpdateConfirmMail(mailModel)); } + + @PostMapping("/checkUserName") + public ResponseDatacheckUserName(@RequestBody UserModelDTO userModelDTO){ + return ResponseData.success(userService.checkUserName(userModelDTO)); + } } diff --git a/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java b/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java index 5f21840..6ab7a4f 100644 --- a/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java +++ b/src/main/java/vvpkassistant/mail/service/MailServiceImpl.java @@ -384,8 +384,9 @@ public class MailServiceImpl implements MailService { " \n" + "\n" + "\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); } diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 1b04714..b1de7a4 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -43,8 +43,8 @@ sa-token: is-log: true activateUrl: http://192.168.1.174:8086/user/activate?token= -verificationMailUrl: http://192.168.1.174:8086/user/verification?token= -forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= +verificationMailUrl: http://192.168.1.174:8086/user/verificationMail?token= +forgetPassWordUrl: http://192.168.1.174:8086/user/resetPassword/?token= dromara: x-file-storage: #文件存储配置 diff --git a/target/classes/application.yml b/target/classes/application.yml index 1b04714..b1de7a4 100644 --- a/target/classes/application.yml +++ b/target/classes/application.yml @@ -43,8 +43,8 @@ sa-token: is-log: true activateUrl: http://192.168.1.174:8086/user/activate?token= -verificationMailUrl: http://192.168.1.174:8086/user/verification?token= -forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= +verificationMailUrl: http://192.168.1.174:8086/user/verificationMail?token= +forgetPassWordUrl: http://192.168.1.174:8086/user/resetPassword/?token= dromara: x-file-storage: #文件存储配置 diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties deleted file mode 100644 index fa8265c..0000000 --- a/target/maven-archiver/pom.properties +++ /dev/null @@ -1,5 +0,0 @@ -#Generated by Maven -#Wed Jul 30 13:17:57 CST 2025 -version=0.0.1 -groupId=com.vv.pk.assistant -artifactId=vvPkAssistant diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst deleted file mode 100644 index fbfbf6f..0000000 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst +++ /dev/null @@ -1,38 +0,0 @@ -vvpkassistant\FunctionConfig\FunctionConfigHolder.class -vvpkassistant\FunctionConfig\FunctionConfigMapper.class -vvpkassistant\User\UserModel.class -vvpkassistant\pk\PkInfoDao.class -vvpkassistant\pk\PkRecordDetail.class -META-INF\spring-configuration-metadata.json -vvpkassistant\Anchors\AnchorModel.class -vvpkassistant\CoinRecords\CoinRecordsDao.class -vvpkassistant\Data\ResponseData.class -vvpkassistant\SystemMessage\SystemMessageDao.class -vvpkassistant\SystemMessage\SystemMessage.class -vvpkassistant\Tools\VVRequester.class -vvpkassistant\Anchors\AnchorDao.class -vvpkassistant\FunctionConfig\FunctionConfigController.class -vvpkassistant\pk\PkRecord.class -vvpkassistant\Tools\OkHttpUtils.class -vvpkassistant\Tools\COSSigner.class -vvpkassistant\chat\ChatModel.class -vvpkassistant\pk\PkRecordDetailDao.class -vvpkassistant\Tools\VVRequester$1.class -vvpkassistant\Data\WxChatParam.class -vvpkassistant\chat\ChatDao.class -vvpkassistant\pk\PkInfoModel.class -vvpkassistant\SystemMessage\SystemMessageController.class -vvpkassistant\Data\ResponseInfo.class -vvpkassistant\chat\ChatController.class -vvpkassistant\FunctionConfig\FunctionConfigModel.class -vvpkassistant\User\UserDao.class -vvpkassistant\pk\PkController.class -vvpkassistant\Anchors\AnchorsController.class -vvpkassistant\Application.class -vvpkassistant\pk\PkRecordDao.class -vvpkassistant\CoinRecords\CoinRecords.class -vvpkassistant\Tools\VVTools.class -vvpkassistant\Tools\LogUtil.class -vvpkassistant\User\UserController.class -vvpkassistant\Tools\WebMvcConfig.class -vvpkassistant\Data\WxParam.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst deleted file mode 100644 index c866d4f..0000000 --- a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst +++ /dev/null @@ -1,36 +0,0 @@ -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\chat\ChatModel.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Application.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\chat\ChatDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Data\ResponseInfo.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\FunctionConfig\FunctionConfigController.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\FunctionConfig\FunctionConfigModel.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\CoinRecords\CoinRecordsDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Tools\OkHttpUtils.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Tools\LogUtil.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Anchors\AnchorDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\CoinRecords\CoinRecords.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkController.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Data\WxChatParam.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Anchors\AnchorModel.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\FunctionConfig\FunctionConfigHolder.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\SystemMessage\SystemMessage.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\SystemMessage\SystemMessageDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkInfoModel.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkRecordDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\SystemMessage\SystemMessageController.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Data\WxParam.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkRecord.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Data\ResponseData.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Anchors\AnchorsController.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkInfoDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkRecordDetail.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Tools\COSSigner.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\FunctionConfig\FunctionConfigMapper.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Tools\WebMvcConfig.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\pk\PkRecordDetailDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\chat\ChatController.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Tools\VVTools.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\User\UserDao.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\Tools\VVRequester.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\User\UserController.java -E:\Code\java\vvPkAssistant\src\main\java\vvpkassistant\User\UserModel.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst deleted file mode 100644 index 1e60b66..0000000 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/createdFiles.lst +++ /dev/null @@ -1 +0,0 @@ -vvpkassistant\ApplicationTests.class diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst deleted file mode 100644 index 9df5bb8..0000000 --- a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst +++ /dev/null @@ -1 +0,0 @@ -E:\Code\java\vvPkAssistant\src\test\java\vvpkassistant\ApplicationTests.java diff --git a/target/vvPkAssistant-0.0.1.jar.original b/target/vvPkAssistant-0.0.1.jar.original deleted file mode 100644 index cc5ba39..0000000 Binary files a/target/vvPkAssistant-0.0.1.jar.original and /dev/null differ