Browse Source

课程组查询

cy 3 years ago
parent
commit
619be27eba

+ 6 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -37,4 +37,10 @@ public class CourseGroupController extends BaseController {
     public HttpResponseResult<PageInfo<CourseGroupPracticeDetailVo>> selectPracticeGroupDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
     public HttpResponseResult<PageInfo<CourseGroupPracticeDetailVo>> selectPracticeGroupDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
         return succeed(PageUtil.pageInfo(courseGroupService.selectPracticeGroupDetail(PageUtil.getPage(search), search)));
         return succeed(PageUtil.pageInfo(courseGroupService.selectPracticeGroupDetail(PageUtil.getPage(search), search)));
     }
     }
+
+    @ApiOperation(value = "课程组管理-直播课")
+    @PostMapping(value = "/live")
+    public HttpResponseResult<PageInfo<CourseGroupLiveVo>> selectLiveGroup(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectLiveGroup(PageUtil.getPage(search), search)));
+    }
 }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java

@@ -110,5 +110,15 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      */
      */
     IPage<CourseGroupPracticeDetailVo> selectPracticeGroupDetail(@Param("page") IPage<CourseGroupPracticeDetailVo> page,
     IPage<CourseGroupPracticeDetailVo> selectPracticeGroupDetail(@Param("page") IPage<CourseGroupPracticeDetailVo> page,
                                                                  @Param("param") CourseGroupDetailSearch search);
                                                                  @Param("param") CourseGroupDetailSearch search);
+
+    /**
+     * 查询直播课
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupLiveVo> selectLiveGroup(@Param("page") IPage<CourseGroupLiveVo> page,
+                                             @Param("param") CourseGroupSearch search);
 }
 }
 
 

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -187,5 +187,13 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return
      * @return
      */
      */
     IPage<CourseGroupPracticeDetailVo> selectPracticeGroupDetail(IPage<CourseGroupPracticeDetailVo> page, CourseGroupDetailSearch search);
     IPage<CourseGroupPracticeDetailVo> selectPracticeGroupDetail(IPage<CourseGroupPracticeDetailVo> page, CourseGroupDetailSearch search);
+
+    /**
+     * 课程组管理-直播课
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupLiveVo> selectLiveGroup(IPage<CourseGroupLiveVo> page, CourseGroupSearch search);
 }
 }
 
 

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -915,6 +915,11 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         return baseMapper.selectPracticeGroupDetail(page, search);
         return baseMapper.selectPracticeGroupDetail(page, search);
     }
     }
 
 
+    @Override
+    public IPage<CourseGroupLiveVo> selectLiveGroup(IPage<CourseGroupLiveVo> page, CourseGroupSearch search) {
+        return baseMapper.selectLiveGroup(page,search);
+    }
+
     /**
     /**
      * 定时将符合开售日期的未开售的直播课课程组修改为报名中状态
      * 定时将符合开售日期的未开售的直播课课程组修改为报名中状态
      */
      */

+ 133 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupLiveVo.java

@@ -0,0 +1,133 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/19
+ */
+@ApiModel
+public class CourseGroupLiveVo extends BaseEntity {
+    @ApiModelProperty("直播课组id")
+    private Long courseGroupId;
+    @ApiModelProperty("直播课组名称")
+    private String courseGroupName;
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+    @ApiModelProperty("预计购课人数")
+    private Integer studentNum;
+    @ApiModelProperty("课时总数")
+    private Integer courseNum;
+    @ApiModelProperty("已完成课时数")
+    private Integer completeCount;
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+    @ApiModelProperty("课程组状态 ING进行中 COMPLETE已完成 DISSOLVE-未成课(解散课程) CANCEL已取消-未开始报名前可取消 APPLY报名中 NOT_SALE未开售")
+    private String status;
+    @ApiModelProperty("第一节课开始时间")
+    private String startTime;
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    public String getCourseGroupName() {
+        return courseGroupName;
+    }
+
+    public void setCourseGroupName(String courseGroupName) {
+        this.courseGroupName = courseGroupName;
+    }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getStudentNum() {
+        return studentNum;
+    }
+
+    public void setStudentNum(Integer studentNum) {
+        this.studentNum = studentNum;
+    }
+
+    public Integer getCourseNum() {
+        return courseNum;
+    }
+
+    public void setCourseNum(Integer courseNum) {
+        this.courseNum = courseNum;
+    }
+
+    public Integer getCompleteCount() {
+        return completeCount;
+    }
+
+    public void setCompleteCount(Integer completeCount) {
+        this.completeCount = completeCount;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getTeacherName() {
+        return teacherName;
+    }
+
+    public void setTeacherName(String teacherName) {
+        this.teacherName = teacherName;
+    }
+
+    public String getTeacherRealName() {
+        return teacherRealName;
+    }
+
+    public void setTeacherRealName(String teacherRealName) {
+        this.teacherRealName = teacherRealName;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(String startTime) {
+        this.startTime = startTime;
+    }
+}

+ 35 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -442,6 +442,41 @@
             </if>
             </if>
         </where>
         </where>
     </select>
     </select>
+    <select id="selectLiveGroup" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupLiveVo">
+        SELECT
+            cg.id_ AS courseGroupId,
+            cg.name_ AS courseGroupName,
+            cg.subject_id_ AS subjectId,
+            sb.name_ AS subjectName,
+            cg.teacher_id_ AS teacherId,
+            su.username_ AS teacherName,
+            su.real_name_ AS teacherRealName,
+            cg.course_num_ AS courseNum,
+            cg.pre_student_num_ AS studentNum,
+            cg.status_ AS `status`,
+            IFNULL(cm.count_,0) AS completeCount,
+            st.start_time_ AS startTime
+        FROM course_group cg
+        LEFT JOIN `subject` sb ON cg.subject_id_=sb.id_
+        LEFT JOIN sys_user su ON su.id_=cg.teacher_id_
+        LEFT JOIN (SELECT course_group_id_,COUNT(1) AS count_ FROM course_schedule WHERE type_='LIVE' AND status_='COMPLETE' GROUP BY course_group_id_) cm ON cg.id_=cm.course_group_id_
+        LEFT JOIN (SELECT course_group_id_,start_time_ FROM course_schedule WHERE type_='LIVE' GROUP BY course_group_id_) st ON cg.id_=st.course_group_id_
+        WHERE cg.type_='LIVE'
+        <if test="param.search != null and param.search != ''">
+            AND (
+            cg.id_ LIKE concat('%',#{param.search},'%') OR
+            cg.teacher_id_ LIKE concat('%',#{param.search},'%') OR
+            cg.name_ LIKE concat('%',#{param.search},'%') OR
+            su.username_ LIKE concat('%',#{param.search},'%')
+            )
+        </if>
+        <if test="param.subjectId != null">
+            AND cg.subject_id_ = #{param.subjectId}
+        </if>
+        <if test="param.status != null and param.status != ''">
+            AND cg.status_ = #{param.status}
+        </if>
+    </select>
 
 
     <update id="opsPreStudentNum">
     <update id="opsPreStudentNum">
         update course_group
         update course_group