cy 3 سال پیش
والد
کامیت
3e8d3c2fe2

+ 7 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -7,14 +7,12 @@ import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
-import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
-import com.yonge.cooleshow.biz.dal.vo.StudentTotalVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 老师课程表(CourseSchedule)表数据库访问层
@@ -84,12 +82,15 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     Integer countTeacherNoDecorateHomework(@Param("param") HomeworkSearch param);
 
     //查询老师约课日历
-    List<String> queryCourseSchedule(MyCourseSearch search);
+    Set<String> queryCourseSchedule(MyCourseSearch search);
 
     //根据学生id查询老师
     List<MyCourseVo> queryStudentPracticeCourse(IPage<MyCourseVo> page, @Param("param") MyCourseSearch search);
 
     //查询学生约课日历
-    List<String> queryCourseScheduleStudent(MyCourseSearch search);
+    Set<String> queryCourseScheduleStudent(MyCourseSearch search);
+
+    //老师端-课表-日历-用户
+    List<CourseStudent> queryCourseUser(IPage<CourseStudent> page, @Param("param") MyCourseSearch search);
 }
 

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MyCourseSearch.java

@@ -39,6 +39,28 @@ public class MyCourseSearch extends QueryInfo {
     @ApiModelProperty(value = "学生姓名")
     private String studentName;
 
+    @ApiModelProperty(value = "开始时间")
+    private String startDate;
+
+    @ApiModelProperty(value = "结束时间")
+    private String endDate;
+
+    public String getStartDate() {
+        return startDate;
+    }
+
+    public void setStartDate(String startDate) {
+        this.startDate = startDate;
+    }
+
+    public String getEndDate() {
+        return endDate;
+    }
+
+    public void setEndDate(String endDate) {
+        this.endDate = endDate;
+    }
+
     public Long getStudentId() {
         return studentId;
     }

+ 6 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.vo.CourseStudent;
 import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -15,6 +16,7 @@ import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.function.Function;
 
 /**
@@ -152,7 +154,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      */
     Integer countTeacherNoDecorateHomework(HomeworkSearch homeworkSearch);
 
-    List<String> queryCourseSchedule(MyCourseSearch search);
+    Set<String> queryCourseSchedule(MyCourseSearch search);
 
     IPage<MyCourseVo> queryStudentPracticeCourse(IPage<MyCourseVo> page, MyCourseSearch search);
 
@@ -165,7 +167,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      */
     boolean checkTeacherCourseSchedule(Long teacherId, Long courseId);
 
-    List<String> queryCourseScheduleStudent(MyCourseSearch search);
+    Set<String> queryCourseScheduleStudent(MyCourseSearch search);
 
     /**
      * 检查学生是否购买课程
@@ -175,5 +177,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      * @return boolean true 购买
      */
     boolean checkStudentCourseSchedule(Long studentId, Long courseId);
+
+    IPage<CourseStudent> queryCourseUser(IPage<CourseStudent> page, MyCourseSearch search);
 }
 

+ 43 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java

@@ -17,6 +17,7 @@ import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
+import com.yonge.cooleshow.biz.dal.vo.CourseStudent;
 import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
@@ -628,6 +629,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * <p>
      * 老师端-课表
      * search:{"classDate":"2022-03-27"}
+     *      search:{"classMonth":"2022-03"}
+     *
+     * 老师端-课表-陪练课
+     *      search:{"classDate":"2022-03-27"}
      *
      * @Description: 根据老师id查询购课学员
      * @Author: cy
@@ -655,7 +660,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 search.setRepliedIds(studentList);
             }
         }
-        return page.setRecords(baseMapper.queryTeacherPracticeCourse(page, search));
+        return page.setRecords(baseMapper.queryTeacherPracticeCourse(page, monthToDate(search)));
     }
 
     @Override
@@ -666,12 +671,33 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     /**
+     * 按月份计算开始结束日期
+     * @param search
+     * @return
+     */
+    public MyCourseSearch monthToDate(MyCourseSearch search){
+        String classMonth = search.getClassMonth();
+        String[] classDateSp = classMonth.split("-");
+        LocalDate firstDay;
+        try {
+            firstDay = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
+        } catch (Exception e) {
+            throw new BizException("查询时间格式不正确 ["+classMonth+"]");
+        }
+        //本月的最后一天
+        LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
+        search.setStartDate(firstDay.toString());
+        search.setEndDate(lastDay.toString());
+        return search;
+    }
+
+    /**
      * @Description: 查询老师约课日历
      * @Author: cy
      * @Date: 2022/4/13
      */
