diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/ChapterEntity.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/ChapterEntity.java index 168e7c7..bc12a53 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/ChapterEntity.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/ChapterEntity.java @@ -2,45 +2,40 @@ package com.tamguo.modules.tiku.model; import java.io.Serializable; -import com.alibaba.fastjson.annotation.JSONField; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableName; -import com.tamguo.config.dao.SuperEntity; -import com.tamguo.modules.tiku.model.enums.ChapterStatusEnum; -import lombok.Data; - -import java.util.List; - +import com.alibaba.fastjson.annotation.JSONField; // 用于 JSON 序列化时的注解 +import com.alibaba.fastjson.serializer.SerializerFeature; // JSON 序列化特性 +import com.baomidou.mybatisplus.annotations.TableField; // 与数据库表字段相关的注解 +import com.baomidou.mybatisplus.annotations.TableName; // 表名注解 +import com.tamguo.config.dao.SuperEntity; // 父类实体 +import com.tamguo.modules.tiku.model.enums.ChapterStatusEnum; // 章节状态枚举 +import lombok.Data; // Lombok 的数据注解 /** - * The persistent class for the t_chapter database table. - * + * t_chapter 数据库表的持久化类 */ -@TableName(value="t_chapter") -@Data -public class ChapterEntity extends SuperEntity implements Serializable { - private static final long serialVersionUID = 1L; +@TableName(value = "t_chapter") // 指定表名为 t_chapter +@Data // Lombok 的数据注解,自动生成 getter 和 setter 等方法 +public class ChapterEntity extends SuperEntity implements Serializable { // 继承父类实体,实现序列化接口 + private static final long serialVersionUID = 1L; // 序列化版本号 + + private String courseId; // 课程 ID + private String bookId; // 书籍 ID + private String name; // 章节名称 + private String parentCode; // 父章节代码 + private String parentCodes; // 父章节代码列表 + private Integer questionNum; // 问题数量 + private Integer pointNum; // 知识点数量 + private Integer orders; // 排序序号 + private Boolean treeLeaf; // 是否为叶子节点 + private Integer treeLevel; // 树的层级 + + private String seoTitle; // SEO 标题 + private String seoKeywords; // SEO 关键字 + private String seoDescription; // SEO 描述 - private String courseId; - private String bookId; - private String name; - private String parentCode; - private String parentCodes; - private Integer questionNum; - private Integer pointNum; - private Integer orders; - private Boolean treeLeaf; - private Integer treeLevel; - - private String seoTitle; - private String seoKeywords; - private String seoDescription; - - @TableField(exist=false) - private List childChapterList; - - @JSONField(serialzeFeatures= SerializerFeature.WriteEnumUsingToString) - private ChapterStatusEnum status; + @TableField(exist = false) // 表示该字段在数据库中不存在 + private List childChapterList; // 子章节列表 + @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString) // 指定 JSON 序列化枚举时的特性 + private ChapterStatusEnum status; // 章节状态枚举 } \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/CourseEntity.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/CourseEntity.java index 4f289cb..6d13f65 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/CourseEntity.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/CourseEntity.java @@ -1,43 +1,42 @@ package com.tamguo.modules.tiku.model; -import java.util.Date; -import com.alibaba.fastjson.annotation.JSONField; -import com.alibaba.fastjson.serializer.SerializerFeature; -import com.baomidou.mybatisplus.annotations.TableField; -import com.baomidou.mybatisplus.annotations.TableId; -import com.baomidou.mybatisplus.annotations.TableName; -import com.baomidou.mybatisplus.enums.FieldFill; -import com.tamguo.modules.tiku.model.enums.CourseStatusEnum; -import lombok.Data; +import java.util.Date; // 日期类 -@Data -@TableName(value="t_course") +import com.alibaba.fastjson.annotation.JSONField; // 用于 JSON 序列化时的注解 +import com.alibaba.fastjson.serializer.SerializerFeature; // JSON 序列化特性 +import com.baomidou.mybatisplus.annotations.TableField; // 与数据库表字段相关的注解 +import com.baomidou.mybatisplus.annotations.TableId; // 表主键注解 +import com.baomidou.mybatisplus.annotations.TableName; // 表名注解 +import com.baomidou.mybatisplus.enums.FieldFill; // 字段填充策略枚举 +import com.tamguo.modules.tiku.model.enums.CourseStatusEnum; // 课程状态枚举 +import lombok.Data; // Lombok 的数据注解 + +@Data // Lombok 的数据注解,自动生成 getter 和 setter 等方法 +@TableName(value = "t_course") // 指定表名为 t_course public class CourseEntity { - - @TableId - private String id; - private String subjectId; - private String name; - private Integer sort; - private Integer questionNum; - private Integer pointNum; - private String remarks; - private String icon; - - private String seoTitle; - private String seoKeywords; - private String seoDescription; - - @TableField(fill = FieldFill.INSERT_UPDATE) - private String createBy; - @TableField(fill = FieldFill.INSERT_UPDATE) - private String updateBy; - @TableField(fill = FieldFill.INSERT_UPDATE) - private Date createDate; - @TableField(fill = FieldFill.INSERT_UPDATE) - private Date updateDate; - - @JSONField(serialzeFeatures= SerializerFeature.WriteEnumUsingToString) - private CourseStatusEnum status; + @TableId // 标识为主键 + private String id; // 课程 ID + private String subjectId; // 科目 ID + private String name; // 课程名称 + private Integer sort; // 排序号 + private Integer questionNum; // 问题数量 + private Integer pointNum; // 知识点数量 + private String remarks; // 备注 + private String icon; // 图标 + + private String seoTitle; // SEO 标题 + private String seoKeywords; // SEO 关键字 + private String seoDescription; // SEO 描述 + + @TableField(fill = FieldFill.INSERT_UPDATE) // 字段填充策略,在插入和更新时填充 + private String createBy; // 创建人 + @TableField(fill = FieldFill.INSERT_UPDATE) // 字段填充策略,在插入和更新时填充 + private String updateBy; // 更新人 + @TableField(fill = FieldFill.INSERT_UPDATE) // 字段填充策略,在插入和更新时填充 + private Date createDate; // 创建日期 + @TableField(fill = FieldFill.INSERT_UPDATE) // 字段填充策略,在插入和更新时填充 + private Date updateDate; // 更新日期 -} + @JSONField(serialzeFeatures = SerializerFeature.WriteEnumUsingToString) // 指定 JSON 序列化枚举时的特性 + private CourseStatusEnum status; // 课程状态枚举 +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/enums/QuestionTypeEnum.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/enums/QuestionTypeEnum.java index d37264a..fec2a8e 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/enums/QuestionTypeEnum.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/model/enums/QuestionTypeEnum.java @@ -1,54 +1,103 @@ package com.tamguo.modules.tiku.model.enums; -import java.io.Serializable; /** - * 试题类型、、题目类型(1.单选题;2.多选题; 3.解答题) - * - * @author tamguo + * 试题类型枚举 + * 题目类型:(1. 单选题;2. 多选题;3. 填空题;4. 判断题;5. 问答题) * + * @author tamguo */ public enum QuestionTypeEnum { - + + /** + * 单选题 + * @param value 值 + * @param desc 描述 + */ DANXUANTI("1", "单选题"), + + /** + * 多选题 + * @param value 值 + * @param desc 描述 + */ DUOXUANTI("2", "多选题"), + + /** + * 填空题 + * @param value 值 + * @param desc 描述 + */ TIANKONGTI("3", "填空题"), + + /** + * 判断题 + * @param value 值 + * @param desc 描述 + */ PANDUANTI("4", "判断题"), + + /** + * 问答题 + * @param value 值 + * @param desc 描述 + */ WENDATI("5", "问答题"); - private String value; - private String desc; - - QuestionTypeEnum(final String value, final String desc) { - this.value = value; - this.desc = desc; - } - - public static QuestionTypeEnum getQuestionType(String value) { - if("1".equals(value)) { - return DANXUANTI; - }else if("2".equals(value)) { - return DUOXUANTI; - }else if("3".equals(value)) { - return TIANKONGTI; - }else if("4".equals(value)) { - return PANDUANTI; - }else if("5".equals(value)) { - return WENDATI; - } - return WENDATI; - } - - public Serializable getValue() { - return this.value; - } - - public String getDesc(){ - return this.desc; - } - - @Override - public String toString() { - return this.value; - } - -} + private String value; // 枚举值 + private String desc; // 描述 + + /** + * 构造函数,初始化枚举值和描述 + * @param value 值 + * @param desc 描述 + */ + QuestionTypeEnum(final String value, final String desc) { + this.value = value; + this.desc = desc; + } + + /** + * 根据传入的 value 获取对应的枚举类型 + * @param value 要查询的 value 值 + * @return 对应的枚举类型,如果未找到则返回 WENDATI + */ + public static QuestionTypeEnum getQuestionType(String value) { + if ("1".equals(value)) { + return DANXUANTI; + } else if ("2".equals(value)) { + return DUOXUANTI; + } else if ("3".equals(value)) { + return TIANKONGTI; + } else if ("4".equals(value)) { + return PANDUANTI; + } else if ("5".equals(value)) { + return WENDATI; + } + return WENDATI; + } + + /** + * 获取枚举值 + * @return 枚举值 + */ + public Serializable getValue() { + return this.value; + } + + /** + * 获取描述 + * @return 描述 + */ + public String getDesc() { + return this.desc; + } + + /** + * 将枚举值转换为字符串 + * @return 枚举值的字符串表示 + */ + @Override + public String toString() { + return this.value; + } +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/ChapterServiceImpl.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/ChapterServiceImpl.java index 0661670..abbe076 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/ChapterServiceImpl.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/ChapterServiceImpl.java @@ -1,79 +1,93 @@ package com.tamguo.modules.tiku.service.impl; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang3.StringUtils; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.mapper.Condition; -import com.baomidou.mybatisplus.plugins.Page; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.tamguo.common.utils.SystemConstant; -import com.tamguo.modules.tiku.dao.KnowPointMapper; -import com.tamguo.modules.tiku.dao.ChapterMapper; -import com.tamguo.modules.tiku.dao.CourseMapper; -import com.tamguo.modules.tiku.model.KnowPointEntity; -import com.tamguo.modules.tiku.model.ChapterEntity; -import com.tamguo.modules.tiku.model.condition.ChapterCondition; -import com.tamguo.modules.tiku.model.enums.ChapterStatusEnum; -import com.tamguo.modules.tiku.service.IChapterService; - -@Service -public class ChapterServiceImpl extends ServiceImpl implements IChapterService{ - - @Autowired - ChapterMapper chapterMapper; - @Autowired - CourseMapper courseMapper; - @Autowired - KnowPointMapper bookMapper; - - @Transactional(readOnly=false) - @SuppressWarnings("unchecked") +import java.util.ArrayList; // 导入 ArrayList 类,用于存储章节列表 +import java.util.List; // 导入 List 接口,用于存储章节实体列表 + +import org.apache.commons.lang3.StringUtils; // 导入StringUtils 类,用于字符串操作 +import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 注解,用于依赖注入 +import org.springframework.stereotype.Service; // 导入 Service 注解,标识为服务层实现类 +import org.springframework.transaction.annotation.Transactional; // 导入 Transactional 注解,用于事务管理 + +import com.alibaba.fastjson.JSONArray; // 导入 JSONArray 类,用于处理 JSON 数组 +import com.alibaba.fastjson.JSONObject; // 导入 JSONObject 类,用于处理 JSON 对象 +import com.baomidou.mybatisplus.mapper.Condition; // 导入 Condition 类,用于构建查询条件 +import com.baomidou.mybatisplus.plugins.Page; // 导入 Page 类,用于分页查询 +import com.baomidou.mybatisplus.service.impl.ServiceImpl; // 导入 ServiceImpl 类,作为服务层实现类的父类 +import com.tamguo.common.utils.SystemConstant; // 导入 SystemConstant 类,用于定义系统常量 +import com.tamguo.modules.tiku.dao.KnowPointMapper; // 导入 KnowPointMapper 接口,用于知识关键点的数据访问 +import com.tamguo.modules.tiku.dao.ChapterMapper; // 导入 ChapterMapper 接口,用于章节的数据访问 +import com.tamguo.modules.tiku.dao.CourseMapper; // 导入 CourseMapper 接口,用于课程的数据访问 +import com.tamguo.modules.tiku.model.KnowPointEntity; // 导入 KnowPointEntity 类,代表知识关键点实体 +import com.tamguo.modules.tiku.model.ChapterEntity; // 导入 ChapterEntity 类,代表章节实体 +import com.tamguo.modules.tiku.model.condition.ChapterCondition; // 导入 ChapterCondition 类,代表章节查询条件 +import com.tamguo.modules.tiku.model.enums.ChapterStatusEnum; // 导入 ChapterStatusEnum 枚举,代表章节状态 +import com.tamguo.modules.tiku.service.IChapterService; // 导入 IChapterService 接口,定义章节服务的接口 + +@Service // 标识为服务层实现类 +public class ChapterServiceImpl extends ServiceImpl implements IChapterService { + + @Autowired // 自动注入 ChapterMapper 实例 + private ChapterMapper chapterMapper; + + @Autowired // 自动注入 CourseMapper 实例 + private CourseMapper courseMapper; + + @Autowired // 自动注入 KnowPointMapper 实例 + private KnowPointMapper bookMapper; + + /** + * 查找章节树结构 + * + * @param bookId 书籍 ID + * @return 章节树结构的根节点列表 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false + @SuppressWarnings("unchecked") // 抑制unchecked 警告 @Override public List findChapterTree(String bookId) { + // 根据书籍 ID 查询章节列表 List chapterList = baseMapper.selectList(Condition.create().eq("book_id", bookId)); - - // 获取根chapter UID + + // 获取根章节 UID String rootUid = StringUtils.EMPTY; - for(int i=0 ; i entitys = new ArrayList<>(); - for(int i=0 ; i childs = new ArrayList<>(); - for(int k=0 ; k childs = entitys.get(i).getChildChapterList(); - for(int k=0 ; k tmpChilds = new ArrayList<>(); - for(int n=0 ; n listData(ChapterCondition condition) { - Condition query = Condition.create(); - if(!StringUtils.isEmpty(condition.getParentCode())) { - query.eq("parent_code", condition.getParentCode()); - }else { - query.eq("tree_level", "0"); + Condition query = Condition.create(); // 创建查询条件对象 + if (!StringUtils.isEmpty(condition.getParentCode())) { + query.eq("parent_code", condition.getParentCode()); // 添加父章节代码条件 + } else { + query.eq("tree_level", "0"); // 添加树级别为 0 的条件(即根章节) } - if(!StringUtils.isEmpty(condition.getId())) { - query.eq("id", condition.getId()); + if (!StringUtils.isEmpty(condition.getId())) { + query.eq("id", condition.getId()); // 添加章节 ID 条件 } - if(!StringUtils.isEmpty(condition.getName())) { - query.like("name", condition.getName()); + if (!StringUtils.isEmpty(condition.getName())) { + query.like("name", condition.getName()); // 添加章节名称模糊匹配条件 } - if(!StringUtils.isEmpty(condition.getBookId())) { - query.andNew().eq("course_id", condition.getBookId()).or().eq("book_id", condition.getBookId()).or().eq("subject_id", condition.getBookId());; + if (!StringUtils.isEmpty(condition.getBookId())) { + query.andNew().eq("course_id", condition.getBookId()).or().eq("book_id", condition.getBookId()).or().eq("subject_id", condition.getBookId()); // 添加课程 ID、书籍 ID 或科目 ID 条件 } - return chapterMapper.selectList(query); + return chapterMapper.selectList(query); // 执行查询并返回结果 } - @SuppressWarnings("unchecked") - @Override - public JSONArray treeData(String courseId, String excludeId) { - List chapterList = null; - if(StringUtils.isEmpty(excludeId)) { - chapterList = chapterMapper.selectList(Condition.EMPTY); - } else { - chapterList = chapterMapper.selectList(Condition.create().notLike("parent_codes", excludeId).eq("id", excludeId)); - } - return turnZTreeData(chapterList); - } - + /** + * 将章节数据转换为 ZTree 格式的 JSON 数组 + * + * @param chapterList 章节实体列表 + * @return ZTree 格式的 JSON 数组 + */ private JSONArray turnZTreeData(List chapterList) { - if(chapterList != null) { - JSONArray nodes = new JSONArray(); - for(int i=0 ; i chapterList = chapterMapper.selectList(Condition.create().like("parent_codes", entity.getId())); - for(int i=0 ; i childs = chapterMapper.selectList(Condition.create().like("parent_codes", id)); - for(int i=0 ; i findCourseChapter(String courseId) { + // 根据课程 ID 查询知识关键点列表 List bookList = bookMapper.selectList(Condition.create().eq("course_id", courseId)); - if(bookList.size() == 0) { - return null; + if (bookList.size() == 0) { + return null; // 如果没有找到知识关键点,则返回 null } - Condition condition = Condition.create(); - condition.eq("tree_level", 1); - condition.eq("book_id", bookList.get(0).getId()); + + Condition condition = Condition.create(); // 创建查询条件对象 + condition.eq("tree_level", 1); // 设置树级别为 1 + condition.eq("book_id", bookList.get(0).getId()); // 设置书籍 ID + + // 根据条件查询章节列表 List list = chapterMapper.selectPage(new Page<>(1, 5), condition); - return list; + return list; // 返回章节列表 } - @Transactional(readOnly=true) + /** + * 根据父章节代码和当前章节 ID 查询下一个章节 + * + * @param parentCode 父章节代码 + * @param id 当前章节 ID + * @return 下一个章节实体 + */ + @Transactional(readOnly = true) // 开启事务,设置只读为 true @Override - public ChapterEntity selectNextChapter(String parentCode , String id) { - return chapterMapper.selectNextChapter(parentCode , id); + public ChapterEntity selectNextChapter(String parentCode, String id) { + return chapterMapper.selectNextChapter(parentCode, id); // 查询下一个章节 } -} +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/CourseServiceImpl.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/CourseServiceImpl.java index 840baed..9177181 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/CourseServiceImpl.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/CourseServiceImpl.java @@ -1,125 +1,185 @@ package com.tamguo.modules.tiku.service.impl; -import java.util.Arrays; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; -import org.springframework.util.StringUtils; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.mapper.Condition; -import com.baomidou.mybatisplus.plugins.Page; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.tamguo.modules.tiku.dao.CourseMapper; -import com.tamguo.modules.tiku.dao.SubjectMapper; -import com.tamguo.modules.tiku.model.CourseEntity; -import com.tamguo.modules.tiku.model.SubjectEntity; -import com.tamguo.modules.tiku.model.condition.CourseCondition; -import com.tamguo.modules.tiku.model.enums.CourseStatusEnum; -import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum; -import com.tamguo.modules.tiku.service.ICourseService; - -@Service -public class CourseServiceImpl extends ServiceImpl implements ICourseService{ - - @Autowired - public CourseMapper courseMapper; - @Autowired - public SubjectMapper subjectMapper; - - @SuppressWarnings("unchecked") - @Transactional(readOnly=true) +import java.util.Arrays; // 导入 Arrays 类,用于操作数组 +import java.util.List; // 导入 List 接口,用于存储科目和课程实体列表 + +import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 注解,用于依赖注入 +import org.springframework.stereotype.Service; // 导入 Service 注解,标识为服务层实现类 +import org.springframework.transaction.annotation.Transactional; // 导入 Transactional 注解,用于事务管理 +import org.springframework.util.StringUtils; // 导入 StringUtils 类,用于字符串操作 + +import com.alibaba.fastjson.JSONArray; // 导入 JSONArray 类,用于处理 JSON 数组 +import com.alibaba.fastjson.JSONObject; // 导入 JSONObject 类,用于处理 JSON 对象 +import com.baomidou.mybatisplus.mapper.Condition; // 导入 Condition 类,用于构建查询条件 +import com.baomidou.mybatisplus.plugins.Page; // 导入 Page 类,用于分页查询 +import com.baomidou.mybatisplus.service.impl.ServiceImpl; // 导入 ServiceImpl 类,作为服务层实现类的父类 +import com.tamguo.modules.tiku.dao.CourseMapper; // 导入 CourseMapper 接口,用于课程的数据访问 +import com.tamguo.modules.tiku.dao.SubjectMapper; // 导入 SubjectMapper 接口,用于科目的数据访问 +import com.tamguo.modules.tiku.model.CourseEntity; // 导入 CourseEntity 类,代表课程实体 +import com.tamguo.modules.tiku.model.SubjectEntity; // 导入 SubjectEntity 类,代表科目实体 +import com.tamguo.modules.tiku.model.condition.CourseCondition; // 导入 CourseCondition 类,代表课程查询条件 +import com.tamguo.modules.tiku.model.enums.CourseStatusEnum; // 导入 CourseStatusEnum 枚举,代表课程状态 +import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum; // 导入 SubjectStatusEnum 枚举,代表科目状态 +import com.tamguo.modules.tiku.service.ICourseService; // 导入 ICourseService 接口,定义课程服务的接口 + +@Service // 标识为服务层实现类 +public class CourseServiceImpl extends ServiceImpl implements ICourseService { + + @Autowired // 自动注入 CourseMapper 实例 + private CourseMapper courseMapper; + + @Autowired // 自动注入 SubjectMapper 实例 + private SubjectMapper subjectMapper; + + /** + * 根据条件查询课程数据 + * + * @param condition 课程查询条件 + * @return 包含课程数据的分页对象 + */ + @SuppressWarnings("unchecked") // 抑制unchecked 警告 + @Transactional(readOnly = true) // 开启事务,设置只读为 true @Override public Page listData(CourseCondition condition) { - Page page = new Page<>(condition.getPageNo() , condition.getPageSize()); - Condition query = Condition.create(); - if(!StringUtils.isEmpty(condition.getId())) { - query.eq("id", condition.getId()); + Page page = new Page<>(condition.getPageNo(), condition.getPageSize()); // 创建分页对象 + + Condition query = Condition.create(); // 创建查询条件对象 + if (!StringUtils.isEmpty(condition.getId())) { + query.eq("id", condition.getId()); // 添加课程 ID 条件 } - if(!StringUtils.isEmpty(condition.getName())) { - query.like("name", condition.getName()); + if (!StringUtils.isEmpty(condition.getName())) { + query.like("name", condition.getName()); // 添加课程名称模糊匹配条件 } - if(!StringUtils.isEmpty(condition.getSubjectId())) { - query.eq("subject_id", condition.getSubjectId()); + if (!StringUtils.isEmpty(condition.getSubjectId())) { + query.eq("subject_id", condition.getSubjectId()); // 添加科目 ID 条件 } - if(!StringUtils.isEmpty(condition.getStatus())) { - query.eq("status", condition.getStatus()); + if (!StringUtils.isEmpty(condition.getStatus())) { + query.eq("status", condition.getStatus()); // 添加课程状态条件 } - query.orderAsc(Arrays.asList("sort")); - return page.setRecords(courseMapper.selectPage(page , query)); + query.orderAsc(Arrays.asList("sort")); // 根据排序字段升序排序 + + return page.setRecords(courseMapper.selectPage(page, query)); // 执行查询并设置分页结果 } - @Transactional(readOnly=false) + /** + * 保存课程信息 + * + * @param course 课程实体 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void save(CourseEntity course) { - course.setStatus(CourseStatusEnum.NORMAL); - courseMapper.insert(course); + course.setStatus(CourseStatusEnum.NORMAL); // 设置课程状态为正常 + courseMapper.insert(course); // 插入课程记录 } - @Transactional(readOnly=false) + /** + * 更新课程信息 + * + * @param course 课程实体 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void update(CourseEntity course) { - CourseEntity entity = courseMapper.selectById(course.getId()); - entity.setName(course.getName()); - entity.setSubjectId(course.getSubjectId()); - entity.setSort(course.getSort()); - entity.setRemarks(course.getRemarks()); - courseMapper.updateById(entity); + CourseEntity entity = courseMapper.selectById(course.getId()); // 获取要更新的课程实体 + + entity.setName(course.getName()); // 更新课程名称 + entity.setSubjectId(course.getSubjectId()); // 更新科目 ID + entity.setSort(course.getSort()); // 更新排序号 + entity.setRemarks(course.getRemarks()); // 更新备注 + + courseMapper.updateById(entity); // 更新课程记录 } - @Transactional(readOnly=false) + /** + * 删除课程信息 + * + * @param uid 课程 ID + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void delete(String uid) { - CourseEntity entity = courseMapper.selectById(uid); - entity.setStatus(CourseStatusEnum.DELETE); - courseMapper.updateById(entity); + CourseEntity entity = courseMapper.selectById(uid); // 获取要删除的课程实体 + + entity.setStatus(CourseStatusEnum.DELETE); // 设置课程状态为已删除 + courseMapper.updateById(entity); // 更新课程记录 } - @Transactional(readOnly=false) + /** + * 启用课程 + * + * @param uid 课程 ID + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void enable(String uid) { - CourseEntity entity = courseMapper.selectById(uid); - entity.setStatus(CourseStatusEnum.NORMAL); - courseMapper.updateById(entity); + CourseEntity entity = courseMapper.selectById(uid); // 获取要启用的课程实体 + + entity.setStatus(CourseStatusEnum.NORMAL); // 设置课程状态为正常 + courseMapper.updateById(entity); // 更新课程记录 } - @Transactional(readOnly=false) + /** + * 禁用课程 + * + * @param uid 课程 ID + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void disabled(String uid) { - CourseEntity entity = courseMapper.selectById(uid); - entity.setStatus(CourseStatusEnum.DISABLED); - courseMapper.updateById(entity); + CourseEntity entity = courseMapper.selectById(uid); // 获取要禁用的课程实体 + + entity.setStatus(CourseStatusEnum.DISABLED); // 设置课程状态为禁用 + courseMapper.updateById(entity); // 更新课程记录 } - - @SuppressWarnings("unchecked") + + /** + * 将科目和课程数据转换为 ZTree 格式的 JSON 数组 + * + * @return ZTree 格式的 JSON 数组 + */ + @SuppressWarnings("unchecked") // 抑制 unchecked 警告 + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public JSONArray treeData() { - List subjectList = subjectMapper.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())); - List courseList = courseMapper.selectList(Condition.create().eq("status", CourseStatusEnum.NORMAL.getValue())); - return transform(subjectList, courseList); + List subjectList = subjectMapper.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())); // 查询正常状态的科目列表 + List courseList = courseMapper.selectList(Condition.create().eq("status", CourseStatusEnum.NORMAL.getValue())); // 查询正常状态的课程列表 + + return transform(subjectList, courseList); // 转换科目和课程数据为 JSON 数组 } - - private JSONArray transform(List subjectList , List courseList) { - JSONArray entitys = new JSONArray(); - for(int i=0 ; i subjectList, List courseList) { + JSONArray entitys = new JSONArray(); // 创建 JSON 数组对象 + + for (int i = 0; i < subjectList.size(); i++) { + JSONObject entity = new JSONObject(); // 创建 JSON 对象 + + SubjectEntity subject = subjectList.get(i); // 获取科目实体 + entity.put("id", subject.getId()); // 设置科目 ID + entity.put("name", subject.getName()); // 设置科目名称 + entity.put("pId", "0"); // 设置父节点 ID 为 0 + + entitys.add(entity); // 将科目对象添加到 JSON 数组中 } - return entitys; - } + for (int i = 0; i < courseList.size(); i++) { + JSONObject entity = new JSONObject(); // 创建 JSON 对象 + + CourseEntity course = courseList.get(i); // 获取课程实体 + entity.put("id", course.getId()); // 设置课程 ID + entity.put("name", course.getName()); // 设置课程名称 + entity.put("pId", course.getSubjectId()); // 设置父节点 ID 为课程所属科目 ID -} + entitys.add(entity); // 将课程对象添加到 JSON 数组中 + } + + return entitys; // 返回转换后的 JSON 数组 + } +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/KnowPointServiceImpl.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/KnowPointServiceImpl.java index e25f77f..97bb6eb 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/KnowPointServiceImpl.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/KnowPointServiceImpl.java @@ -1,129 +1,192 @@ package com.tamguo.modules.tiku.service.impl; -import java.util.List; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.alibaba.fastjson.JSONArray; -import com.alibaba.fastjson.JSONObject; -import com.baomidou.mybatisplus.mapper.Condition; -import com.baomidou.mybatisplus.plugins.Page; -import com.baomidou.mybatisplus.service.impl.ServiceImpl; -import com.tamguo.modules.tiku.dao.KnowPointMapper; -import com.tamguo.modules.tiku.dao.CourseMapper; -import com.tamguo.modules.tiku.dao.SubjectMapper; -import com.tamguo.modules.tiku.model.KnowPointEntity; -import com.tamguo.modules.tiku.model.CourseEntity; -import com.tamguo.modules.tiku.model.SubjectEntity; -import com.tamguo.modules.tiku.model.condition.BookCondition; -import com.tamguo.modules.tiku.model.enums.BookStatusEnum; -import com.tamguo.modules.tiku.model.enums.CourseStatusEnum; -import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum; -import com.tamguo.modules.tiku.service.IKnowPointService; - -@Service -public class KnowPointServiceImpl extends ServiceImpl implements IKnowPointService{ - - @Autowired - KnowPointMapper knowPointMapper; - @Autowired - CourseMapper courseMapper; - @Autowired - SubjectMapper subjectMapper; - - @Transactional(readOnly=false) +import java.util.List; // 导入 List 接口,用于存储科目、课程和知识点实体列表 + +import org.springframework.beans.factory.annotation.Autowired; // 导入 Autowired 注解,用于依赖注入 +import org.springframework.stereotype.Service; // 导入 Service 注解,标识为服务层实现类 +import org.springframework.transaction.annotation.Transactional; // 导入 Transactional 注解,用于事务管理 + +import com.alibaba.fastjson.JSONArray; // 导入 JSONArray 类,用于处理 JSON 数组 +import com.alibaba.fastjson.JSONObject; // 导入 JSONObject 类,用于处理 JSON 对象 +import com.baomidou.mybatisplus.mapper.Condition; // 导入 Condition 类,用于构建查询条件 +import com.baomidou.mybatisplus.plugins.Page; // 导入 Page 类,用于分页查询 +import com.baomidou.mybatisplus.service.impl.ServiceImpl; // 导入 ServiceImpl 类,作为服务层实现类的父类 +import com.tamguo.modules.tiku.dao.KnowPointMapper; // 导入 KnowPointMapper 接口,用于知识点的数据访问 +import com.tamguo.modules.tiku.dao.CourseMapper; // 导入 CourseMapper 接口,用于课程的数据访问 +import com.tamguo.modules.tiku.dao.SubjectMapper; // 导入 SubjectMapper 接口,用于科目的数据访问 +import com.tamguo.modules.tiku.model.KnowPointEntity; // 导入 KnowPointEntity 类,代表知识点实体 +import com.tamguo.modules.tiku.model.CourseEntity; // 导入 CourseEntity 类,代表课程实体 +import com.tamguo.modules.tiku.model.SubjectEntity; // 导入 SubjectEntity 类,代表科目实体 +import com.tamguo.modules.tiku.model.condition.BookCondition; // 导入 BookCondition 类,代表知识点查询条件 +import com.tamguo.modules.tiku.model.enums.BookStatusEnum; // 导入 BookStatusEnum 枚举,代表知识点状态 +import com.tamguo.modules.tiku.model.enums.CourseStatusEnum; // 导入 CourseStatusEnum 枚举,代表课程状态 +import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum; // 导入 SubjectStatusEnum 枚举,代表科目状态 +import com.tamguo.modules.tiku.service.IKnowPointService; // 导入 IKnowPointService 接口,定义知识点服务的接口 + +@Service // 标识为服务层实现类 +public class KnowPointServiceImpl extends ServiceImpl implements IKnowPointService { + + @Autowired // 自动注入 KnowPointMapper 实例 + private KnowPointMapper knowPointMapper; + + @Autowired // 自动注入 CourseMapper 实例 + private CourseMapper courseMapper; + + @Autowired // 自动注入 SubjectMapper 实例 + private SubjectMapper subjectMapper; + + /** + * 根据条件查询知识点数据 + * + * @param condition 知识点查询条件 + * @return 包含知识点数据的分页对象 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public Page listData(BookCondition condition) { - Page page = new Page<>(condition.getPageNo() , condition.getPageSize()); - return page.setRecords(knowPointMapper.listData(page, condition)); + Page page = new Page<>(condition.getPageNo(), condition.getPageSize()); // 创建分页对象 + return page.setRecords(knowPointMapper.listData(page, condition)); // 执行查询并设置分页结果 } - @Transactional(readOnly=false) + /** + * 保存知识点信息 + * + * @param book 知识点实体 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void save(KnowPointEntity book) { - CourseEntity course = courseMapper.selectById(book.getCourseId()); - - book.setStatus(BookStatusEnum.NORMAL); - book.setSubjectId(course.getSubjectId()); - knowPointMapper.insert(book); + CourseEntity course = courseMapper.selectById(book.getCourseId()); // 获取课程实体 + + book.setStatus(BookStatusEnum.NORMAL); // 设置知识点状态为正常 + book.setSubjectId(course.getSubjectId()); // 设置知识点所属科目 ID + knowPointMapper.insert(book); // 插入知识点记录 } - @Transactional(readOnly=false) + /** + * 更新知识点信息 + * + * @param book 知识点实体 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void update(KnowPointEntity book) { - CourseEntity course = courseMapper.selectById(book.getCourseId()); - KnowPointEntity entity = knowPointMapper.selectById(book.getId()); - - entity.setName(book.getName()); - entity.setPointNum(book.getPointNum()); - entity.setQuestionNum(book.getQuestionNum()); - entity.setRemarks(book.getRemarks()); - entity.setPublishingHouse(book.getPublishingHouse()); - entity.setSort(book.getSort()); - entity.setCourseId(course.getId()); - - knowPointMapper.updateById(entity); + CourseEntity course = courseMapper.selectById(book.getCourseId()); // 获取课程实体 + KnowPointEntity entity = knowPointMapper.selectById(book.getId()); // 获取要更新的知识点实体 + + entity.setName(book.getName()); // 更新知识点名称 + entity.setPointNum(book.getPointNum()); // 更新知识点数量 + entity.setQuestionNum(book.getQuestionNum()); // 更新问题数量 + entity.setRemarks(book.getRemarks()); // 更新备注 + entity.setPublishingHouse(book.getPublishingHouse()); // 更新出版社 + entity.setSort(book.getSort()); // 更新排序号 + entity.setCourseId(course.getId()); // 更新课程 ID + + knowPointMapper.updateById(entity); // 更新知识点记录 } - @Transactional(readOnly=false) + /** + * 删除知识点信息 + * + * @param id 知识点 ID + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void delete(String id) { - KnowPointEntity book = knowPointMapper.selectById(id); - book.setStatus(BookStatusEnum.DELETE); - knowPointMapper.updateById(book); + KnowPointEntity book = knowPointMapper.selectById(id); // 获取要删除的知识点实体 + + book.setStatus(BookStatusEnum.DELETE); // 设置知识点状态为已删除 + knowPointMapper.updateById(book); // 更新知识点记录 } - @Transactional(readOnly=false) + /** + * 启用知识点 + * + * @param id 知识点 ID + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void enable(String id) { - KnowPointEntity book = knowPointMapper.selectById(id); - book.setStatus(BookStatusEnum.NORMAL); - knowPointMapper.updateById(book); + KnowPointEntity book = knowPointMapper.selectById(id); // 获取要启用的知识点实体 + + book.setStatus(BookStatusEnum.NORMAL); // 设置知识点状态为正常 + knowPointMapper.updateById(book); // 更新知识点记录 } - @Transactional(readOnly=false) + /** + * 禁用知识点 + * + * @param id 知识点 ID + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false @Override public void disabled(String id) { - KnowPointEntity book = knowPointMapper.selectById(id); - book.setStatus(BookStatusEnum.DISABLED); - knowPointMapper.updateById(book); + KnowPointEntity book = knowPointMapper.selectById(id); // 获取要禁用的知识点实体 + + book.setStatus(BookStatusEnum.DISABLED); // 设置知识点状态为禁用 + knowPointMapper.updateById(book); // 更新知识点记录 } - @Transactional(readOnly=false) - @SuppressWarnings("unchecked") + /** + * 将科目、课程和知识点数据转换为 ZTree 格式的 JSON 数组 + * + * @return ZTree 格式的 JSON 数组 + */ + @Transactional(readOnly = false) // 开启事务,设置只读为 false + @SuppressWarnings("unchecked") // 抑制 unchecked 警告 @Override public JSONArray treeData() { - List subjectList = subjectMapper.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())); - List courseList = courseMapper.selectList(Condition.create().eq("status", CourseStatusEnum.NORMAL.getValue())); - List bookList = knowPointMapper.selectList(Condition.create().eq("status", BookStatusEnum.NORMAL.getValue())); - return transform(subjectList, courseList , bookList); + List subjectList = subjectMapper.selectList(Condition.create().eq("status", SubjectStatusEnum.NORMAL.getValue())); // 查询正常状态的科目列表 + List courseList = courseMapper.selectList(Condition.create().eq("status", CourseStatusEnum.NORMAL.getValue())); // 查询正常状态的课程列表 + List bookList = knowPointMapper.selectList(Condition.create().eq("status", BookStatusEnum.NORMAL.getValue())); // 查询正常状态的知识点列表 + + return transform(subjectList, courseList, bookList); // 转换科目、课程和知识点数据为 JSON 数组 } - private JSONArray transform(List subjectList , List courseList , List bookList) { - JSONArray entitys = new JSONArray(); - for(int i=0 ; i subjectList, List courseList, List bookList) { + JSONArray entitys = new JSONArray(); // 创建 JSON 数组对象 + + for (int i = 0; i < subjectList.size(); i++) { + JSONObject entity = new JSONObject(); // 创建 JSON 对象 + + SubjectEntity subject = subjectList.get(i); // 获取科目实体 + entity.put("id", subject.getId()); // 设置科目 ID + entity.put("name", subject.getName()); // 设置科目名称 + entity.put("pId", "0"); // 设置父节点 ID 为 0 + + entitys.add(entity); // 将科目对象添加到 JSON 数组中 } - for(int i=0 ; i implements IMenuService{ - +public class MenuServiceImpl extends ServiceImpl implements IMenuService { + + /** + * 自动注入的 MenuMapper + */ @Autowired private MenuMapper menuMapper; + + /** + * 自动注入的缓存服务 + */ @Autowired private CacheService cacheService; + /** + * 获取菜单列表 + * @return 菜单列表 + */ @SuppressWarnings("unchecked") @Override public List findMenus() { List menuList = ((List) cacheService.getObject(SystemConstant.INDEX_MENU)); if (menuList == null) { menuList = menuMapper.selectList(Condition.create().eq("parent_id", 1).eq("is_show", 1).orderDesc(Arrays.asList("orders"))); - for(MenuEntity menu : menuList){ + for (MenuEntity menu : menuList) { List childSubjects = menuMapper.selectList(Condition.create().eq("parent_id", menu.getId()).orderDesc(Arrays.asList("orders"))); menu.setChildSubjects(childSubjects); } - cacheService.setObject(SystemConstant.INDEX_MENU, menuList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.INDEX_MENU, menuList, 2 * 60 * 60); } return menuList; } + /** + * 获取所有菜单列表 + * @return 所有菜单列表 + */ @SuppressWarnings("unchecked") @Override public List findAllMenus() { List allMenuList = ((List) cacheService.getObject(SystemConstant.ALL_INDEX_MENU)); - if(allMenuList == null){ + if (allMenuList == null) { allMenuList = menuMapper.selectList(Condition.create().eq("parent_id", 1).orderDesc(Arrays.asList("orders"))); - for(MenuEntity menu : allMenuList){ + for (MenuEntity menu : allMenuList) { List childSubjects = menuMapper.selectList(Condition.create().eq("parent_id", menu.getId()).orderDesc(Arrays.asList("orders"))); menu.setChildSubjects(childSubjects); } - cacheService.setObject(SystemConstant.ALL_INDEX_MENU, allMenuList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.ALL_INDEX_MENU, allMenuList, 2 * 60 * 60); } return allMenuList; } + /** + * 获取左侧菜单列表 + * @return 左侧菜单列表 + */ @SuppressWarnings("unchecked") @Override public List findLeftMenus() { List leftMenuList = ((List) cacheService.getObject(SystemConstant.LEFT_INDEX_MENU)); - if(leftMenuList == null){ + if (leftMenuList == null) { leftMenuList = menuMapper.selectList(Condition.create().eq("parent_id", 2).orderDesc(Arrays.asList("orders"))); - for(MenuEntity menu : leftMenuList){ + for (MenuEntity menu : leftMenuList) { List childSubjects = menuMapper.selectList(Condition.create().eq("parent_id", menu.getId()).orderDesc(Arrays.asList("orders"))); menu.setChildSubjects(childSubjects); } - cacheService.setObject(SystemConstant.LEFT_INDEX_MENU, leftMenuList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.LEFT_INDEX_MENU, leftMenuList, 2 * 60 * 60); } return leftMenuList; } - + /** + * 获取章节菜单列表 + * @return 章节菜单列表 + */ @SuppressWarnings("unchecked") @Override public List findChapterMenus() { List chapterMenuList = ((List) cacheService.getObject(SystemConstant.CHAPTER_INDEX_MENU)); - if(chapterMenuList == null){ + if (chapterMenuList == null) { chapterMenuList = menuMapper.selectList(Condition.create().eq("parent_id", 4).orderAsc(Arrays.asList("orders"))); - for(MenuEntity menu : chapterMenuList){ + for (MenuEntity menu : chapterMenuList) { List childSubjects = menuMapper.selectList(Condition.create().eq("parent_id", menu.getId()).orderDesc(Arrays.asList("orders"))); menu.setChildSubjects(childSubjects); } - cacheService.setObject(SystemConstant.CHAPTER_INDEX_MENU, chapterMenuList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.CHAPTER_INDEX_MENU, chapterMenuList, 2 * 60 * 60); } return chapterMenuList; } - + /** + * 获取页脚菜单列表 + * @return 页脚菜单列表 + */ @SuppressWarnings("unchecked") @Override public List findFooterMenus() { List footerMenuList = ((List) cacheService.getObject(SystemConstant.FOOTER_INDEX_MENU)); - if(footerMenuList == null){ + if (footerMenuList == null) { footerMenuList = menuMapper.selectList(Condition.create().eq("parent_id", 3).orderDesc(Arrays.asList("orders"))); - for(MenuEntity menu : footerMenuList){ + for (MenuEntity menu : footerMenuList) { List childSubjects = menuMapper.selectList(Condition.create().eq("parent_id", menu.getId()).orderDesc(Arrays.asList("orders"))); menu.setChildSubjects(childSubjects); } - cacheService.setObject(SystemConstant.FOOTER_INDEX_MENU, footerMenuList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.FOOTER_INDEX_MENU, footerMenuList, 2 * 60 * 60); } return footerMenuList; } + /** + * 获取菜单树 + * @return 菜单树 + */ @SuppressWarnings("unchecked") @Override public List getMenuTree() { return menuMapper.selectList(Condition.EMPTY); } + /** + * 根据 ID 查找菜单实体 + * @param uid 菜单 ID + * @return 菜单实体 + */ @Override public MenuEntity findById(String uid) { return menuMapper.selectById(uid); } - -} +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/PaperServiceImpl.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/PaperServiceImpl.java index 22c2077..ee55487 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/PaperServiceImpl.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/PaperServiceImpl.java @@ -27,84 +27,134 @@ import com.tamguo.modules.tiku.service.ICourseService; import com.tamguo.modules.tiku.service.IPaperService; import com.tamguo.modules.tiku.service.ISubjectService; +/** + * PaperServiceImpl 类,实现 IPaperService 接口 + */ @Service -public class PaperServiceImpl extends ServiceImpl implements IPaperService{ - +public class PaperServiceImpl extends ServiceImpl implements IPaperService { + + /** + * 自动注入的 ISubjectService + */ @Autowired private ISubjectService iSubjectService; + + /** + * 自动注入的 ICourseService + */ @Autowired private ICourseService iCourseService; + + /** + * 自动注入的 ISysAreaService + */ @Autowired private ISysAreaService iSysAreaService; + + /** + * 自动注入的 PaperMapper + */ @Autowired private PaperMapper paperMapper; + + /** + * 自动注入的 CacheService + */ @Autowired private CacheService cacheService; + + /** + * 自动注入的 QuestionMapper + */ @Autowired private QuestionMapper questionMapper; + + /** + * 自动注入的 QuestionOptionsMapper + */ @Autowired private QuestionOptionsMapper questionOptionsMapper; - + + /** + * 获取历史试卷列表 + * @return 历史试卷列表 + */ @SuppressWarnings("unchecked") @Override public List findHistoryPaper() { List paperList = (List) cacheService.getObject(SystemConstant.HISTORY_PAPER); - if(paperList == null){ - Page page = new Page<>(1 , 6); + if (paperList == null) { + Page page = new Page<>(1, 6); paperList = paperMapper.selectPage(page, Condition.create().eq("type", SystemConstant.ZHENGTI_PAPER_ID).orderDesc(Arrays.asList("id"))); - for(int i=0 ; i findSimulationPaper() { List paperList = (List) cacheService.getObject(SystemConstant.SIMULATION_PAPER); - if(paperList == null){ - Page page = new Page<>(1 , 6); + if (paperList == null) { + Page page = new Page<>(1, 6); paperList = paperMapper.selectPage(page, Condition.create().eq("type", SystemConstant.MONI_PAPER_ID).orderDesc(Arrays.asList("id"))); - for(int i=0 ; i findHotPaper(String areaId) { List paperList = (List) cacheService.getObject(SystemConstant.HOT_PAPER); - if(paperList == null){ - Page page = new Page<>(1 , 10); + if (paperList == null) { + Page page = new Page<>(1, 10); paperList = paperMapper.selectPage(page, Condition.create().orderDesc(Arrays.asList("id"))); - for(int i=0 ; i impl entity.put("type", type); entity.put("id", UUID.randomUUID().toString()); qList.add(entity); - + paper.setQuestionInfo(qList.toString()); paperMapper.updateById(paper); } - @Transactional(readOnly=false) + /** + * 更新试卷问题信息 + * @param paperId 试卷 ID + * @param title 标题 + * @param name 名称 + * @param type 类型 + * @param uid 问题 ID + */ + @Transactional(readOnly = false) @Override public void updatePaperQuestionInfo(String paperId, String title, String name, String type, String uid) { PaperEntity paper = paperMapper.selectById(paperId); JSONArray qList = JSONArray.parseArray(paper.getQuestionInfo()); - for(int i =0 ; i impl return Result.result(Result.SUCCESS_CODE, null, "删除子卷成功"); } - @Transactional(readOnly=false) + /** + * 添加试卷 + * @param paper 试卷实体 + */ + @Transactional(readOnly = false) @Override public void addPaper(PaperEntity paper) { paper.setDownHits(0); paper.setOpenHits(0); paper.setQuestionInfo("[]"); - - // 写入seo信息 + + // 写入 seo 信息 paper.setSeoTitle(paper.getName()); paper.setSeoKeywords(paper.getName()); paper.setSeoDescription(paper.getName()); paperMapper.insert(paper); } + /** + * 更新试卷 + * @param paper 试卷实体 + * @param currMemberId 当前用户 ID + * @return 更新结果 + */ @Override - public Result updatePaper(PaperEntity paper ,String currMemberId) { + public Result updatePaper(PaperEntity paper, String CurrMemberId) { PaperEntity entity = paperMapper.selectById(paper.getId()); - if(!entity.getCreaterId().equals(currMemberId)) { + if (!entity.getCreaterId().equals(currMemberId)) { return Result.failResult("试卷属于当前用户,不能修改!"); } paper.setCreaterId(currMemberId); @@ -192,15 +273,19 @@ public class PaperServiceImpl extends ServiceImpl impl return Result.result(Result.SUCCESS_CODE, paper, "修改成功"); } + /** + * 获取试卷问题列表 + * @param paperId 试卷 ID + * @return 问题列表 + */ @Override public List findQuestionList(String paperId) { // 查询选项信息 List questionList = questionMapper.selectList(Condition.create().eq("paper_id", paperId)); questionList.forEach(question -> { - List questionOptions = questionOptionsMapper.selectList(Condition.create().eq("question_id" , question.getId())); + List questionOptions = questionOptionsMapper.selectList(Condition.create().eq("question_id", question.getId())); question.setQuestionOptions(questionOptions); }); return questionList; } - -} +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/QuestionServiceImpl.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/QuestionServiceImpl.java index f8713c5..a470578 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/QuestionServiceImpl.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/QuestionServiceImpl.java @@ -15,67 +15,136 @@ import com.tamguo.modules.tiku.model.PaperEntity; import com.tamguo.modules.tiku.model.QuestionEntity; import com.tamguo.modules.tiku.service.IQuestionService; +// 标识这是一个Spring的服务层组件类,用于实现IQuestionService接口中定义的与题目(Question)相关的业务逻辑方法, +// 它继承自ServicePlus框架提供的ServiceImpl类,借助其提供的通用数据库操作能力,结合自身的业务逻辑实现对题目数据的添加、查询、更新和删除等操作,并且通过依赖注入获取相关的Mapper对象来与数据库进行交互。 @Service -public class QuestionServiceImpl extends ServiceImpl implements IQuestionService{ - +public class QuestionServiceImpl extends ServiceImpl implements IQuestionService { + + // 自动注入PaperMapper,用于操作试卷(Paper)相关的数据,比如通过试卷ID查询试卷信息等操作,在题目相关业务逻辑中可能需要获取试卷的创建者等信息来进行权限判断等操作,依赖该Mapper与数据库的试卷表进行交互。 @Autowired private PaperMapper paperMapper; + + // 自动注入QuestionMapper,用于操作题目(Question)相关的数据,比如插入题目、根据条件查询题目、更新题目以及删除题目等数据库操作,是实现题目业务逻辑中与数据库进行交互的核心依赖对象,直接对应数据库中的题目表。 @Autowired private QuestionMapper questionMapper; + /** + * 添加题目业务逻辑方法 + * 该方法用于向数据库中添加一道新的题目信息,在添加之前会先根据传入题目所属试卷的ID去查询试卷信息,判断当前登录用户是否为该试卷的创建者, + * 如果不是则返回无权操作的提示信息;若是,则设置题目中的课程ID(从对应的试卷信息中获取),然后将题目信息插入到数据库中,并返回添加成功的提示信息。 + * + * @param question 要添加的题目实体对象,包含了题目相关的各种属性信息(如题目内容、所属试卷ID等),这些信息将被插入到数据库的题目表中,需要保证其属性值符合数据库表结构及业务要求。 + * @param currMemberId 当前登录会员的ID,用于判断当前用户是否有权限添加该题目,通过与试卷创建者的ID进行比对来确定权限,只有试卷创建者才有添加对应试卷下题目的权限,确保数据的安全性和权限控制。 + * @return 返回一个Result对象,该对象包含了操作的状态码、数据以及提示信息,用于告知调用者题目添加操作的结果,如果添加成功状态码为0,若无权操作则状态码为501,并携带相应的提示信息说明情况。 + */ @Override - public Result addQuestion(QuestionEntity question , String currMemberId) { + public Result addQuestion(QuestionEntity question, String currMemberId) { + // 根据题目实体对象中携带的试卷ID,通过PaperMapper从数据库中查询对应的试卷实体信息,用于后续判断当前用户对该试卷是否有操作权限(即是否为试卷创建者)。 PaperEntity paper = paperMapper.selectById(question.getPaperId().toString()); - if(!currMemberId.equals(paper.getCreaterId())) { + // 判断当前登录会员的ID与查询到的试卷创建者的ID是否相等,如果不相等,表示当前用户无权操作该试卷下的题目,返回包含相应错误提示信息和状态码(501)的Result对象给调用者。 + if (!currMemberId.equals(paper.getCreaterId())) { return Result.result(501, null, "改试卷不属于您!"); } + // 如果当前用户有权限添加题目,将从试卷实体对象中获取的课程ID设置到题目实体对象中,保证题目与试卷在课程维度上的关联关系正确,便于后续按课程等维度进行题目相关的查询、统计等业务操作。 question.setCourseId(paper.getCourseId()); + // 通过QuestionMapper将题目实体对象插入到数据库的题目表中,完成题目添加的数据库操作,若插入成功,则数据库中会新增一条对应的题目记录。 questionMapper.insert(question); + // 返回包含添加成功提示信息和状态码(0表示成功)的Result对象给调用者,告知题目添加操作已成功完成。 return Result.result(0, null, "添加成功!"); } + /** + * 查询题目列表业务逻辑方法 + * 根据传入的多个查询条件(如题目类型、题目ID、题目内容、所属试卷ID以及当前登录会员ID等)来查询符合条件的题目列表信息, + * 在查询之前会先根据试卷ID和当前登录会员ID判断用户是否有权限查询该试卷下的题目,如果无权则返回空的题目列表;若有权限,则根据其他条件构建查询条件对象, + * 通过MyBatis Plus的分页查询功能从数据库中获取相应的题目列表数据,并返回包含查询结果的分页对象。 + * + * @param questionType 题目类型,用于筛选特定类型的题目,若为空字符串则表示不按题目类型进行筛选,根据业务需求传入相应的题目类型值,与数据库题目表中的题目类型字段进行匹配查询。 + * @param id 题目ID,用于精确查找特定ID的题目,若为空则不按此ID进行筛选,方便根据已知的题目唯一标识来获取具体的题目信息,与数据库题目表中的题目ID字段进行匹配查询。 + * @param content 题目内容,用于模糊查询包含指定内容的题目,若为空则不按此内容进行筛选,可用于根据部分题目内容关键字来查找相关题目,通过数据库的模糊查询(LIKE操作符)与题目表中的题目内容字段进行匹配查询。 + * @param paperId 所属试卷ID,用于指定要查询题目所属的试卷,是判断权限以及确定查询范围的重要依据,通过该试卷ID结合当前登录会员ID来验证用户是否有权查询该试卷下的题目,同时也是构建查询条件与数据库题目表中所属试卷ID字段进行匹配查询的关键参数。 + * @param currMemberId 当前登录会员的ID,用于进行权限判断,通过与试卷创建者的ID对比来确定当前用户是否有权限查询该试卷下的题目,只有试卷创建者才能查询对应试卷下的题目信息,确保数据的访问权限控制。 + * @param p 分页对象,包含了分页相关的参数信息(如页码、每页记录数等),用于进行分页查询,在查询符合条件的题目列表时,会按照该分页对象的设置来获取相应分页的数据,方便在前端进行分页展示等操作。 + * @return 返回一个包含题目列表数据的Page分页对象,如果用户无权查询则返回的分页对象中记录列表为空(通过p.setRecords(null)设置),若有权查询则返回包含符合条件题目列表数据的分页对象,供前端进行分页展示等处理。 + */ @SuppressWarnings("unchecked") @Override - public Page queryQuestionList(String questionType, String id, String content, String paperId, String currMemberId , - Page p) { - if(!currMemberId.equals(paperMapper.selectById(paperId).getCreaterId())) { + public Page queryQuestionList(String questionType, String id, String content, String paperId, String currMemberId, + Page p) { + // 根据传入的试卷ID从数据库中查询对应的试卷实体信息,然后判断当前登录会员的ID与查询到的试卷创建者的ID是否相等,如果不相等,表示当前用户无权查询该试卷下的题目,直接返回传入的分页对象,并将其记录列表设置为空,表示无权获取题目数据。 + if (!currMemberId.equals(paperMapper.selectById(paperId).getCreaterId())) { return p.setRecords(null); } + // 创建一个MyBatis Plus的查询条件对象,用于构建后续查询题目时的各种条件,通过该对象可以方便地添加等于、大于、小于、模糊匹配等各种条件来精确筛选题目数据,符合MyBatis Plus的条件查询规范。 Condition condition = new Condition(); - if(!StringUtils.isEmpty(questionType)) { + // 判断题目类型是否不为空字符串,如果不为空,则添加一个等于(eq)条件到查询条件对象中,使得查询时只会获取指定题目类型的题目,与数据库题目表中的题目类型字段进行精确匹配查询。 + if (!StringUtils.isEmpty(questionType)) { condition.eq("question_type", questionType); } - if(!StringUtils.isEmpty(id)) { + // 判断题目ID是否不为空字符串,如果不为空,则添加一个等于(eq)条件到查询条件对象中,使得查询时只会获取指定ID的题目,与数据库题目表中的题目ID字段进行精确匹配查询,用于精确查找特定题目。 + if (!StringUtils.isEmpty(id)) { condition.eq("id", id); } - if(!StringUtils.isEmpty(content)) { + // 判断题目内容是否不为空字符串,如果不为空,则添加一个模糊匹配(like)条件到查询条件对象中,使得查询时会获取题目内容包含指定关键字的题目,通过数据库的模糊查询(LIKE操作符)与题目表中的题目内容字段进行匹配查询,用于根据部分内容查找相关题目。 + if (!StringUtils.isEmpty(content)) { condition.like("content", content); } + // 添加一个等于(eq)条件到查询条件对象中,指定要查询的题目所属的试卷ID,与数据库题目表中的所属试卷ID字段进行精确匹配查询,确保获取的题目都是属于指定试卷的。 condition.eq("paper_id", paperId); + // 通过QuestionMapper结合分页对象和构建好的查询条件对象进行分页查询,从数据库中获取符合条件的题目列表数据,并将查询结果设置到传入的分页对象的记录列表中,最后返回该分页对象,供前端进行分页展示等操作。 return p.setRecords(questionMapper.selectPage(p, condition)); } - @Transactional(readOnly=false) + /** + * 更新题目业务逻辑方法 + * 该方法用于更新数据库中已存在的题目信息,在更新之前会先根据传入题目所属试卷的ID去查询试卷信息,判断当前登录用户是否为该试卷的创建者, + * 如果不是则返回无权操作的提示信息;若是,则通过QuestionMapper根据题目ID更新相应的题目信息,并返回更新成功的提示信息。 + * 该方法使用了事务控制,确保在更新题目数据的过程中,如果出现异常情况,数据库操作能够回滚,保证数据的一致性和完整性。 + * + * @param question 要更新的题目实体对象,包含了更新后的题目相关属性信息(如更新后的题目内容、所属试卷ID等),这些信息将覆盖数据库中对应题目记录的原有属性值,需要保证其属性值符合数据库表结构及业务要求。 + * @param currMemberId 当前登录会员的ID,用于判断当前用户是否有权限更新该题目,通过与试卷创建者的ID进行比对来确定权限,只有试卷创建者才有更新对应试卷下题目的权限,确保数据的安全性和权限控制。 + * @return 返回一个Result对象,该对象包含了操作的状态码、数据以及提示信息,用于告知调用者题目更新操作的结果,如果更新成功状态码为0,若无权操作则状态码为501,并携带相应的提示信息说明情况。 + */ + @Transactional(readOnly = false) @Override - public Result updateQuestion(QuestionEntity question , String currMemberId) { + public Result updateQuestion(QuestionEntity question, String currMemberId) { + // 根据题目实体对象中携带的试卷ID,通过PaperMapper从数据库中查询对应的试卷实体信息,用于后续判断当前用户对该试卷是否有操作权限(即是否为试卷创建者)。 PaperEntity paper = paperMapper.selectById(question.getPaperId().toString()); - if(!currMemberId.equals(paper.getCreaterId())) { + // 判断当前登录会员的ID与查询到的试卷创建者的ID是否相等,如果不相等,表示当前用户无权操作该试卷下的题目,返回包含相应错误提示信息和状态码(501)的Result对象给调用者。 + if (!currMemberId.equals(paper.getCreaterId())) { return Result.result(501, null, "改试卷不属于您!"); } + // 如果当前用户有权限更新题目,通过QuestionMapper根据题目实体对象的ID更新数据库中对应的题目记录,将传入的题目实体对象中的属性值覆盖原有记录中的相应属性值,完成题目信息的更新操作。 questionMapper.updateById(question); + // 返回包含更新成功提示信息和状态码(0表示成功)的Result对象给调用者,告知题目更新操作已成功完成。 return Result.result(0, null, "修改成功!"); } - @Transactional(readOnly=false) + /** + * 删除题目业务逻辑方法 + * 该方法用于从数据库中删除指定ID的题目信息,在删除之前会先根据传入题目ID获取题目所属试卷的信息,判断当前登录用户是否为该试卷的创建者, + * 如果不是则返回无权操作的提示信息;若是,则通过QuestionMapper根据题目ID删除对应的题目记录,并返回删除成功的提示信息。 + * 该方法使用了事务控制,确保在删除题目数据的过程中,如果出现异常情况,数据库操作能够回滚,保证数据的一致性和完整性。 + * + * @param uid 要删除题目的唯一标识ID,用于准确指定要从数据库中删除的题目记录,通过该ID可以在数据库题目表中定位到对应的题目记录并进行删除操作,确保删除操作的准确性。 + * @param currMemberId 当前登录会员的ID,用于判断当前用户是否有权限删除该题目,通过与试卷创建者的ID进行比对来确定权限,只有试卷创建者才有删除对应试卷下题目的权限,确保数据的安全性和权限控制。 + * @return 返回一个Result对象,该对象包含了操作的状态码、数据以及提示信息,用于告知调用者题目删除操作的结果,如果删除成功状态码为0,若无权操作则状态码为501,并携带相应的提示信息说明情况。 + */ + @Transactional(readOnly = false) @Override - public Result delete(String uid , String currMemberId) { + public Result delete(String uid, String currMemberId) { + // 根据传入的题目ID,通过QuestionMapper从数据库中查询对应的题目实体信息,用于获取该题目所属试卷的ID,以便后续判断当前用户对该试卷是否有操作权限(即是否为试卷创建者)。 QuestionEntity question = questionMapper.selectById(uid); + // 根据题目所属试卷的ID,通过PaperMapper从数据库中查询对应的试卷实体信息,用于后续判断当前用户对该试卷是否有操作权限(即是否为试卷创建者)。 PaperEntity paper = paperMapper.selectById(question.getPaperId().toString()); - if(!currMemberId.equals(paper.getCreaterId())) { + // 判断当前登录会员的ID与查询到的试卷创建者的ID是否相等,如果不相等,表示当前用户无权操作该试卷下的题目,返回包含相应错误提示信息和状态码(501)的Result对象给调用者。 + if (!currMemberId.equals(paper.getCreaterId())) { return Result.result(501, null, "改试卷不属于您!"); } + // 如果当前用户有权限删除题目,通过QuestionMapper根据题目ID删除数据库中对应的题目记录,完成题目删除的数据库操作,从数据库表中移除该题目对应的行数据。 questionMapper.deleteById(uid); + // 返回包含删除成功提示信息和状态码(0表示成功)的Result对象给调用者,告知题目删除操作已成功完成。 return Result.result(0, null, "删除成功!"); } - -} + +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SchoolService.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SchoolService.java index 376212e..6498f5b 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SchoolService.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SchoolService.java @@ -19,51 +19,78 @@ import com.tamguo.modules.tiku.model.PaperEntity; import com.tamguo.modules.tiku.model.SchoolEntity; import com.tamguo.modules.tiku.service.ISchoolService; +/** + * SchoolServiceImpl 类,实现 ISchoolService 接口 + */ @Service -public class SchoolService extends ServiceImpl implements ISchoolService { +public class SchoolServiceImpl extends ServiceImpl implements ISchoolService { + /** + * 自动注入的 SchoolMapper + */ @Autowired private SchoolMapper schoolMapper; + + /** + * 自动注入的 PaperMapper + */ @Autowired private PaperMapper paperMapper; + + /** + * 自动注入的 CacheService + */ @Autowired private CacheService cacheService; + /** + * 获取精英学校试卷 + * @param shcoolId 学校 ID + * @return 精英学校试卷列表 + */ @SuppressWarnings("unchecked") @Override public List findEliteSchoolPaper(String shcoolId) { List schoolList = (List) cacheService.getObject(SystemConstant.ELITE_SCHOOL_PAPER); // 获取名校试卷 - if(schoolList == null){ - Page page = new Page<>(1 , 3); + if (schoolList == null) { + Page page = new Page<>(1, 3); schoolList = schoolMapper.selectPage(page, Condition.create().eq("id", shcoolId)); - for(SchoolEntity school : schoolList){ - Page p = new Page<>(1 , 3); + for (SchoolEntity school : schoolList) { + Page p = new Page<>(1, 3); List paperList = paperMapper.selectPage(p, Condition.create().eq("school_id", school.getId())); school.setPaperList(paperList); } - cacheService.setObject(SystemConstant.ELITE_SCHOOL_PAPER, schoolList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.ELITE_SCHOOL_PAPER, schoolList, 2 * 60 * 60); } return schoolList; } + /** + * 获取精英学校 + * @return 精英学校列表 + */ @SuppressWarnings("unchecked") @Override public List findEliteSchool() { List schoolList = (List) cacheService.getObject(SystemConstant.ELITE_PAPER); - if(schoolList == null){ - RowBounds row = new RowBounds(1 , 6); + if (schoolList == null) { + RowBounds row = new RowBounds(1, 6); schoolList = schoolMapper.selectPage(row, Condition.EMPTY); - cacheService.setObject(SystemConstant.ELITE_PAPER, schoolList , 2 * 60 * 60); + cacheService.setObject(SystemConstant.ELITE_PAPER, schoolList, 2 * 60 * 60); } return schoolList; } - @Transactional(readOnly=true) + /** + * 根据地区 ID 查询学校 + * @param areaId 地区 ID + * @return 学校列表 + */ + @Transactional(readOnly = true) @SuppressWarnings("unchecked") @Override public List findSchoolByAreaId(String areaId) { return schoolMapper.selectList(Condition.create().in("area_id", Arrays.asList(areaId.split(",")))); } - -} +} \ No newline at end of file diff --git a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SubjectServiceImpl.java b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SubjectServiceImpl.java index df19e70..cedb415 100644 --- a/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SubjectServiceImpl.java +++ b/tamguo-modules-core/src/main/java/com/tamguo/modules/tiku/service/impl/SubjectServiceImpl.java @@ -19,39 +19,62 @@ import com.tamguo.modules.tiku.model.condition.SubjectCondition; import com.tamguo.modules.tiku.model.enums.SubjectStatusEnum; import com.tamguo.modules.tiku.service.ISubjectService; +/** + * SubjectServiceImpl 类,实现 ISubjectService 接口 + */ @Service -public class SubjectServiceImpl extends ServiceImpl implements ISubjectService{ - +public class SubjectServiceImpl extends ServiceImpl implements ISubjectService { + + /** + * 自动注入的 SubjectMapper + */ @Autowired private SubjectMapper subjectMapper; + + /** + * 自动注入的 CourseMapper + */ @Autowired private CourseMapper courseMapper; - @Transactional(readOnly=false) + /** + * 列表数据 + * @param condition 条件 + * @return 页面对象 + */ + @Transactional(readOnly = false) @SuppressWarnings("unchecked") @Override public Page listData(SubjectCondition condition) { Page page = new Page<>(condition.getPageNo(), condition.getPageSize()); Condition query = Condition.create(); - if(!StringUtils.isEmpty(condition.getUid())) { + if (!StringUtils.isEmpty(condition.getUid())) { query.eq("uid", condition.getUid()); - }else if(!StringUtils.isEmpty(condition.getName())) { + } else if (!StringUtils.isEmpty(condition.getName())) { query.eq("name", condition.getName()); - }else if(!StringUtils.isEmpty(condition.getStatus())) { + } else if (!StringUtils.isEmpty(condition.getStatus())) { query.eq("status", condition.getStatus()); } query.ne("status", SubjectStatusEnum.DELETE.getValue()); return page.setRecords(subjectMapper.selectPage(page, query)); } - @Transactional(readOnly=false) + /** + * 保存 + * @param subject 实体 + */ + @Transactional(readOnly = false) @Override public void save(SubjectEntity subject) { subject.setStatus(SubjectStatusEnum.NORMAL); subjectMapper.insert(subject); } - @Transactional(readOnly=false) + /** + * 更新 + * @param subject 实体 + */ + @Transactional(readOnly = false) @Override public void update(SubjectEntity subject) { SubjectEntity entity = subjectMapper.selectById(subject.getId()); @@ -64,7 +87,11 @@ public class SubjectServiceImpl extends ServiceImpl subjectList = subjectMapper.selectList(Condition.EMPTY); - for(int i=0 ; i courseList = courseMapper.selectList(Condition.create().eq("subject_id", subject.getId())); - for(int k=0 ; k subjectList = subjectMapper.selectList(Condition.EMPTY); - for(int i=0 ; i