diff --git a/gym-manage-api/gym-groupCourse/.mvn/wrapper/maven-wrapper.properties b/gym-manage-api/gym-groupCourse/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..5291372
--- /dev/null
+++ b/gym-manage-api/gym-groupCourse/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,3 @@
+wrapperVersion=3.3.4
+distributionType=only-script
+distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.15/apache-maven-3.9.15-bin.zip
diff --git a/gym-manage-api/gym-groupCourse/pom.xml b/gym-manage-api/gym-groupCourse/pom.xml
new file mode 100644
index 0000000..3fc53bb
--- /dev/null
+++ b/gym-manage-api/gym-groupCourse/pom.xml
@@ -0,0 +1,81 @@
+
+
+ 4.0.0
+
+ cn.novalon.gym.manage
+ gym-manage-api
+ 1.0.0
+ ../pom.xml
+
+ cn.novalon.gym.manage
+ gym-groupCourse
+ 1.0.0
+ gym-groupCourse
+ Group Course Management Module
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ 21
+
+
+
+ cn.novalon.gym.manage
+ manage-common
+ ${project.version}
+
+
+ cn.novalon.gym.manage
+ manage-db
+ ${project.version}
+
+
+ org.springframework.boot
+ spring-boot-starter-webflux
+
+
+ org.springframework.boot
+ spring-boot-starter-data-r2dbc
+
+
+ org.springframework.boot
+ spring-boot-starter-validation
+
+
+ org.springdoc
+ springdoc-openapi-starter-webflux-ui
+
+
+ org.springframework.boot
+ spring-boot-starter-test
+ test
+
+
+ io.swagger.core.v3
+ swagger-annotations-jakarta
+ 2.2.43
+ compile
+
+
+
+
+
+
+ org.springframework.boot
+ spring-boot-maven-plugin
+
+
+
+
+
diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/converter/GroupCourseConverter.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/converter/GroupCourseConverter.java
similarity index 81%
rename from gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/converter/GroupCourseConverter.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/converter/GroupCourseConverter.java
index 87b66ad..34e66c4 100644
--- a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/converter/GroupCourseConverter.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/converter/GroupCourseConverter.java
@@ -1,11 +1,9 @@
-package cn.novalon.gym.manage.db.converter;/*
- * @author:liwentao
- * @date:2026/4/26-04-26-13:18
- */
+
+package cn.novalon.gym.manage.groupcourse.converter;
import cn.hutool.core.bean.BeanUtil;
-import cn.novalon.gym.manage.db.entity.GroupCourseEntity;
-import cn.novalon.gym.manage.sys.core.domain.GroupCourse;
+import cn.novalon.gym.manage.groupcourse.domain.GroupCourse;
+import cn.novalon.gym.manage.groupcourse.entity.GroupCourseEntity;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Component;
@@ -44,11 +42,11 @@ public class GroupCourseConverter {
.collect(Collectors.toList());
}
- public List toEntityList(List groupCourses){
- if (groupCourses == null) {
+ public List toEntityList(List domains){
+ if (domains == null) {
return null;
}
- return groupCourses.stream()
+ return domains.stream()
.map(this::toEntity)
.collect(Collectors.toList());
}
diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/dao/GroupCourseDao.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/dao/GroupCourseDao.java
similarity index 69%
rename from gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/dao/GroupCourseDao.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/dao/GroupCourseDao.java
index 0855162..688e2a6 100644
--- a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/dao/GroupCourseDao.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/dao/GroupCourseDao.java
@@ -1,7 +1,7 @@
-package cn.novalon.gym.manage.db.dao;
-import cn.novalon.gym.manage.db.entity.GroupCourseEntity;
-import cn.novalon.gym.manage.db.entity.SysUserEntity;
+package cn.novalon.gym.manage.groupcourse.dao;
+
+import cn.novalon.gym.manage.groupcourse.entity.GroupCourseEntity;
import org.springframework.data.domain.Sort;
import org.springframework.data.r2dbc.repository.R2dbcRepository;
import org.springframework.stereotype.Repository;
@@ -9,7 +9,7 @@ import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@Repository
-public interface GroupCourseDao extends R2dbcRepository {
+public interface GroupCourseDao extends R2dbcRepository {
Mono findByIdIsAndDeletedAtIsNull(Long id);
diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GroupCourse.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/domain/GroupCourse.java
similarity index 93%
rename from gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GroupCourse.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/domain/GroupCourse.java
index 11b9949..ca40da8 100644
--- a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/domain/GroupCourse.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/domain/GroupCourse.java
@@ -1,15 +1,11 @@
-package cn.novalon.gym.manage.sys.core.domain;
-/**
- * @author:liwentao
- * @date:2026/4/26-04-26-13:20
- */
+package cn.novalon.gym.manage.groupcourse.domain;
+
+import cn.novalon.gym.manage.sys.core.domain.BaseDomain;
import io.swagger.v3.oas.annotations.media.Schema;
-import org.springframework.data.relational.core.mapping.Column;
import java.time.LocalDateTime;
-import java.util.Date;
-@Schema(description = "")
+
public class GroupCourse extends BaseDomain{
//课程名称
diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GroupCourseEntity.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/entity/GroupCourseEntity.java
similarity index 95%
rename from gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GroupCourseEntity.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/entity/GroupCourseEntity.java
index 67cc612..9ab5328 100644
--- a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GroupCourseEntity.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/entity/GroupCourseEntity.java
@@ -1,15 +1,11 @@
-package cn.novalon.gym.manage.db.entity;
-/**
- * @author:liwentao
- * @date:2026/4/25-04-25-17:34
- * 团课表
- */
+package cn.novalon.gym.manage.groupcourse.entity;
+
+import cn.novalon.gym.manage.db.entity.BaseEntity;
import org.springframework.data.relational.core.mapping.Column;
import org.springframework.data.relational.core.mapping.Table;
import java.time.LocalDateTime;
-import java.util.Date;
@Table("group_course")
public class GroupCourseEntity extends BaseEntity {
diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/handler/groupCourse/GroupCourseHandler.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/handler/GroupCourseHandler.java
similarity index 67%
rename from gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/handler/groupCourse/GroupCourseHandler.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/handler/GroupCourseHandler.java
index b439351..920786f 100644
--- a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/handler/groupCourse/GroupCourseHandler.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/handler/GroupCourseHandler.java
@@ -1,7 +1,8 @@
-package cn.novalon.gym.manage.sys.handler.groupCourse;
-import cn.novalon.gym.manage.sys.core.domain.GroupCourse;
-import cn.novalon.gym.manage.sys.core.service.IGroupCourseService;
+package cn.novalon.gym.manage.groupcourse.handler;
+
+import cn.novalon.gym.manage.groupcourse.domain.GroupCourse;
+import cn.novalon.gym.manage.groupcourse.service.IGroupCourseService;
import io.swagger.v3.oas.annotations.Operation;
import io.swagger.v3.oas.annotations.tags.Tag;
import jakarta.validation.Validator;
@@ -10,31 +11,28 @@ import org.springframework.web.reactive.function.server.ServerRequest;
import org.springframework.web.reactive.function.server.ServerResponse;
import reactor.core.publisher.Mono;
-/**
- * @author:liwentao
- * @date:2026/4/26-04-26-14:30
- */
@Component
@Tag(name="团课管理",description = "团课相关操作")
public class GroupCourseHandler {
private final IGroupCourseService groupCourseService;
private final Validator validator;
- public GroupCourseHandler(IGroupCourseService groupCourseService,Validator validator){
+
+ public GroupCourseHandler(IGroupCourseService groupCourseService, Validator validator){
this.groupCourseService = groupCourseService;
this.validator = validator;
}
- @Operation(summary = "获取所有用户", description = "获取系统中所有用户列表")
+ @Operation(summary = "获取所有团课", description = "获取系统中所有团课列表")
public Mono getAllGroupCourse(ServerRequest request){
boolean includeDeleted = Boolean.valueOf(request.queryParam("includeDeleted").orElse("false"));
return ServerResponse.ok()
.body(groupCourseService.findAll(includeDeleted), GroupCourse.class);
}
+ @Operation(summary = "根据ID获取团课", description = "根据ID获取团课详情")
public Mono getGroupCourseById(ServerRequest request){
Long id = Long.valueOf(request.pathVariable("id"));
- return groupCourseService.findById(id)
- .flatMap(groupCourse -> ServerResponse.ok().bodyValue(groupCourse))
- .switchIfEmpty(ServerResponse.notFound().build());
+ return ServerResponse.ok()
+ .body(groupCourseService.findById(id), GroupCourse.class);
}
}
diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/repository/IGroupCourseRepository.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/repository/IGroupCourseRepository.java
similarity index 77%
rename from gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/repository/IGroupCourseRepository.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/repository/IGroupCourseRepository.java
index 2d020d4..4ade673 100644
--- a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/repository/IGroupCourseRepository.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/repository/IGroupCourseRepository.java
@@ -1,6 +1,7 @@
-package cn.novalon.gym.manage.sys.core.repository;
-import cn.novalon.gym.manage.sys.core.domain.GroupCourse;
+package cn.novalon.gym.manage.groupcourse.repository;
+
+import cn.novalon.gym.manage.groupcourse.domain.GroupCourse;
import org.springframework.data.domain.Sort;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/repository/GroupCourseRepository.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/repository/impl/GroupCourseRepository.java
similarity index 77%
rename from gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/repository/GroupCourseRepository.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/repository/impl/GroupCourseRepository.java
index d4846b9..5c11325 100644
--- a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/repository/GroupCourseRepository.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/repository/impl/GroupCourseRepository.java
@@ -1,26 +1,23 @@
-package cn.novalon.gym.manage.db.repository;
-import cn.novalon.gym.manage.db.converter.GroupCourseConverter;
-import cn.novalon.gym.manage.db.dao.GroupCourseDao;
-import cn.novalon.gym.manage.sys.core.domain.GroupCourse;
-import cn.novalon.gym.manage.sys.core.repository.IGroupCourseRepository;
+package cn.novalon.gym.manage.groupcourse.repository.impl;
+
+import cn.novalon.gym.manage.groupcourse.converter.GroupCourseConverter;
+import cn.novalon.gym.manage.groupcourse.dao.GroupCourseDao;
+import cn.novalon.gym.manage.groupcourse.domain.GroupCourse;
+import cn.novalon.gym.manage.groupcourse.repository.IGroupCourseRepository;
import org.springframework.data.domain.Sort;
import org.springframework.data.r2dbc.core.R2dbcEntityTemplate;
import org.springframework.stereotype.Repository;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
-/**
- * @author:liwentao
- * @date:2026/4/26-04-26-14:16
- */
@Repository
public class GroupCourseRepository implements IGroupCourseRepository {
private final GroupCourseDao groupCourseDao;
private final GroupCourseConverter groupCourseConverter;
private final R2dbcEntityTemplate r2dbcEntityTemplate;
- public GroupCourseRepository(GroupCourseDao groupCourseDao,GroupCourseConverter groupCourseConverter,
+ public GroupCourseRepository(GroupCourseDao groupCourseDao, GroupCourseConverter groupCourseConverter,
R2dbcEntityTemplate r2dbcEntityTemplate){
this.groupCourseDao = groupCourseDao;
this.groupCourseConverter = groupCourseConverter;
@@ -39,6 +36,7 @@ public class GroupCourseRepository implements IGroupCourseRepository {
.map(groupCourseConverter::toDomain);
}
+ @Override
public Flux findAll(Sort sort) {
return groupCourseDao.findAll(sort)
.map(groupCourseConverter::toDomain);
@@ -50,6 +48,7 @@ public class GroupCourseRepository implements IGroupCourseRepository {
.map(groupCourseConverter::toDomain);
}
+ @Override
public Flux findByDeletedAtIsNull(Sort sort) {
return groupCourseDao.findAllByDeletedAtIsNull(sort)
.map(groupCourseConverter::toDomain);
diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/IGroupCourseService.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/service/IGroupCourseService.java
similarity index 68%
rename from gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/IGroupCourseService.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/service/IGroupCourseService.java
index 28efd2e..d43b396 100644
--- a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/IGroupCourseService.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/service/IGroupCourseService.java
@@ -1,6 +1,7 @@
-package cn.novalon.gym.manage.sys.core.service;
-import cn.novalon.gym.manage.sys.core.domain.GroupCourse;
+package cn.novalon.gym.manage.groupcourse.service;
+
+import cn.novalon.gym.manage.groupcourse.domain.GroupCourse;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
diff --git a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/GroupCourseService.java b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/service/impl/GroupCourseService.java
similarity index 63%
rename from gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/GroupCourseService.java
rename to gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/service/impl/GroupCourseService.java
index 2b1fcbf..6e409e3 100644
--- a/gym-manage-api/manage-sys/src/main/java/cn/novalon/gym/manage/sys/core/service/impl/GroupCourseService.java
+++ b/gym-manage-api/gym-groupCourse/src/main/java/cn/novalon/gym/manage/groupcourse/service/impl/GroupCourseService.java
@@ -1,24 +1,19 @@
-package cn.novalon.gym.manage.sys.core.service.impl;
-import cn.novalon.gym.manage.sys.audit.service.IAuditLogService;
-import cn.novalon.gym.manage.sys.core.domain.GroupCourse;
-import cn.novalon.gym.manage.sys.core.repository.IGroupCourseRepository;
-import cn.novalon.gym.manage.sys.core.service.IGroupCourseService;
+package cn.novalon.gym.manage.groupcourse.service.impl;
+
+import cn.novalon.gym.manage.groupcourse.domain.GroupCourse;
+import cn.novalon.gym.manage.groupcourse.repository.IGroupCourseRepository;
+import cn.novalon.gym.manage.groupcourse.service.IGroupCourseService;
import org.springframework.stereotype.Service;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
-/**
- * @author:liwentao
- * @date:2026/4/26-04-26-14:12
- */
@Service
public class GroupCourseService implements IGroupCourseService {
private final IGroupCourseRepository groupCourseRepository;
- private final IAuditLogService auditLogService;
- public GroupCourseService(IGroupCourseRepository groupCourseRepository, IAuditLogService auditLogService){
+
+ public GroupCourseService(IGroupCourseRepository groupCourseRepository){
this.groupCourseRepository = groupCourseRepository;
- this.auditLogService = auditLogService;
}
@Override
diff --git a/gym-manage-api/gym-groupCourse/src/main/resources/application.yaml b/gym-manage-api/gym-groupCourse/src/main/resources/application.yaml
new file mode 100644
index 0000000..2d60330
--- /dev/null
+++ b/gym-manage-api/gym-groupCourse/src/main/resources/application.yaml
@@ -0,0 +1,3 @@
+spring:
+ application:
+ name: gym-groupCourse
diff --git a/gym-manage-api/gym-groupCourse/src/test/java/cn/novalon/gym/manage/groupcourse/GymGroupCourseApplicationTests.java b/gym-manage-api/gym-groupCourse/src/test/java/cn/novalon/gym/manage/groupcourse/GymGroupCourseApplicationTests.java
new file mode 100644
index 0000000..b0d48f8
--- /dev/null
+++ b/gym-manage-api/gym-groupCourse/src/test/java/cn/novalon/gym/manage/groupcourse/GymGroupCourseApplicationTests.java
@@ -0,0 +1,13 @@
+package cn.novalon.gym.manage.groupcourse;
+
+import org.junit.jupiter.api.Test;
+import org.springframework.boot.test.context.SpringBootTest;
+
+@SpringBootTest
+class GymGroupCourseApplicationTests {
+
+ @Test
+ void contextLoads() {
+ }
+
+}
diff --git a/gym-manage-api/manage-app/pom.xml b/gym-manage-api/manage-app/pom.xml
index 45fcc60..0d33560 100644
--- a/gym-manage-api/manage-app/pom.xml
+++ b/gym-manage-api/manage-app/pom.xml
@@ -18,6 +18,11 @@
Application module for Novalon Manage API
+
+ cn.novalon.gym.manage
+ gym-groupCourse
+ ${project.version}
+
cn.novalon.gym.manage
manage-sys
@@ -133,6 +138,12 @@
org.springdoc
springdoc-openapi-starter-webflux-ui
+
+ cn.novalon.gym.manage
+ gym-groupCourse
+ 1.0.0
+ compile
+
diff --git a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/ManageApplication.java b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/ManageApplication.java
index f74c2f7..aa3c01f 100644
--- a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/ManageApplication.java
+++ b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/ManageApplication.java
@@ -15,10 +15,10 @@ import org.springframework.web.server.WebFilter;
import java.util.List;
-@SpringBootApplication(scanBasePackages = "cn.novalon.gym.manage", exclude = {
+@SpringBootApplication(scanBasePackages = {"cn.novalon.gym.manage", "cn.novalon.gym.manage.groupcourse"}, exclude = {
ReactiveUserDetailsServiceAutoConfiguration.class })
@EnableR2dbcRepositories(basePackages = { "cn.novalon.gym.manage.db.dao",
- "cn.novalon.gym.manage.sys.audit.repository" })
+ "cn.novalon.gym.manage.sys.audit.repository", "cn.novalon.gym.manage.groupcourse.dao" })
public class ManageApplication {
private static final Logger logger = LoggerFactory.getLogger(ManageApplication.class);
diff --git a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java
index 98c3859..185540b 100644
--- a/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java
+++ b/gym-manage-api/manage-app/src/main/java/cn/novalon/gym/manage/app/config/SystemRouter.java
@@ -1,11 +1,12 @@
package cn.novalon.gym.manage.app.config;
+import cn.novalon.gym.manage.groupcourse.handler.GroupCourseHandler;
import cn.novalon.gym.manage.sys.handler.auth.SysAuthHandler;
import cn.novalon.gym.manage.sys.handler.auth.PasswordDiagnosticHandler;
import cn.novalon.gym.manage.sys.handler.config.SysConfigHandler;
import cn.novalon.gym.manage.sys.handler.dictionary.DictionaryHandler;
import cn.novalon.gym.manage.sys.handler.dict.SysDictHandler;
-import cn.novalon.gym.manage.sys.handler.groupCourse.GroupCourseHandler;
+
import cn.novalon.gym.manage.sys.handler.log.SysLogHandler;
import cn.novalon.gym.manage.sys.handler.log.OperationLogHandler;
import cn.novalon.gym.manage.sys.handler.menu.MenuHandler;
@@ -25,19 +26,19 @@ import static org.springframework.web.reactive.function.server.RouterFunctions.r
/**
* 系统路由配置类
- *
+ *
* 文件定义:配置WebFlux函数式路由,将HTTP请求映射到对应的Handler方法
* 涉及业务:用户、角色、字典、菜单、公告、文件等所有RESTful API路由
* 算法:使用RouterFunctions.route()构建函数式路由规则
- *
+ *
* @author 张翔
* @date 2026-03-13
*/
@Configuration
public class SystemRouter {
-
@Bean
public RouterFunction systemRoutes(
+ GroupCourseHandler groupCourseHandler,
DictionaryHandler dictionaryHandler,
SysUserHandler userHandler,
MenuHandler menuHandler,
@@ -52,13 +53,12 @@ public class SystemRouter {
SysUserMessageHandler messageHandler,
SysFileHandler fileHandler,
SysPermissionHandler permissionHandler,
- PasswordDiagnosticHandler passwordDiagnosticHandler,
- GroupCourseHandler groupCourseHandler) {
-
+ PasswordDiagnosticHandler passwordDiagnosticHandler) {
+
return route()
// ========== 诊断路由 ==========
.GET("/api/diagnostic/password", passwordDiagnosticHandler::diagnose)
-
+
// ========== 字典路由 ==========
.GET("/api/dictionaries", dictionaryHandler::getAllDictionaries)
.GET("/api/dictionaries/{id}", dictionaryHandler::getDictionaryById)
@@ -67,7 +67,7 @@ public class SystemRouter {
.POST("/api/dictionaries", dictionaryHandler::createDictionary)
.PUT("/api/dictionaries/{id}", dictionaryHandler::updateDictionary)
.DELETE("/api/dictionaries/{id}", dictionaryHandler::deleteDictionary)
-
+
// ========== 用户路由 ==========
.GET("/api/users", userHandler::getAllUsers)
.GET("/api/users/page", userHandler::getUsersByPage)
@@ -86,7 +86,7 @@ public class SystemRouter {
.POST("/api/users/{id}/action/restore", userHandler::restoreUser)
.GET("/api/users/{id}/roles", userHandler::getUserRoles)
.POST("/api/users/{id}/roles", userHandler::assignRoles)
-
+
// ========== 菜单路由 ==========
.GET("/api/menus", menuHandler::getAllMenus)
.GET("/api/menus/tree", menuHandler::getMenuTree)
@@ -94,7 +94,7 @@ public class SystemRouter {
.POST("/api/menus", menuHandler::createMenu)
.PUT("/api/menus/{id}", menuHandler::updateMenu)
.DELETE("/api/menus/{id}", menuHandler::deleteMenu)
-
+
// ========== 角色路由 ==========
.GET("/api/roles", roleHandler::getAllRoles)
.GET("/api/roles/page", roleHandler::getRolesByPage)
@@ -108,7 +108,7 @@ public class SystemRouter {
.POST("/api/roles/{id}/restore", roleHandler::restoreRole)
.GET("/api/roles/{id}/permissions", permissionHandler::getPermissionsByRoleId)
.POST("/api/roles/{id}/permissions", permissionHandler::assignPermissionsToRole)
-
+
// ========== 配置路由 ==========
.GET("/api/config", configHandler::getAllConfigs)
.GET("/api/config/{id}", configHandler::getConfigById)
@@ -116,7 +116,7 @@ public class SystemRouter {
.POST("/api/config", configHandler::createConfig)
.PUT("/api/config/{id}", configHandler::updateConfig)
.DELETE("/api/config/{id}", configHandler::deleteConfig)
-
+
// ========== 日志路由 ==========
.GET("/api/logs/login", logHandler::getAllLoginLogs)
.GET("/api/logs/login/page", logHandler::getLoginLogsByPage)
@@ -136,15 +136,15 @@ public class SystemRouter {
.GET("/api/logs/operation/count", operationLogHandler::getOperationLogCount)
.GET("/api/logs/operation/{id}", operationLogHandler::getOperationLogById)
.POST("/api/logs/operation", operationLogHandler::createOperationLog)
-
+
// ========== 认证路由 ==========
.POST("/api/auth/login", authHandler::login)
.POST("/api/auth/register", authHandler::register)
.POST("/api/auth/logout", authHandler::logout)
-
+
// ========== 统计路由 ==========
.GET("/api/stats/overview", statsHandler::getOverview)
-
+
// ========== 数据字典路由 ==========
.GET("/api/dict/types", dictHandler::getAllDictTypes)
.GET("/api/dict/types/{id}", dictHandler::getDictTypeById)
@@ -158,7 +158,7 @@ public class SystemRouter {
.POST("/api/dict/data", dictHandler::createDictData)
.PUT("/api/dict/data/{id}", dictHandler::updateDictData)
.DELETE("/api/dict/data/{id}", dictHandler::deleteDictData)
-
+
// ========== 公告路由 ==========
.GET("/api/notices", noticeHandler::getAllNotices)
.GET("/api/notices/{id}", noticeHandler::getNoticeById)
@@ -166,7 +166,7 @@ public class SystemRouter {
.POST("/api/notices", noticeHandler::createNotice)
.PUT("/api/notices/{id}", noticeHandler::updateNotice)
.DELETE("/api/notices/{id}", noticeHandler::deleteNotice)
-
+
// ========== 消息路由 ==========
.GET("/api/messages/user/{userId}", messageHandler::getMessagesByUser)
.GET("/api/messages/user/{userId}/unread", messageHandler::getUnreadCount)
@@ -174,7 +174,7 @@ public class SystemRouter {
.POST("/api/messages", messageHandler::createMessage)
.PUT("/api/messages/{id}/read", messageHandler::markAsRead)
.DELETE("/api/messages/{id}", messageHandler::deleteMessage)
-
+
// ========== 文件路由 ==========
.GET("/api/files", fileHandler::getAllFiles)
.GET("/api/files/{id}", fileHandler::getFileById)
@@ -184,7 +184,7 @@ public class SystemRouter {
.GET("/api/files/{id}/preview", fileHandler::previewFile)
.GET("/api/files/preview/{fileName}", fileHandler::previewFileByName)
.DELETE("/api/files/{id}", fileHandler::deleteFile)
-
+
// ========== 权限路由 ==========
.GET("/api/permissions", permissionHandler::getAllPermissions)
.GET("/api/permissions/{id}", permissionHandler::getPermissionById)
@@ -197,7 +197,8 @@ public class SystemRouter {
// ========== 团课路由 ==========
.GET("/api/groupCourse", groupCourseHandler::getAllGroupCourse)
-
+ .GET("/api/groupCourse/{id}", groupCourseHandler::getGroupCourseById)
+
.build();
}
}
diff --git a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GroupCourseBookingEntity.java b/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GroupCourseBookingEntity.java
deleted file mode 100644
index f414735..0000000
--- a/gym-manage-api/manage-db/src/main/java/cn/novalon/gym/manage/db/entity/GroupCourseBookingEntity.java
+++ /dev/null
@@ -1,75 +0,0 @@
-package cn.novalon.gym.manage.db.entity;
-
-import org.springframework.data.relational.core.mapping.Column;
-import org.springframework.data.relational.core.mapping.Table;
-
-import java.util.Date;
-
-/**
- * @author:liwentao
- * @date:2026/4/25-04-25-17:50
- * 团课预约记录表
- */
-
-@Table("group_course_booking")
-public class GroupCourseBookingEntity extends BaseEntity {
-
- //团课id
- @Column("course_id")
- private Long courseId;
-
- //用户id
- @Column("user_id")
- private Long userId;
-
- //预约时间
- @Column("booking_time")
- private Date bookingTime;
-
- //状态:0-已预约,1-已取消,2-已出席,3-缺席
- @Column("status")
- private Long status;
- //取消时间
- @Column("cancel_time")
- private Date cancelTime;
-
- public Long getCourseId() {
- return courseId;
- }
-
- public void setCourseId(Long courseId) {
- this.courseId = courseId;
- }
-
- public Long getUserId() {
- return userId;
- }
-
- public void setUserId(Long userId) {
- this.userId = userId;
- }
-
- public Date getBookingTime() {
- return bookingTime;
- }
-
- public void setBookingTime(Date bookingTime) {
- this.bookingTime = bookingTime;
- }
-
- public Long getStatus() {
- return status;
- }
-
- public void setStatus(Long status) {
- this.status = status;
- }
-
- public Date getCancelTime() {
- return cancelTime;
- }
-
- public void setCancelTime(Date cancelTime) {
- this.cancelTime = cancelTime;
- }
-}
diff --git a/gym-manage-api/pom.xml b/gym-manage-api/pom.xml
index aec5848..ff13cbc 100644
--- a/gym-manage-api/pom.xml
+++ b/gym-manage-api/pom.xml
@@ -42,6 +42,7 @@
manage-audit
manage-notify
manage-file
+ gym-groupCourse