diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/ExceptionController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/ExceptionController.java index 83125c4..ab6bdea 100644 --- a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/ExceptionController.java +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/ExceptionController.java @@ -23,7 +23,7 @@ import xyz.playedu.common.types.JsonResponse; @Slf4j public class ExceptionController { - @ExceptionHandler(Exception.class) +// @ExceptionHandler(Exception.class) public JsonResponse exceptionHandler(Exception e) { log.error(e.getMessage()); return JsonResponse.error(e.getMessage(), 500); diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookChapterController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookChapterController.java new file mode 100644 index 0000000..0073fb3 --- /dev/null +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookChapterController.java @@ -0,0 +1,60 @@ +package xyz.playedu.api.controller.backend.jc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.common.types.JsonResponse; +import xyz.playedu.jc.domain.BookChapter; +import xyz.playedu.jc.service.IBookChapterService; + +import java.util.List; +import java.util.Optional; + +/** + * 教材章节 后台管理接口 + */ +@RestController +@RequestMapping("/textbook/chapter") +public class BookChapterController { + + @Autowired + private IBookChapterService bookChapterService; + + /** + * 根据教材ID获取章节列表(平铺 + 已排序) + * 你可以在前端把它组装成树,也可以后面在后端加树形 VO。 + */ + @GetMapping("/list") + public JsonResponse list(@RequestParam("bookId") Integer bookId) { + List chapters = bookChapterService.getByBookId(bookId); + List safeList = Optional.ofNullable(chapters).orElseGet(java.util.Collections::emptyList); + return JsonResponse.data(safeList); + } + + /** + * 新增章节 + */ + @PostMapping + public JsonResponse create(@RequestBody BookChapter chapter) { + // 可在这里补充 creator / tenantId 等信息 + bookChapterService.save(chapter); + return JsonResponse.success(); + } + + /** + * 修改章节 + */ + @PutMapping + public JsonResponse update(@RequestBody BookChapter chapter) { + bookChapterService.updateById(chapter); + return JsonResponse.success(); + } + + /** + * 删除章节 + */ + @DeleteMapping("/{id}") + public JsonResponse delete(@PathVariable("id") Integer id) { + bookChapterService.removeById(id); + return JsonResponse.success(); + } +} \ No newline at end of file diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookPaperController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookPaperController.java new file mode 100644 index 0000000..02c1894 --- /dev/null +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookPaperController.java @@ -0,0 +1,46 @@ +package xyz.playedu.api.controller.backend.jc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.common.types.JsonResponse; +import xyz.playedu.textbook.domain.BookPaper; +import xyz.playedu.textbook.service.IBookPaperService; + +import java.util.List; + +@RestController +@RequestMapping("/textbook/paper") +public class BookPaperController { + + @Autowired + private IBookPaperService bookPaperService; + + @GetMapping("/list") + public JsonResponse list(@RequestParam("bookId") Integer bookId) { + com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper wrapper = + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>(); + wrapper.eq(BookPaper::getBookId, bookId) + .orderByAsc(BookPaper::getSort) + .orderByAsc(BookPaper::getId); + List list = bookPaperService.list(wrapper); + return JsonResponse.data(list); + } + + @PostMapping + public JsonResponse create(@RequestBody BookPaper bookPaper) { + bookPaperService.save(bookPaper); + return JsonResponse.success(); + } + + @PutMapping + public JsonResponse update(@RequestBody BookPaper bookPaper) { + bookPaperService.updateById(bookPaper); + return JsonResponse.success(); + } + + @DeleteMapping("/{id}") + public JsonResponse delete(@PathVariable("id") Integer id) { + bookPaperService.removeById(id); + return JsonResponse.success(); + } +} \ No newline at end of file diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookScopeController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookScopeController.java new file mode 100644 index 0000000..430e374 --- /dev/null +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/BookScopeController.java @@ -0,0 +1,38 @@ +package xyz.playedu.api.controller.backend.jc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.common.types.JsonResponse; +import xyz.playedu.jc.domain.BookDepartmentUser; +import xyz.playedu.jc.service.IBookDepartmentUserService; + +import java.util.List; + +@RestController +@RequestMapping("/textbook/scope") +public class BookScopeController { + + @Autowired + private IBookDepartmentUserService bookDepartmentUserService; + + @GetMapping("/list") + public JsonResponse list(@RequestParam("bookId") Integer bookId) { + com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper wrapper = + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>(); + wrapper.eq(BookDepartmentUser::getBookId, bookId); + List list = bookDepartmentUserService.list(wrapper); + return JsonResponse.data(list); + } + + @PostMapping + public JsonResponse create(@RequestBody List scopes) { + bookDepartmentUserService.saveBatch(scopes); + return JsonResponse.success(); + } + + @DeleteMapping("/{id}") + public JsonResponse delete(@PathVariable("id") Integer id) { + bookDepartmentUserService.removeById(id); + return JsonResponse.success(); + } +} \ No newline at end of file diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/ChapterContentController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/ChapterContentController.java new file mode 100644 index 0000000..1bbaec3 --- /dev/null +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/ChapterContentController.java @@ -0,0 +1,39 @@ +package xyz.playedu.api.controller.backend.jc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.common.types.JsonResponse; +import xyz.playedu.jc.domain.ChapterContent; +import xyz.playedu.jc.service.IChapterContentService; + +/** + * 章节内容 后台接口 + */ +@RestController +@RequestMapping("/textbook/chapter-content") +public class ChapterContentController { + + @Autowired + private IChapterContentService chapterContentService; + + @GetMapping("/{chapterId}") + public JsonResponse detail(@PathVariable("chapterId") Integer chapterId) { + ChapterContent content = chapterContentService.getByChapterId(chapterId); + return JsonResponse.data(content); + } + + @PostMapping("/{chapterId}") + public JsonResponse save(@PathVariable("chapterId") Integer chapterId, + @RequestBody ChapterContent body) { + body.setChapterId(chapterId); + // 如果该章节已存在内容则更新,否则新增 + ChapterContent old = chapterContentService.getByChapterId(chapterId); + if (old == null) { + chapterContentService.save(body); + } else { + body.setId(old.getId()); + chapterContentService.updateById(body); + } + return JsonResponse.success(); + } +} \ No newline at end of file diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/ResourceController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/ResourceController.java new file mode 100644 index 0000000..27a2b34 --- /dev/null +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/ResourceController.java @@ -0,0 +1,51 @@ +package xyz.playedu.api.controller.backend.jc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.common.types.JsonResponse; +import xyz.playedu.textbook.domain.Resource; +import xyz.playedu.textbook.service.IResourceService; + +import java.util.List; + +@RestController +@RequestMapping("/textbook/resource") +public class ResourceController { + + @Autowired + private IResourceService resourceService; + + @GetMapping("/list") + public JsonResponse list(@RequestParam(value = "bookId", required = false) Integer bookId, + @RequestParam(value = "chapterId", required = false) Integer chapterId) { + // 简单示例:直接用 lambda query 写,实际可抽到 service 中 + com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper wrapper = + new com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper<>(); + if (bookId != null) { + wrapper.eq(Resource::getBookId, bookId); + } + if (chapterId != null) { + wrapper.eq(Resource::getChapterId, chapterId); + } + List list = resourceService.list(wrapper); + return JsonResponse.data(list); + } + + @PostMapping + public JsonResponse create(@RequestBody Resource resource) { + resourceService.save(resource); + return JsonResponse.success(); + } + + @PutMapping + public JsonResponse update(@RequestBody Resource resource) { + resourceService.updateById(resource); + return JsonResponse.success(); + } + + @DeleteMapping("/{id}") + public JsonResponse delete(@PathVariable("id") Integer id) { + resourceService.removeById(id); + return JsonResponse.success(); + } +} \ No newline at end of file diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/TextbookController.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/TextbookController.java new file mode 100644 index 0000000..68be68f --- /dev/null +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/controller/backend/jc/TextbookController.java @@ -0,0 +1,50 @@ +package xyz.playedu.api.controller.backend.jc; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.*; +import xyz.playedu.common.types.JsonResponse; +import xyz.playedu.jc.domain.Textbook; +import xyz.playedu.jc.service.ITextbookService; + +import java.util.List; + +/** + * 教材管理 后台接口 + */ +@RestController +@RequestMapping("/textbook") +public class TextbookController { + + @Autowired + private ITextbookService textbookService; + + @GetMapping("/list") + public JsonResponse list() { + List list = textbookService.list(); + return JsonResponse.data(list); + } + + @GetMapping("/{id}") + public JsonResponse detail(@PathVariable("id") Integer id) { + Textbook one = textbookService.getById(id); + return JsonResponse.data(one); + } + + @PostMapping + public JsonResponse create(@RequestBody Textbook textbook) { + textbookService.save(textbook); + return JsonResponse.success(); + } + + @PutMapping + public JsonResponse update(@RequestBody Textbook textbook) { + textbookService.updateById(textbook); + return JsonResponse.success(); + } + + @DeleteMapping("/{id}") + public JsonResponse delete(@PathVariable("id") Integer id) { + textbookService.removeById(id); + return JsonResponse.success(); + } +} \ No newline at end of file diff --git a/app/api/playedu-api/src/main/java/xyz/playedu/api/interceptor/AdminInterceptor.java b/app/api/playedu-api/src/main/java/xyz/playedu/api/interceptor/AdminInterceptor.java index 8cb8784..c61a7d8 100644 --- a/app/api/playedu-api/src/main/java/xyz/playedu/api/interceptor/AdminInterceptor.java +++ b/app/api/playedu-api/src/main/java/xyz/playedu/api/interceptor/AdminInterceptor.java @@ -12,6 +12,7 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; import org.springframework.web.servlet.HandlerInterceptor; + import xyz.playedu.common.bus.BackendBus; import xyz.playedu.common.context.BCtx; import xyz.playedu.common.domain.AdminUser; diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookChapter.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookChapter.java new file mode 100644 index 0000000..c16ec2c --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookChapter.java @@ -0,0 +1,56 @@ +package xyz.playedu.jc.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 教材章节表 + * 对应表:jc_book_chapter + */ +@Data +@TableName("jc_book_chapter") +public class BookChapter { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** 教材主键 */ + @TableField("book_id") + private Integer bookId; + + /** 父节点id 顶级节点为0 */ + @TableField("parent_id") + private Integer parentId; + + /** 父节点链路 */ + @TableField("chapter_code") + private String chapterCode; + + /** 章节名 */ + @TableField("name") + private String name; + + /** 排序 */ + @TableField("sort") + private Integer sort; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + @TableField("creator") + private String creator; + + @TableField("updater") + private String updater; + + @TableField("tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookDepartmentUser.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookDepartmentUser.java new file mode 100644 index 0000000..a7ada42 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookDepartmentUser.java @@ -0,0 +1,48 @@ +package xyz.playedu.jc.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 教材可见范围(部门 / 用户) + * 对应表:jc_book_department_user + */ +@Data +@TableName("jc_book_department_user") +public class BookDepartmentUser { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** 教材ID */ + @TableField("book_id") + private Integer bookId; + + /** 部门ID */ + @TableField("department_id") + private Integer departmentId; + + /** 用户ID */ + @TableField("user_id") + private Integer userId; + + @TableField("creator") + private String creator; + + @TableField("updater") + private String updater; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + @TableField("tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookPaper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookPaper.java new file mode 100644 index 0000000..2e9603c --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/BookPaper.java @@ -0,0 +1,56 @@ +package xyz.playedu.jc.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 教材-试卷 关系 + * 对应表:jc_book_paper + */ +@Data +@TableName("jc_book_paper") +public class BookPaper { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** 教材ID */ + @TableField("book_id") + private Integer bookId; + + /** 试卷ID */ + @TableField("paper_id") + private Integer paperId; + + /** 章节ID(可选) */ + @TableField("chapter_id") + private Integer chapterId; + + /** 类型 1-随堂 2-单元 3-期末 等 */ + @TableField("type") + private Integer type; + + /** 排序 */ + @TableField("sort") + private Integer sort; + + @TableField("creator") + private String creator; + + @TableField("updater") + private String updater; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + @TableField("tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/ChapterContent.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/ChapterContent.java new file mode 100644 index 0000000..da30c36 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/ChapterContent.java @@ -0,0 +1,55 @@ +package xyz.playedu.jc.domain; + + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 章节内容 + * 对应表:jc_chapter_content + */ +@Data +@TableName("jc_chapter_content") +public class ChapterContent { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** 章节ID */ + @TableField("chapter_id") + private Integer chapterId; + + /** 富文本内容 */ + @TableField("content") + private String content; + + /** 关联资源ID(逗号分隔) */ + @TableField("resource_ids") + private String resourceIds; + + /** 关联知识点ID(逗号分隔) */ + @TableField("knowledge_ids") + private String knowledgeIds; + + /** 创建人 */ + @TableField("creator") + private String creator; + + /** 更新人 */ + @TableField("updater") + private String updater; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + @TableField("tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/Resource.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/Resource.java new file mode 100644 index 0000000..ad4401c --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/Resource.java @@ -0,0 +1,76 @@ +package xyz.playedu.jc.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 教材资源 + * 对应表:jc_resource + */ +@Data +@TableName("jc_resource") +public class Resource { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** 教材ID */ + @TableField("book_id") + private Integer bookId; + + /** 章节ID */ + @TableField("chapter_id") + private Integer chapterId; + + /** 资源名称 */ + @TableField("name") + private String name; + + /** 资源类型 video/ppt/image/audio/... */ + @TableField("type") + private String type; + + /** 文件后缀 */ + @TableField("ext") + private String ext; + + /** 文件大小(字节) */ + @TableField("size") + private Long size; + + /** 时长(秒),仅视频/音频 */ + @TableField("duration") + private Integer duration; + + /** 访问URL */ + @TableField("url") + private String url; + + /** 封面图 */ + @TableField("cover") + private String cover; + + /** 状态 0-禁用 1-启用 */ + @TableField("status") + private Integer status; + + @TableField("creator") + private String creator; + + @TableField("updater") + private String updater; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + @TableField("tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/Textbook.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/Textbook.java new file mode 100644 index 0000000..3b2b11a --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/domain/Textbook.java @@ -0,0 +1,78 @@ +package xyz.playedu.jc.domain; + +import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; +import com.baomidou.mybatisplus.annotation.TableId; +import com.baomidou.mybatisplus.annotation.TableName; +import lombok.Data; + +import java.util.Date; + +/** + * 教材主表 + * 对应表:jc_textbook + */ +@Data +@TableName("jc_textbook") +public class Textbook { + + @TableId(type = IdType.AUTO) + private Integer id; + + /** 教材名称 */ + @TableField("title") + private String title; + + /** 封面地址 */ + @TableField("cover") + private String cover; + + /** 简介 */ + @TableField("description") + private String description; + + /** 作者 */ + @TableField("author") + private String author; + + /** ISBN 或教材编号 */ + @TableField("isbn") + private String isbn; + + /** 出版社 */ + @TableField("publisher") + private String publisher; + + /** 适用专业/课程 */ + @TableField("subject") + private String subject; + + /** 发布状态 0-未发布 1-已发布 */ + @TableField("status") + private Integer status; + + /** 版本号 */ + @TableField("version") + private String version; + + /** 发布时间 */ + @TableField("publish_time") + private Date publishTime; + + /** 创建人 */ + @TableField("creator") + private String creator; + + /** 更新人 */ + @TableField("updater") + private String updater; + + @TableField("create_time") + private Date createTime; + + @TableField("update_time") + private Date updateTime; + + @TableField("tenant_id") + private String tenantId; +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookChapterMapper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookChapterMapper.java new file mode 100644 index 0000000..f56d61f --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookChapterMapper.java @@ -0,0 +1,18 @@ +package xyz.playedu.jc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import org.apache.ibatis.annotations.Param; +import xyz.playedu.jc.domain.BookChapter; + +import java.util.List; + +/** + * 教材章节 Mapper + */ +public interface BookChapterMapper extends BaseMapper { + + /** + * 根据教材ID查询章节列表(已按 parent_id、sort 排好序) + */ + List selectByBookId(@Param("bookId") Integer bookId); +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookDepartmentUserMapper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookDepartmentUserMapper.java new file mode 100644 index 0000000..e07140c --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookDepartmentUserMapper.java @@ -0,0 +1,7 @@ +package xyz.playedu.jc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import xyz.playedu.jc.domain.BookDepartmentUser; + +public interface BookDepartmentUserMapper extends BaseMapper { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookPaperMapper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookPaperMapper.java new file mode 100644 index 0000000..21dc196 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/BookPaperMapper.java @@ -0,0 +1,8 @@ +package xyz.playedu.jc.mapper; + + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import xyz.playedu.jc.domain.BookPaper; + +public interface BookPaperMapper extends BaseMapper { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/ChapterContentMapper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/ChapterContentMapper.java new file mode 100644 index 0000000..b22a52b --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/ChapterContentMapper.java @@ -0,0 +1,10 @@ +package xyz.playedu.jc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import xyz.playedu.jc.domain.ChapterContent; + +/** + * 章节内容 Mapper + */ +public interface ChapterContentMapper extends BaseMapper { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/ResourceMapper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/ResourceMapper.java new file mode 100644 index 0000000..5906365 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/ResourceMapper.java @@ -0,0 +1,7 @@ +package xyz.playedu.jc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import xyz.playedu.jc.domain.Resource; + +public interface ResourceMapper extends BaseMapper { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/TextbookMapper.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/TextbookMapper.java new file mode 100644 index 0000000..a021a3d --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/mapper/TextbookMapper.java @@ -0,0 +1,10 @@ +package xyz.playedu.jc.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import xyz.playedu.jc.domain.Textbook; + +/** + * 教材 Mapper + */ +public interface TextbookMapper extends BaseMapper { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookChapterService.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookChapterService.java new file mode 100644 index 0000000..7b636ec --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookChapterService.java @@ -0,0 +1,17 @@ +package xyz.playedu.jc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.jc.domain.BookChapter; + +import java.util.List; + +/** + * 教材章节 Service + */ +public interface IBookChapterService extends IService { + + /** + * 根据教材ID获取章节列表(已排序) + */ + List getByBookId(Integer bookId); +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookDepartmentUserService.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookDepartmentUserService.java new file mode 100644 index 0000000..b793077 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookDepartmentUserService.java @@ -0,0 +1,7 @@ +package xyz.playedu.jc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.jc.domain.BookDepartmentUser; + +public interface IBookDepartmentUserService extends IService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookPaperService.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookPaperService.java new file mode 100644 index 0000000..ddf59df --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IBookPaperService.java @@ -0,0 +1,7 @@ +package xyz.playedu.jc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.jc.domain.BookPaper; + +public interface IBookPaperService extends IService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IChapterContentService.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IChapterContentService.java new file mode 100644 index 0000000..d9a02a5 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/IChapterContentService.java @@ -0,0 +1,12 @@ +package xyz.playedu.jc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.jc.domain.ChapterContent; + +/** + * 章节内容 Service + */ +public interface IChapterContentService extends IService { + + ChapterContent getByChapterId(Integer chapterId); +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/ITextbookService.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/ITextbookService.java new file mode 100644 index 0000000..55389eb --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/ITextbookService.java @@ -0,0 +1,11 @@ +package xyz.playedu.jc.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.jc.domain.Textbook; + +/** + * 教材 Service + */ +public interface ITextbookService extends IService { + +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookChapterServiceImpl.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookChapterServiceImpl.java new file mode 100644 index 0000000..d1755db --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookChapterServiceImpl.java @@ -0,0 +1,31 @@ +package xyz.playedu.jc.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import xyz.playedu.jc.domain.BookChapter; +import xyz.playedu.jc.mapper.BookChapterMapper; +import xyz.playedu.jc.service.IBookChapterService; + +import java.util.List; + +/** + * 教材章节 Service 实现 + */ +@Service +public class BookChapterServiceImpl + extends ServiceImpl + implements IBookChapterService { + + @Override + public List getByBookId(Integer bookId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(BookChapter::getBookId, bookId) + .orderByAsc(BookChapter::getParentId) + .orderByAsc(BookChapter::getSort) + .orderByAsc(BookChapter::getId); + return list(wrapper); + } + + // 如果后面你要做拖拽排序、批量更新等,可以在这里继续加方法 +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookDepartmentUserServiceImpl.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookDepartmentUserServiceImpl.java new file mode 100644 index 0000000..cb26278 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookDepartmentUserServiceImpl.java @@ -0,0 +1,13 @@ +package xyz.playedu.jc.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import xyz.playedu.jc.domain.BookDepartmentUser; +import xyz.playedu.jc.mapper.BookDepartmentUserMapper; +import xyz.playedu.jc.service.IBookDepartmentUserService; + +@Service +public class BookDepartmentUserServiceImpl + extends ServiceImpl + implements IBookDepartmentUserService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookPaperServiceImpl.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookPaperServiceImpl.java new file mode 100644 index 0000000..d6f111c --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/BookPaperServiceImpl.java @@ -0,0 +1,13 @@ +package xyz.playedu.jc.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import xyz.playedu.jc.domain.BookPaper; +import xyz.playedu.jc.mapper.BookPaperMapper; +import xyz.playedu.jc.service.IBookPaperService; + +@Service +public class BookPaperServiceImpl + extends ServiceImpl + implements IBookPaperService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/ChapterContentServiceImpl.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/ChapterContentServiceImpl.java new file mode 100644 index 0000000..d1cc4da --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/ChapterContentServiceImpl.java @@ -0,0 +1,21 @@ +package xyz.playedu.jc.service.impl; + +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import xyz.playedu.jc.domain.ChapterContent; +import xyz.playedu.jc.mapper.ChapterContentMapper; +import xyz.playedu.jc.service.IChapterContentService; + +@Service +public class ChapterContentServiceImpl + extends ServiceImpl + implements IChapterContentService { + + @Override + public ChapterContent getByChapterId(Integer chapterId) { + LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>(); + wrapper.eq(ChapterContent::getChapterId, chapterId); + return getOne(wrapper, false); + } +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/TextbookServiceImpl.java b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/TextbookServiceImpl.java new file mode 100644 index 0000000..594e913 --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/jc/service/impl/TextbookServiceImpl.java @@ -0,0 +1,16 @@ +package xyz.playedu.jc.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import xyz.playedu.jc.domain.Textbook; +import xyz.playedu.jc.mapper.TextbookMapper; +import xyz.playedu.jc.service.ITextbookService; + +/** + * 教材 Service 实现 + */ +@Service +public class TextbookServiceImpl + extends ServiceImpl + implements ITextbookService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/task/service/IResourceService.java b/app/api/playedu-course/src/main/java/xyz/playedu/task/service/IResourceService.java new file mode 100644 index 0000000..1635aff --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/task/service/IResourceService.java @@ -0,0 +1,6 @@ +package xyz.playedu.task.service; +import com.baomidou.mybatisplus.extension.service.IService; +import xyz.playedu.textbook.domain.Resource; + +public interface IResourceService extends IService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/java/xyz/playedu/task/service/impl/ResourceServiceImpl.java b/app/api/playedu-course/src/main/java/xyz/playedu/task/service/impl/ResourceServiceImpl.java new file mode 100644 index 0000000..04ba55b --- /dev/null +++ b/app/api/playedu-course/src/main/java/xyz/playedu/task/service/impl/ResourceServiceImpl.java @@ -0,0 +1,13 @@ +package xyz.playedu.task.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import xyz.playedu.jc.domain.Resource; +import xyz.playedu.jc.mapper.ResourceMapper; +import xyz.playedu.jc.service.IResourceService; + +@Service +public class ResourceServiceImpl + extends ServiceImpl + implements IResourceService { +} \ No newline at end of file diff --git a/app/api/playedu-course/src/main/resources/mapper/jc/BookChapterMapper.xml b/app/api/playedu-course/src/main/resources/mapper/jc/BookChapterMapper.xml new file mode 100644 index 0000000..4bd34fd --- /dev/null +++ b/app/api/playedu-course/src/main/resources/mapper/jc/BookChapterMapper.xml @@ -0,0 +1,46 @@ + + + + + + + + + + + + + + + + + + + + + + id, + book_id, + parent_id, + chapter_code, + name, + sort, + create_time, + update_time, + creator, + updater, + tenant_id + + + + + + diff --git a/app/api/playedu-course/src/main/resources/mapper/jc/BookDepartmentUserMapper.xml b/app/api/playedu-course/src/main/resources/mapper/jc/BookDepartmentUserMapper.xml new file mode 100644 index 0000000..ff4a3a1 --- /dev/null +++ b/app/api/playedu-course/src/main/resources/mapper/jc/BookDepartmentUserMapper.xml @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + id, + book_id, + department_id, + user_id, + creator, + updater, + create_time, + update_time, + tenant_id + + + diff --git a/app/api/playedu-course/src/main/resources/mapper/jc/BookPaperMapper.xml b/app/api/playedu-course/src/main/resources/mapper/jc/BookPaperMapper.xml new file mode 100644 index 0000000..91a67b6 --- /dev/null +++ b/app/api/playedu-course/src/main/resources/mapper/jc/BookPaperMapper.xml @@ -0,0 +1,35 @@ + + + + + + + + + + + + + + + + + + + + id, + book_id, + paper_id, + chapter_id, + type, + sort, + creator, + updater, + create_time, + update_time, + tenant_id + + + diff --git a/app/api/playedu-course/src/main/resources/mapper/jc/ChapterContentMapper.xml b/app/api/playedu-course/src/main/resources/mapper/jc/ChapterContentMapper.xml new file mode 100644 index 0000000..f8371b4 --- /dev/null +++ b/app/api/playedu-course/src/main/resources/mapper/jc/ChapterContentMapper.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + id, + chapter_id, + content, + resource_ids, + knowledge_ids, + creator, + updater, + create_time, + update_time, + tenant_id + + + diff --git a/app/api/playedu-course/src/main/resources/mapper/jc/ResourceMapper.xml b/app/api/playedu-course/src/main/resources/mapper/jc/ResourceMapper.xml new file mode 100644 index 0000000..847a41b --- /dev/null +++ b/app/api/playedu-course/src/main/resources/mapper/jc/ResourceMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, + book_id, + chapter_id, + name, + type, + ext, + size, + duration, + url, + cover, + status, + creator, + updater, + create_time, + update_time, + tenant_id + + + diff --git a/app/api/playedu-course/src/main/resources/mapper/jc/TextbookMapper.xml b/app/api/playedu-course/src/main/resources/mapper/jc/TextbookMapper.xml new file mode 100644 index 0000000..c3be9cb --- /dev/null +++ b/app/api/playedu-course/src/main/resources/mapper/jc/TextbookMapper.xml @@ -0,0 +1,45 @@ + + + + + + + + + + + + + + + + + + + + + + + + + id, + title, + cover, + description, + author, + isbn, + publisher, + subject, + status, + version, + publish_time, + creator, + updater, + create_time, + update_time, + tenant_id + + +