From df80ca69686a5d9d135fae89f64959289e6875ab Mon Sep 17 00:00:00 2001 From: ikmkj <1@qq,com> Date: Fri, 1 Aug 2025 20:06:13 +0800 Subject: [PATCH] =?UTF-8?q?feat(auth):=20=E4=BC=98=E5=8C=96=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E5=8A=9F=E8=83=BD=E5=B9=B6=E6=B7=BB=E5=8A=A0=E6=B3=A8?= =?UTF-8?q?=E5=86=8C=E5=BC=82=E5=B8=B8=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增 RegistrationException 类用于处理注册相关的异常 - 在全局异常处理器中添加 RegistrationException 的处理逻辑 - 修改用户服务中的注册逻辑,当用户名或邮箱已存在时抛出 RegistrationException - 更新注册码实体类,将日期时间字段改为字符串类型 - 调整注册码生成和验证逻辑,使用字符串格式的日期时间 --- .../common/advice/GlobalExceptionHandler.java | 11 ++++- .../exception/RegistrationException.java | 7 +++ .../bijihoudaun/entity/RegistrationCode.java | 45 ++++++++++++++++-- .../impl/RegistrationCodeServiceImpl.java | 9 ++-- .../service/impl/UserServiceImpl.java | 7 +-- mydatabase.db | Bin 57344 -> 57344 bytes 6 files changed, 69 insertions(+), 10 deletions(-) create mode 100644 biji-houdaun/src/main/java/com/test/bijihoudaun/common/exception/RegistrationException.java diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/common/advice/GlobalExceptionHandler.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/common/advice/GlobalExceptionHandler.java index d8e99fa..dbe315e 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/common/advice/GlobalExceptionHandler.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/common/advice/GlobalExceptionHandler.java @@ -1,7 +1,7 @@ package com.test.bijihoudaun.common.advice; import com.test.bijihoudaun.common.exception.BaseException; - +import com.test.bijihoudaun.common.exception.RegistrationException; import com.test.bijihoudaun.common.response.R; import com.test.bijihoudaun.common.response.ResultCode; import jakarta.servlet.http.HttpServletRequest; @@ -33,6 +33,15 @@ public class GlobalExceptionHandler { return R.fail(e.getResultCode().getCode(), e.getMessage()); } + /** + * 处理注册异常 + */ + @ExceptionHandler(RegistrationException.class) + public R handleRegistrationException(RegistrationException e) { + log.warn("Registration attempt failed: {}", e.getMessage()); + return R.fail(e.getMessage()); + } + /** * 处理文件大小超出限制异常 */ diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/common/exception/RegistrationException.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/common/exception/RegistrationException.java new file mode 100644 index 0000000..305c318 --- /dev/null +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/common/exception/RegistrationException.java @@ -0,0 +1,7 @@ +package com.test.bijihoudaun.common.exception; + +public class RegistrationException extends RuntimeException { + public RegistrationException(String message) { + super(message); + } +} \ No newline at end of file diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/RegistrationCode.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/RegistrationCode.java index 2fd66c1..5fda906 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/RegistrationCode.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/entity/RegistrationCode.java @@ -7,7 +7,6 @@ import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import java.io.Serializable; -import java.time.LocalDateTime; @Data @TableName("registration_codes") @@ -24,11 +23,51 @@ public class RegistrationCode implements Serializable { private String code; @Schema(description = "过期时间", name = "expiryTime") - private LocalDateTime expiryTime; + private String expiryTime; @Schema(description = "创建者", name = "createdBy") private String createdBy; @Schema(description = "创建时间", name = "createdAt") - private LocalDateTime createdAt; + private String createdAt; + + public Long getId() { + return id; + } + + public void setId(Long id) { + this.id = id; + } + + public String getCode() { + return code; + } + + public void setCode(String code) { + this.code = code; + } + + public String getExpiryTime() { + return expiryTime; + } + + public void setExpiryTime(String expiryTime) { + this.expiryTime = expiryTime; + } + + public String getCreatedBy() { + return createdBy; + } + + public void setCreatedBy(String createdBy) { + this.createdBy = createdBy; + } + + public String getCreatedAt() { + return createdAt; + } + + public void setCreatedAt(String createdAt) { + this.createdAt = createdAt; + } } \ No newline at end of file diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/RegistrationCodeServiceImpl.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/RegistrationCodeServiceImpl.java index a81b142..0a0c7b9 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/RegistrationCodeServiceImpl.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/RegistrationCodeServiceImpl.java @@ -10,6 +10,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.time.LocalDateTime; +import java.time.format.DateTimeFormatter; import java.util.UUID; @Service @@ -21,7 +22,8 @@ public class RegistrationCodeServiceImpl extends ServiceImpl().lt("expiry_time", LocalDateTime.now())); + remove(new QueryWrapper().lt("expiry_time", LocalDateTime.now().toString())); } } \ No newline at end of file diff --git a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/UserServiceImpl.java b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/UserServiceImpl.java index 3aa3991..08114ec 100644 --- a/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/UserServiceImpl.java +++ b/biji-houdaun/src/main/java/com/test/bijihoudaun/service/impl/UserServiceImpl.java @@ -3,6 +3,7 @@ package com.test.bijihoudaun.service.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import com.test.bijihoudaun.common.exception.RegistrationException; import com.test.bijihoudaun.entity.User; import com.test.bijihoudaun.mapper.UserMapper; import com.test.bijihoudaun.service.UserService; @@ -40,18 +41,18 @@ public class UserServiceImpl extends ServiceImpl implements Us LambdaQueryWrapper queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getUsername, username); if (this.count(queryWrapper) > 0) { - return null; + throw new RegistrationException("用户名已存在"); } queryWrapper = new LambdaQueryWrapper<>(); queryWrapper.eq(User::getEmail, email); if (this.count(queryWrapper) > 0) { - return null; + throw new RegistrationException("电子邮箱已被注册"); } User user = new User(); user.setUsername(username); user.setPassword(encrypt); user.setEmail(email); - user.setCreatedAt(new Date()); + // user.setCreatedAt(new Date()); // Let the database handle the default value userMapper.insert(user); return user; } diff --git a/mydatabase.db b/mydatabase.db index 10d7cb1e6130c3e52f33fe67cb6077349e35bc06..dbd2657b9a399672552b8b6489a03baecbffc8de 100644 GIT binary patch delta 265 zcmZoTz}#?vd4e?Kt%)+ujJGx>l-M(}ZoX=-Z@|UGuff1Si(iB9$7Vr;H+++S)#=q2 zuyQeoHnK7p8#6GJ7N-`e7$vG08mNRO`&DFHR+#0PmWB8PdlZCwWf+F}`xrSo=ao9= z`kQ7~7#n6(xFsjKhZ$uVItNx|=DDRB85o)B8d&HW7%CVVSs9pG8JS@bN@3w*5C_`G z3bZkC^78svpu65O@PFff%l~+@pu-J*0a*qx;9wSI1UZRy^S6FJ0X7B!1_u7kKox8F l8GSczU+=2`5qbj@dde>-VvuT>Y-Ez0VrgJ$VPcqU1^@v7Ng)6L delta 146 zcmZoTz}#?vd4e?KjfpbOj5jtWl-M(}Y`$u*Z@|UKKZ}8X7T*uPADaaY-tbNSRi`&` zLDA${^;tlvZw&n3_#g8>-Yn>FgI_?F0Tpci*3T!v#>l^!fqyel#Y%n_Z$>tT&D+=e lDgZ^_Fz~+tiaz2O5oXrqG)Of}HZn<0u{5x>FfmLv0|4SdEEWI&