-    public List<String> queryCourseSchedule(MyCourseSearch search) {
-        return baseMapper.queryCourseSchedule(search);
+    public Set<String> queryCourseSchedule(MyCourseSearch search) {
+        return baseMapper.queryCourseSchedule(monthToDate(search));
     }
 
     /**
@@ -680,7 +706,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Date: 2022/4/13
      */
     public IPage<MyCourseVo> queryStudentPracticeCourse(IPage<MyCourseVo> page, MyCourseSearch search) {
-        return page.setRecords(baseMapper.queryStudentPracticeCourse(page, search));
+        return page.setRecords(baseMapper.queryStudentPracticeCourse(page, monthToDate(search)));
     }
 
     @Override
@@ -694,8 +720,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Author: cy
      * @Date: 2022/4/14
      */
-    public List<String> queryCourseScheduleStudent(MyCourseSearch search) {
-        return baseMapper.queryCourseScheduleStudent(search);
+    public Set<String> queryCourseScheduleStudent(MyCourseSearch search) {
+        return baseMapper.queryCourseScheduleStudent(monthToDate(search));
     }
 
     @Override
@@ -705,5 +731,16 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         return courseScheduleStudentPayment != null && studentId.equals(courseScheduleStudentPayment.getUserId());
 
     }
+
+    /**
+     * search:  {"classDate":"2022-03-27"}
+     * @Description: 老师端-课表-日历-用户
+     * @Author: cy
+     * @Date: 2022/4/18
+     */
+    @Override
+    public IPage<CourseStudent> queryCourseUser(IPage<CourseStudent> page, MyCourseSearch search) {
+        return page.setRecords(baseMapper.queryCourseUser(page, search));
+    }
 }
 

+ 158 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseStudent.java

