Parcourir la source

Merge remote-tracking branch 'origin/master'

liweifan il y a 3 ans
Parent
commit
8b4beb9fbf

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

@@ -17,6 +17,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
+import java.util.Map;
 
 /**
  * @Author: cy
@@ -121,4 +122,29 @@ public class CourseGroupController extends BaseController {
     public HttpResponseResult<CourseGroupInfoVo> selectLiveGroupInfo(@NotNull Long groupId) {
         return succeed(courseGroupService.selectLiveGroupInfo(groupId));
     }
+
+    @ApiOperation(value = "课程组管理-琴房课",notes = "{\n" +
+            "    \"subjectId\":20,\n" +
+            "    \"search\":\"师\",\n" +
+            "    \"status\":\"ING\"\n" +
+            "}")
+    @PostMapping(value = "/piano")
+    public HttpResponseResult<PageInfo<CourseGroupPianoVo>> selectLiveGroupInfo(@RequestBody CourseGroupSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroup(PageUtil.getPage(search), search)));
+    }
+
+    @ApiOperation(value = "课程组管理-琴房课-详情",notes = "{\n" +
+            "    \"courseGroupId\": 140,\n" +
+            "    \"teacherSign\": 0,\n" +
+            "    \"studentSign\": 0,\n" +
+            "    \"search\": \"游\",\n" +
+            "    \"status\": \"COMPLETE\",\n" +
+            "    \"salaryStatus\": \"NOT_START\",\n" +
+            "    \"startTime\": \"2022-05-21 08:00:00\",\n" +
+            "    \"endTime\": \"\"\n" +
+            "}")
+    @PostMapping(value = "/piano/detail")
+    public HttpResponseResult<PageInfo<CourseGroupPianoDetailVo>> selectPianoGroupDetail(@Validated @RequestBody CourseGroupDetailSearch search) {
+        return succeed(PageUtil.pageInfo(courseGroupService.selectPianoGroupDetail(PageUtil.getPage(search), search)));
+    }
 }

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

@@ -182,8 +182,29 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
 
     /**
      * 批量更新组状态
+     *
      * @param list
      */
     void updateBatch(List<Long> list);
+
+    /**
+     * 查询琴房课组
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoVo> selectPianoGroup(@Param("page") IPage<CourseGroupPianoVo> page,
+                                               @Param("param") CourseGroupSearch search);
+
+    /**
+     * 查询琴房课详情
+     *
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupDetail(@Param("page") IPage<CourseGroupPianoDetailVo> page,
+                                                           @Param("param") CourseGroupDetailSearch search);
 }
 

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

@@ -245,5 +245,21 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * @return
      */
     CourseGroupInfoVo selectLiveGroupInfo(Long groupId);
+
+    /**
+     * 课程组管理-琴房课
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoVo> selectPianoGroup(IPage<CourseGroupPianoVo> page, CourseGroupSearch search);
+
+    /**
+     * 课程组管理-琴房课-详情
+     * @param page
+     * @param search
+     * @return
+     */
+    IPage<CourseGroupPianoDetailVo> selectPianoGroupDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search);
 }
 

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

@@ -1096,5 +1096,14 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
             log.warn("直播课成课失败推送发送失败,{}", e.getMessage());
         }
     }
+
+    public IPage<CourseGroupPianoVo> selectPianoGroup(IPage<CourseGroupPianoVo> page, CourseGroupSearch search) {
+        return baseMapper.selectPianoGroup(page, search);
+    }
+
+    @Override
+    public IPage<CourseGroupPianoDetailVo> selectPianoGroupDetail(IPage<CourseGroupPianoDetailVo> page, CourseGroupDetailSearch search) {
+        return baseMapper.selectPianoGroupDetail(page,search);
+    }
 }
 

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

@@ -1470,9 +1470,11 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 DateChangeVo dateChange = rList.get(i);
                 for (CourseSchedule schedule : scheduleList) {//遍历已排课时间
                     //校验当前时间 与 排课时间是否冲突  记录冲突时间索引
-                    if (inInterSection(dateChange.getStartTime(), dateChange.getEndTime(), schedule.getStartTime(), schedule.getEndTime())) {
-                        indexList.add(i);
-                        continue;
+                    if (schedule.getStartTime() != null && schedule.getEndTime() != null) {
+                        if (inInterSection(dateChange.getStartTime(), dateChange.getEndTime(), schedule.getStartTime(), schedule.getEndTime())) {
+                            indexList.add(i);
+                            continue;
+                        }
                     }
                 }
             }

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

