Procházet zdrojové kódy

增加 学生端直播课查询

hgw před 3 roky
rodič
revize
d1c5054c07

+ 12 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java

@@ -71,7 +71,6 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     List<MyCourseVo> queryTeacherPracticeCourse(IPage page, @Param("param") MyCourseSearch query);
 
 
-
     /**
      * 老师未布置的课程作业数量
      * <p>
@@ -99,5 +98,17 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
     //学生端-课表-日历-用户
     List<CourseStudent> queryCourseTeacher(@Param("param") MyCourseSearch search);
+
+    /**
+     * 学生-查询直播课
+     *
+     * @param param <p> - studentId 学生id
+     *              <p> - courseState 课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消
+     *              <p> - startDate 开始时间
+     *              <p> - endDate 结束时间
+     *              <p> - subjectId 声部id
+     *              <p> - type PRACTICE 陪练课 LIVE 直播课
+     */
+    List<CourseStudent> queryStudentLiveCourse(@Param("param") Map<String, Object> param);
 }
 

+ 16 - 24
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java

@@ -13,6 +13,7 @@ import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
 import com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
 import com.yonge.cooleshow.common.page.PageInfo;
+import org.apache.ibatis.annotations.Param;
 
 import javax.validation.Valid;
 import java.util.Date;
@@ -90,26 +91,6 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
                                 Date startTime, Date endTime);
 
     /**
-     * 修改-锁定课时
-     *
-     * @param id 课程id
-     */
-    void lockCourseTime(Long id);
-
-    /**
-     * 修改-解锁课时
-     *
-     * @param id 课程id
-     */
-    void unlockCourseTime(Long id);
-
-    /**
-     * 添加课时
-     */
-    void add(@Valid CourseSchedule course);
-
-
-    /**
      * 创建直播课时选课时的日历
      * <P>主要查询该老师目前的课程时间
      * <P>根据传入的单课时时长将时间分片后来匹配数据库中课程时间,得到每日空余时间
@@ -164,7 +145,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      * 检查课程是否属于老师
      *
      * @param teacherId 老师id
-     * @param courseId 课程id
+     * @param courseId  课程id
      * @return boolean true 属于老师
      */
     boolean checkTeacherCourseSchedule(Long teacherId, Long courseId);
@@ -175,15 +156,26 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      * 检查学生是否购买课程
      *
      * @param studentId 学生id
-     * @param courseId 课程id
+     * @param courseId  课程id
      * @return boolean true 购买
      */
     boolean checkStudentCourseSchedule(Long studentId, Long courseId);
 
-    Map<String,Object> queryCourseUser(MyCourseSearch search);
+    Map<String, Object> queryCourseUser(MyCourseSearch search);
 
     IPage<PracticeTeacherVo> teacherList(IPage<PracticeTeacherVo> page, PracticeTeacherSearch search);
 
-    Map<String,Object> queryCourseTeacher(MyCourseSearch search);
+    Map<String, Object> queryCourseTeacher(MyCourseSearch search);
+
+    /**
+     * 学生-查询直播课
+     *
+     * @param param 传入参数
+     *              <p> - studentId 学生id
+     *              <p> - courseState 课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消
+     *              <p> - classDate 查询时间-年月
+     *              <p> - subjectId 声部id
+     */
+    List<CourseStudent> queryStudentLiveCourse(Map<String, Object> param);
 }
 

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

@@ -2,7 +2,6 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.yonge.cooleshow.biz.dal.enums.GoodTypeEnum;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
@@ -467,8 +466,8 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
             return liveCourseGroupVoIPage;
         }
         List<Long> courseGroupIdList = records.stream()
-                                              .map(LiveCourseGroupVo::getCourseGroupId)
-                                              .collect(Collectors.toList());
+                .map(LiveCourseGroupVo::getCourseGroupId)
+                .collect(Collectors.toList());
 
         // 获取课程组声部
         List<LiveCourseGroupVo> subjectList = baseMapper.selectCourseGroupSubject(courseGroupIdList);
@@ -584,18 +583,22 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         List<CourseSchedule> courseList = JSONArray.parseArray(JSON.toJSONString(param.get("courseList")), CourseSchedule.class);
         CourseGroup courseGroup = (CourseGroup) param.get("courseGroup");
 
