Browse Source

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 years ago
parent
commit
f9c54724f9

+ 66 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -4,9 +4,9 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.CourseGroupDetailSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.CourseGroupSearch;
-import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.controller.BaseController;
@@ -21,7 +21,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Author: cy
@@ -36,6 +35,8 @@ public class CourseGroupController extends BaseController {
     private CourseGroupService courseGroupService;
     @Autowired
     private SysUserFeignService sysUserFeignService;
+    @Autowired
+    private CourseScheduleService courseScheduleService;
 
     @ApiOperation(value = "课程组管理-陪练课",notes = "{\n" +
             "    \"subjectId\":20,\n" +
@@ -173,4 +174,67 @@ public class CourseGroupController extends BaseController {
         search.setStudentId(user.getId());
         return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroupStudent(PageUtil.getPage(search), search)));
     }
+
+    @ApiOperation(value = "学员管理-琴房课-详情",notes = "{\n" +
+            "    \"courseGroupId\":334,\n" +
+            "    \"search\":\"\",\n" +
+            "    \"status\":\"\",\n" +
+            "    \"startTime\":null,\n" +
+            "    \"endTime\":null,\n" +
+            "    \"teacherSign\":0,\n" +
+            "    \"studentSign\":0\n" +
+            "}")
+    @PostMapping(value = "/piano/student/detail")
+    public HttpResponseResult<PageInfo<CourseGroupPianoDetailVo>> selectPianoGroupStudentDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        search.setStudentId(user.getId());
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroupStudentDetail(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation("查询琴房剩余时长、冻结时长、统计学员人数")
+    @GetMapping("/selectRemainTime")
+    public HttpResponseResult<PianoRoomTimeVo> selectRemainTime() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(courseScheduleService.selectRemainTime(user.getId()));
+    }
+
+    @ApiOperation(value = "老师管理-琴房课",notes = "{\n" +
+            "    \"subjectId\":20,\n" +
+            "    \"search\":\"师\",\n" +
+            "    \"status\":\"ING\"\n" +
+            "}")
+    @PostMapping(value = "/piano/teacher")
+    public HttpResponseResult<PageInfo<CourseGroupPianoVo>> selectPianoGroupTeacher(@RequestBody CourseGroupSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        search.setTeacherId(user.getId());
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroupTeacher(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "老师管理-琴房课-详情",notes = "{\n" +
+            "    \"courseGroupId\":334,\n" +
+            "    \"search\":\"\",\n" +
+            "    \"status\":\"\",\n" +
+            "    \"startTime\":null,\n" +
+            "    \"endTime\":null,\n" +
+            "    \"teacherSign\":0,\n" +
+            "    \"studentSign\":0\n" +
+            "}")
+    @PostMapping(value = "/piano/teacher/detail")
+    public HttpResponseResult<PageInfo<CourseGroupPianoDetailVo>> selectPianoGroupTeacherDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        search.setTeacherId(user.getId());
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroupTeacherDetail(PageUtil.getPage(search), search)));
+    }
 }

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

@@ -225,5 +225,35 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      */
     IPage<CourseGroupPianoVo> selectPianoGroupStudent(@Param("page") IPage<CourseGroupPianoVo> page,
                                                       @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询琴房课详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupStudentDetail(@Param("page") IPage<CourseGroupPianoDetailVo> page,
+                                                                  @Param("param") CourseGroupDetailSearch search);
+
+    /**
+     * 根据老师查询琴房课组
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoVo> selectPianoGroupTeacher(@Param("page") IPage<CourseGroupPianoVo> page,
+                                                      @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询琴房课详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupTeacherDetail(@Param("page") IPage<CourseGroupPianoDetailVo> page,
+                                                                  @Param("param") CourseGroupDetailSearch search);
 }
 

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleRepliedDao.java

@@ -6,6 +6,7 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.vo.CourseRepliedVo;
+import com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentVo;
 import com.yonge.cooleshow.biz.dal.vo.MyRepliedVo;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleReplied;
@@ -63,4 +64,6 @@ public interface CourseScheduleRepliedDao extends BaseMapper<CourseScheduleRepli
 	 * @Date: 2022/4/19
 	 */
     CourseRepliedVo selectReplied(CourseScheduleReplied replied);
+
+    void insertBatch(List<CourseScheduleStudentVo> list);
 }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/CourseGroupDetailSearch.java