@@ -0,0 +1,181 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/6/15
+ */
+@ApiModel
+public class CourseGroupPianoDetailVo extends BaseEntity {
+    @ApiModelProperty("课程id")
+    private Long courseId;
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+    @ApiModelProperty("学生id")
+    private Long studentId;
+    @ApiModelProperty("学生姓名")
+    private String studentName;
+    @ApiModelProperty("学生真实姓名")
+    private String studentRealName;
+    @ApiModelProperty("课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消")
+    private String status;
+    @ApiModelProperty("开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    @ApiModelProperty("结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+    @ApiModelProperty("老师签到状态 0:异常 1:正常")
+    private Integer teacherInSign;
+    @ApiModelProperty("老师签退状态 0:异常 1:正常")
+    private Integer teacherOutSign;
+    @ApiModelProperty("学生签到状态 0:异常 1:正常")
+    private Integer studentInSign;
+    @ApiModelProperty("学生签退状态 0:异常 1:正常")
+    private Integer studentOutSign;
+    @ApiModelProperty("NOT_START未上课、WAIT待结算、COMPLETE已结算、CANCEL已取消")
+    private String salaryStatus;
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    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 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 String getStatus() {
+        return status;
+    }
+
+    public void setStatus(String status) {
+        this.status = status;
+    }
+
+    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 Integer getTeacherInSign() {
+        return teacherInSign;
+    }
+
+    public void setTeacherInSign(Integer teacherInSign) {
+        this.teacherInSign = teacherInSign;
+    }
+
+    public Integer getTeacherOutSign() {
+        return teacherOutSign;
+    }
+
+    public void setTeacherOutSign(Integer teacherOutSign) {
+        this.teacherOutSign = teacherOutSign;
+    }
+
+    public Integer getStudentInSign() {
+        return studentInSign;
+    }
+
+    public void setStudentInSign(Integer studentInSign) {
+        this.studentInSign = studentInSign;
+    }
+
+    public Integer getStudentOutSign() {
+        return studentOutSign;
+    }
+
+    public void setStudentOutSign(Integer studentOutSign) {
+        this.studentOutSign = studentOutSign;
+    }
+
+    public String getSalaryStatus() {
+        return salaryStatus;
+    }
+
+    public void setSalaryStatus(String salaryStatus) {
+        this.salaryStatus = salaryStatus;
+    }
+}

+ 123 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseGroupPianoVo.java

@@ -0,0 +1,123 @@
+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/6/15
+ */
+@ApiModel
+public class CourseGroupPianoVo extends BaseEntity {
+    @ApiModelProperty("课程组id")
+    private Long courseGroupId;
+    @ApiModelProperty("课程组名称")
+    private String courseGroupName;
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+    @ApiModelProperty("声部名称")
+    private String subjectName;
+    @ApiModelProperty("课时总数")
+    private Integer courseNum;
+    @ApiModelProperty("已完成课时数")
+    private Integer completeCount;
+    @ApiModelProperty("老师id")
+    private Long teacherId;
+    @ApiModelProperty("老师姓名")
+    private String teacherName;
+    @ApiModelProperty("老师真实姓名")
+    private String teacherRealName;
+    @ApiModelProperty("课程组状态 ING进行中 COMPLETE已完成")
+    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 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;
+    }
+}

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

@@ -646,7 +646,6 @@
         LEFT JOIN `subject` s ON g.subject_id_=s.id_
         WHERE g.id_ =#{groupId}
     </select>
-
     <update id="opsPreStudentNum">
         update course_group
         set
@@ -661,4 +660,42 @@
             #{item}
         </foreach>
     </update>
+    <select id="selectPianoGroup" 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'
+        <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="selectPianoGroupDetail"
+            resultType="com.yonge.cooleshow.biz.dal.vo.CourseGroupPianoDetailVo">
+
+    </select>
 </mapper>

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

@@ -162,6 +162,7 @@ public class TeacherCourseScheduleController extends BaseController {
 //        courseScheduleService.scheduleTask();
 //        return succeed(courseScheduleService.getTeacherId(amount));
 //        courseScheduleService.scheduleTask();
+        courseScheduleService.teacherSalaryTask();
         return succeed();
     }