Browse Source

琴房课

cy 3 years ago
parent
commit
afc94b08fd

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

@@ -179,5 +179,11 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      * @return
      * @return
      */
      */
     CourseGroupInfoVo selectGroupInfoVo(Long groupId);
     CourseGroupInfoVo selectGroupInfoVo(Long groupId);
+
+    /**
+     * 批量更新组状态
+     * @param list
+     */
+    void updateBatch(List<Long> list);
 }
 }
 
 

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

@@ -225,4 +225,7 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
 
 
     //更新老师课酬
     //更新老师课酬
     void updateTeacherSalary(List<Long> list);
     void updateTeacherSalary(List<Long> list);
+
+    //查询已完成课时
+    List<CourseCompleteVo> selectComplete();
 }
 }

+ 7 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleRecordDao.java

@@ -1,10 +1,14 @@
 package com.yonge.cooleshow.biz.dal.dao;
 package com.yonge.cooleshow.biz.dal.dao;
 
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleRecord;
 import com.yonge.cooleshow.biz.dal.entity.CourseScheduleRecord;
+import com.yonge.cooleshow.biz.dal.vo.CourseScheduleRecordVo;
 import org.apache.ibatis.annotations.Param;
 import org.apache.ibatis.annotations.Param;
 
 
 import java.util.List;
 import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * @Author: cy
  * @Author: cy
@@ -19,4 +23,7 @@ public interface CourseScheduleRecordDao extends BaseMapper<CourseScheduleRecord
 
 
     //消耗时长
     //消耗时长
     Long countTimeByTeacherId(@Param("teacherId")Long teacherId,@Param("month") String month);
     Long countTimeByTeacherId(@Param("teacherId")Long teacherId,@Param("month") String month);
+
+    //消耗时长详情
+    IPage<CourseScheduleRecordVo> selectConsumeTimeList(Page<CourseScheduleRecordVo> pageInfo, @Param("param") Map<String, Object> param);
 }
 }

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

@@ -245,5 +245,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
     void arrangeCourse(ArrangeCourseVo arrangeCourseVo, Long teacherId);
     void arrangeCourse(ArrangeCourseVo arrangeCourseVo, Long teacherId);
 
 
     Map<String, Object> selectConsumeTime(String month, Long teacherId);
     Map<String, Object> selectConsumeTime(String month, Long teacherId);
+
+    PageInfo<CourseScheduleRecordVo> selectConsumeTimeList(Map<String, Object> param);
 }
 }
 
 

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

@@ -1531,6 +1531,30 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
             //课程状态更新为COMPLETE
             //课程状态更新为COMPLETE
             baseMapper.updateEndTime(userList);
             baseMapper.updateEndTime(userList);
         }
         }
+
+        //查完完成的课程
+        List<CourseCompleteVo> completeList=baseMapper.selectComplete();
+        if (CollectionUtils.isNotEmpty(completeList)){
+            List<Long> gids = completeList.stream().map(CourseCompleteVo::getCourseGroupId).collect(Collectors.toList());
+            List<CourseGroup> courseGroups = courseGroupService.getDao().selectList(Wrappers.<CourseGroup>lambdaQuery().in(CourseGroup::getId, gids));
+            if(CollectionUtils.isNotEmpty(courseGroups)){
+                List<Long> ids=new ArrayList<>();
+                for (CourseGroup group : courseGroups) {
+                    for (CourseCompleteVo complete : completeList) {
+                        Integer courseNum = group.getCourseNum();
+                        Integer completeCount = complete.getCourseCount();
+                        if (courseNum.equals(completeCount)){
+                            ids.add(complete.getCourseGroupId());
+                        }
+                    }
+                }
+                if(CollectionUtils.isNotEmpty(ids)){
+                    //同步课程组状态
+                    courseGroupService.getDao().updateBatch(ids);
+                }
+            }
+        }
+
     }
     }
 
 
     /**
     /**
@@ -1664,7 +1688,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         courseGroup.setSubjectId(arrangeCourseVo.getSubjectId());
         courseGroup.setSubjectId(arrangeCourseVo.getSubjectId());
         courseGroup.setSingleCourseMinutes(singleClssTime);
         courseGroup.setSingleCourseMinutes(singleClssTime);
         courseGroup.setCourseNum(classNum);
         courseGroup.setCourseNum(classNum);
-        courseGroup.setStatus(CourseGroupEnum.NOT_SALE.getCode());
+        courseGroup.setStatus(CourseGroupEnum.ING.getCode());
         courseGroup.setCreatedBy(teacherId);
         courseGroup.setCreatedBy(teacherId);
         courseGroupService.getDao().insert(courseGroup);
         courseGroupService.getDao().insert(courseGroup);
 
 
@@ -1704,11 +1728,24 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     }
     }
 
 
     /**
     /**
-     * 根据月份查询消耗记录
+     * @Description: 根据月份查询消耗记录
+     * @Author: cy
+     * @Date: 2022/5/30
      */
      */
     public Map<String, Object> selectConsumeTime(String month, Long teacherId) {
     public Map<String, Object> selectConsumeTime(String month, Long teacherId) {
         Map<String, Object> map = new HashMap();
         Map<String, Object> map = new HashMap();
         map.put("consumeTime", recordDao.countTimeByTeacherId(teacherId, month));
         map.put("consumeTime", recordDao.countTimeByTeacherId(teacherId, month));
         return map;
         return map;
     }
     }