@@ -17,7 +17,7 @@ import java.util.List;
 @ApiModel
 public class CourseGroupDetailSearch extends QueryInfo {
     @ApiModelProperty(value = "课程组id")
-    @NotNull
+    @NotNull(message = "课程组id不能为空")
     private Long courseGroupId;
     @ApiModelProperty(value = "课程编号/老师姓名/老师编号/学员姓名/学员编号")
     private String search;

+ 45 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -146,6 +146,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * <p>定时将符合结束售卖日期的在售卖中的直播课课程组修改为取消或者成课状态状态-每隔10分钟执行一次
      */
     void opsCourseGroup();
+
     /***
      * 直播课退款单-创建前
      * @param: refundReq
@@ -153,6 +154,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes>
      */
     HttpResponseResult<RefundCreateRes> refundCreate(OrderRefundReq refundReq);
+
     /***
      * 直播课退款单-创建后
      * @param: userOrderRefund
@@ -160,6 +162,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes>
      */
     void refundAfter(UserOrderDetailVo userOrderDetailVo);
+
     /***
      * 直播课退款单-退款成功
      * @param: userOrderRefund
@@ -167,6 +170,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return: com.yonge.cooleshow.common.entity.HttpResponseResult<com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes>
      */
     void refundSuccess(UserOrderDetailVo userOrderDetailVo);
+
     /***
      * 直播课退款单-退款失败
      * @param: userOrderRefund
@@ -177,6 +181,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-陪练课
+     *
      * @param page
      * @param search
      * @return
@@ -185,6 +190,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-陪练课-详情
+     *
      * @param page
      * @param search
      * @return
@@ -193,6 +199,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-直播课
+     *
      * @param page
      * @param search
      * @return
@@ -201,6 +208,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-直播课-购买学员
+     *
      * @param page
      * @param search
      * @return
@@ -209,6 +217,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-直播课-教学计划
+     *
      * @param page
      * @param search
      * @return
@@ -217,6 +226,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-视频课
+     *
      * @param page
      * @param search
      * @return
@@ -225,6 +235,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-视频课-购买学员
+     *
      * @param page
      * @param search
      * @return
@@ -233,6 +244,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-视频课-教学计划
+     *
      * @param page
      * @param search
      * @return
@@ -241,6 +253,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-直播课-课程信息
+     *
      * @param groupId
      * @return
      */
@@ -248,6 +261,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-琴房课
+     *
      * @param page
      * @param search
      * @return
@@ -256,6 +270,7 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-琴房课-详情
+     *
      * @param page
      * @param search
      * @return
@@ -264,17 +279,46 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 课程组管理-琴房课-详情-学员名单
+     *
      * @param courseId
      * @return
      */
-    List<StudentSignVo> studentSign(Long courseId,String type);
+    List<StudentSignVo> studentSign(Long courseId, String type);
 
     /**
      * 学员管理-琴房课
+     *
      * @param page
      * @param search
      * @return
      */
     IPage<CourseGroupPianoVo> selectPianoGroupStudent(IPage<CourseGroupPianoVo> page, CourseGroupSearch search);
+
+    /**
+     * 学员管理-琴房课-详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupStudentDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search);
+
+    /**
+     * 老师管理-琴房课
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoVo> selectPianoGroupTeacher(IPage<CourseGroupPianoVo> page, CourseGroupSearch search);
+
+    /**
+     * 老师管理-琴房课-详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupTeacherDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search);
 }
 

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

@@ -1142,5 +1142,20 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     public IPage<CourseGroupPianoVo> selectPianoGroupStudent(IPage<CourseGroupPianoVo> page, CourseGroupSearch search) {
         return baseMapper.selectPianoGroupStudent(page, search);
     }
+
+    @Override
+    public IPage<CourseGroupPianoDetailVo> selectPianoGroupStudentDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search) {
+        return baseMapper.selectPianoGroupStudentDetail(page,search);
+    }
+
+    @Override
+    public IPage<CourseGroupPianoVo> selectPianoGroupTeacher(IPage<CourseGroupPianoVo> page, CourseGroupSearch search) {
+        return baseMapper.selectPianoGroupTeacher(page,search);
+    }
+
+    @Override
+    public IPage<CourseGroupPianoDetailVo> selectPianoGroupTeacherDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search) {
+        return baseMapper.selectPianoGroupTeacherDetail(page,search);
+    }
 }
 

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

@@ -1526,6 +1526,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //课程结束(NOW ≥ 结束时间)
         List<CourseScheduleStudentVo> userList = paymentDao.selectUser();
         if (CollectionUtils.isNotEmpty(userList)) {
+            List<CourseScheduleStudentVo> practiceList = userList.stream().filter(s -> s.getType().equals(CourseScheduleEnum.PRACTICE.getCode())).collect(Collectors.toList());
+            if(CollectionUtils.isNotEmpty(practiceList)){//添加陪练课评论
+                repliedDao.insertBatch(practiceList);
+            }
+
+
             //更新学生最近结课时间
             List<CourseScheduleStudentVo> pianoUserList = userList.stream().filter((CourseScheduleStudentVo s) -> s.getType().equals(CourseScheduleEnum.PIANO_ROOM_CLASS.getCode())).collect(Collectors.toList());
             if (CollectionUtils.isNotEmpty(pianoUserList)) {

+ 42 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoDetailVo.java

@@ -57,6 +57,48 @@ public class CourseGroupPianoDetailVo extends BaseEntity {
     @ApiModelProperty("学生状态 0:异常 1:正常")
     private Integer studentSign;
 
+    @ApiModelProperty("老师状态 0:异常 1:正常")
+    private Integer teacherSign;
+
+    @ApiModelProperty("学生id")
+    private Long studentId;
+    @ApiModelProperty("学生姓名")
+    private String studentName;
+    @ApiModelProperty("学生真实姓名")
+    private String studentRealName;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public String getStudentRealName() {
+        return studentRealName;
+    }
+
+    public void setStudentRealName(String studentRealName) {
+        this.studentRealName = studentRealName;
+    }
+
+    public Integer getTeacherSign() {
+        return teacherSign;
+    }
+
+    public void setTeacherSign(Integer teacherSign) {
+        this.teacherSign = teacherSign;
+    }
+
     public Integer getStudentSign() {
         return studentSign;
     }

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

@@ -17,6 +17,9 @@ public class CourseScheduleStudentVo implements Serializable {
     @ApiModelProperty(value = "课程id")
     private Long courseId;
 
+    @ApiModelProperty(value = "课程组id")
+    private Long courseGroupId;
+
     @ApiModelProperty(value = "老师id")
     private Long teacherId;
 
@@ -32,6 +35,14 @@ public class CourseScheduleStudentVo implements Serializable {
     @ApiModelProperty(value = "课程类型")
     private String type;
 
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
     public String getType() {
         return type;
     }

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

@@ -705,7 +705,7 @@
         tu.real_name_ AS teacherRealName,
         cs.status_ AS `status`,
         a.studentCount AS studentCount,
-        (cs.single_course_time_ * a.studentCount) AS course_time_,
+        (cs.single_course_time_ * (a.studentCount+1)*(a.studentCount+1-1)) AS courseTime,
         cs.start_time_ AS startTime,
         cs.end_time_ AS endTime,
         b.teacherInSign AS teacherInSign,
@@ -799,4 +799,150 @@
             AND g.status_ = #{param.status}
         </if>
     </select>
+    <select id="selectPianoGroupStudentDetail"
+            resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
+        SELECT * FROM (
+        SELECT
+        cs.id_ AS courseId,
+        sb.id_ AS subjectId,
+        sb.name_ AS subjectName,
+        cs.teacher_id_ AS teacherId,
+        tu.username_ AS teacherName,
+        tu.real_name_ AS teacherRealName,
+        cs.status_ AS `status`,
+        a.studentCount AS studentCount,
+        (cs.single_course_time_ * (a.studentCount+1)*(a.studentCount+1-1)) AS courseTime,
+        cs.start_time_ AS startTime,
+        cs.end_time_ AS endTime,
+        p.user_id_ AS studentId,
+        (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
+        (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
+        (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ AND cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentSign,
+        (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ AND cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherSign
+        FROM course_schedule cs
+        LEFT JOIN course_group cg ON cs.course_group_id_ = cg.id_
+        LEFT JOIN `subject` sb ON cg.subject_id_ = sb.id_
+        LEFT JOIN sys_user tu ON cs.teacher_id_ = tu.id_
+        LEFT JOIN (SELECT course_id_,COUNT(1) AS studentCount FROM course_schedule_student_payment WHERE course_type_='PIANO_ROOM_CLASS' GROUP BY course_id_) a ON cs.id_=a.course_id_
+        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
+        LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_
+        LEFT JOIN course_schedule_student_payment p ON cs.id_=p.course_id_
+        WHERE cs.type_='PIANO_ROOM_CLASS'
+        AND p.user_id_=#{param.studentId}
+        AND p.course_group_id_=#{param.courseGroupId}) m
+        <where>
+        <if test="param.search != null and param.search != ''">
+            AND courseId LIKE concat('%',#{param.search},'%')
+        </if>
+        <if test="param.studentSign != null">
+            AND studentSign = #{param.studentSign}
+        </if>
+        <if test="param.teacherSign != null">
+            AND teacherSign = #{param.teacherSign}
+        </if>
+        <if test="param.status != null and param.status != ''">
+            AND `status` = #{param.status}
+        </if>
+        <if test="param.startTime != null">
+            AND startTime &lt;= #{param.startTime}
+        </if>
+        <if test="param.endTime != null">
+            AND endTime &gt;= #{param.endTime}
+        </if>
+        </where>
+    </select>
+    <select id="selectPianoGroupTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoVo">
+        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.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_='PIANO_ROOM_CLASS' 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_='PIANO_ROOM_CLASS' GROUP BY course_group_id_) st ON cg.id_=st.course_group_id_
+        WHERE cg.type_='PIANO_ROOM_CLASS'
+        AND cg.teacher_id_=#{param.teacherId}
+        <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>
+    <select id="selectPianoGroupTeacherDetail"
+            resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
+        SELECT * FROM (
+        SELECT
+        cs.id_ AS courseId,
+        sb.id_ AS subjectId,
+        sb.name_ AS subjectName,
+        cs.teacher_id_ AS teacherId,
+        tu.username_ AS teacherName,
+        tu.real_name_ AS teacherRealName,
+        cs.status_ AS `status`,
+        a.studentCount AS studentCount,
+        (cs.single_course_time_ * (a.studentCount+1)*(a.studentCount+1-1)) AS courseTime,
+        cs.start_time_ AS startTime,
+        cs.end_time_ AS endTime,
+        p.user_id_ AS studentId,
+        su.username_ AS studentName,
+        su.real_name_ AS studentRealName,
+        (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ THEN 1 ELSE 0 END) AS teacherInSign,
+        (CASE WHEN cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherOutSign,
+        (CASE WHEN cs.start_time_ &gt;= sa.sign_in_time_ AND cs.end_time_ &lt;= sa.sign_out_time_ THEN 1 ELSE 0 END) AS studentSign,
+        (CASE WHEN cs.start_time_ &gt;= ta.sign_in_time_ AND cs.end_time_ &lt;= ta.sign_out_time_ THEN 1 ELSE 0 END) AS teacherSign
+        FROM course_schedule cs
+        LEFT JOIN course_group cg ON cs.course_group_id_ = cg.id_
+        LEFT JOIN `subject` sb ON cg.subject_id_ = sb.id_
+        LEFT JOIN sys_user tu ON cs.teacher_id_ = tu.id_
+        LEFT JOIN (SELECT course_id_,COUNT(1) AS studentCount FROM course_schedule_student_payment WHERE course_type_='PIANO_ROOM_CLASS' GROUP BY course_id_) a ON cs.id_=a.course_id_
+        LEFT JOIN teacher_attendance ta ON cs.id_=ta.course_schedule_id_
+        LEFT JOIN student_attendance sa ON cs.id_=sa.course_schedule_id_
+        LEFT JOIN course_schedule_student_payment p ON cs.id_=p.course_id_
+        LEFT JOIN sys_user su ON cs.teacher_id_ = su.id_
+        WHERE cs.type_='PIANO_ROOM_CLASS'
+        AND cs.teacher_id_=#{param.teacherId}
+        AND p.course_group_id_=#{param.courseGroupId}) m
+        <where>
+            <if test="param.search != null and param.search != ''">
+                AND (
+                courseId LIKE concat('%',#{param.search},'%') OR
+                studentName LIKE concat('%',#{param.search},'%') OR
+                studentId LIKE concat('%',#{param.search},'%')
+                )
+            </if>
+            <if test="param.studentSign != null">
+                AND studentSign = #{param.studentSign}
+            </if>
+            <if test="param.teacherSign != null">
+                AND teacherSign = #{param.teacherSign}
+            </if>
+            <if test="param.status != null and param.status != ''">
+                AND `status` = #{param.status}
+            </if>
+            <if test="param.startTime != null">
+                AND startTime &lt;= #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                AND endTime &gt;= #{param.endTime}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 6 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRepliedMapper.xml

@@ -76,6 +76,12 @@
             </if>
         </trim>
     </insert>
+    <insert id="insertBatch">
+        INSERT INTO course_schedule_replied (student_id_,course_schedule_id_,course_group_type_,course_group_id_) VALUES
+        <foreach collection="list" item="item" index="index" separator=",">
+            (#{item.studentId},#{item.courseId},#{item.type},#{item.courseGroupId})
+        </foreach>
+    </insert>
 
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleRepliedVo">
         SELECT

+ 1 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleStudentPaymentMapper.xml

@@ -150,6 +150,7 @@
     <select id="selectUser" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleStudentVo">
         SELECT
             c.id_ AS courseId,
+            c.course_group_id_ AS courseGroupId,
             c.teacher_id_ AS teacherId,
             p.user_id_ AS studentId,
             c.end_time_ AS endTime,

+ 1 - 1
cooleshow-user/user-website/src/main/java/com/yonge/cooleshow/website/controller/open/OpenVideoGroupController.java

@@ -34,7 +34,7 @@ import javax.validation.constraints.NotNull;
  **/
 @RestController
 @RequestMapping("/open/videoLessonGroup")
-@Api(tags = "视频课组")
+@Api(tags = "开放视频课接口")
 public class OpenVideoGroupController extends BaseController {
     @Autowired
     private SysUserFeignService sysUserFeignService;