Преглед на файлове

Merge branch 'feature/1113-vipCourse' of http://git.dayaedu.com/yonge/cooleshow into develop-new

zouxuan преди 8 месеца
родител
ревизия
b18d6dc942
променени са 34 файла, в които са добавени 564 реда и са изтрити 961 реда
  1. 20 29
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseGroupController.java
  2. 22 96
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java
  3. 13 31
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherFreeTimeController.java
  4. 73 0
      cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherSubjectPriceController.java
  5. 14 28
      cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/TeacherFreeTimeController.java
  6. 10 69
      cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/VideoGroupController.java
  7. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java
  8. 1 40
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java
  9. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherSubjectPriceDao.java
  10. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  11. 4 34
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeTimesSetting.java
  12. 4 87
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MyCourseSearch.java
  13. 0 25
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherFreeTime.java
  14. 0 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherSubjectPrice.java
  15. 7 75
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherTotal.java
  16. 1 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CourseScheduleEnum.java
  17. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  18. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  19. 3 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherFreeTimeService.java
  20. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherSubjectPriceService.java
  21. 14 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  22. 44 53
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  23. 54 55
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java
  24. 51 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherSubjectPriceServiceImpl.java
  25. 27 59
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  26. 2 148
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherFreeTimeVo.java
  27. 4 31
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupVo.java
  28. 46 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TeacherSubjectPriceWrapper.java
  29. 54 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/course/CourseGroupWrapper.java
  30. 24 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  31. 3 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  32. 10 88
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherFreeTimeMapper.xml
  33. 4 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherSubjectPriceMapper.xml
  34. 19 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

+ 20 - 29
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseGroupController.java

@@ -1,35 +1,28 @@
 package com.yonge.cooleshow.teacher.controller;
 
 
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
 import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
 import com.yonge.cooleshow.biz.dal.service.AppVersionInfoService;
 import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
 import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;
+import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
-import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
+import com.yonge.toolset.mybatis.support.PageUtil;
+import io.swagger.annotations.*;
 import org.apache.commons.collections.MapUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.math.BigDecimal;
 import java.util.List;
 import java.util.Map;
@@ -45,15 +38,13 @@ import java.util.Optional;
 @RestController
 @RequestMapping("${app-config.url.teacher:}/courseGroup")
 public class TeacherCourseGroupController extends BaseController {
-    /**
-     * 服务对象
-     */
-    @Autowired
+    @Resource
     private CourseGroupService courseGroupService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
 
-    @Autowired
+    @Resource
+    private SysUserService sysUserService;
+
+    @Resource
     private AppVersionInfoService appVersionInfoService;
     @ApiOperation("直播课详情")
     @GetMapping("/queryLiveCourseInfo")
@@ -79,7 +70,7 @@ public class TeacherCourseGroupController extends BaseController {
         Boolean myself = MapUtils.getBoolean(param,"myself");
         if (myself == null || myself) {
             Long teacherId = WrapperUtil.toLong(param, "teacherId");
-            teacherId = Optional.ofNullable(teacherId).orElseGet(() -> getSysUser().getId());
+            teacherId = Optional.ofNullable(teacherId).orElseGet(() -> sysUserService.getUserId());
             param.put("teacherId", teacherId);
         } else {
             YesOrNoEnum auditVersion = YesOrNoEnum.NO;
@@ -144,12 +135,12 @@ public class TeacherCourseGroupController extends BaseController {
         return succeed(courseGroupService.getLiveLockTimeCache(teacherId).get(teacherId));
     }
 
-    private SysUser getSysUser() {
-        return Optional.ofNullable(sysUserFeignService.queryUserInfo())
-                .orElseThrow(() -> new BizException("用户不存在"));
+    @ApiOperation("老师端我的课程组")
+    @PostMapping("/myCourseGroup")
+    public HttpResponseResult<PageInfo<CourseGroupWrapper.TeacherCourseGroupDto>> myCourseGroup(@RequestBody CourseGroupWrapper.TeacherCourseGroupQuery query) {
+        query.setTeacherId(sysUserService.getUserId());
+        IPage<CourseGroupWrapper.TeacherCourseGroupDto> pages = courseGroupService.myCourseGroup(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
     }
-
-
-
 }
 

+ 22 - 96
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherCourseScheduleController.java

@@ -1,20 +1,12 @@
 package com.yonge.cooleshow.teacher.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
 import com.yonge.cooleshow.biz.dal.service.HolidaysFestivalsService;
-import com.yonge.cooleshow.biz.dal.vo.ArrangeCourseVo;
-import com.yonge.cooleshow.biz.dal.vo.CourseAdjustVo;
-import com.yonge.cooleshow.biz.dal.vo.CourseScheduleRecordVo;
-import com.yonge.cooleshow.biz.dal.vo.CourseStudentVo;
-import com.yonge.cooleshow.biz.dal.vo.MyCourseVo;
-import com.yonge.cooleshow.biz.dal.vo.PianoRoomTimeVo;
-import com.yonge.cooleshow.biz.dal.vo.StudentHomePage;
-import com.yonge.cooleshow.biz.dal.vo.TeacherLiveCourseInfoVo;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.wrapper.course.CourseScheduleWrapper;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
@@ -25,16 +17,10 @@ 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;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import java.util.List;
 import java.util.Map;
 import java.util.Objects;
@@ -53,11 +39,11 @@ public class TeacherCourseScheduleController extends BaseController {
     /**
      * 服务对象
      */
-    @Autowired
+    @Resource
     private CourseScheduleService courseScheduleService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-    @Autowired
+    @Resource
+    private SysUserService sysUserService;
+    @Resource
     private HolidaysFestivalsService holidaysFestivalsService;
 
     @ApiImplicitParams({
@@ -113,11 +99,7 @@ public class TeacherCourseScheduleController extends BaseController {
                     "     search:{\"classDate\":\"2022-03-27\"}")
     @PostMapping("/queryTeacherPracticeCourse")
     public HttpResponseResult<PageInfo<MyCourseVo>> queryTeacherPracticeCourse(@RequestBody MyCourseSearch search) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        search.setTeacherId(user.getId());
+        search.setTeacherId(sysUserService.getUserId());
         IPage<MyCourseVo> pages = courseScheduleService.queryTeacherPracticeCourse(PageUtil.getPage(search), search);
         return succeed(PageUtil.pageInfo(pages));
     }
@@ -125,44 +107,28 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("老师端-课表-日历")
     @PostMapping("/queryCourseSchedule")
     public HttpResponseResult<Set<String>> queryCourseSchedule(@RequestBody MyCourseSearch search) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        search.setTeacherId(user.getId());
+        search.setTeacherId(sysUserService.getUserId());
         return succeed(courseScheduleService.queryCourseSchedule(search));
     }
 
     @ApiOperation(value = "老师端-课表-日历-用户", notes = "search:{\"classDate\":\"2022-03-27\"}")
     @PostMapping("/queryCourseUser")
     public HttpResponseResult<Map<String, Object>> queryCourseUser(@RequestBody MyCourseSearch search) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        search.setTeacherId(user.getId());
+        search.setTeacherId(sysUserService.getUserId());
         return succeed(courseScheduleService.queryCourseUser(search));
     }
 
     @ApiOperation(value = "老师端-课表-日历-调课")
     @PostMapping("/courseAdjust")
     public HttpResponseResult<Object> courseAdjust(@Validated @RequestBody CourseAdjustVo adjustVo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        courseScheduleService.courseAdjust(adjustVo, user.getId());
+        courseScheduleService.courseAdjust(adjustVo, sysUserService.getUserId());
         return succeed();
     }
 
     @ApiOperation("老师-首页-最近课程")
     @GetMapping("/queryLiveAndVideo")
     public HttpResponseResult<StudentHomePage> queryLiveAndVideo() {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(courseScheduleService.queryLiveAndVideo(null, user.getId(), null));
+        return succeed(courseScheduleService.queryLiveAndVideo(null, sysUserService.getUserId(), null));
     }
 
     @ApiOperation("老师端-查询房间配置")
@@ -185,11 +151,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @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()));
+        return succeed(courseScheduleService.selectRemainTime(sysUserService.getUserId()));
     }
 
     @ApiImplicitParams({
@@ -200,33 +162,21 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("我的学员&课内学员")
     @PostMapping("/selectStudent")
     public HttpResponseResult<PageInfo<CourseStudentVo>> selectStudent(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         return succeed(courseScheduleService.selectStudent(param));
     }
 
     @ApiOperation("排课")
     @PostMapping("/arrangeCourse")
     public HttpResponseResult<Object> arrangeCourse(@RequestBody ArrangeCourseVo arrangeCourseVo) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        String message = courseScheduleService.arrangeCourse(arrangeCourseVo, user.getId());
+        String message = courseScheduleService.arrangeCourse(arrangeCourseVo, sysUserService.getUserId());
         return succeed(message);
     }
 
     @ApiOperation("根据月份查询消耗时长")
     @GetMapping("/selectConsumeTime")
     public HttpResponseResult<Object> selectConsumeTime(String month) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        return succeed(courseScheduleService.selectConsumeTime(month, user.getId()));
+        return succeed(courseScheduleService.selectConsumeTime(month, sysUserService.getUserId()));
     }
 
     @ApiImplicitParams({
@@ -237,11 +187,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("琴房课程列表")
     @PostMapping("/selectCourseList")
     public HttpResponseResult<PageInfo<CourseScheduleRecordVo>> selectCourseList(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         return succeed(courseScheduleService.selectCourseList(param));
     }
 
@@ -253,11 +199,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @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());
+        param.put("teacherId", sysUserService.getUserId());
         return succeed(courseScheduleService.selectConsumeTimeList(param));
     }
 
@@ -267,11 +209,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("删除课程")
     @PostMapping("/deleteCourse")
     public HttpResponseResult<Object> deleteCourse(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         courseScheduleService.deleteCourse(param);
         return succeed();
     }
@@ -284,11 +222,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("调整上课时间")
     @PostMapping("/updateCourseTime")
     public HttpResponseResult<Object> updateCourseTime(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         courseScheduleService.updateCourseTime(param);
         return succeed();
     }
@@ -300,11 +234,7 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("调整上课学员")
     @PostMapping("/updateCourseStudent")
     public HttpResponseResult<Object> updateCourseStudent(@RequestBody Map<String, Object> param) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        param.put("teacherId", user.getId());
+        param.put("teacherId", sysUserService.getUserId());
         courseScheduleService.updateCourseStudent(param);
         return succeed();
     }
