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> </list>
</option> </option>
</component> </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> </project>

View File

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

View File

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

View File

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

View File

@@ -61,9 +61,14 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
@Override @Override
public UserModelVO loginWithMail(UserModelDTO model) { public UserModelVO loginWithMail(UserModelDTO model) {
if (model.getUserNameOrEmail().isEmpty()){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"用户名或邮箱不能为空");
}
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); 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); .in(UserModel::getStatus, 0,2);
UserModel userModel = userDao.selectOne(lambdaQueryWrapper); UserModel userModel = userDao.selectOne(lambdaQueryWrapper);
@@ -130,12 +135,23 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail()); lambdaQueryWrapper.eq(UserModel::getEmail,userModelDTO.getEmail());
UserModel userModel = userDao.selectOne(lambdaQueryWrapper); UserModel userModel = userDao.selectOne(lambdaQueryWrapper);
UserModel usernameModel = userDao.selectOne(lambdaQueryWrapper
.eq(UserModel::getUserName, userModelDTO.getUserName()));
if (userModel != null) { if (userModel != null) {
throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST); throw new BusinessException(ErrorCode.MAIL_ALREADY_EXIST);
} }
if (usernameModel != null) {
throw new BusinessException(ErrorCode.USERNAME_ALREADY_EXIST);
}
if (userModelDTO.getPassword().length() < 6 ){ if (userModelDTO.getPassword().length() < 6 ){
throw new BusinessException(ErrorCode.PARAMS_ERROR,"密码长度不能小于 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.setPassword(BcryptUtils.encryptPassword(userModelDTO.getPassword()));
userModelDTO.setCreateTime(VVTools.currentTimeStamp()); userModelDTO.setCreateTime(VVTools.currentTimeStamp());
//设置状态为待验证 //设置状态为待验证
@@ -326,12 +342,31 @@ public class UserServiceImpl extends ServiceImpl<UserDao, UserModel> implements
throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误"); throw new BusinessException(ErrorCode.SYSTEM_ERROR,"验证码过期或验证码错误");
} }
LambdaQueryWrapper<UserModel> lambdaQueryWrapper = new LambdaQueryWrapper<>(); 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 UserModel userModel = userDao.selectOne(lambdaQueryWrapper
.eq(UserModel::getEmail, mail) .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()); userModel.setEmail(mailModel.getMailAddress());
mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId()); mailService.sendVerificationMail(mailModel.getMailAddress(),userModel.getId());
userModel.setMailVerification(1); userModel.setMailVerification(1);
return userDao.updateById(userModel) == 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, "获取用户信息失败,请稍后再试"), WX_GET_USER_INFO_FAILED(50001, "获取用户信息失败,请稍后再试"),
USER_DOES_NOT_EXIST(5002,"用户不存在"), USER_DOES_NOT_EXIST(5002,"用户不存在"),
MAIL_ALREADY_EXIST(5003,"邮箱已存在"), MAIL_ALREADY_EXIST(5003,"邮箱已存在"),
USERNAME_ALREADY_EXIST(5006,"用户名已存在"),
PASSWORD_ERROR(5004, "用户名或密码错误" ), PASSWORD_ERROR(5004, "用户名或密码错误" ),
USER_MAIL_NOT_VERIFICATION(5005,"用户邮未验证"),
TOKEN_INVALID(40400, "Token无效请重新登录"), TOKEN_INVALID(40400, "Token无效请重新登录"),
USER_HAS_ACTIVATED(5005,"用户已激活" ); USER_HAS_ACTIVATED(5005,"用户已激活" );
/** /**

View File

@@ -51,7 +51,9 @@ public class SaTokenConfigure implements WebMvcConfigurer {
"/user/qrcode", "/user/qrcode",
"/user/check/**", "/user/check/**",
"/user/scan", "/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){ public ResponseData<Object>sendUpdateMailConfirmMail(@RequestBody MailModel mailModel){
return ResponseData.success(mailService.sendUpdateConfirmMail(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" + " </div>\n" +
"</body>\n" + "</body>\n" +
"</html>\n", true); "</html>\n", true);
log.info("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId ); log.info("邮箱验证发送成功,邮箱地址:{},用户 Id: {}",emailAddress,userId );
}catch (Exception e) { }catch (Exception e) {
log.error(e.getMessage());
log.error("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId ); log.error("邮箱验证发送失败,邮箱地址:{},用户 Id: {}",emailAddress,userId );
} }
}); });
@@ -415,6 +416,9 @@ public class MailServiceImpl implements MailService {
case 3: case 3:
sendForgetPassWordMail(mailModel.getMailAddress(), userModel.getId()); sendForgetPassWordMail(mailModel.getMailAddress(), userModel.getId());
break; break;
case 4:
sendUpdateConfirmMail(mailModel);
break;
} }
return true; return true;
}else { }else {
@@ -608,9 +612,9 @@ public class MailServiceImpl implements MailService {
CacheHolder.VERIFICATION_MAIL.put(code, mailModel.getMailAddress()); CacheHolder.VERIFICATION_MAIL.put(code, mailModel.getMailAddress());
ThreadUtil.execAsync(() -> { ThreadUtil.execAsync(() -> {
try { try {
MailUtil.send(mailModel.getMailAddress(),"your Verification code is :" + code, MailUtil.send(mailModel.getMailAddress(),"your Verification code is: " + code,
"your Verification code is :" + code,false); "your Verification code is: " + code,false);
log.info("sendMailto:{},Verification code is :{}", mailModel.getMailAddress(),code); log.info("邮箱:{},发送验证码:{}", mailModel.getMailAddress(),code);
}catch (Exception e){ }catch (Exception e){
log.error("发送邮件失败, address={}, code={}", mailModel.getMailAddress(), code, e); log.error("发送邮件失败, address={}, code={}", mailModel.getMailAddress(), code, e);
} }

View File

@@ -43,8 +43,8 @@ sa-token:
is-log: true is-log: true
activateUrl: http://192.168.1.174:8086/user/activate?token= activateUrl: http://192.168.1.174:8086/user/activate?token=
verificationMailUrl: http://192.168.1.174:8086/user/verification?token= verificationMailUrl: http://192.168.1.174:8086/user/verificationMail?token=
forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= forgetPassWordUrl: http://192.168.1.174:8086/user/resetPassword/?token=
dromara: dromara:
x-file-storage: #文件存储配置 x-file-storage: #文件存储配置

View File

@@ -43,8 +43,8 @@ sa-token:
is-log: true is-log: true
activateUrl: http://192.168.1.174:8086/user/activate?token= activateUrl: http://192.168.1.174:8086/user/activate?token=
verificationMailUrl: http://192.168.1.174:8086/user/verification?token= verificationMailUrl: http://192.168.1.174:8086/user/verificationMail?token=
forgetPassWordUrl: http://192.168.1.174:8086/user//resetPassword/?token= forgetPassWordUrl: http://192.168.1.174:8086/user/resetPassword/?token=
dromara: dromara:
x-file-storage: #文件存储配置 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