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

Binary file not shown.

2
.idea/misc.xml generated
View File

@@ -8,5 +8,5 @@
</list>
</option>
</component>
<component name="ProjectRootManager" version="2" languageLevel="JDK_24" project-jdk-name="17" project-jdk-type="JavaSDK" />
<component name="ProjectRootManager" version="2" languageLevel="JDK_17" project-jdk-name="17" project-jdk-type="JavaSDK" />
</project>

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

View File

@@ -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: #文件存储配置

View File

@@ -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: #文件存储配置

View File

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

View File

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

View File

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

View File

@@ -1 +0,0 @@
vvpkassistant\ApplicationTests.class

View File

@@ -1 +0,0 @@
E:\Code\java\vvPkAssistant\src\test\java\vvpkassistant\ApplicationTests.java