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-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;
- }
-}