+
+    /**
+     * @Description: 消耗时长详情
+     * @Author: cy
+     * @Date: 2022/5/30
+     */
+    @Override
+    public PageInfo<CourseScheduleRecordVo> selectConsumeTimeList(Map<String, Object> param) {
+        param.put("type",CourseScheduleEnum.PIANO_ROOM_CLASS.getCode());
+        return PageUtil.pageInfo(recordDao.selectConsumeTimeList(PageUtil.getPageInfo(param), param));
+    }
 }
 }

+ 34 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseCompleteVo.java

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+
+/**
+ * @Author: cy
+ * @Date: 2022/5/30
+ */
+@ApiModel
+public class CourseCompleteVo implements Serializable {
+    @ApiModelProperty("课程组id")
+    private Long courseGroupId;
+    @ApiModelProperty("已完成课时数")
+    private Integer courseCount;
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    public Integer getCourseCount() {
+        return courseCount;
+    }
+
+    public void setCourseCount(Integer courseCount) {
+        this.courseCount = courseCount;
+    }
+}

+ 114 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/CourseScheduleRecordVo.java

@@ -0,0 +1,114 @@
+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/5/30
+ */
+@ApiModel
+public class CourseScheduleRecordVo implements Serializable {
+    @ApiModelProperty(value = "课程id")
+    private Long courseId;
+
+    @ApiModelProperty(value = "课程组名称")
+    private String groupName;
+
+    @ApiModelProperty(value = "声部id")
+    private Long subjectId;
+
+    @ApiModelProperty(value = "声部名称")
+    private String subjectName;
+
+    @ApiModelProperty(value = "课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消")
+    private String status;
+
+    @ApiModelProperty(value = "开课时间")
+    private Date startTime;
+
+    @ApiModelProperty(value = "结课时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "上课学员人数")
+    private Integer studentCount;
+
+    @ApiModelProperty(value = "总消耗时长")
+    private Integer consumTime;
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public String getGroupName() {
+        return groupName;
+    }
+
+    public void setGroupName(String groupName) {
+        this.groupName = groupName;
+    }
+
+    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 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 getStudentCount() {
+        return studentCount;
+    }
+
+    public void setStudentCount(Integer studentCount) {
+        this.studentCount = studentCount;
+    }
+
+    public Integer getConsumTime() {
+        return consumTime;
+    }
+
+    public void setConsumTime(Integer consumTime) {
+        this.consumTime = consumTime;
+    }
+}
+

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

@@ -655,5 +655,12 @@
             pre_student_num_ = pre_student_num_ + #{num}
             pre_student_num_ = pre_student_num_ + #{num}
         where id_ = #{id}
         where id_ = #{id}
     </update>
     </update>
-
+    <update id="updateBatch">
+        UPDATE course_group
+        SET status_='COMPLETE'
+        WHERE id_ IN
+        <foreach collection="list" item="item" open="(" separator="," close=")">
+            #{item}
+        </foreach>
+    </update>
 </mapper>
 </mapper>

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

@@ -792,6 +792,9 @@
     <select id="selectIdList" resultType="java.lang.Long">
     <select id="selectIdList" resultType="java.lang.Long">
         SELECT id_ FROM course_schedule WHERE lock_=0 AND class_date_ &lt;= #{day}
         SELECT id_ FROM course_schedule WHERE lock_=0 AND class_date_ &lt;= #{day}
     </select>
     </select>
+    <select id="selectComplete" resultType="com.yonge.cooleshow.biz.dal.vo.CourseCompleteVo">
+        SELECT course_group_id_ AS courseGroupId ,COUNT(1) AS courseCount  FROM course_schedule WHERE lock_=0 AND status_='COMPLETE' GROUP BY course_group_id_
+    </select>
     <update id="updateStartTime">
     <update id="updateStartTime">
         UPDATE course_schedule SET status_='ING' WHERE id_ IN(
         UPDATE course_schedule SET status_='ING' WHERE id_ IN(
         <foreach collection="list" item="item" index="index" open="" close="" separator=",">
         <foreach collection="list" item="item" index="index" open="" close="" separator=",">

+ 36 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleRecordMapper.xml

@@ -17,4 +17,40 @@
             (#{item.courseId},#{item.teacherId},#{item.studentCount}, #{item.consumTime}, #{item.endTime})
             (#{item.courseId},#{item.teacherId},#{item.studentCount}, #{item.consumTime}, #{item.endTime})
         </foreach>
         </foreach>
     </insert>
     </insert>
+    <select id="selectConsumeTimeList" resultType="com.yonge.cooleshow.biz.dal.vo.CourseScheduleRecordVo">
+        SELECT
+            s.id_ AS courseId,
+            g.name_ AS groupName,
+            g.subject_id_ AS subjectId,
+            sb.name_ AS subjectName,
+            s.status_ AS `status`,
+            s.start_time_ AS startTime,
+            s.end_time_ AS endTime,
+            r.student_count_ AS studentCount,
+            r.consum_time_ AS consumTime
+        FROM course_schedule s
+        LEFT JOIN course_schedule_record r ON r.course_id_ =s.id_
+        LEFT JOIN course_group g ON s.course_group_id_=g.id_
+        LEFT JOIN `subject` sb ON g.subject_id_ = sb.id_
+        <where>
+            <if test="param.type != null and param.type !=''">
+                AND s.type_ = #{param.type}
+            </if>
+            <if test="param.status != null and param.status !=''">
+                AND s.status_ = #{param.status}
+            </if>
+            <if test="param.teacherId != null">
+               AND r.teacher_id_ = #{param.teacherId}
+            </if>
+            <if test="param.subjectId != null">
+                AND g.subject_id_ = #{param.subjectId}
+            </if>
+            <if test="param.month != null and param.month !=''">
+                AND date_format(s.end_time_,'%Y-%m') = #{param.month}
+            </if>
+            <if test="param.status != null and param.status !=''">
+                AND s.status_ = #{param.status}
+            </if>
+        </where>
+    </select>
 </mapper>
 </mapper>

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

@@ -207,5 +207,21 @@ public class TeacherCourseScheduleController extends BaseController {
         }
         }
         return succeed(courseScheduleService.selectConsumeTime(month, user.getId()));
         return succeed(courseScheduleService.selectConsumeTime(month, user.getId()));
     }
     }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "subjectId", dataType = "Long", value = "声部id"),
+            @ApiImplicitParam(name = "month", dataType = "String", value = "月份,yyyy-mm"),
+            @ApiImplicitParam(name = "status", dataType = "String", value = "课程状态"),
+    })
+    @ApiOperation("课程列表&消耗时长列表")
+    @PostMapping("/selectConsumeTimeList")
+    public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectConsumeTimeList(@RequestBody Map<String, Object> param) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        param.put("teacherId", user.getId());
+        return succeed(courseScheduleService.selectConsumeTimeList(param));
+    }
 }
 }