Browse Source

琴房课

cy 3 years ago
parent
commit
5553481c94

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

@@ -4,7 +4,6 @@ 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;
@@ -22,7 +21,6 @@ import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Author: cy
@@ -205,4 +203,38 @@ public class CourseGroupController extends BaseController {
         }
         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)));
+    }
 }

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

@@ -228,11 +228,32 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
 
     /**
      * 查询琴房课详情
+     *
      * @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);
 }
 

+ 37 - 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,13 +279,15 @@ 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
@@ -279,10 +296,29 @@ public interface CourseGroupService extends IService<CourseGroup> {
 
     /**
      * 学员管理-琴房课-详情
+     *
      * @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);
 }
 

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

@@ -1147,5 +1147,15 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     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);
+    }
 }
 

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

@@ -60,6 +60,37 @@ public class CourseGroupPianoDetailVo extends BaseEntity {
     @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;
     }

+ 97 - 3
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,
@@ -811,10 +811,10 @@
         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,
-        p.user_id_ AS userId,
+        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,
@@ -851,4 +851,98 @@
         </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>