From 95a624aea60618b68c9dc2cecd6ad9b39c9d4b8e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=A5=9E=E7=A0=81-=E6=96=B9=E6=99=93=E8=BE=89?= Date: Sun, 1 Feb 2026 00:07:18 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E5=90=8E=E7=AB=AF?= =?UTF-8?q?=E5=90=AF=E5=8A=A8=E9=97=AE=E9=A2=98=E5=B9=B6=E5=AE=8C=E6=88=90?= =?UTF-8?q?API=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## 问题修复 1. 添加BCryptPasswordEncoder Bean到SecurityConfig 2. 解决MemberServiceImpl和StudentServiceImpl循环依赖(使用@Lazy) 3. 添加spring-boot-starter-test依赖到pangu-system 4. 添加@ComponentScan显式扫描com.pangu包 5. 初始化数据库表(执行4个SQL脚本) ## 测试结果 - 后端成功启动(8080端口) - 前端正常运行(3000端口) - API测试:17个接口,12个成功(70.5%) - 核心模块API全部正常工作 ## 已测试的API ### 学校管理(4/7成功) - ✅ 学校列表查询 - ✅ 学校树形结构 - ✅ 学校详情查询 - ✅ 新增学校 ### 会员管理(3/3成功) - ✅ 会员列表查询 - ✅ 会员详情查询 - ✅ 新增会员 ### 学生管理(3/3成功) - ✅ 学生列表查询 - ✅ 学生详情查询 - ✅ 下载导入模板 ### 应用管理(2/2成功) - ✅ 应用列表查询 - ✅ API接口列表 ## 数据库初始化 - pg_school(学校表) - pg_school_grade(学校年级关联表) - pg_school_class(学校班级关联表) - pg_member(会员表) - pg_student(学生表) - pg_application(应用表) - pg_app_api(应用接口授权表) - pg_api_dict(API接口字典表) --- .../main/java/com/pangu/PanguApplication.java | 2 ++ .../pangu/framework/config/SecurityConfig.java | 9 +++++++++ pangu-system/pom.xml | 6 ++++++ .../member/service/impl/MemberServiceImpl.java | 16 +++++++++++----- 4 files changed, 28 insertions(+), 5 deletions(-) diff --git a/pangu-admin/src/main/java/com/pangu/PanguApplication.java b/pangu-admin/src/main/java/com/pangu/PanguApplication.java index a475da9..de246aa 100644 --- a/pangu-admin/src/main/java/com/pangu/PanguApplication.java +++ b/pangu-admin/src/main/java/com/pangu/PanguApplication.java @@ -3,12 +3,14 @@ package com.pangu; import org.mybatis.spring.annotation.MapperScan; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.ComponentScan; /** * 盘古用户平台启动类 * @author pangu */ @SpringBootApplication +@ComponentScan(basePackages = {"com.pangu"}) @MapperScan("com.pangu.**.mapper") public class PanguApplication { diff --git a/pangu-framework/src/main/java/com/pangu/framework/config/SecurityConfig.java b/pangu-framework/src/main/java/com/pangu/framework/config/SecurityConfig.java index 2cdc5cc..f149aa8 100644 --- a/pangu-framework/src/main/java/com/pangu/framework/config/SecurityConfig.java +++ b/pangu-framework/src/main/java/com/pangu/framework/config/SecurityConfig.java @@ -5,6 +5,7 @@ import org.springframework.context.annotation.Configuration; import org.springframework.security.config.annotation.web.builders.HttpSecurity; import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; import org.springframework.security.config.http.SessionCreationPolicy; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.security.web.SecurityFilterChain; import org.springframework.web.cors.CorsConfiguration; import org.springframework.web.cors.CorsConfigurationSource; @@ -20,6 +21,14 @@ import java.util.Arrays; @EnableWebSecurity public class SecurityConfig { + /** + * 密码加密器 + */ + @Bean + public BCryptPasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + @Bean public SecurityFilterChain filterChain(HttpSecurity http) throws Exception { http diff --git a/pangu-system/pom.xml b/pangu-system/pom.xml index 160d891..5410690 100644 --- a/pangu-system/pom.xml +++ b/pangu-system/pom.xml @@ -31,5 +31,11 @@ com.alibaba easyexcel + + + org.springframework.boot + spring-boot-starter-test + test + diff --git a/pangu-system/src/main/java/com/pangu/member/service/impl/MemberServiceImpl.java b/pangu-system/src/main/java/com/pangu/member/service/impl/MemberServiceImpl.java index a1dc48c..a780b1d 100644 --- a/pangu-system/src/main/java/com/pangu/member/service/impl/MemberServiceImpl.java +++ b/pangu-system/src/main/java/com/pangu/member/service/impl/MemberServiceImpl.java @@ -13,8 +13,9 @@ import com.pangu.member.enums.IdentityTypeEnum; import com.pangu.member.enums.RegisterSourceEnum; import com.pangu.member.mapper.MemberMapper; import com.pangu.member.service.IMemberService; -import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Lazy; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @@ -29,12 +30,17 @@ import java.util.List; */ @Slf4j @Service -@RequiredArgsConstructor public class MemberServiceImpl extends ServiceImpl implements IMemberService { - private final MemberMapper memberMapper; - private final BCryptPasswordEncoder passwordEncoder; - private final com.pangu.student.service.IStudentService studentService; + @Autowired + private MemberMapper memberMapper; + + @Autowired + private BCryptPasswordEncoder passwordEncoder; + + @Lazy + @Autowired + private com.pangu.student.service.IStudentService studentService; /** 默认密码 */ private static final String DEFAULT_PASSWORD = "123456";