From c3da7f7c352f971b79ff92dc7ab9580261fbeb44 Mon Sep 17 00:00:00 2001 From: xiang Date: Sun, 24 Aug 2025 16:23:29 +0800 Subject: [PATCH] =?UTF-8?q?feat:=E7=94=A8=E6=88=B7=E6=B3=A8=E5=86=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../xservice/auth/api/code/UserErrorCode.java | 20 +++++++++++++++++++ .../server/controller/TokenController.java | 14 ++++++++++++- .../server/controller/UserController.java | 9 ++++++++- .../config/AuthorizationServerConfig.java | 2 +- .../service/impl/XUserServiceImpl.java | 18 +++++++++-------- 5 files changed, 52 insertions(+), 11 deletions(-) create mode 100644 xs-api/src/main/java/com/xiang/xservice/auth/api/code/UserErrorCode.java diff --git a/xs-api/src/main/java/com/xiang/xservice/auth/api/code/UserErrorCode.java b/xs-api/src/main/java/com/xiang/xservice/auth/api/code/UserErrorCode.java new file mode 100644 index 0000000..20af566 --- /dev/null +++ b/xs-api/src/main/java/com/xiang/xservice/auth/api/code/UserErrorCode.java @@ -0,0 +1,20 @@ +package com.xiang.xservice.auth.api.code; + +import com.xiang.xservice.basic.exception.code.BaseErrorCode; +import lombok.AllArgsConstructor; +import lombok.Getter; + +@Getter +@AllArgsConstructor +public enum UserErrorCode implements BaseErrorCode { + + USER_NOT_EXISTS("A1000101", "用户不存在"), + USER_EXISTS("A1000102", "用户已存在"), + USER_LOGIN_ERROR("A1000103", "用户登录失败!"), + USER_REGISTER_ERROR("1000104", "用户注册失败!"), + ; + + private final String code; + private final String message; + +} diff --git a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/TokenController.java b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/TokenController.java index 22479d3..82983c3 100644 --- a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/TokenController.java +++ b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/TokenController.java @@ -4,7 +4,9 @@ import com.xiang.xservice.auth.api.dto.req.LoginRequest; import com.xiang.xservice.auth.api.dto.resp.LoginResp; import com.xiang.xservice.auth.service.service.XUserService; import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.exception.BusinessException; import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; @@ -12,6 +14,7 @@ import org.springframework.web.bind.annotation.RestController; import javax.validation.Valid; import javax.validation.constraints.NotNull; +@Slf4j @RestController @RequiredArgsConstructor public class TokenController { @@ -20,6 +23,15 @@ public class TokenController { @PostMapping("/public/auth/login") public Result login(@RequestBody @NotNull(message = "请求参数不能为空") @Valid LoginRequest request) { - return Result.success("操作成功", userService.login(request)); + try { + LoginResp login = userService.login(request); + return Result.success("操作成功", login); + } catch (BusinessException e) { + log.error("【用户登录】用户登录失败,{}", e.getMessage(), e); + return Result.error(e.getMessage()); + } catch (Exception e) { + log.error("【用户登录】用户登录失败,{}", e.getMessage(), e); + return Result.error(); + } } } diff --git a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/UserController.java b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/UserController.java index 4cd640b..c8362f1 100644 --- a/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/UserController.java +++ b/xs-server/src/main/java/com/xiang/xservice/auth/server/controller/UserController.java @@ -4,11 +4,15 @@ import com.xiang.xservice.auth.api.dto.req.RegisterRequest; import com.xiang.xservice.auth.api.dto.resp.RegisterResp; import com.xiang.xservice.auth.service.service.XUserService; import com.xiang.xservice.basic.common.resp.Result; +import com.xiang.xservice.basic.exception.BusinessException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; +import javax.validation.Valid; +import javax.validation.constraints.NotNull; import java.util.Objects; @Slf4j @@ -19,13 +23,16 @@ public class UserController { private final XUserService userService; @PostMapping("/public/user/userRegister") - public Result register(RegisterRequest request) { + public Result register(@RequestBody @Valid @NotNull(message = "请求参数不能为空") RegisterRequest request) { try { RegisterResp registerResp = userService.userRegister(request); if (Objects.nonNull(registerResp)) { return Result.success("操作成功", registerResp); } + } catch (BusinessException e) { + log.error("【用户注册】用户注册失败:{}", e.getMessage(), e); + return Result.error(e.getMessage()); } catch (Exception e) { log.error("【用户注册】用户注册失败:{}", e.getMessage(), e); } diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java index 45fbc2c..5b6b72b 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/config/AuthorizationServerConfig.java @@ -52,7 +52,7 @@ public class AuthorizationServerConfig { http .csrf().disable() // 禁用 CSRF .authorizeRequests(authorizeRequests -> authorizeRequests - .antMatchers("/public/auth/login").permitAll() + .antMatchers("/public/**").permitAll() .anyRequest().authenticated() ) .sessionManagement(session -> session.sessionCreationPolicy(SessionCreationPolicy.STATELESS)); diff --git a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java index 6c66cbd..67de061 100644 --- a/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java +++ b/xs-service/src/main/java/com/xiang/xservice/auth/service/service/impl/XUserServiceImpl.java @@ -1,5 +1,6 @@ package com.xiang.xservice.auth.service.service.impl; +import com.xiang.xservice.auth.api.code.UserErrorCode; import com.xiang.xservice.auth.api.dto.req.LoginRequest; import com.xiang.xservice.auth.api.dto.req.RegisterRequest; import com.xiang.xservice.auth.api.dto.resp.LoginResp; @@ -10,6 +11,7 @@ import com.xiang.xservice.auth.service.enums.UserStatusEnum; import com.xiang.xservice.auth.service.repository.mapper.XUserMapper; import com.xiang.xservice.auth.service.service.XUserService; import com.xiang.xservice.basic.enums.DelStatusEnum; +import com.xiang.xservice.basic.exception.BusinessException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.security.authentication.AuthenticationManager; @@ -45,8 +47,8 @@ public class XUserServiceImpl implements XUserService { ); SecurityContextHolder.getContext().setAuthentication(authenticate); } catch (Exception e) { - log.error(e.getMessage()); - throw new RuntimeException(e.getMessage()); + log.error("【用户登录】用户登录校验失败,{}", e.getMessage(), e); + throw new BusinessException(e.getMessage()); } // 生成 token @@ -73,7 +75,7 @@ public class XUserServiceImpl implements XUserService { public UserResp getUserByUsername(String username) { XUser user = userMapper.selectByUsername(username); if (Objects.isNull(user)) { - return null; + throw new BusinessException(UserErrorCode.USER_NOT_EXISTS); } UserResp userResp = new UserResp(); @@ -94,7 +96,7 @@ public class XUserServiceImpl implements XUserService { // todo 手机号验证码校验 XUser user = userMapper.selectByUsername(request.getUsername()); if (Objects.nonNull(user)) { - throw new RuntimeException("用户名已存在!"); + throw new BusinessException(UserErrorCode.USER_EXISTS); } user = new XUser(); user.setName(request.getName()); @@ -112,10 +114,10 @@ public class XUserServiceImpl implements XUserService { if (userMapper.insert(user) > 0) { RegisterResp registerResp = new RegisterResp(); - registerResp.setName(registerResp.getName()); - registerResp.setUsername(registerResp.getUsername()); - registerResp.setEmail(registerResp.getEmail()); - registerResp.setPhone(registerResp.getPhone()); + registerResp.setName(user.getName()); + registerResp.setUsername(user.getUsername()); + registerResp.setEmail(user.getEmail()); + registerResp.setPhone(user.getPhone()); return registerResp; } return null;