@@ -312,10 +242,6 @@ public class TeacherCourseScheduleController extends BaseController {
     @ApiOperation("查询节假日")
     @GetMapping("/selectHoliday")
     public HttpResponseResult<Object> selectHoliday(Integer year) {
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
         return succeed(holidaysFestivalsService.queryByYear(year));
     }
 

+ 13 - 31
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherFreeTimeController.java

@@ -1,22 +1,15 @@
 package com.yonge.cooleshow.teacher.controller;
 
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.PracticeTimesSetting;
 import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
-import com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 
 /**
@@ -29,35 +22,24 @@ import javax.validation.Valid;
 @RestController
 @RequestMapping("${app-config.url.teacher:}/teacherFreeTime")
 public class TeacherFreeTimeController extends BaseController {
-    /**
-     * 服务对象
-     */
-    @Autowired
+    @Resource
     private TeacherFreeTimeService teacherFreeTimeService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysUserService sysUserService;
 
-    @ApiOperation(value = "新增、修改老师陪练课设置")
+    @ApiOperation(value = "新增、修改老师排课时间")
     @PostMapping("/upSet")
     public HttpResponseResult upSet(@Valid @RequestBody TeacherFreeTime teacherFreeTime){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        teacherFreeTime.setTeacherId(user.getId());
+        teacherFreeTime.setTeacherId(sysUserService.getUserId());
         teacherFreeTimeService.upSet(teacherFreeTime);
         return succeed();
     }
 
-    @ApiOperation(value = "获取老师陪练课设置")
-    @PostMapping("/getDetail")
-    public HttpResponseResult<TeacherFreeTimeVo> getDetail(@RequestBody PracticeTimesSetting practiceTimesSetting){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        practiceTimesSetting.setUserId(user.getId());
-        return succeed(teacherFreeTimeService.getDetail(practiceTimesSetting));
+    @ApiOperation(value = "获取老师排课时间")
+    @GetMapping("/get")
+    public HttpResponseResult<TeacherFreeTime> get(){
+        TeacherFreeTime freeTime = teacherFreeTimeService.lambdaQuery().eq(TeacherFreeTime::getTeacherId, sysUserService.getUserId()).one();
+        return succeed(freeTime);
     }
 }
 

+ 73 - 0
cooleshow-app/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherSubjectPriceController.java

@@ -0,0 +1,73 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
+import com.yonge.cooleshow.biz.dal.service.TeacherSubjectPriceService;
+import com.yonge.cooleshow.biz.dal.wrapper.TeacherSubjectPriceWrapper;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Api(tags = "老师课程价格配置")
+@RestController
+@RequestMapping("${app-config.url.teacher:}/teacherSubjectPrice")
+public class TeacherSubjectPriceController extends BaseController {
+    @Resource
+    private TeacherSubjectPriceService teacherSubjectPriceService;
+    @Resource
+    private SysUserService sysUserService;
+
+    @ApiOperation(value = "新增、修改老师课程价格配置")
+    @PostMapping("/saveOrUpdate")
+    public HttpResponseResult<Long> saveOrUpdate(@RequestBody TeacherSubjectPrice teacherSubjectPrice){
+        teacherSubjectPrice.setTeacherId(sysUserService.getUserId());
+        return succeed(teacherSubjectPriceService.upSet(teacherSubjectPrice));
+    }
+
+    @ApiOperation(value = "删除老师课程价格配置")
+    @PostMapping("/delete")
+    public HttpResponseResult delete(Long id){
+        teacherSubjectPriceService.lambdaUpdate()
+                .eq(TeacherSubjectPrice::getTeacherId, sysUserService.getUserId())
+                .eq(TeacherSubjectPrice::getId, id).remove();
+        return succeed();
+    }
+
+    @ApiOperation(value = "获取老师课程价格配置")
+    @PostMapping("/detail")
+    public HttpResponseResult<TeacherSubjectPriceWrapper.TeacherSubjectPriceDto> detail(@RequestBody TeacherSubjectPriceWrapper.PriceSearch query){
+        List<TeacherSubjectPrice> list = teacherSubjectPriceService.lambdaQuery()
+                .eq(TeacherSubjectPrice::getTeacherId, sysUserService.getUserId())
+                .eq(query.getSubjectId() != null, TeacherSubjectPrice::getSubjectId, query.getSubjectId())
+                .eq(StringUtils.isNotEmpty(query.getCourseType()), TeacherSubjectPrice::getCourseType, query.getCourseType())
+                .list();
+        if(CollectionUtils.isNotEmpty(list)){
+            //获取所有的声部、声部名称
+            TeacherSubjectPriceWrapper.TeacherSubjectPriceDto dto = new TeacherSubjectPriceWrapper.TeacherSubjectPriceDto();
+            String subjectIds = list.stream().map(e->e.getSubjectId().toString()).distinct().collect(Collectors.joining(","));
+            String subjectNames = list.stream().map(TeacherSubjectPrice::getSubjectName).distinct().collect(Collectors.joining(","));
+            dto.setSubjectId(subjectIds);
+            dto.setSubjectName(subjectNames);
+            dto.setTeacherId(list.get(0).getTeacherId());
+            dto.setCourseType(list.get(0).getCourseType());
+            dto.setFreeMinutes(list.get(0).getFreeMinutes());
+            dto.setCourseMinutes(list.get(0).getCourseMinutes());
+            dto.setSubjectPrice(list.get(0).getSubjectPrice());
+            return succeed(dto);
+        }
+        return succeed();
+    }
+}
+

+ 14 - 28
cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/TeacherFreeTimeController.java

@@ -1,22 +1,15 @@
 package com.yonge.cooleshow.website.controller;
 
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.biz.dal.dto.PracticeTimesSetting;
 import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
-import com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.Valid;
 
 /**
@@ -32,32 +25,25 @@ public class TeacherFreeTimeController extends BaseController {
     /**
      * 服务对象
      */
-    @Autowired
+    @Resource
     private TeacherFreeTimeService teacherFreeTimeService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysUserService sysUserService;
 
     @ApiOperation(value = "新增、修改老师陪练课设置")
     @PostMapping("/upSet")
-    public HttpResponseResult upSet(@Valid @RequestBody TeacherFreeTime teacherFreeTime){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        teacherFreeTime.setTeacherId(user.getId());
+    public HttpResponseResult upSet(@RequestBody TeacherFreeTime teacherFreeTime){
+        teacherFreeTime.setTeacherId(sysUserService.getUserId());
         teacherFreeTimeService.upSet(teacherFreeTime);
         return succeed();
     }
 
-    @ApiOperation(value = "获取老师陪练课设置")
-    @PostMapping("/getDetail")
-    public HttpResponseResult<TeacherFreeTimeVo> getDetail(@RequestBody PracticeTimesSetting practiceTimesSetting){
-        SysUser user = sysUserFeignService.queryUserInfo();
-        if (user == null || null == user.getId()) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-        practiceTimesSetting.setUserId(user.getId());
-        return succeed(teacherFreeTimeService.getDetail(practiceTimesSetting));
+    @ApiOperation(value = "获取老师排课时间")
+    @GetMapping("/get")
+    public HttpResponseResult<TeacherFreeTime> get(){
+        TeacherFreeTime freeTime = teacherFreeTimeService.lambdaQuery()
+                .eq(TeacherFreeTime::getTeacherId, sysUserService.getUserId()).one();
+        return succeed(freeTime);
     }
 }
 

+ 10 - 69
cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/VideoGroupController.java

@@ -1,10 +1,10 @@
 package com.yonge.cooleshow.website.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
@@ -19,16 +19,10 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -41,53 +35,28 @@ import javax.validation.constraints.NotNull;
 @RequestMapping("${app-config.url.website:}/videoLessonGroup")
 @Api(tags = "视频课组")
 public class VideoGroupController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysUserService sysUserService;
 
-    @Autowired
+    @Resource
     private VideoLessonGroupService videoLessonGroupService;
 
-    /**
-    * @Description: 查询视频课组
-    * @Author: cy
-    * @Date: 2022/3/31
-    */
     @ApiOperation(value = "查询视频课组")
     @PostMapping(value = "/page")
     public HttpResponseResult<PageInfo<VideoLessonGroupVo>> page(@RequestBody VideoLessonGroupSearch query) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null || sysUser.getId() == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-
-        query.setTeacherId(sysUser.getId());
+        query.setTeacherId(sysUserService.getUserId());
         IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }
 
-    /**
-    * @Description: 新增视频课组
-    * @Author: cy
-    * @Date: 2022/3/31
-    */
     @ApiOperation(value = "新增视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/create", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> create(@Validated @RequestBody VideoLessonGroup videoLessonGroup) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        videoLessonGroup.setTeacherId(sysUser.getId());
+        videoLessonGroup.setTeacherId(sysUserService.getUserId());
         videoLessonGroupService.save(videoLessonGroup);
         return succeed();
     }
 
-    /**
-    * @Description: 修改视频课组
-    * @Author: cy
-    * @Date: 2022/3/31
-    */
     @ApiOperation(value = "修改视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/updateGroup", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> update(@Validated @RequestBody VideoLessonGroupUpVo lessonGroupUpVo) {
@@ -95,11 +64,6 @@ public class VideoGroupController extends BaseController {
         return succeed();
     }
 
-    /**
-    * @Description: 删除视频课组
-    * @Author: cy
-    * @Date: 2022/3/31
-    */
     @ApiOperation(value = "删除视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping("/delete/{id}")
     public Object delete(@PathVariable Long id) {
@@ -107,19 +71,10 @@ public class VideoGroupController extends BaseController {
         return succeed();
     }
 
-    /**
-    * @Description: 新增视频课组&视频课
-    * @Author: cy
-    * @Date: 2022/4/1
-    */
     @ApiOperation(value = "新增视频课组&视频课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/add", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> add(@Validated(AddGroup.class) @RequestBody VideoLessonVo lessonVo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-
-        if (sysUser == null||sysUser.getId()==null) {
-            return failed("用户信息获取失败");
-        }
+        SysUser sysUser = sysUserService.getUser();
         lessonVo.setUserBy(sysUser.getId());
         if ( CollectionUtils.isEmpty(lessonVo.getLessonList())) {
             return failed("课程不能为空");
@@ -128,30 +83,16 @@ public class VideoGroupController extends BaseController {
         return succeed();
     }
 
-    /**
-     * @Description: 根据组id查询视频课&视频课组
-     * @Author: cy
-     * @Date: 2022/4/2
-     */
     @ApiOperation(value = "根据组id查询视频课&视频课组")
     @GetMapping(value="/selectVideoLesson")
     public HttpResponseResult<VideoLessonStudentVo> selectVideoLesson(@NotNull(message = "视频组id不能为空") Long groupId) {
         return succeed(videoLessonGroupService.selectVideoLesson(groupId));
     }
 
-    /**
-     * @Description: 修改视频课组&视频课
-     * @Author: cy
-     * @Date: 2022/4/7
-     */
     @ApiOperation(value = "修改视频课组&视频课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/update", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> update(@Validated(UpdateGroup.class) @RequestBody VideoLessonVo lessonVo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-
-        if (sysUser == null||sysUser.getId()==null) {
-            return failed("用户信息获取失败");
-        }
+        SysUser sysUser = sysUserService.getUser();
         lessonVo.setUserBy(sysUser.getId());
         if ( CollectionUtils.isEmpty(lessonVo.getLessonList())) {
             return failed("课程不能为空");

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

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -263,5 +264,8 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      * @return
      */
     List<Subject> selectLiveSubject();
+
+    List<CourseGroupWrapper.TeacherCourseGroupDto> myCourseGroup(@Param("page") IPage<CourseGroupWrapper.TeacherCourseGroupDto> page,
+                                                                 @Param("param") CourseGroupWrapper.TeacherCourseGroupQuery query);
 }
 

+ 1 - 40
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherFreeTimeDao.java

@@ -2,9 +2,7 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.biz.dal.dto.PracticeTimesSetting;
 import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
-import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TeacherFreeTimeWrapper;
@@ -22,45 +20,8 @@ public interface TeacherFreeTimeDao extends BaseMapper<TeacherFreeTime> {
 
     int insertBatch(@Param("entities") List<TeacherFreeTime> entities);
 
-    /**
-     * @param teacherId
-     * @param courseMinutes
-     * @param freeMinutes
-     * @return com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime
-     * @description: 获取老师陪练课设置
-     * @author zx
-     * @date 2022/3/25 10:25
-     */
-    TeacherFreeTime findOne(@Param("teacherId") Long teacherId,
-                            @Param("courseMinutes") Integer courseMinutes,
-                            @Param("freeMinutes") Integer freeMinutes);
-
-    /**
-     * @param defaultFlag
-     * @return void
-     * @description: 修改默认配置
-     * @author zx
-     * @date 2022/3/29 10:02
-     */
-    void updateDefaultFlag(@Param("defaultFlag") boolean defaultFlag, @Param("teacherId") Long teacherId);
-
-    //根据id删除关联表数据
-    void deleteSubjectPrice(Long id);
-
-    //新增声部价格
-    void insertPrice(List<TeacherSubjectPrice> list);
-
     //查询老师配置
-    TeacherFreeTimeVo getDetail(@Param("param") PracticeTimesSetting practiceTimesSetting);
-
-    //根据id查声部售价
-    List<TeacherSubjectPrice> getPrice(Long id);
-
-    //查询老师声部默认售价
-    TeacherSubjectPrice selectSubjectPrice(@Param("teacherId") Long teacherId, @Param("subjectId") Long subjectId);
-
-    //查询老师所有声部配置
-    List<TeacherSubjectPrice> selectPriceByTeacherId(Long teacherId);
+    TeacherFreeTimeVo getDetail(@Param("userId") Integer userId);
 
     //查询过审老师配置默认
     List<TeacherFreeTime> getTeacherFreeTime();

+ 9 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherSubjectPriceDao.java

@@ -0,0 +1,9 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+
+public interface TeacherSubjectPriceDao extends BaseMapper<TeacherSubjectPrice> {
+
+}
+

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
@@ -74,4 +75,5 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
     //查询付费人数前5的课程
     List<CountVideoGroupVo.VideoLesson> selectVideoLesson();
 
+    List<Map<Long, Long>> countMusicAlbum(@Param("videoLessonGroupIds") List<Long> videoLessonGroupIds);
 }

+ 4 - 34
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeTimesSetting.java

@@ -1,10 +1,12 @@
 package com.yonge.cooleshow.biz.dal.dto;
 
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 
 //陪练课可选单课时时长配置
+@Data
 public class PracticeTimesSetting {
 
     @NotNull(message = "课间休息分钟数不可为空")
@@ -18,38 +20,6 @@ public class PracticeTimesSetting {
     @ApiModelProperty(value = "用户id")
     private Long userId;
 
-    @ApiModelProperty(value = "默认配置(1:是 0:否)")
-    private Integer defaultFlag;
-
-    public Integer getDefaultFlag() {
-        return defaultFlag;
-    }
-
-    public void setDefaultFlag(Integer defaultFlag) {
-        this.defaultFlag = defaultFlag;
-    }
-
-    public Long getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
-
-    public Integer getFreeMinutes() {
-        return freeMinutes;
-    }
-
-    public void setFreeMinutes(Integer freeMinutes) {
-        this.freeMinutes = freeMinutes;
-    }
-
-    public Integer getCourseMinutes() {
-        return courseMinutes;
-    }
-
-    public void setCourseMinutes(Integer courseMinutes) {
-        this.courseMinutes = courseMinutes;
-    }
+    @ApiModelProperty(value = "课程类型")
+    private String courseType = "PRACTICE";
 }

+ 4 - 87
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MyCourseSearch.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.dto.search;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.util.List;
 
@@ -11,6 +12,7 @@ import java.util.List;
  * @Date: 2022/4/11
  */
 @ApiModel(value = "MyCourseSearch")
+@Data
 public class MyCourseSearch extends QueryInfo {
     @ApiModelProperty(value = "课程状态(NOT_START:未开始 ING:进行中 COMPLETE:已完成 CANCEL:已取消)")
     private String status;
@@ -45,91 +47,6 @@ public class MyCourseSearch extends QueryInfo {
     @ApiModelProperty(value = "结束时间")
     private String endDate;
 
-    public String getStartDate() {
-        return startDate;
-    }
-
-    public void setStartDate(String startDate) {
-        this.startDate = startDate;
-    }
-
-    public String getEndDate() {
-        return endDate;
-    }
-
-    public void setEndDate(String endDate) {
-        this.endDate = endDate;
-    }
-
-    public Long getStudentId() {
-        return studentId;
-    }
-
-    public void setStudentId(Long studentId) {
-        this.studentId = studentId;
-    }
-
-    public String getClassMonth() {
-        return classMonth;
-    }
-
-    public void setClassMonth(String classMonth) {
-        this.classMonth = classMonth;
-    }
-
-    public String getStudentName() {
-        return studentName;
-    }
-
-    public void setStudentName(String studentName) {
-        this.studentName = studentName;
-    }
-
-    public Integer getReplied() {
-        return replied;
-    }
-
-    public void setReplied(Integer replied) {
-        this.replied = replied;
-    }
-
-    public List<Long> getRepliedIds() {
-        return repliedIds;
-    }
-
-    public void setRepliedIds(List<Long> repliedIds) {
-        this.repliedIds = repliedIds;
-    }
-
-    public Long getTeacherId() {
-        return teacherId;
-    }
-
-    public void setTeacherId(Long teacherId) {
-        this.teacherId = teacherId;
-    }
-
-    public String getStatus() {
-        return status;
-    }
-
-    public void setStatus(String status) {
-        this.status = status;
-    }
-
-    public String getClassDate() {
-        return classDate;
-    }
-
-    public void setClassDate(String classDate) {
-        this.classDate = classDate;
-    }
-
-    public Integer getSubjectId() {
-        return subjectId;
-    }
-
-    public void setSubjectId(Integer subjectId) {
-        this.subjectId = subjectId;
-    }
+    @ApiModelProperty(value = "课程类型")
+    private String courseType = "PRACTICE";
 }

+ 0 - 25
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherFreeTime.java

@@ -8,8 +8,6 @@ import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
 
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.Date;
 
@@ -30,25 +28,10 @@ public class TeacherFreeTime implements Serializable {
     @ApiModelProperty(value = "老师编号;")
     private Long teacherId;
 
-    @NotNull(message = "课间休息分钟数不可为空")
-    @TableField("free_minutes_")
-    @ApiModelProperty(value = "课间休息分钟数")
-    private Integer freeMinutes;
-
-    @NotNull(message = "单课时分钟数不可为空")
-    @TableField("course_minutes_")
-    @ApiModelProperty(value = "单课时分钟数")
-    private Integer courseMinutes;
-
     @TableField("skip_holiday_flag_")
     @ApiModelProperty(value = "是否跳过节假日1是0否")
     private Boolean skipHolidayFlag = false;
 
-    @NotBlank(message = "声部单课时金额不可为空")
-    @TableField("subject_price_")
-    @ApiModelProperty(value = "声部单课时金额:[{'subjectId':1,'subjectPrice':100.88,'subjectName':'西洋管乐'},{'subjectId':2,'subjectPrice':200.88,'subjectName':'长笛'}]")
-    private String subjectPrice;
-
     @TableField("monday_")
     @ApiModelProperty(value = "周一;数据结构[{'startTime':'08:00:00'','endTime':'08:30:00'}];")
     private String monday;
@@ -77,10 +60,6 @@ public class TeacherFreeTime implements Serializable {
     @ApiModelProperty(value = "周日;")
     private String sunday;
 
-    @TableField("default_flag_")
-    @ApiModelProperty(value = "是否默认配置")
-    private Boolean defaultFlag = true;
-
     @TableField("recent_free_time_")
     @ApiModelProperty(value = "最近30天空闲标记")
     private Boolean recentFreeTime;
@@ -93,9 +72,5 @@ public class TeacherFreeTime implements Serializable {
     @ApiModelProperty(value = "修改时间;")
     private Date updateTime;
 
-    @TableField("enable_flag_")
-    @ApiModelProperty(value = "是否开启陪练课(1是 0否)")
-    private Boolean enableFlag = true;
-
 }
 

+ 0 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherSubjectPrice.java

@@ -22,10 +22,6 @@ public class TeacherSubjectPrice implements Serializable {
     @ApiModelProperty(value = "主键")
     private Long id;
 
-    @TableId("teacher_free_time_id")
-    @ApiModelProperty(value = "排课时间表id")
-    private Long teacherFreeTimeId;
-
     @TableField("teacher_id_")
     @ApiModelProperty(value = "老师id")
     private Long teacherId;

+ 7 - 75
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/TeacherTotal.java

@@ -3,20 +3,21 @@ package com.yonge.cooleshow.biz.dal.entity;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.annotation.TableName;
+import com.fasterxml.jackson.annotation.JsonFormat;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import java.io.Serializable;
 import java.util.Date;
 
-import com.fasterxml.jackson.annotation.JsonFormat;
-import org.springframework.format.annotation.DateTimeFormat;
-
 /**
  * 教师统计总表
  */
 @TableName("teacher_total")
 @ApiModel(value = "TeacherTotal对象", description = "教师统计总表")
+@Data
 public class TeacherTotal implements Serializable {
     private static final long serialVersionUID = 1L;
     @ApiModelProperty("对应user表用户编号 ")
@@ -49,76 +50,7 @@ public class TeacherTotal implements Serializable {
     @TableField(value = "music_sheet_num_")
     private Integer musicSheetNum = 0;
 
-
-    public Long getUserId() {
-        return userId;
-    }
-
-    public void setUserId(Long userId) {
-        this.userId = userId;
-    }
-
-    public Double getStarGrade() {
-        return starGrade;
-    }
-
-    public void setStarGrade(Double starGrade) {
-        this.starGrade = starGrade;
-    }
-
-    public Integer getFansNum() {
-        return fansNum;
-    }
-
-    public void setFansNum(Integer fansNum) {
-        this.fansNum = fansNum;
-    }
-
-    public Integer getExpTime() {
-        return expTime;
-    }
-
-    public void setExpTime(Integer expTime) {
-        this.expTime = expTime;
-    }
-
-    public Integer getUnExpTime() {
-        return unExpTime;
-    }
-
-    public void setUnExpTime(Integer unExpTime) {
-        this.unExpTime = unExpTime;
-    }
-
-    public Boolean getLiveFlag() {
-        return liveFlag;
-    }
-
-    public void setLiveFlag(Boolean liveFlag) {
-        this.liveFlag = liveFlag;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
-
-    public Integer getMusicAlbumNum() {
-        return musicAlbumNum;
-    }
-
-    public void setMusicAlbumNum(Integer musicAlbumNum) {
-        this.musicAlbumNum = musicAlbumNum;
-    }
-
-    public Integer getMusicSheetNum() {
-        return musicSheetNum;
-    }
-
-    public void setMusicSheetNum(Integer musicSheetNum) {
-        this.musicSheetNum = musicSheetNum;
-    }
+    @TableField("practice_flag_")
+    @ApiModelProperty(value = "是否开启陪练课(1是 0否)")
+    private Boolean practiceFlag = false;
 }

+ 1 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CourseScheduleEnum.java

@@ -16,6 +16,7 @@ public enum CourseScheduleEnum implements BaseEnum<String, CourseScheduleEnum> {
     PRACTICE("陪练课"),
     LIVE("直播课"),
     PIANO_ROOM_CLASS("琴房课"),
+    VIP("VIP课"),
     //课程状态
     NOT_START("未开始"),
     ING("进行中"),

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

@@ -15,6 +15,7 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.vo.res.RefundCreateRes;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.toolset.base.page.PageInfo;
 import org.redisson.api.RMap;
@@ -358,5 +359,9 @@ public interface CourseGroupService extends IService<CourseGroup> {
      *
      */
     void buyLiveCourse(UserPaymentOrderWrapper.OrderGoodsInfo orderGoodsInfo);
+
+    //老师端-我的课程组
+    IPage<CourseGroupWrapper.TeacherCourseGroupDto> myCourseGroup(IPage<CourseGroupWrapper.TeacherCourseGroupDto> page,
+                                                                  CourseGroupWrapper.TeacherCourseGroupQuery query);
 }
 

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

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseCalendarEntity;
 import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import com.yonge.cooleshow.biz.dal.vo.ArrangeCourseVo;
 import com.yonge.cooleshow.biz.dal.vo.CourseAdjustVo;
@@ -249,6 +250,8 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
 
     List<Long> getTeacherId(Integer amount);
 
+    List<Long> getAllTimeConfig(List<TeacherFreeTime> teacherFreeTime, List<String> futureDay, List<Long> idList);
+
     void scheduleTask();
 
     void teacherSalaryTask();

+ 3 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherFreeTimeService.java

@@ -29,8 +29,9 @@ public interface TeacherFreeTimeService extends IService<TeacherFreeTime> {
     */
     void upSet(TeacherFreeTime teacherFreeTime);
 
-    TeacherFreeTimeVo getDetail(PracticeTimesSetting practiceTimesSetting);
-
     IPage<PracticeTeacherVo> queryTeacherList(IPage<PracticeTeacherVo> page,TeacherFreeTimeWrapper.TeacherSearch query);
+
+    //更新老师30天内是否有空
+    void updateTeacherFreeTime(Long teacherId);
 }
 

+ 13 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherSubjectPriceService.java

@@ -0,0 +1,13 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dao.TeacherSubjectPriceDao;
+import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+
+public interface TeacherSubjectPriceService extends IService<TeacherSubjectPrice> {
+
+    TeacherSubjectPriceDao getDao();
+
+    Long upSet(TeacherSubjectPrice teacherSubjectPrice);
+}
+

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

@@ -26,6 +26,7 @@ import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
 import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
 import com.yonge.cooleshow.biz.dal.wrapper.coupon.CouponOrderWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.EPaymentVersion;
@@ -116,9 +117,6 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
     @Autowired
     private UserPaymentCoreService userPaymentCoreService;
 
-    @Autowired
-    private RedisCacheService redisCacheService;
-
     @Override
     public CourseGroupDao getDao() {
         return this.baseMapper;
@@ -407,6 +405,19 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
 
     }
 
+    @Override
+    public IPage<CourseGroupWrapper.TeacherCourseGroupDto> myCourseGroup(IPage<CourseGroupWrapper.TeacherCourseGroupDto> page,
+                                                                         CourseGroupWrapper.TeacherCourseGroupQuery query) {
+        List<CourseGroupWrapper.TeacherCourseGroupDto> records = this.baseMapper.myCourseGroup(page, query);
+        if (CollectionUtils.isNotEmpty(records)) {
+            List<Long> subjectIds = records.stream().map(CourseGroupWrapper.TeacherCourseGroupDto::getSubjectId).distinct().collect(Collectors.toList());
+            List<Subject> subjectList = subjectService.findBySubjectByIdList(subjectIds);
+            Map<Long, String> subjectMap = subjectList.stream().collect(Collectors.toMap(Subject::getId, Subject::getName));
+            records.forEach(e -> e.setSubjectName(subjectMap.get(e.getSubjectId())));
+        }
+        return page.setRecords(records);
+    }
+
     /**
      * 取消课程组-下架课程组
      *
@@ -538,7 +549,6 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         if (courseTypeFlag) {
             //查询老师陪练课设置
             TeacherFreeTime teacherTime = teacherFreeTimeService.getOne(Wrappers.<TeacherFreeTime>lambdaQuery()
-                    .eq(TeacherFreeTime::getDefaultFlag, true)
                     .eq(TeacherFreeTime::getTeacherId, teacherId)
             );
             Optional.ofNullable(teacherTime).orElseThrow(() -> new BizException("未查询到老师陪练课设置!"));

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

@@ -10,11 +10,8 @@ import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Sets;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.*;
-import com.yonge.cooleshow.biz.dal.dto.BasicUserInfo;
 import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.UserAccountRecordDto;
 import com.yonge.cooleshow.biz.dal.dto.req.OrderReq;
@@ -25,25 +22,24 @@ import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.biz.dal.enums.im.EImUserFriendSourceForm;
 import com.yonge.cooleshow.biz.dal.service.*;
-import com.yonge.cooleshow.biz.dal.wrapper.course.CourseScheduleWrapper;
-import com.yonge.cooleshow.biz.dal.wrapper.liveroom.LiveRoomWrapper;
-import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
-import com.yonge.cooleshow.common.enums.PostStatusEnum;
-import com.yonge.cooleshow.common.enums.YesOrNoEnum;
-import com.yonge.toolset.payment.util.DistributedLock;
-import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
 import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.biz.dal.vo.res.OrderCreateRes;
+import com.yonge.cooleshow.biz.dal.wrapper.UserPaymentOrderWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseScheduleWrapper;
+import com.yonge.cooleshow.biz.dal.wrapper.liveroom.LiveRoomWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
+import com.yonge.cooleshow.common.enums.PostStatusEnum;
+import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
+import com.yonge.toolset.mybatis.support.PageUtil;
+import com.yonge.toolset.payment.util.DistributedLock;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
 import com.yonge.toolset.utils.obj.ObjectUtil;
-
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RLock;
@@ -90,7 +86,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     @Autowired
     private RedissonClient redissonClient;
     @Autowired
-    private SysUserFeignService sysUserFeignService;
+    private SysUserService sysUserService;
     @Autowired
     private HolidaysFestivalsService holidaysFestivalsService;
     @Autowired
@@ -110,6 +106,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     @Autowired
     private TeacherFreeTimeDao teacherFreeTimeDao;
     @Autowired
+    private TeacherSubjectPriceService teacherSubjectPriceService;
+    @Autowired
+    private TeacherTotalService teacherTotalService;
+    @Autowired
     private SysMessageService sysMessageService;
     @Autowired
     private HolidaysFestivalsDao holidaysFestivalsDao;
@@ -141,9 +141,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     @Autowired
     private TeacherService teacherService;
 
-    @Autowired
-    private RedisCacheService redisCacheService;
-
     @Override
     public CourseScheduleDao getDao() {
         return this.baseMapper;
@@ -179,7 +176,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //查询该月的所有课程
         param.put("startDate", firstDay.toString());
         param.put("endDate", lastDay.toString());
-        param.put("teacherId", getSysUser().getId());
+        param.put("teacherId", sysUserService.getUserId());
         param.put("type", CourseScheduleEnum.LIVE.getCode());
         param.put("groupState", String.join(",", CourseGroupEnum.ING.getCode(), CourseGroupEnum.COMPLETE.getCode()));
         log.info("queryTeacherLiveCourse:{}", param);
@@ -501,7 +498,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         LocalDate lastDay = firstDay.with(TemporalAdjusters.lastDayOfMonth());
         //查询老师陪练课设置
         TeacherFreeTime teacherTime = teacherFreeTimeService.getOne(Wrappers.<TeacherFreeTime>lambdaQuery()
-                .eq(TeacherFreeTime::getDefaultFlag, true)
                 .eq(TeacherFreeTime::getTeacherId, teacherId)
         );
         Optional.ofNullable(teacherTime).orElseThrow(() -> new BizException("未查询到老师陪练课设置!"));
@@ -684,19 +680,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         return nowCourse;
     }
 
-    /**
-     * 获取当前登录人信息
-     */
-    private SysUser getSysUser() {
-        return Optional.ofNullable(sysUserFeignService.queryUserInfo())
-                .orElseThrow(() -> new BizException("用户不存在"));
-    }
-
-    private SysUser getSysUser(Long userId) {
-        return Optional.ofNullable(userId)
-                .map(sysUserFeignService::queryUserById)
-                .orElseThrow(() -> new BizException("用户不存在"));
-    }
 
     /**
      * 老师端-首页-我的课程-陪练课
@@ -993,7 +976,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         timeList.forEach(o -> {
             boolean checkDataTime = this.checkStudentCourseTime(studentId, startTimeFun.apply(o), endTimeFun.apply(o));
             if (checkDataTime) {
-                SysUser sysUser = sysUserFeignService.queryUserById(studentId);
+                SysUser sysUser = sysUserService.getByUserId(studentId);
                 throw new BizException("学生:" + sysUser.getUsername() + ",预计安排在" + DateUtil.dateToString(startTimeFun.apply(o), "yyyy年MM月dd号 HH点mm分") + "的课程时间存在冲突!");
             }
         });
@@ -1010,7 +993,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Long studentId = orderReqInfo.getUserId();
 
         //校验学生信息
-        getSysUser(studentId);
+        sysUserService.findUserById(studentId);
 
         ObjectMapper objectMapper = new ObjectMapper();
         PracticeScheduleDto scheduleDto = objectMapper.convertValue(orderReqInfo.getBizContent(), PracticeScheduleDto.class);
@@ -1057,7 +1040,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Long groupId = scheduleDto.getGroupId();
 
         //根据老师id获取默认配置声部原价
-        TeacherSubjectPrice teacherSubjectPrice = teacherFreeTimeDao.selectSubjectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());
+        TeacherSubjectPrice teacherSubjectPrice = teacherSubjectPriceService.lambdaQuery()
+                .eq(TeacherSubjectPrice::getTeacherId, scheduleDto.getTeacherId())
+                .eq(TeacherSubjectPrice::getSubjectId, scheduleDto.getSubjectId())
+                .eq(TeacherSubjectPrice::getCourseType, CourseScheduleEnum.PRACTICE.getCode()).one();
         BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
 
         //每课实际价格
@@ -1349,8 +1335,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //  陪练课调整模板
         try {
             //  发送消息
-            SysUser teacher = sysUserFeignService.queryUserById(teacherId);
-            SysUser student = sysUserFeignService.queryUserById(studentId);
+            SysUser teacher = sysUserService.getByUserId(teacherId);
+            SysUser student = sysUserService.getByUserId(studentId);
 
             CourseSchedule courseSchedule = this.getById(courseScheduleId);
             CourseGroup courseGroup = courseGroupService.getById(courseSchedule.getCourseGroupId());
@@ -1424,11 +1410,12 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @Date: 2022/4/26
      */
     public List<TeacherSubjectPrice> teacherSubjectPrice(Long teacherId) {
-        TeacherFreeTime teacherFreeTime = teacherFreeTimeDao.selectOne(Wrappers.<TeacherFreeTime>lambdaQuery()
-                .eq(TeacherFreeTime::getTeacherId, teacherId)
-                .eq(TeacherFreeTime::getEnableFlag, 1)
-                .eq(TeacherFreeTime::getDefaultFlag, 1));
-
+        TeacherTotal teacherTotal = teacherTotalService.lambdaQuery().eq(TeacherTotal::getUserId, teacherId)
+                .eq(TeacherTotal::getPracticeFlag, true).one();
+        if (teacherTotal == null) {
+            throw new BizException("老师未开启陪练课");
+        }
+        TeacherFreeTime teacherFreeTime = teacherFreeTimeService.lambdaQuery().eq(TeacherFreeTime::getTeacherId, teacherId).one();
         if (teacherFreeTime == null) {
             log.info("未查到陪练课配置,老师id:{}", teacherId);
             return new ArrayList<>();
@@ -1443,9 +1430,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 (teacherFreeTime.getSunday() == null || teacherFreeTime.getSunday().equals("[]"))) {
             return new ArrayList<>();
         }
-
-        List<TeacherSubjectPrice> list = teacherFreeTimeDao.selectPriceByTeacherId(teacherId);
-        return list;
+        return teacherSubjectPriceService.lambdaQuery()
+                .eq(TeacherSubjectPrice::getTeacherId, teacherId)
+                .eq(TeacherSubjectPrice::getCourseType, "PRACTICE").list();
     }
 
     @Override
@@ -1495,8 +1482,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     @Override
     public void practiceSend(Long teacherId, Long studentId, String courseNum, String orderNo) {
         //查询老师&学生信息
-        SysUser teacher = sysUserFeignService.queryUserById(teacherId);
-        SysUser student = sysUserFeignService.queryUserById(studentId);
+        SysUser teacher = sysUserService.getByUserId(teacherId);
+        SysUser student = sysUserService.getByUserId(studentId);
 
         //消息接收者(Key:用户编号 value:消息接收对象)
         Map<Long, String> teacherReceivers = new HashMap<>();
@@ -1634,7 +1621,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         List<TeacherFreeTime> teacherFreeTime = teacherFreeTimeDao.getTeacherFreeTime();
 
         //老师配置-跳过节假日
-        List<TeacherFreeTime> skipHoliday = teacherFreeTime.stream().filter(item -> item.getSkipHolidayFlag()).collect(Collectors.toList());
+        List<TeacherFreeTime> skipHoliday = teacherFreeTime.stream().filter(TeacherFreeTime::getSkipHolidayFlag).collect(Collectors.toList());
         //老师配置
         List<TeacherFreeTime> noSkipHoliday = teacherFreeTime.stream().filter(item -> !item.getSkipHolidayFlag()).collect(Collectors.toList());
 
@@ -1663,6 +1650,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
      * @param idList          未约满老师id集合
      * @return
      */
+    @Override
     public List<Long> getAllTimeConfig(List<TeacherFreeTime> teacherFreeTime, List<String> futureDay, List<Long> idList) {
         List<String> statusList = Lists.newArrayList(CourseScheduleEnum.NOT_START.getCode(), CourseScheduleEnum.ING.getCode());
 
@@ -2191,8 +2179,8 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     public void pianoSend(Long teacherId, Long studentId) {
         try {
             //查询老师&学生信息
-            SysUser teacher = sysUserFeignService.queryUserById(teacherId);
-            SysUser student = sysUserFeignService.queryUserById(studentId);
+            SysUser teacher = sysUserService.getByUserId(teacherId);
+            SysUser student = sysUserService.getByUserId(studentId);
 
             //消息接收者(Key:用户编号 value:消息接收对象)
             Map<Long, String> studentReceivers = new HashMap<>();
@@ -2359,9 +2347,9 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
                 .set(CourseSchedule::getEndTime, endTime));
 
         if (CollectionUtils.isNotEmpty(studentPayments)) {
-            SysUser teacher = sysUserFeignService.queryUserById(teacherId);
+            SysUser teacher = sysUserService.getByUserId(teacherId);
 
-            CourseSchedule schedule = this.getById(courseId);
+//            CourseSchedule schedule = this.getById(courseId);
             CourseGroup courseGroup = courseGroupService.getById(courseSchedule.getCourseGroupId());
 
             String courseName = courseGroup.getName() + "-第" + courseSchedule.getClassNum() + "课";
@@ -2381,7 +2369,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         //  琴房课调整模板
         try {
             //  发送消息
-            SysUser student = sysUserFeignService.queryUserById(studentId);
+            SysUser student = sysUserService.getByUserId(studentId);
 
             Map<Long, String> receivers = new HashMap<>();
             receivers.put(studentId, student.getPhone());
@@ -2535,7 +2523,7 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Long studentId = orderGoodsInfo.getUserId();
 
         //校验学生信息
-        getSysUser(studentId);
+        sysUserService.findUserById(studentId);
 
         ObjectMapper objectMapper = new ObjectMapper();
         PracticeScheduleDto scheduleDto = objectMapper.convertValue(orderGoodsInfo.getBizContent(), PracticeScheduleDto.class);
@@ -2580,7 +2568,10 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
         Long groupId = scheduleDto.getGroupId();
 
         //根据老师id获取默认配置声部原价
-        TeacherSubjectPrice teacherSubjectPrice = teacherFreeTimeDao.selectSubjectPrice(scheduleDto.getTeacherId(), scheduleDto.getSubjectId());
+        TeacherSubjectPrice teacherSubjectPrice = teacherSubjectPriceService.lambdaQuery()
+                .eq(TeacherSubjectPrice::getTeacherId, scheduleDto.getTeacherId())
+                .eq(TeacherSubjectPrice::getSubjectId, scheduleDto.getSubjectId())
+                .eq(TeacherSubjectPrice::getCourseType, CourseScheduleEnum.PRACTICE.getCode()).one();
         BigDecimal subjectPrice = teacherSubjectPrice.getSubjectPrice();
 
         //每课实际价格

+ 54 - 55
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java

@@ -1,34 +1,29 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import com.alibaba.excel.util.CollectionUtils;
-import com.alibaba.fastjson.JSON;
-import com.alibaba.fastjson.JSONArray;
-import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.biz.dal.dao.TeacherFreeTimeDao;
-import com.yonge.cooleshow.biz.dal.dto.PracticeTimesSetting;
+import com.yonge.cooleshow.biz.dal.entity.HolidaysFestivals;
+import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
-import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.HolidaysFestivalsService;
+import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
 import com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo;
-import com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo;
-import com.yonge.cooleshow.biz.dal.vo.WeekVo;
 import com.yonge.cooleshow.biz.dal.wrapper.TeacherFreeTimeWrapper;
-import com.yonge.toolset.base.exception.BizException;
-import com.yonge.toolset.base.page.PageInfo;
-import com.yonge.toolset.payment.core.entity.SysConfigPayment;
 import com.yonge.toolset.utils.date.DateUtil;
-import jodd.util.StringUtil;
+import org.apache.commons.collections.CollectionUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
+import javax.annotation.Resource;
 import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * 老师可排课时间表(TeacherFreeTime)表服务实现类
@@ -40,6 +35,13 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
 
     private final static Logger log = LoggerFactory.getLogger(TeacherFreeTimeServiceImpl.class);
 
+    @Resource
+    private TeacherAuthEntryRecordService teacherAuthEntryRecordService;
+    @Resource
+    private HolidaysFestivalsService holidaysFestivalsService;
+    @Resource
+    private CourseScheduleService courseScheduleService;
+
     @Override
     public TeacherFreeTimeDao getDao() {
         return this.baseMapper;
@@ -50,42 +52,14 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
     public void upSet(TeacherFreeTime teacherFreeTime) {
         Long teacherId = teacherFreeTime.getTeacherId();
         TeacherFreeTime oldTeacherFreeTime = baseMapper.selectOne(Wrappers.<TeacherFreeTime>lambdaQuery().eq(TeacherFreeTime::getTeacherId, teacherId));
-
-//        TeacherFreeTime oldTeacherFreeTime = baseMapper.findOne(teacherFreeTime.getTeacherId(),
-//                teacherFreeTime.getCourseMinutes(),
-//                teacherFreeTime.getFreeMinutes());
-
         //删除原有设置
         if(Objects.nonNull(oldTeacherFreeTime)){
             baseMapper.deleteById(oldTeacherFreeTime.getId());
-            baseMapper.deleteSubjectPrice(oldTeacherFreeTime.getId());
         }
-        //将其他配置改为非默认
-//        List<TeacherFreeTime> checkGapLock = baseMapper.selectList(Wrappers.<TeacherFreeTime>lambdaQuery().eq(TeacherFreeTime::getTeacherId, teacherFreeTime.getTeacherId()));
-//        if (!CollectionUtils.isEmpty(checkGapLock)){
-//            baseMapper.updateDefaultFlag(false,teacherFreeTime.getTeacherId());
-//        }
+        teacherFreeTime.setRecentFreeTime(oldTeacherFreeTime.getRecentFreeTime());
         baseMapper.insert(teacherFreeTime);
-
-        List<TeacherSubjectPrice> priceList= JSONArray.parseArray(teacherFreeTime.getSubjectPrice(), TeacherSubjectPrice.class);
-        for (TeacherSubjectPrice price : priceList) {
-            price.setTeacherFreeTimeId(teacherFreeTime.getId());
-            price.setTeacherId(teacherFreeTime.getTeacherId());
-            price.setFreeMinutes(teacherFreeTime.getFreeMinutes());
-            price.setCourseMinutes(teacherFreeTime.getCourseMinutes());
-        }
-        baseMapper.insertPrice(priceList);
-    }
-
-    @Override
-    public TeacherFreeTimeVo getDetail(PracticeTimesSetting practiceTimesSetting) {
-        TeacherFreeTimeVo getDetail=baseMapper.getDetail(practiceTimesSetting);
-        if (getDetail==null){
-            return getDetail;
-        }
-        List<TeacherSubjectPrice> priceList=baseMapper.getPrice(getDetail.getId());
-        getDetail.setSubjectPrice(priceList);
-        return getDetail;
+        //更新老师30天内是否有空
+        this.updateTeacherFreeTime(teacherId);
     }
 
     @Override
@@ -93,17 +67,42 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
         return page.setRecords(baseMapper.queryTeacherList(page, query));
     }
 
-    public static String timeOffSet(String week,Integer freeMinutes){
-        List<WeekVo> list = JSONObject.parseArray(week, WeekVo.class);
-        SimpleDateFormat sdf = new SimpleDateFormat("HH:mm:ss");
-        List<WeekVo> weekList = new ArrayList<>();
-        for (WeekVo weekVo : list) {
-            WeekVo vo = new WeekVo();
-            vo.setStartTime(weekVo.getStartTime());
-            vo.setEndTime(sdf.format(DateUtil.offsetMinute(weekVo.getEndTime(), -freeMinutes, "HH:mm:ss")));
-            weekList.add(vo);
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateTeacherFreeTime(Long teacherId) {
+        //查询所有过审的老师时间配置
+        TeacherAuthEntryRecord authEntryRecord = teacherAuthEntryRecordService.lambdaQuery()
+                .eq(TeacherAuthEntryRecord::getUserId, teacherId)
+                .eq(TeacherAuthEntryRecord::getTeacherAuthStatus, AuthStatusEnum.PASS).last("limit 1").one();
+        if(Objects.isNull(authEntryRecord)){
+            this.lambdaUpdate().eq(TeacherFreeTime::getTeacherId, teacherId)
+                    .set(TeacherFreeTime::getRecentFreeTime, 0).update();
+        }
+        TeacherFreeTime freeTime = this.lambdaQuery().eq(TeacherFreeTime::getTeacherId, teacherId).last("limit 1").one();
+        if(Objects.isNull(freeTime)){
+            this.lambdaUpdate().eq(TeacherFreeTime::getTeacherId, teacherId)
+                    .set(TeacherFreeTime::getRecentFreeTime, 0).update();
+        }
+        //未来30天日期
+        List<String> futureDays = DateUtil.getFutureDays(30);
+        if(freeTime.getSkipHolidayFlag()){
+            //查询节假日
+            HolidaysFestivals holidays = holidaysFestivalsService.queryByYear(Integer.parseInt(DateUtil.getYear(new Date())));
+            String[] strs = holidays.getHolidaysFestivalsJson().split(",");
+            List<String> holiday = Arrays.asList(strs);
+            //未来30天日期-跳过节假日
+            futureDays = futureDays.stream().filter(item -> !holiday.contains(item)).collect(Collectors.toList());
+        }
+        List<TeacherFreeTime> freeTimeList = new ArrayList<>();
+        freeTimeList.add(freeTime);
+        List<Long> teacherIdList = courseScheduleService.getAllTimeConfig(freeTimeList, futureDays, new ArrayList<>());
+        if(CollectionUtils.isNotEmpty(teacherIdList)){
+            this.lambdaUpdate().in(TeacherFreeTime::getTeacherId, teacherIdList)
+                    .set(TeacherFreeTime::getRecentFreeTime, 1).update();
+        }else {
+            this.lambdaUpdate().eq(TeacherFreeTime::getTeacherId, teacherId)
+                    .set(TeacherFreeTime::getRecentFreeTime, 0).update();
         }
-        return JSON.toJSON(weekList).toString();
     }
 }
 

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

@@ -0,0 +1,51 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.microsvc.toolkit.common.webportal.exception.BizException;
+import com.yonge.cooleshow.biz.dal.dao.TeacherSubjectPriceDao;
+import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
+import com.yonge.cooleshow.biz.dal.service.TeacherSubjectPriceService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+@Service("TeacherSubjectPriceService")
+public class TeacherSubjectPriceServiceImpl extends ServiceImpl<TeacherSubjectPriceDao, TeacherSubjectPrice> implements TeacherSubjectPriceService {
+
+    private final static Logger log = LoggerFactory.getLogger(TeacherSubjectPriceServiceImpl.class);
+
+    @Override
+    public TeacherSubjectPriceDao getDao() {
+        return this.baseMapper;
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public Long upSet(TeacherSubjectPrice teacherSubjectPrice) {
+        if (teacherSubjectPrice.getId() == null) {
+            TeacherSubjectPrice one = this.lambdaQuery().eq(TeacherSubjectPrice::getTeacherId, teacherSubjectPrice.getTeacherId())
+                    .eq(TeacherSubjectPrice::getSubjectId, teacherSubjectPrice.getSubjectId())
+                    .eq(TeacherSubjectPrice::getCourseType, teacherSubjectPrice.getCourseType()).one();
+            if (one != null) {
+                teacherSubjectPrice.setId(one.getId());
+                this.updateById(teacherSubjectPrice);
+            } else {
+                this.save(teacherSubjectPrice);
+            }
+        } else {
+            TeacherSubjectPrice one = this.lambdaQuery().ne(TeacherSubjectPrice::getId, teacherSubjectPrice.getId())
+                    .eq(TeacherSubjectPrice::getTeacherId, teacherSubjectPrice.getTeacherId())
+                    .eq(TeacherSubjectPrice::getSubjectId, teacherSubjectPrice.getSubjectId())
+                    .eq(TeacherSubjectPrice::getCourseType, teacherSubjectPrice.getCourseType()).one();
+            if (one != null) {
+                throw new BizException("已存在相同课程类型的课程价格配置");
+            } else {
+                this.updateById(teacherSubjectPrice);
+            }
+        }
+        return teacherSubjectPrice.getId();
+    }
+
+}
+

+ 27 - 59
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java

@@ -1,88 +1,51 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
-import com.yonge.cooleshow.biz.dal.dto.CourseMusicAlbumRelationDto;
-import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
-import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
-import com.yonge.cooleshow.biz.dal.entity.MusicTag;
-import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
-import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
-import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
-import com.yonge.cooleshow.biz.dal.service.MusicSheetPurchaseRecordService;
-import com.yonge.cooleshow.biz.dal.service.MusicTagService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
-import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
-import com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDetailDto;
-import org.apache.commons.collections.CollectionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonAuthRecordDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
+import com.yonge.cooleshow.biz.dal.dto.CourseMusicAlbumRelationDto;
+import com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDetailDto;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
-import com.yonge.cooleshow.biz.dal.entity.Subject;
-import com.yonge.cooleshow.biz.dal.entity.Teacher;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonAuthRecord;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupLog;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
-import com.yonge.cooleshow.biz.dal.service.SysConfigService;
-import com.yonge.cooleshow.biz.dal.service.SysMessageService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupLogService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
-import com.yonge.cooleshow.biz.dal.vo.CountVideoGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.LessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonAuthGroup;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonExamineVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonShelvesVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonTeacherVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import com.yonge.toolset.utils.collection.MapUtil;
 import com.yonge.toolset.utils.json.JsonUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * VideoLessonGroupService服务实现类
@@ -152,10 +115,15 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
 			}
 		}
         List<VideoLessonGroupVo> videoLessonGroupVos = baseMapper.selectPage(page, query);
+        //获取直播课关联的曲目数量
+        List<Long> videoLessonGroupIds = videoLessonGroupVos.stream().map(VideoLessonGroupVo::getId).collect(Collectors.toList());
+        List<Map<Long,Long>> musicNum = this.baseMapper.countMusicAlbum(videoLessonGroupIds);
+        Map<Long,Long> map = MapUtil.convertIntegerMap(musicNum);
         for (VideoLessonGroupVo videoLessonGroupVo : videoLessonGroupVos) {
             if (videoLessonGroupVo.getLessonPrice().compareTo(BigDecimal.ZERO) == 0) {
                 videoLessonGroupVo.setCountStudent(videoLessonGroupVo.getCountStudent() + videoLessonGroupVo.getVirtualNumber());
             }
+            videoLessonGroupVo.setMusicNum(map.get(videoLessonGroupVo.getId()));
         }
         return page.setRecords(videoLessonGroupVos);
     }

+ 2 - 148
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherFreeTimeVo.java

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.vo;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -13,6 +14,7 @@ import java.util.List;
  * @Date: 2022/4/15
  */
 @ApiModel(value = "TeacherFreeTimeVo")
+@Data
 public class TeacherFreeTimeVo implements Serializable {
     @ApiModelProperty(value = "主键")
     private Long id;
@@ -20,12 +22,6 @@ public class TeacherFreeTimeVo implements Serializable {
     @ApiModelProperty(value = "老师编号")
     private Long teacherId;
 
-    @ApiModelProperty(value = "课间休息分钟数")
-    private Integer freeMinutes;
-
-    @ApiModelProperty(value = "单课时分钟数")
-    private Integer courseMinutes;
-
     @ApiModelProperty(value = "是否跳过节假日1是0否")
     private Boolean skipHolidayFlag;
 
@@ -53,152 +49,10 @@ public class TeacherFreeTimeVo implements Serializable {
     @ApiModelProperty(value = "周日")
     private String sunday;
 
-    @ApiModelProperty(value = "是否默认配置")
-    private Boolean defaultFlag = true;
-
     @ApiModelProperty(value = "创建时间")
     private Date createTime;
 
     @ApiModelProperty(value = "修改时间")
     private Date updateTime;
-
-    @ApiModelProperty(value = "是否开启陪练课(1是 0否)")
-    private Boolean enableFlag = true;
-
-    public Boolean getEnableFlag() {
-        return enableFlag;
-    }
-
-    public void setEnableFlag(Boolean enableFlag) {
-        this.enableFlag = enableFlag;
-    }
-
-    public Long getId() {
-        return id;
-    }
-
-    public void setId(Long id) {
-        this.id = id;
-    }
-
-    public Long getTeacherId() {
-        return teacherId;
-    }
-
-    public void setTeacherId(Long teacherId) {
-        this.teacherId = teacherId;
-    }
-
-    public Integer getFreeMinutes() {
-        return freeMinutes;
-    }
-
-    public void setFreeMinutes(Integer freeMinutes) {
-        this.freeMinutes = freeMinutes;
-    }
-
-    public Integer getCourseMinutes() {
-        return courseMinutes;
-    }
-
-    public void setCourseMinutes(Integer courseMinutes) {
-        this.courseMinutes = courseMinutes;
-    }
-
-    public Boolean getSkipHolidayFlag() {
-        return skipHolidayFlag;
-    }
-
-    public void setSkipHolidayFlag(Boolean skipHolidayFlag) {
-        this.skipHolidayFlag = skipHolidayFlag;
-    }
-
-    public List<TeacherSubjectPrice> getSubjectPrice() {
-        return subjectPrice;
-    }
-
-    public void setSubjectPrice(List<TeacherSubjectPrice> subjectPrice) {
-        this.subjectPrice = subjectPrice;
-    }
-
-    public String getMonday() {
-        return monday;
-    }
-
-    public void setMonday(String monday) {
-        this.monday = monday;
-    }
-
-    public String getTuesday() {
-        return tuesday;
-    }
-
-    public void setTuesday(String tuesday) {
-        this.tuesday = tuesday;
-    }
-
-    public String getWednesday() {
-        return wednesday;
-    }
-
-    public void setWednesday(String wednesday) {
-        this.wednesday = wednesday;
-    }
-
-    public String getThursday() {
-        return thursday;
-    }
-
-    public void setThursday(String thursday) {
-        this.thursday = thursday;
-    }
-
-    public String getFriday() {
-        return friday;
-    }
-
-    public void setFriday(String friday) {
-        this.friday = friday;
-    }
-
-    public String getSaturday() {
-        return saturday;
-    }
-
-    public void setSaturday(String saturday) {
-        this.saturday = saturday;
-    }
-
-    public String getSunday() {
-        return sunday;
-    }
-
-    public void setSunday(String sunday) {
-        this.sunday = sunday;
-    }
-
-    public Boolean getDefaultFlag() {
-        return defaultFlag;
-    }
-
-    public void setDefaultFlag(Boolean defaultFlag) {
-        this.defaultFlag = defaultFlag;
-    }
-
-    public Date getCreateTime() {
-        return createTime;
-    }
-
-    public void setCreateTime(Date createTime) {
-        this.createTime = createTime;
-    }
-
-    public Date getUpdateTime() {
-        return updateTime;
-    }
-
-    public void setUpdateTime(Date updateTime) {
-        this.updateTime = updateTime;
-    }
 }
 

+ 4 - 31
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupVo.java

@@ -3,11 +3,13 @@ package com.yonge.cooleshow.biz.dal.vo;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
 
 /**
  * @author: cy
  * @date: 2022/3/31 11:39
  */
+@Data
 @ApiModel(value = "VideoLessonGroupVo对象", description = "视频课组列表")
 public class VideoLessonGroupVo extends VideoLessonGroup {
     private String realName;
@@ -21,35 +23,6 @@ public class VideoLessonGroupVo extends VideoLessonGroup {
     @ApiModelProperty("购买人数")
     private Integer countStudent;
 
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    public String getUsername() {
-        return username;
-    }
-
-    public void setUsername(String username) {
-        this.username = username;
-    }
-
-    public String getAvatar() {
-        return avatar;
-    }
-
-    public void setAvatar(String avatar) {
-        this.avatar = avatar;
-    }
-
-    public Integer getCountStudent() {
-        return countStudent;
-    }
-
-    public void setCountStudent(Integer countStudent) {
-        this.countStudent = countStudent;
-    }
+    @ApiModelProperty("曲目数量")
+    private Long musicNum;
 }

+ 46 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/TeacherSubjectPriceWrapper.java

@@ -0,0 +1,46 @@
+package com.yonge.cooleshow.biz.dal.wrapper;
+
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.math.BigDecimal;
+
+public class TeacherSubjectPriceWrapper {
+
+    @Data
+    public static class PriceSearch extends QueryInfo {
+
+        @ApiModelProperty(value = "声部编号")
+        private Integer subjectId;
+
+        @ApiModelProperty(value = "课程类型")
+        private String courseType;
+    }
+
+    @Data
+    public static class TeacherSubjectPriceDto{
+
+        @ApiModelProperty(value = "老师id")
+        private Long teacherId;
+
+        @ApiModelProperty(value = "课程类型")
+        private String courseType;
+
+        @ApiModelProperty(value = "课间休息时长(分钟)")
+        private Integer freeMinutes;
+
+        @ApiModelProperty(value = "单课时长(分钟)")
+        private Integer courseMinutes;
+
+        @ApiModelProperty(value = "声部id")
+        private String subjectId;
+
+        @ApiModelProperty(value = "声部名称")
+        private String subjectName;
+
+        @ApiModelProperty(value = "声部价格")
+        private BigDecimal subjectPrice;
+    }
+
+}

+ 54 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/course/CourseGroupWrapper.java

@@ -0,0 +1,54 @@
+package com.yonge.cooleshow.biz.dal.wrapper.course;
+
+import com.yonge.toolset.base.page.QueryInfo;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+public class CourseGroupWrapper {
+
+    @Data
+    public static class TeacherCourseGroupQuery extends QueryInfo {
+
+        @ApiModelProperty(value = "课程组状态")
+        private String status;
+
+        @ApiModelProperty("声部")
+        private Long subjectId;
+
+        @ApiModelProperty("老师编号")
+        private Long teacherId;
+
+        @ApiModelProperty("课程组类型")
+        private String courseType;
+    }
+
+    @Data
+    public static class TeacherCourseGroupDto {
+        @ApiModelProperty(value = "课程组id")
+        private Long courseGroupId;
+
+        @ApiModelProperty(value = "名称")
+        private String courseGroupName;
+
+        @ApiModelProperty(value = "声部名称")
+        private String subjectName;
+
+        @ApiModelProperty(value = "声部id")
+        private Long subjectId;
+
+        @ApiModelProperty(value = "课程组状态")
+        private String status;
+
+        @ApiModelProperty(value = "已完成课程数")
+        private Integer completeCourseNum;
+
+        @ApiModelProperty(value = "课程数")
+        private Integer courseNum;
+
+        @ApiModelProperty(value = "学员姓名")
+        private String studentName;
+
+        @ApiModelProperty(value = "学员头像")
+        private String studentAvatar;
+    }
+}

+ 24 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -1001,4 +1001,28 @@
         left join subject s on cg.subject_id_ = s.id_
         where cg.status_ = 'APPLY' and cg.type_ = 'LIVE'
     </select>
+    <select id="myCourseGroup"
+            resultType="com.yonge.cooleshow.biz.dal.wrapper.course.CourseGroupWrapper$TeacherCourseGroupDto">
+        select cg.name_ courseGroupName,su.username_ studentName,cg.status_ status,
+               su.avatar_ studentAvatar,cg.subject_id_ subjectId,
+               cg.complete_course_num_ completeCourseNum,cg.course_num_ courseNum,cg.id_ courseGroupId
+        from course_group cg
+        LEFT JOIN course_schedule_student_payment cssp ON cssp.course_group_id_ = cg.id_
+        LEFT JOIN sys_user su ON cssp.user_id_ = su.id_
+        <where>
+            <if test="param.teacherId != null">
+                AND cg.teacher_id_ = #{param.teacherId}
+            </if>
+            <if test="param.status != null and param.status != ''">
+                AND cg.status_ = #{param.status}
+            </if>
+            <if test="param.subjectId != null">
+                AND cg.subject_id_ = #{param.subjectId}
+            </if>
+            <if test="param.courseType != null and param.courseType != ''">
+                AND cg.type_ = #{param.courseType}
+            </if>
+        </where>
+        group by cg.id_
+    </select>
 </mapper>

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

@@ -207,7 +207,7 @@
         LEFT JOIN `subject` sb ON g.subject_id_=sb.id_
         LEFT JOIN course_schedule_replied r ON cs.id_=r.course_schedule_id_
         WHERE p.course_id_ IN
-        (SELECT s.id_ FROM course_schedule s WHERE s.type_='PRACTICE' AND lock_=0 AND s.teacher_id_=#{param.teacherId})
+        (SELECT s.id_ FROM course_schedule s WHERE s.type_ = #{param.courseType} AND lock_=0 AND s.teacher_id_=#{param.teacherId})
         <if test="param.status !=null and param.status !=''">
             AND cs.status_ = #{param.status}
         </if>
@@ -273,7 +273,7 @@
         WHERE s.teacher_id_=#{teacherId}
         AND s.lock_=0
         AND s.status_ IN ('ING','COMPLETE','NOT_START')
-        AND p.course_type_ IN ('PIANO_ROOM_CLASS','PRACTICE')
+        AND p.course_type_ IN ('PIANO_ROOM_CLASS','PRACTICE','VIP')
         <![CDATA[ AND s.class_date_  >= #{startDate} ]]>
         <![CDATA[ AND s.class_date_  <= #{endDate} ]]>
         UNION
@@ -397,7 +397,7 @@
         LEFT JOIN course_schedule_replied r ON cs.id_ = r.course_schedule_id_
         WHERE cs.lock_=0
         AND cs.status_ IN ('ING','COMPLETE','NOT_START')
-        AND p.course_id_ IN (SELECT s.id_ FROM course_schedule s WHERE s.type_='PRACTICE' AND s.teacher_id_=#{param.teacherId})
+        AND p.course_id_ IN (SELECT s.id_ FROM course_schedule s WHERE s.type_ IN ('PRACTICE','VIP') AND s.teacher_id_=#{param.teacherId})
         AND cs.class_date_=#{param.classDate}
         ORDER BY startTime
     </select>

+ 10 - 88
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherFreeTimeMapper.xml

@@ -4,10 +4,7 @@
     <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime">
         <id column="id_" jdbcType="INTEGER" property="id"/>
         <result column="teacher_id_" jdbcType="INTEGER" property="teacherId"/>
-        <result column="free_minutes_" jdbcType="INTEGER" property="freeMinutes"/>
-        <result column="course_minutes_" jdbcType="INTEGER" property="courseMinutes"/>
         <result column="skip_holiday_flag_" property="skipHolidayFlag"/>
-        <result column="subject_price_" jdbcType="VARCHAR" property="subjectPrice"/>
         <result column="monday_" jdbcType="VARCHAR" property="monday"/>
         <result column="tuesday_" jdbcType="VARCHAR" property="tuesday"/>
         <result column="wednesday_" jdbcType="VARCHAR" property="wednesday"/>
@@ -15,109 +12,34 @@
         <result column="friday_" jdbcType="VARCHAR" property="friday"/>
         <result column="saturday_" jdbcType="VARCHAR" property="saturday"/>
         <result column="sunday_" jdbcType="VARCHAR" property="sunday"/>
-        <result column="default_flag_" property="defaultFlag"/>
         <result column="recent_free_time_" property="recentFreeTime"/>
         <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
         <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
     </resultMap>
 
     <sql id="Base_Column_List">
-        id_
-        , teacher_id_, free_minutes_, course_minutes_, skip_holiday_flag_, subject_price_,
-    monday_, tuesday_, wednesday_, thursday_, friday_, saturday_, sunday_,default_flag_,recent_free_time_,create_time_, update_time_
+        id_, teacher_id_, skip_holiday_flag_,
+    monday_, tuesday_, wednesday_, thursday_, friday_, saturday_, sunday_,recent_free_time_,create_time_, update_time_
     </sql>
 
     <insert id="insertBatch" keyColumn="id_" keyProperty="id" useGeneratedKeys="true"
             parameterType="com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime">
-        insert into teacher_free_time(teacher_id_, free_minutes_, course_minutes_, skip_holiday_flag_, subject_price_,
-        monday_, tuesday_, wednesday_, thursday_, friday_, saturday_, sunday_,default_flag_,recent_free_time_, create_time_, update_time_)
+        insert into teacher_free_time(teacher_id_, skip_holiday_flag_,
+        monday_, tuesday_, wednesday_, thursday_, friday_, saturday_, sunday_,recent_free_time_, create_time_, update_time_)
         values
         <foreach collection="entities" item="entity" separator=",">
-            (#{entity.teacherId}, #{entity.freeMinutes}, #{entity.courseMinutes}, #{entity.skipHolidayFlag},
-            #{entity.subjectPrice}, #{entity.monday}, #{entity.tuesday}, #{entity.wednesday}, #{entity.thursday},
-            #{entity.friday}, #{entity.saturday}, #{entity.sunday}, #{entity.defaultFlag},#{entity.recentFreeTime},NOW(),NOW())
+            (#{entity.teacherId},#{entity.skipHolidayFlag},
+            #{entity.monday}, #{entity.tuesday}, #{entity.wednesday}, #{entity.thursday},
+            #{entity.friday}, #{entity.saturday}, #{entity.sunday},#{entity.recentFreeTime},NOW(),NOW())
         </foreach>
     </insert>
-    <insert id="insertPrice" parameterType="java.util.List">
-        INSERT INTO teacher_subject_price
-            (teacher_free_time_id,teacher_id_,free_minutes_,course_minutes_,subject_id_,subject_name_,subject_price_,course_type_)VALUES
-        <foreach collection="list" item="item" index="index" separator=",">
-            (#{item.teacherFreeTimeId},#{item.teacherId},#{item.freeMinutes},#{item.courseMinutes},#{item.subjectId},#{item.subjectName},#{item.subjectPrice},#{item.courseType})
-        </foreach>
-    </insert>
-    <update id="updateDefaultFlag">
-        UPDATE teacher_free_time SET default_flag_ = #{defaultFlag} WHERE teacher_id_ = #{teacherId}
-    </update>
-    <delete id="deleteSubjectPrice" parameterType="java.lang.Long">
-        DELETE FROM teacher_subject_price WHERE teacher_free_time_id = #{id}
-    </delete>
-    <select id="findOne" resultMap="BaseResultMap">
-        SELECT <include refid="Base_Column_List"/>
-        FROM teacher_free_time WHERE teacher_id_ = #{teacherId}
-        AND free_minutes_ = #{freeMinutes}
-        AND course_minutes_ = #{courseMinutes} LIMIT 1
-    </select>
     <select id="getDetail" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo"
             parameterType="com.yonge.cooleshow.biz.dal.dto.PracticeTimesSetting">
-        SELECT * FROM teacher_free_time
-        <where>
-            <if test="param.userId != null">
-                AND teacher_id_ = #{param.userId}
-            </if>
-            <if test="param.freeMinutes != null">
-                AND free_minutes_ = #{param.freeMinutes}
-            </if>
-            <if test="param.courseMinutes != null">
-                AND course_minutes_ = #{param.courseMinutes}
-            </if>
-            <if test="param.courseMinutes != null">
-                AND course_minutes_ = #{param.courseMinutes}
-            </if>
-            <if test="param.defaultFlag != null">
-                AND default_flag_ = #{param.defaultFlag}
-            </if>
-        </where>
-    </select>
-    <select id="getPrice" resultType="com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice"
-            parameterType="java.lang.Long">
-        SELECT * FROM teacher_subject_price WHERE teacher_free_time_id = #{id}
-    </select>
-    <select id="selectSubjectPrice" resultType="com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice">
-        SELECT
-            p.id_ AS id,
-            p.teacher_free_time_id AS teacherFreeTimeId,
-            p.teacher_id_ AS teacherId,
-            p.free_minutes_ AS freeMinutes,
-            p.course_minutes_ AS courseMinutes,
-            p.subject_id_ AS subjectId,
-            p.subject_name_ AS subjectName,
-            p.subject_price_ AS subjectPrice,
-            p.course_type_ AS courseType
-        FROM teacher_free_time f
-        LEFT JOIN teacher_subject_price p ON f.id_=p.teacher_free_time_id
-        WHERE f.teacher_id_=#{teacherId} AND f.default_flag_=1 AND p.subject_id_=#{subjectId}
-    </select>
-    <select id="selectPriceByTeacherId" resultType="com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice"
-            parameterType="java.lang.Long">
-        SELECT
-            p.id_ AS id,
-            p.teacher_free_time_id AS teacherFreeTimeId,
-            p.teacher_id_ AS teacherId,
-            p.free_minutes_ AS freeMinutes,
-            p.course_minutes_ AS courseMinutes,
-            p.subject_id_ AS subjectId,
-            p.subject_name_ AS subjectName,
-            p.subject_price_ AS subjectPrice,
-            p.course_type_ AS courseType
-        FROM teacher_free_time f
-        LEFT JOIN teacher_subject_price p ON f.id_=p.teacher_free_time_id
-        WHERE f.teacher_id_=#{teacherId}
-        AND f.default_flag_=1
-        AND f.enable_flag_=1
+        SELECT * FROM teacher_free_time where teacher_id_ = #{userId}
     </select>
     <select id="getTeacherFreeTime" resultType="com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime">
-        SELECT * FROM teacher_free_time WHERE default_flag_=1
-        AND teacher_id_ IN(SELECT user_id_ FROM teacher_auth_entry_record WHERE teacher_auth_status_='PASS' GROUP BY user_id_)
+        SELECT * FROM teacher_free_time
+        WHERE teacher_id_ IN(SELECT user_id_ FROM teacher_auth_entry_record WHERE teacher_auth_status_='PASS' GROUP BY user_id_)
     </select>
     <select id="queryTeacherList" resultType="com.yonge.cooleshow.biz.dal.vo.PracticeTeacherVo">
         select

+ 4 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherSubjectPriceMapper.xml

@@ -0,0 +1,4 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.TeacherSubjectPriceDao">
+</mapper>

+ 19 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -601,4 +601,23 @@
 		ORDER BY payCount DESC
 		LIMIT 5
 	</select>
+	<select id="countMusicAlbum" resultType="java.util.Map">
+		select c.course_group_id_ 'key',COUNT(distinct ms.id_) 'value' from
+			(
+				select crma.course_group_id_, music_album_id_ music_sheet_id_ from course_relation_music_album crma
+				where crma.relation_type_ = 'MUSIC' AND crma.course_group_id_ IN
+				<foreach collection="videoLessonGroupIds" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>
+				union
+				select crma.course_group_id_,amr.music_sheet_id_ from course_relation_music_album crma
+				left join album_music_relate amr ON amr.id_ = crma.music_album_id_
+				where crma.relation_type_ = 'ALBUM' AND course_group_id_ IN
+				<foreach collection="videoLessonGroupIds" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>) c
+				LEFT JOIN music_sheet ms ON c.music_sheet_id_ = ms.id_
+				AND state_ = 1 AND client_state_ = 1 AND del_flag_ = 0
+		GROUP BY c.course_group_id_
+	</select>
 </mapper>