@@ -0,0 +1,158 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/18
+ */
+@ApiModel(value = "CourseStudent")
+public class CourseStudent implements Serializable {
+    @ApiModelProperty(value = "课程id")
+    private Integer courseId;
+
+    @ApiModelProperty(value = "课程组id")
+    private Integer courseGoupId;
+
+    @ApiModelProperty(value = "上课日期")
+    private Date classDate;
+
+    @ApiModelProperty(value = "上课时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "下课时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "课程状态(NOT_START:未开始 ING:进行中 COMPLETE:已完成 CANCEL:已取消)")
+    private String status;
+
+    @ApiModelProperty(value = "课程类型(LIVE:直播课 PRACTICE:陪练课")
+    private String courseType;
+
+    @ApiModelProperty(value = "用户id")
+    private String userId;
+
+    @ApiModelProperty(value = "陪练课:用户名,直播课:课程名")
+    private String name;
+
+    @ApiModelProperty(value = "陪练课:用户头像,直播课:直播背景图")
+    private String cover;
+
+    @ApiModelProperty(value = "直播课购课人数")
+    private String payCount;
+
+    @ApiModelProperty(value = "声部id")
+    private Integer subjectId;
+
+    @ApiModelProperty(value = "声部名称")
+    private String subjectName;
+
+    public Integer getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Integer courseId) {
+        this.courseId = courseId;
+    }
+
+    public Integer getCourseGoupId() {
+        return courseGoupId;
+    }
+
+    public void setCourseGoupId(Integer courseGoupId) {
+        this.courseGoupId = courseGoupId;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    public String getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(String courseType) {
+        this.courseType = courseType;
+    }
+
+    public String getUserId() {
+        return userId;
+    }
+
+    public void setUserId(String userId) {
+        this.userId = userId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getCover() {
+        return cover;
+    }
+
+    public void setCover(String cover) {
+        this.cover = cover;
+    }
+
+    public String getPayCount() {
+        return payCount;
+    }
+
+    public void setPayCount(String payCount) {
+        this.payCount = payCount;
+    }
+
+    public Integer getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Integer subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+}
+

+ 61 - 7
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -166,8 +166,11 @@
         <if test="param.classDate !=null and param.classDate !=''">
             AND cs.class_date_ = #{param.classDate}
         </if>
-        <if test="param.classMonth !=null and param.classMonth !=''">
-            AND DATE_FORMAT(cs.class_date_,'%Y-%m') = #{param.classMonth}
+        <if test="param.startDate !=null and param.startDate !=''">
+            <![CDATA[ AND cs.class_date_  >= #{param.startDate} ]]>
+        </if>
+        <if test="param.endDate !=null and param.endDate !=''">
+            <![CDATA[ AND cs.class_date_  <= #{param.endDate} ]]>
         </if>
         <if test="param.repliedIds !=null">
             AND p.user_id_ IN
@@ -216,8 +219,8 @@
         FROM course_schedule_student_payment p
         LEFT JOIN course_schedule s ON p.course_id_ = s.id_
         WHERE s.teacher_id_=#{teacherId}
-        AND p.course_type_='PRACTICE'
-        AND DATE_FORMAT(s.class_date_,'%Y-%m') = #{classMonth}
+        <![CDATA[ AND s.class_date_  >= #{startDate} ]]>
+        <![CDATA[ AND s.class_date_  <= #{endDate} ]]>
     </select>
     <select id="queryStudentPracticeCourse" resultType="com.yonge.cooleshow.biz.dal.vo.MyCourseVo">
         SELECT
@@ -248,14 +251,65 @@
         <if test="param.classDate !=null and param.classDate !=''">
             AND s.class_date_ = #{param.classDate}
         </if>
-        <if test="param.classMonth !=null and param.classMonth !=''">
-            AND DATE_FORMAT(s.class_date_,'%Y-%m') = #{param.classMonth}
+        <if test="param.startDate !=null and param.startDate !=''">
+            <![CDATA[ AND s.class_date_  >= #{param.startDate} ]]>
+        </if>
+        <if test="param.endDate !=null and param.endDate !=''">
+            <![CDATA[ AND s.class_date_  <= #{param.endDate} ]]>
         </if>
     </select>
+
+    <select id="queryCourseUser" resultType="com.yonge.cooleshow.biz.dal.vo.CourseStudent">
+        SELECT
+            cs.id_ AS courseId,
+            cs.course_group_id_ AS courseGoupId,
+            cs.class_date_ AS classDate,
+            cs.start_time_ AS startTime,
+            cs.end_time_ AS endTime,
+            cs.status_ AS `status`,
+            cs.type_ AS courseType,
+            NULL AS userId,
+            CONCAT(g.name_,'-第',cs.class_num_,'课') AS name,
+            p.payCount AS payCount,
+            g.background_pic_ AS cover,
+            g.subject_id_ AS subjectId,
+            sb.name_ AS subjectName
+        FROM course_schedule cs
+        LEFT JOIN course_group g ON cs.course_group_id_ = g.id_
+        LEFT JOIN (SELECT course_id_ AS pid,count(*) AS payCount FROM course_schedule_student_payment GROUP BY course_id_ ) p ON cs.id_=p.pid
+        LEFT JOIN `subject` sb ON g.subject_id_=sb.id_
+        WHERE cs.type_='LIVE'
+        AND cs.teacher_id_=#{param.teacherId}
+        AND cs.class_date_=#{param.classDate}
+        UNION
+        SELECT
+            p.course_id_ AS courseId,
+            p.course_group_id_ AS courseGoupId,
+            cs.class_date_ AS classDate,
+            cs.start_time_ AS startTime,
+            cs.end_time_ AS endTime,
+            cs.status_ AS `status`,
+            cs.type_ AS courseType,
+            u.id_ AS userId,
+            u.username_ AS name,
+            NULL AS payCount,
+            u.avatar_ AS cover,
+            g.subject_id_ AS subjectId,
+            sb.name_ AS subjectName
+        FROM course_schedule_student_payment p
+        LEFT JOIN sys_user u ON p.user_id_ =u.id_
+        LEFT JOIN course_schedule cs ON p.course_id_=cs.id_
+        LEFT JOIN course_group g ON p.course_group_id_ = g.id_
+        LEFT JOIN `subject` sb ON g.subject_id_=sb.id_
+        WHERE p.course_id_ IN (SELECT s.id_ FROM course_schedule s WHERE s.type_='PRACTICE' AND s.teacher_id_=#{param.teacherId})
+        AND cs.class_date_=#{param.classDate}
+        ORDER BY startTime
+    </select>
     <select id="queryCourseScheduleStudent" resultType="java.lang.String"
             parameterType="com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch">
         SELECT class_date_ FROM course_schedule
         WHERE id_ IN (SELECT course_id_ FROM course_schedule_student_payment WHERE user_id_ = #{studentId} AND course_type_ = 'PRACTICE')
-        AND DATE_FORMAT(class_date_,'%Y-%m') = #{classMonth}
+        <![CDATA[ AND class_date_  >= #{startDate} ]]>
+        <![CDATA[ AND class_date_  <= #{endDate} ]]>
     </select>
 </mapper>

+ 2 - 1
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/CourseScheduleController.java

@@ -24,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import java.util.List;
+import java.util.Set;
 
 /**
  * @Author: cy
@@ -81,7 +82,7 @@ public class CourseScheduleController extends BaseController {
 
     @ApiOperation("学生端-课表-日历")
     @PostMapping("/queryCourseScheduleStudent")
-    public HttpResponseResult<List<String>> queryCourseScheduleStudent(@RequestBody MyCourseSearch search) {
+    public HttpResponseResult<Set<String>> queryCourseScheduleStudent(@RequestBody MyCourseSearch search) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");

+ 15 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/CourseScheduleController.java

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.CourseStudent;
 import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -25,6 +26,7 @@ import org.springframework.web.bind.annotation.RestController;
 import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 /**
  * 老师课程表(CourseSchedule)表控制层
@@ -97,7 +99,7 @@ public class CourseScheduleController extends BaseController {
 
     @ApiOperation("老师端-课表-日历")
     @PostMapping("/queryCourseSchedule")
-    public HttpResponseResult<List<String>> queryCourseSchedule(@RequestBody MyCourseSearch search) {
+    public HttpResponseResult<Set<String>> queryCourseSchedule(@RequestBody MyCourseSearch search) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
@@ -105,5 +107,17 @@ public class CourseScheduleController extends BaseController {
         search.setTeacherId(user.getId());
         return succeed(courseScheduleService.queryCourseSchedule(search));
     }
+
+    @ApiOperation("老师端-课表-日历-用户")
+    @PostMapping("/queryCourseUser")
+    public HttpResponseResult<PageInfo<CourseStudent>> queryCourseUser(@RequestBody MyCourseSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        search.setTeacherId(user.getId());
+        IPage<CourseStudent> pages = courseScheduleService.queryCourseUser(PageUtil.getPage(search), search);
+        return succeed(PageUtil.pageInfo(pages));
+    }
 }