yangfeng 1 жил өмнө
parent
commit
9d9afc7cd4

+ 61 - 0
web/src/main/java/com/ynfy/app/api/v1/controller/ApiCourseController.java

@@ -1,9 +1,13 @@
 package com.ynfy.app.api.v1.controller;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.ynfy.app.api.v1.annoation.IgnoreAuth;
+import com.ynfy.app.api.v1.entity.dto.CourseCategoryDTO;
 import com.ynfy.app.api.v1.entity.dto.CourseDTO;
+import com.ynfy.buss.course.category.entity.CourseCategory;
+import com.ynfy.buss.course.category.service.ICourseCategoryService;
 import com.ynfy.buss.course.course.entity.Course;
 import com.ynfy.buss.course.course.service.ICourseService;
 import com.ynfy.buss.course.coursecatalog.service.ICourseCatalogService;
@@ -19,6 +23,7 @@ import org.jeecg.common.api.vo.Result;
 import org.jeecg.common.aspect.annotation.AutoLog;
 import org.jeecg.common.system.vo.LoginUser;
 import org.jeecg.common.util.TokenUtil;
+import org.jeecg.common.util.oConvertUtils;
 import org.jeecg.modules.system.service.ISysPositionService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -52,6 +57,59 @@ public class ApiCourseController extends ApiBaseController {
     private ISysUserService sysUserService;
 
 
+    @Autowired
+    private ICourseCategoryService courseCategoryService;
+
+    /**
+     * 课程分类-分页列表查询
+     *
+     * @return
+     */
+    @ApiOperation(value = "课程分类-分页列表查询", notes = "课程分类-分页列表查询")
+    @IgnoreAuth
+    @PostMapping(value = "/courseCategory/rootList")
+    public Result<IPage<CourseCategory>> queryPageList(@RequestBody CourseCategoryDTO dto) {
+        String hasQuery = dto.getHasQuery();
+        if (hasQuery != null && "true".equals(hasQuery)) {
+            QueryWrapper<CourseCategory> queryWrapper = new QueryWrapper<>();
+            if (StringUtils.isNotBlank(dto.getName())) {
+                queryWrapper.eq("name", dto.getName());
+            }
+            List<CourseCategory> list = courseCategoryService.queryTreeListNoPage(queryWrapper);
+            IPage<CourseCategory> pageList = new Page<>(1, 10, list.size());
+            pageList.setRecords(list);
+            return Result.OK(pageList);
+        } else {
+            CourseCategory courseCategory = new CourseCategory();
+            if (StringUtils.isNotBlank(dto.getPid())) {
+                courseCategory.setPid(dto.getPid());
+            }
+            String parentId = courseCategory.getPid();
+            if (oConvertUtils.isEmpty(parentId)) {
+                parentId = "0";
+            }
+            courseCategory.setPid(null);
+            QueryWrapper<CourseCategory> queryWrapper = new QueryWrapper<>();
+            if (StringUtils.isNotBlank(dto.getName())) {
+                queryWrapper.eq("name", dto.getName());
+            }
+            // 使用 eq 防止模糊查询
+            queryWrapper.eq("pid", parentId);
+            Page<CourseCategory> page = new Page<>(dto.getPageNo(), dto.getPageSize());
+            IPage<CourseCategory> pageList = courseCategoryService.page(page, queryWrapper);
+            List<CourseCategory> records = pageList.getRecords();
+            if (!CollectionUtils.isEmpty(records)) {
+                List<String> parentIdList = records.stream().map(CourseCategory::getId).collect(Collectors.toList());
+                QueryWrapper<CourseCategory> queryParentWrapper = new QueryWrapper<>();
+                queryParentWrapper.in("pid", parentIdList);
+                List<CourseCategory> parentCategoryList = courseCategoryService.list(queryParentWrapper);
+                records.forEach(item -> item.setChildren(parentCategoryList.stream().filter(p ->
+                        p.getPid().equals(item.getId())).collect(Collectors.toList())));
+            }
+            return Result.OK(pageList);
+        }
+    }
+
     /**
      * 分页列表查询
      *
@@ -64,6 +122,9 @@ public class ApiCourseController extends ApiBaseController {
         Page<Course> page = new Page<>(dto.getPageNo(), dto.getPageSize());
         Course course = new Course();
         course.setName(dto.getName());
+        if (StringUtils.isNotBlank(dto.getCategoryId())) {
+            course.setCategoryId(dto.getCategoryId());
+        }
         LoginUser user = sysUserService.getLoginUser(TokenUtil.getToken(request));
         IPage<Course> pageList = courseService.selectCourseList(page, course, user);
 

+ 17 - 0
web/src/main/java/com/ynfy/app/api/v1/entity/dto/CourseCategoryDTO.java

@@ -0,0 +1,17 @@
+package com.ynfy.app.api.v1.entity.dto;
+
+import lombok.Data;
+
+@Data
+public class CourseCategoryDTO {
+
+    private String name;
+
+    private Integer pageNo;
+
+    private Integer pageSize;
+
+    private String hasQuery;
+
+    private String pid;
+}

+ 2 - 0
web/src/main/java/com/ynfy/app/api/v1/entity/dto/CourseDTO.java

@@ -10,4 +10,6 @@ public class CourseDTO {
     private Integer pageNo;
 
     private Integer pageSize;
+
+    private String categoryId;
 }

+ 5 - 0
web/src/main/java/com/ynfy/buss/course/category/entity/CourseCategory.java

@@ -1,6 +1,7 @@
 package com.ynfy.buss.course.category.entity;
 
 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 com.fasterxml.jackson.annotation.JsonFormat;
@@ -13,6 +14,7 @@ import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
+import java.util.List;
 
 /**
  * @Description: 课程分类
@@ -87,4 +89,7 @@ public class CourseCategory implements Serializable {
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
     @ApiModelProperty(value = "更新日期")
     private Date updateTime;
+
+    @TableField(exist = false)
+    private List<CourseCategory> children;
 }

+ 3 - 0
web/src/main/java/com/ynfy/buss/course/course/mapper/xml/CourseMapper.xml

@@ -54,6 +54,9 @@
             <if test="course.name!=null and course.name!=''">
                 AND tmp1.name like concat('%', #{course.name}, '%')
             </if>
+            <if test="course.categoryId!=null and course.categoryId!=''">
+                AND tmp1.category_id = #{course.categoryId}
+            </if>
             <if test="course.openType!=null">
                 AND tmp1.open_type = #{course.openType}
             </if>