+        //获取每节课购买的价格
+        Map<Integer, BigDecimal> courseAveragePrice = getCourseAveragePrice(courseGroup.getCourseNum(), courseGroup.getCoursePrice());
         //写course_schedule_student_payment表 作为记录锁定时间用,防止重复购买,如果支付失败则删除该数据
         List<CourseScheduleStudentPayment> studentPaymentList = new ArrayList<>();
         Date now = new Date();
+        AtomicInteger i = new AtomicInteger(1);
         courseList.forEach(course -> {
             CourseScheduleStudentPayment studentPayment = new CourseScheduleStudentPayment();
             studentPayment.setUserId(studentId);
             studentPayment.setCourseGroupId(courseGroup.getId());
             studentPayment.setCourseId(course.getId());
             studentPayment.setOrderNo(orderNo);
-            studentPayment.setOriginalPrice(courseGroup.getCoursePrice());
-            studentPayment.setExpectPrice(courseGroup.getCoursePrice());
-            studentPayment.setActualPrice(courseGroup.getCoursePrice());
+            BigDecimal amount = courseAveragePrice.get(i.getAndIncrement());
+            studentPayment.setOriginalPrice(amount);
+            studentPayment.setExpectPrice(amount);
+            studentPayment.setActualPrice(amount);
             studentPayment.setCreatedTime(now);
             studentPayment.setUpdatedTime(now);
             studentPayment.setCourseType(courseGroup.getType());
@@ -609,7 +612,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
      */
     @Transactional(rollbackFor = Exception.class)
     @Override
-    public void buyLiveCourseSuccess( UserOrderDetailVo orderParam) {
+    public void buyLiveCourseSuccess(UserOrderDetailVo orderParam) {
         log.info("学生购买直播课程-成功-回调,请求参数:{}", JSON.toJSONString(orderParam));
         String orderNo = orderParam.getOrderNo();
         //更新课程组的购买人数+1
@@ -654,6 +657,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         courseScheduleTeacherSalaryService.getDao().insertBatch(teacherSalaryList);
     }
 
+
     /**
      * 学生购买直播课程,计算每节课课酬
      *
@@ -667,13 +671,24 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         BiFunction<BigDecimal, BigDecimal, BigDecimal> getPrice = (p, r) -> p.subtract(p.multiply(r)).setScale(2, RoundingMode.HALF_UP);
         //总课酬
         BigDecimal totalRatePrice = getPrice.apply(totalPrice, rate);
-        //每节课累计总额
-        BigDecimal cumulativeAmount = BigDecimal.ZERO;
-        //每节课的课酬
+        return getCourseAveragePrice(totalCourseNum, totalRatePrice);
+    }
+
+    /**
+     * 计算课堂每节课价格
+     *
+     * @param totalCourseNum 总课程数
+     * @param totalRatePrice 总金额
+     * @return key 课堂数 value 课酬
+     */
+    private Map<Integer, BigDecimal> getCourseAveragePrice(Integer totalCourseNum, BigDecimal totalRatePrice) {
+        //每节课的单价 四舍五入
         BigDecimal singerSalary = totalRatePrice.divide(BigDecimal.valueOf(totalCourseNum), 2, RoundingMode.HALF_UP);
+        //单价累计总额
+        BigDecimal cumulativeAmount = BigDecimal.ZERO;
         Map<Integer, BigDecimal> map = new HashMap<>();
         for (int i = 1; i <= totalCourseNum; i++) {
-            //最后一节课,直接用总课酬减去累计课酬
+            //最后一节课,直接用总课酬减去累计总额
             if (i == totalCourseNum) {
                 singerSalary = totalRatePrice.subtract(cumulativeAmount);
             }

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

@@ -28,6 +28,7 @@ import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.toolset.utils.date.DateUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
+import org.apache.ibatis.annotations.Param;
 import org.redisson.api.RMap;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -49,7 +50,6 @@ import java.util.function.Function;
  * @author hgw
  * @since 2022-03-18 15:29:11
  */
-@Validated
 @Service("courseScheduleService")
 public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, CourseSchedule> implements CourseScheduleService {
 
@@ -201,46 +201,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
 
     /**
-     * 锁定课时
-     *
-     * @param id 课程id
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void lockCourseTime(Long id) {
-        CourseSchedule course = new CourseSchedule();
-        course.setId(id);
-        course.setLock(1);
-        course.setLockTime(new Date());
-        this.updateById(course);
-    }
-
-    /**
-     * 解锁
-     *
-     * @param id 课程id
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void unlockCourseTime(Long id) {
-        CourseSchedule course = new CourseSchedule();
-        course.setId(id);
-        course.setLock(0);
-        course.setLockTime(new Date());
-        this.updateById(course);
-    }
-
-    /**
-     * 添加课时
-     */
-    @Transactional(rollbackFor = Exception.class)
-    @Override
-    public void add(@Valid CourseSchedule course) {
-        CourseScheduleEnum.existCourseType(course.getType(), "课程类型不正确");
-        this.save(course);
-    }
-
-    /**
      * 创建直播课时选课时的日历
      * <P>主要查询该老师目前的课程时间
      * <P>根据传入的单课时时长将时间分片后来匹配数据库中课程时间,得到每日空余时间
@@ -678,7 +638,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      */
     public MyCourseSearch monthToDate(MyCourseSearch search) {
         String classMonth = search.getClassMonth();
-        if (StringUtils.isBlank(classMonth)){
+        if (StringUtils.isBlank(classMonth)) {
             return search;
         }
         String[] classDateSp = classMonth.split("-");
@@ -742,22 +702,22 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Date: 2022/4/18
      */
     @Override
-    public Map<String,Object> queryCourseUser(MyCourseSearch search) {
+    public Map<String, Object> queryCourseUser(MyCourseSearch search) {
         List<CourseStudent> studentList = baseMapper.queryCourseUser(search);
 
         Map<String, String> sysConfig = new HashMap<>();
         //提前XX分钟创建/进入陪练课房间时间
-        sysConfig.put("practiceStartTime",sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_PRACTICE_ROOM_MINUTE));
+        sysConfig.put("practiceStartTime", sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_PRACTICE_ROOM_MINUTE));
         //陪练课结束后,XX分钟关闭房间
-        sysConfig.put("practiceEndTime",sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
+        sysConfig.put("practiceEndTime", sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
         //提前XX分钟创建/进入直播房间的时间
-        sysConfig.put("liveStartTime",sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE));
+        sysConfig.put("liveStartTime", sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE));
         //直播结束后,XX分钟关闭房间
-        sysConfig.put("liveEndTime",sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE));
+        sysConfig.put("liveEndTime", sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE));
 
-        Map map=new HashMap();
-        map.put("sysConfig",sysConfig);
-        map.put("studentList",studentList);
+        Map map = new HashMap();
+        map.put("sysConfig", sysConfig);
+        map.put("studentList", studentList);
         return map;
     }
 
@@ -770,10 +730,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     public IPage<PracticeTeacherVo> teacherList(IPage<PracticeTeacherVo> page, PracticeTeacherSearch search) {
         String collation = search.getCollation();//排序规则
         String sortField = search.getSortField();//排序字段
-        if (StringUtils.isNotBlank(sortField)){
-            if (StringUtils.isNotBlank(collation)){
-                search.setSort(sortField+" "+collation);
-            }else search.setSort(sortField);
+        if (StringUtils.isNotBlank(sortField)) {
+            if (StringUtils.isNotBlank(collation)) {
+                search.setSort(sortField + " " + collation);
+            } else search.setSort(sortField);
         }
         return page.setRecords(baseMapper.teacherList(page, search));
     }
@@ -783,22 +743,51 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Author: cy
      * @Date: 2022/4/20
      */
-    public Map<String,Object> queryCourseTeacher(MyCourseSearch search) {
-        List<CourseStudent> teacherList=baseMapper.queryCourseTeacher(search);
+    public Map<String, Object> queryCourseTeacher(MyCourseSearch search) {
+        List<CourseStudent> teacherList = baseMapper.queryCourseTeacher(search);
         Map<String, String> sysConfig = new HashMap<>();
         //提前XX分钟创建/进入陪练课房间时间
-        sysConfig.put("practiceStartTime",sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_PRACTICE_ROOM_MINUTE));
+        sysConfig.put("practiceStartTime", sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_PRACTICE_ROOM_MINUTE));
         //陪练课结束后,XX分钟关闭房间
-        sysConfig.put("practiceEndTime",sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
+        sysConfig.put("practiceEndTime", sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_PRACTICE_ROOM_MINUTE));
         //提前XX分钟创建/进入直播房间的时间
-        sysConfig.put("liveStartTime",sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE));
+        sysConfig.put("liveStartTime", sysConfigService.findConfigValue(SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE));
         //直播结束后,XX分钟关闭房间
-        sysConfig.put("liveEndTime",sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE));
+        sysConfig.put("liveEndTime", sysConfigService.findConfigValue(SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE));
 
-        Map map=new HashMap();
-        map.put("sysConfig",sysConfig);
-        map.put("studentList",teacherList);
+        Map map = new HashMap();
+        map.put("sysConfig", sysConfig);
+        map.put("studentList", teacherList);
         return map;
     }
+
+
+    /**
+     * 学生-查询直播课
+     *
+     * @param param 传入参数
+     *              <p> - studentId 学生id
+     *              <p> - courseState 课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消
+     *              <p> - classDate 查询时间-年月
+     *              <p> - subjectId 声部id
+     */
+    @Override
+    public List<CourseStudent> queryStudentLiveCourse(Map<String, Object> param) {
+        String classDate = WrapperUtil.toStr(param, "classDate");
+        String[] classDateSp = classDate.split("-");
+        LocalDate firstDay;
+        try {
+            firstDay = LocalDate.of(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1);
+        } catch (Exception e) {
+            throw new BizException("查询时间格式不正确 [" + classDate + "]");
+        }
+        //本月的最后一天
+        LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
+        param.put("type", CourseScheduleEnum.LIVE.getCode());
+        param.put("startDate", firstDay.toString());
+        param.put("endDate", lastDay.toString());
+       return baseMapper.queryStudentLiveCourse(param);
+    }
+
 }
 

+ 46 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupVo.java

@@ -56,6 +56,20 @@ public class CourseGroupVo implements Serializable {
     @ApiModelProperty(value = "课程介绍")
     private String courseIntroduce;
 
+    @ApiModelProperty(value = "老师头像")
+    private String avatar;
+
+    @ApiModelProperty(value = "销售开始日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date salesStartDate;
+
+    @ApiModelProperty(value = "销售结束日期")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    private Date salesEndDate;
+
+    @ApiModelProperty(value = "最少成课人数")
+    private Integer mixStudentNum;
+
     public Long getCourseGroupId() {
         return courseGroupId;
     }
@@ -159,4 +173,36 @@ public class CourseGroupVo implements Serializable {
     public void setCourseIntroduce(String courseIntroduce) {
         this.courseIntroduce = courseIntroduce;
     }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public Date getSalesStartDate() {
+        return salesStartDate;
+    }
+
+    public void setSalesStartDate(Date salesStartDate) {
+        this.salesStartDate = salesStartDate;
+    }
+
+    public Date getSalesEndDate() {
+        return salesEndDate;
+    }
+
+    public void setSalesEndDate(Date salesEndDate) {
+        this.salesEndDate = salesEndDate;
+    }
+
+    public Integer getMixStudentNum() {
+        return mixStudentNum;
+    }
+
+    public void setMixStudentNum(Integer mixStudentNum) {
+        this.mixStudentNum = mixStudentNum;
+    }
 }

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

@@ -51,6 +51,9 @@ public class CourseStudent implements Serializable {
     @ApiModelProperty(value = "声部名称")
     private String subjectName;
 
+    @ApiModelProperty(value = "头像")
+    private String avatar;
+
     public Integer getCourseId() {
         return courseId;
     }
@@ -154,5 +157,13 @@ public class CourseStudent implements Serializable {
     public void setSubjectName(String subjectName) {
         this.subjectName = subjectName;
     }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
 }
 

+ 5 - 1
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -58,7 +58,11 @@
         ifnull(b.pre_student_num_, 0) as studentCount,
         b.background_pic_             as backgroundPic,
         b.course_price_               as coursePrice,
-        b.course_num_                 as courseNum
+        b.course_num_                 as courseNum,
+        u.avatar_ as avatar,
+        b.sales_start_date_           as salesStartDate,
+        b.sales_end_date_             as salesEndDate,
+        b.mix_student_num_            as mixStudentNum
         from course_group as b
         left join subject as s on b.subject_id_ = s.id_
         left join sys_user as u on b.teacher_id_ = u.id_

+ 37 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml

@@ -348,6 +348,7 @@
             </when>
         </choose>
     </select>
+
     <select id="queryCourseTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.CourseStudent"
             parameterType="com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch">
         SELECT
@@ -392,4 +393,40 @@
         AND s.class_date_ = #{param.classDate}
         ORDER BY startTime
     </select>
+
+    <select id="queryStudentLiveCourse" parameterType="map" 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,
+        su.real_name_ AS userId,
+        CONCAT(g.name_,'-第',cs.class_num_,'课') AS name,
+        IFNULL(g.pre_student_num_, 0) AS payCount,
+        g.background_pic_ AS cover,
+        g.subject_id_ AS subjectId,
+        sb.name_ AS subjectName,
+        su.avatar_ AS avatar
+        FROM
+        course_schedule_student_payment as a
+        LEFT JOIN course_schedule cs on a.course_id_ = cs.id_
+        LEFT JOIN course_group g ON cs.course_group_id_ = g.id_
+        LEFT JOIN `subject` sb ON g.subject_id_=sb.id_
+        LEFT JOIN sys_user su on g.teacher_id_ = su.id_
+        WHERE cs.type_=#{param.type}
+        AND a.user_id_ = #{param.studentId}
+        <![CDATA[ AND class_date_  >= #{param.startDate} ]]>
+        <![CDATA[ AND class_date_  <= #{param.endDate} ]]>
+        <if test="param.subjectId != null">
+            AND g.subject_id_ = #{param.subjectId}
+        </if>
+        <if test="param.courseState != null">
+            and cs.status_ = #{param.courseState}
+        </if>
+        ORDER BY cs.start_time_
+    </select>
+
 </mapper>

+ 22 - 5
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/CourseScheduleController.java → cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentCourseScheduleController.java

@@ -10,12 +10,15 @@ import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.CourseRepliedService;
 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.PracticeTeacherVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
@@ -25,6 +28,7 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -35,7 +39,7 @@ import java.util.Set;
 @Api(tags = "学生课表")
 @RestController
 @RequestMapping("/courseSchedule")
-public class CourseScheduleController extends BaseController {
+public class StudentCourseScheduleController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;
     @Autowired
@@ -60,12 +64,12 @@ public class CourseScheduleController extends BaseController {
     @PostMapping(value = "/replied", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> replied(@Validated @RequestBody CourseScheduleReplied replied) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null  || sysUser.getId() == null) {
+        if (sysUser == null || sysUser.getId() == null) {
             return failed("用户信息获取失败");
         }
 
         replied.setCourseGroupType(CourseScheduleEnum.PRACTICE.getCode());
-        repliedService.replied(replied,sysUser);
+        repliedService.replied(replied, sysUser);
         return succeed();
     }
 
@@ -100,9 +104,9 @@ public class CourseScheduleController extends BaseController {
         return succeed(PageUtil.pageInfo(pages));
     }
 
-    @ApiOperation(value = "学生端-课表-日历-用户",notes = "search:{\"classDate\":\"2022-03-27\"}")
+    @ApiOperation(value = "学生端-课表-日历-用户", notes = "search:{\"classDate\":\"2022-03-27\"}")
     @PostMapping("/queryCourseTeacher")
-    public HttpResponseResult<Map<String,Object>> queryCourseTeacher(@RequestBody MyCourseSearch search) {
+    public HttpResponseResult<Map<String, Object>> queryCourseTeacher(@RequestBody MyCourseSearch search) {
         SysUser user = sysUserFeignService.queryUserInfo();
         if (user == null || null == user.getId()) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
@@ -110,5 +114,18 @@ public class CourseScheduleController extends BaseController {
         search.setStudentId(user.getId());
         return succeed(courseScheduleService.queryCourseTeacher(search));
     }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "studentId", dataType = "String", required = true, value = "学生id"),
+            @ApiImplicitParam(name = "classDate", dataType = "String", required = true, value = "年月"),
+            @ApiImplicitParam(name = "courseState", dataType = "String", value = "课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消"),
+            @ApiImplicitParam(name = "subjectId", dataType = "Long", value = "声部id"),
+    })
+    @ApiOperation("学生-查询直播课")
+    @PostMapping("/queryStudentLiveCourse")
+    public HttpResponseResult<List<CourseStudent>> queryStudentLiveCourse(@RequestBody Map<String, Object> param) {
+        return succeed(courseScheduleService.queryStudentLiveCourse(param));
+    }
+
 }
 

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

@@ -36,7 +36,7 @@ import java.util.Set;
 @Api(tags = "老师课程表")
 @RestController
 @RequestMapping("/courseSchedule")
-public class CourseScheduleController extends BaseController {
+public class TeacherCourseScheduleController extends BaseController {
     /**
      * 服务对象
      */