fix(character): 防止用户重复添加相同键盘人设
在添加人设前检查是否已存在,若存在则抛REPEATEDLY_ADDING_CHARACTER异常; 同时移除实体中冗余sort字段,并统一发送验证码DTO为SendMailDTO。
This commit is contained in:
@@ -35,7 +35,8 @@ public enum ErrorCode {
|
||||
CONFIRM_PASSWORD_NOT_MATCH(50005,"重复密码不匹配" ),
|
||||
USER_CHARACTER_ADD_ERROR(50006,"添加用户键盘字符失败" ),
|
||||
USER_CHARACTER_DEL_ERROR(50007, "删除用户人设失败"),
|
||||
VERIFY_CODE_ERROR(50008, "验证码错误");
|
||||
VERIFY_CODE_ERROR(50008, "验证码错误"),
|
||||
REPEATEDLY_ADDING_CHARACTER(50009, "重复添加键盘人设");
|
||||
/**
|
||||
* 状态码
|
||||
*/
|
||||
|
||||
@@ -6,6 +6,7 @@ import com.yolo.keyborad.common.BaseResponse;
|
||||
import com.yolo.keyborad.common.ResultUtils;
|
||||
import com.yolo.keyborad.model.dto.AppleLoginReq;
|
||||
import com.yolo.keyborad.model.dto.user.KeyboardUserReq;
|
||||
import com.yolo.keyborad.model.dto.user.SendMailDTO;
|
||||
import com.yolo.keyborad.model.dto.user.UserLoginDTO;
|
||||
import com.yolo.keyborad.model.dto.user.UserRegisterDTO;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
@@ -89,8 +90,8 @@ public class UserController {
|
||||
|
||||
@PostMapping("/sendVerifyMail")
|
||||
@Operation(summary = "发送验证码",description = "发送验证码接口")
|
||||
public BaseResponse<Boolean> sendVerifyMail(@RequestBody UserRegisterDTO userRegisterDTO) {
|
||||
userService.sendVerifyMail(userRegisterDTO);
|
||||
public BaseResponse<Boolean> sendVerifyMail(@RequestBody SendMailDTO mailDTO) {
|
||||
userService.sendVerifyMail(mailDTO);
|
||||
return ResultUtils.success(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -47,7 +47,4 @@ public class KeyboardUserCharacter {
|
||||
@Schema(description = "emoji")
|
||||
private String emoji;
|
||||
|
||||
@TableField(value = "sort")
|
||||
@Schema(description = "展示顺序")
|
||||
private List<Integer> sort;
|
||||
}
|
||||
@@ -2,6 +2,7 @@ package com.yolo.keyborad.service;
|
||||
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import com.yolo.keyborad.model.dto.user.KeyboardUserReq;
|
||||
import com.yolo.keyborad.model.dto.user.SendMailDTO;
|
||||
import com.yolo.keyborad.model.dto.user.UserLoginDTO;
|
||||
import com.yolo.keyborad.model.dto.user.UserRegisterDTO;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
@@ -23,5 +24,5 @@ public interface UserService extends IService<KeyboardUser> {
|
||||
|
||||
Boolean userRegister(UserRegisterDTO userRegisterDTO);
|
||||
|
||||
void sendVerifyMail(UserRegisterDTO userRegisterDTO);
|
||||
void sendVerifyMail(SendMailDTO userRegisterDTO);
|
||||
}
|
||||
|
||||
@@ -104,7 +104,12 @@ public class KeyboardCharacterServiceImpl extends ServiceImpl<KeyboardCharacterM
|
||||
KeyboardUserCharacter keyboardUserCharacter = BeanUtil.copyProperties(addDTO, KeyboardUserCharacter.class);
|
||||
long userId = StpUtil.getLoginIdAsLong();
|
||||
keyboardUserCharacter.setUserId(userId);
|
||||
|
||||
KeyboardUserCharacter alreadyExistsCharacter = keyboardUserCharacterMapper.selectOne(new LambdaQueryWrapper<KeyboardUserCharacter>()
|
||||
.eq(KeyboardUserCharacter::getCharacterId, addDTO.getCharacterId())
|
||||
.eq(KeyboardUserCharacter::getDeleted, false));
|
||||
if (alreadyExistsCharacter != null){
|
||||
throw new BusinessException(ErrorCode.REPEATEDLY_ADDING_CHARACTER);
|
||||
}
|
||||
int insert = keyboardUserCharacterMapper.insert(keyboardUserCharacter);
|
||||
if (insert != 1) {
|
||||
log.error("用户人设添加失败, userId={}");
|
||||
|
||||
@@ -11,6 +11,7 @@ import com.yolo.keyborad.common.ErrorCode;
|
||||
import com.yolo.keyborad.exception.BusinessException;
|
||||
import com.yolo.keyborad.mapper.KeyboardUserMapper;
|
||||
import com.yolo.keyborad.model.dto.user.KeyboardUserReq;
|
||||
import com.yolo.keyborad.model.dto.user.SendMailDTO;
|
||||
import com.yolo.keyborad.model.dto.user.UserLoginDTO;
|
||||
import com.yolo.keyborad.model.dto.user.UserRegisterDTO;
|
||||
import com.yolo.keyborad.model.entity.KeyboardUser;
|
||||
@@ -73,7 +74,6 @@ public class UserServiceImpl extends ServiceImpl<KeyboardUserMapper, KeyboardUse
|
||||
KeyboardUser keyboardUser = keyboardUserMapper.selectOne(
|
||||
new LambdaQueryWrapper<KeyboardUser>()
|
||||
.eq(KeyboardUser::getEmail, userLoginDTO.getMail())
|
||||
.eq(KeyboardUser::getPassword, userLoginDTO.getPassword())
|
||||
.eq(KeyboardUser::getStatus, false));
|
||||
if (keyboardUser == null) {
|
||||
throw new BusinessException(ErrorCode.USER_NOT_FOUND);
|
||||
@@ -126,9 +126,9 @@ public class UserServiceImpl extends ServiceImpl<KeyboardUserMapper, KeyboardUse
|
||||
}
|
||||
|
||||
@Override
|
||||
public void sendVerifyMail(UserRegisterDTO userRegisterDTO) {
|
||||
public void sendVerifyMail(SendMailDTO mailDTO) {
|
||||
int code = RandomUtil.randomInt(100000, 999999);
|
||||
redisUtil.setEx("user:"+userRegisterDTO.getMailAddress(), String.valueOf(code),600, TimeUnit.SECONDS);
|
||||
sendMailUtils.sendEmail(null,userRegisterDTO.getMailAddress(),code);
|
||||
redisUtil.setEx("user:"+mailDTO.getMailAddress(), String.valueOf(code),600, TimeUnit.SECONDS);
|
||||
sendMailUtils.sendEmail(null,mailDTO.getMailAddress(),code);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user