From 80d13257535377808880f9ddb1e8574b91235f9a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BC=A0=E6=9D=BE?= <8605635+zhang3064194730@user.noreply.gitee.com> Date: Sat, 8 Feb 2025 13:34:01 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E6=88=B7=E7=99=BB=E5=BD=95=E7=9B=B8?= =?UTF-8?q?=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/AuthorizationController.java | 19 ++++++++-- .../czg/controller/ShopInfoController.java | 12 +++++++ .../java/com/czg/config/SaTokenConfigure.java | 8 ++++- cash-service/account-service/pom.xml | 8 +++++ .../main/java/com/czg/dto/SysLoginDTO.java | 16 +++++++++ .../com/czg/service/AuthorizationService.java | 11 ++++++ .../impl/AuthorizationServiceImpl.java | 35 +++++++++++++++++++ pom.xml | 4 +++ 8 files changed, 109 insertions(+), 4 deletions(-) create mode 100644 cash-api/account-server/src/main/java/com/czg/controller/ShopInfoController.java create mode 100644 cash-service/account-service/src/main/java/com/czg/dto/SysLoginDTO.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/AuthorizationService.java create mode 100644 cash-service/account-service/src/main/java/com/czg/service/impl/AuthorizationServiceImpl.java diff --git a/cash-api/account-server/src/main/java/com/czg/controller/AuthorizationController.java b/cash-api/account-server/src/main/java/com/czg/controller/AuthorizationController.java index 8fafd845..e8a15718 100644 --- a/cash-api/account-server/src/main/java/com/czg/controller/AuthorizationController.java +++ b/cash-api/account-server/src/main/java/com/czg/controller/AuthorizationController.java @@ -1,6 +1,10 @@ package com.czg.controller; +import com.czg.dto.SysLoginDTO; +import com.czg.resp.CzgResult; import com.czg.sa.StpKit; +import com.czg.service.AuthorizationService; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; import org.springframework.web.bind.annotation.RequestMapping; @@ -12,10 +16,19 @@ import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("auth") public class AuthorizationController { + private final AuthorizationService authorizationService; + + public AuthorizationController(AuthorizationService authorizationService) { + this.authorizationService = authorizationService; + } + + @GetMapping("captcha") + public CzgResult captcha() { + return CzgResult.success(authorizationService.getCaptcha()); + } @PostMapping("login") - public void login() { - StpKit.USER.checkLogin(); - System.out.println(1); + public CzgResult login(@Validated SysLoginDTO loginDTO) { + return CzgResult.success(authorizationService.login(loginDTO)); } } diff --git a/cash-api/account-server/src/main/java/com/czg/controller/ShopInfoController.java b/cash-api/account-server/src/main/java/com/czg/controller/ShopInfoController.java new file mode 100644 index 00000000..7e770cc3 --- /dev/null +++ b/cash-api/account-server/src/main/java/com/czg/controller/ShopInfoController.java @@ -0,0 +1,12 @@ +package com.czg.controller; + +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author Administrator + */ +@RestController +@RequestMapping("shopInfo") +public class ShopInfoController { +} diff --git a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java index 8443e6be..9f61fb97 100644 --- a/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java +++ b/cash-common/cash-common-sa-token/src/main/java/com/czg/config/SaTokenConfigure.java @@ -3,11 +3,13 @@ package com.czg.config; import cn.dev33.satoken.SaManager; import cn.dev33.satoken.application.ApplicationInfo; import cn.dev33.satoken.config.SaTokenConfig; +import cn.dev33.satoken.context.SaHolder; import cn.dev33.satoken.interceptor.SaInterceptor; import cn.dev33.satoken.router.SaRouter; import cn.dev33.satoken.strategy.SaAnnotationStrategy; import com.czg.sa.StpKit; import jakarta.annotation.PostConstruct; +import lombok.extern.slf4j.Slf4j; import org.springframework.context.annotation.Configuration; import org.springframework.core.annotation.AnnotatedElementUtils; import org.springframework.web.servlet.config.annotation.InterceptorRegistry; @@ -17,6 +19,7 @@ import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; * @author Administrator */ @Configuration +@Slf4j public class SaTokenConfigure implements WebMvcConfigurer { @PostConstruct @@ -47,10 +50,13 @@ public class SaTokenConfigure implements WebMvcConfigurer { public void addInterceptors(InterceptorRegistry registry) { // 注册路由拦截器,自定义认证规则 registry.addInterceptor(new SaInterceptor(handler -> { + log.info(SaHolder.getRequest().getRequestPath()); // 重置根路径,防止satoken切割根路径导致匹配不到路径 ApplicationInfo.routePrefix = ""; - SaRouter.match("/admin/**").check(r -> StpKit.ADMIN.checkLogin()); + SaRouter.match("/admin/**") + .notMatch("/admin/auth/**") + .check(r -> StpKit.ADMIN.checkLogin()); SaRouter.match("/user/**").check(r -> StpKit.USER.checkLogin()); })).addPathPatterns("/**"); diff --git a/cash-service/account-service/pom.xml b/cash-service/account-service/pom.xml index ed5318cc..2d8fcab5 100644 --- a/cash-service/account-service/pom.xml +++ b/cash-service/account-service/pom.xml @@ -18,7 +18,15 @@ + + com.github.whvcse + easy-captcha + + + com.czg + cash-common-tools + diff --git a/cash-service/account-service/src/main/java/com/czg/dto/SysLoginDTO.java b/cash-service/account-service/src/main/java/com/czg/dto/SysLoginDTO.java new file mode 100644 index 00000000..e7c86470 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/dto/SysLoginDTO.java @@ -0,0 +1,16 @@ +package com.czg.dto; + +import jakarta.validation.constraints.NotEmpty; + +public record SysLoginDTO( + @NotEmpty(message = "用户名不为空") + String username, + @NotEmpty(message = "密码不为空") + String password, + @NotEmpty(message = "验证码不为空") + String code, + @NotEmpty(message = "uid不为空") + String uuid, + String staffName +) { +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/AuthorizationService.java b/cash-service/account-service/src/main/java/com/czg/service/AuthorizationService.java new file mode 100644 index 00000000..b88223e4 --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/AuthorizationService.java @@ -0,0 +1,11 @@ +package com.czg.service; + + +/** + * @author Administrator + */ +public interface AuthorizationService { + Object getCaptcha(); + + Object login(com.czg.dto.SysLoginDTO loginDTO); +} diff --git a/cash-service/account-service/src/main/java/com/czg/service/impl/AuthorizationServiceImpl.java b/cash-service/account-service/src/main/java/com/czg/service/impl/AuthorizationServiceImpl.java new file mode 100644 index 00000000..22eee7dc --- /dev/null +++ b/cash-service/account-service/src/main/java/com/czg/service/impl/AuthorizationServiceImpl.java @@ -0,0 +1,35 @@ +package com.czg.service.impl; + +import cn.hutool.core.util.IdUtil; +import com.czg.dto.SysLoginDTO; +import com.czg.service.AuthorizationService; +import com.wf.captcha.SpecCaptcha; +import org.springframework.stereotype.Service; + +import java.util.Map; + +/** + * @author Administrator + */ +@Service +public class AuthorizationServiceImpl implements AuthorizationService { + @Override + public Object getCaptcha() { + // 生成验证码(130x48,4位字符) + SpecCaptcha captcha = new SpecCaptcha(130, 48, 4); + + // 获取验证码文本 + String code = captcha.text(); + + // 生成唯一的验证码 ID + String captchaKey = IdUtil.randomUUID(); + + // 返回 Base64 格式验证码 + return Map.of("code", captcha.toBase64(), "uuid", captchaKey); + } + + @Override + public Object login(SysLoginDTO loginDTO) { + return null; + } +} diff --git a/pom.xml b/pom.xml index 9d142fba..dc28a3b3 100644 --- a/pom.xml +++ b/pom.xml @@ -66,6 +66,10 @@ + + org.springframework.boot + spring-boot-starter-validation + net.minidev json-smart