1.修改部分逻辑
This commit is contained in:
BIN
.idea/.cache/.Apifox_Helper/.toolWindow.db
generated
BIN
.idea/.cache/.Apifox_Helper/.toolWindow.db
generated
Binary file not shown.
2
.idea/misc.xml
generated
2
.idea/misc.xml
generated
@@ -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>
|
||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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,"用户已激活" );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -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"
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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: #文件存储配置
|
||||||
|
|||||||
@@ -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: #文件存储配置
|
||||||
|
|||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -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
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
vvpkassistant\ApplicationTests.class
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
E:\Code\java\vvPkAssistant\src\test\java\vvpkassistant\ApplicationTests.java
|
|
||||||
Binary file not shown.
Reference in New Issue
Block a user