فهرست منبع

Merge remote-tracking branch 'origin/master'

hgw 3 سال پیش
والد
کامیت
655fb3ed78
23فایلهای تغییر یافته به همراه443 افزوده شده و 61 حذف شده
  1. 6 20
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  2. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseScheduleDao.java
  3. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetAccompanimentDao.java
  4. 170 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeScheduleDto.java
  5. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  6. 56 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleDate.java
  7. 13 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  8. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseScheduleService.java
  9. 6 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAccompanimentService.java
  10. 8 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  11. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  12. 61 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseScheduleServiceImpl.java
  13. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetAccompanimentServiceImpl.java
  14. 29 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  15. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java
  16. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  17. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupStudentCourseVo.java
  18. 1 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml
  19. 6 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseScheduleMapper.xml
  20. 3 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetAccompanimentMapper.xml
  21. 7 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  22. 13 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java
  23. 8 18
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

+ 6 - 20
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -96,23 +96,10 @@ public class MusicSheetController extends BaseController {
         musicSheetDto.setAuditStatus(AuthStatusEnum.PASS);
         musicSheetDto.setDelFlag(false);
         musicSheetDto.setSourceType(SourceTypeEnum.PLATFORM);
-        List<MusicSheetAccompaniment> list;
-        if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
-            list = musicSheetDto.getBackground();
-            if (CollectionUtils.isEmpty(list)){
-                return failed("mp3音频文件对应的主音或者伴奏文件没有提供");
-            }
-            musicSheetService.saveMp3AndAccompaniment(musicSheetDto,sysUser);
-        } else {
-            MusicSheet musicSheet = new MusicSheet();
-            BeanUtils.copyProperties(musicSheetDto, musicSheet);
-            musicSheet.setCreateBy(sysUser.getId());
-            musicSheet.setCreateTime(new Date());
-            musicSheet.setUpdateTime(new Date());
-            musicSheet.setUpdateBy(sysUser.getId());
-            musicSheet.setState(YesOrNoEnum.NO);
-            musicSheetService.save(musicSheet);
-        }
+
+        musicSheetDto.setCreateBy(sysUser.getId());
+        musicSheetDto.setCreateTime(new Date());
+        musicSheetService.saveMusicSheet(musicSheetDto,sysUser.getId());
 
         return succeed("新增曲谱成功");
 
@@ -136,7 +123,7 @@ public class MusicSheetController extends BaseController {
 
     @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody MusicSheet musicSheet) {
+    public HttpResponseResult<Object> update(@Valid @RequestBody MusicSheetDto musicSheet) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
@@ -151,8 +138,7 @@ public class MusicSheetController extends BaseController {
 
         musicSheet.setUpdateBy(sysUser.getId());
         musicSheet.setUpdateTime(new Date());
-        boolean result = musicSheetService.updateById(musicSheet);
-        if (result){
+        if ( musicSheetService.saveMusicSheet(musicSheet,sysUser.getId())){
             return succeed("修改成功");
         } else {
             return failed("修改失败");

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

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
@@ -99,6 +100,9 @@ public interface CourseScheduleDao extends BaseMapper<CourseSchedule> {
     //学生端-课表-日历-用户
     List<CourseStudent> queryCourseTeacher(@Param("param") MyCourseSearch search);
 
+    //新增组
+    void addCourseGroup(PracticeScheduleDto scheduleDto);
+
     /**
      * 学生-查询直播课
      *

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

@@ -13,4 +13,10 @@ import java.util.List;
  **/
 public interface MusicSheetAccompanimentDao extends BaseMapper<MusicSheetAccompaniment> {
 
+    /**
+     * 删除原音
+     *
+     * @param musicSheetId 曲目id
+     */
+    void delByMusicSheetId(Long musicSheetId);
 }

+ 170 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/PracticeScheduleDto.java

@@ -0,0 +1,170 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.entity.CourseScheduleDate;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.math.BigDecimal;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/20
+ */
+@ApiModel(value = "PracticeScheduleDto")
+public class PracticeScheduleDto implements Serializable {
+	@ApiModelProperty(value = "课程组id")
+	private Long groupId;
+	@ApiModelProperty(value = "学生id")
+	private Long studentId;
+	@ApiModelProperty(value = "老师id")
+	private Long teacherId;
+	@ApiModelProperty(value = "类型 practice陪练课 live直播课")
+	private String type;
+	@ApiModelProperty(value = "课程组名称")
+	private String courseGroupName;
+	@ApiModelProperty(value = "声部id")
+	private String subjectId;
+	@ApiModelProperty(value = "单课时长")
+	private Integer singleCourseMinutes;
+	@ApiModelProperty(value = "课程数")
+	private Integer courseNum;
+	@ApiModelProperty(value = "课程介绍")
+	private String courseIntroduce;
+	@ApiModelProperty(value = "课程组售价")
+	private BigDecimal coursePrice;
+	@ApiModelProperty(value = "课程单价")
+	private BigDecimal unitPrice;
+	@ApiModelProperty(value = "课程组状态 ING进行中 COMPLETE已完成 DISSOLVE-未成课(解散课程) CANCEL已取消-未开始报名前可取消 APPLY报名中 NOT_SALE未开售")
+	private String status;
+	@ApiModelProperty(value = "最少成课人数")
+	private Integer mixStudentNum;
+	@ApiModelProperty(value = "课程开始时间")
+	private Date courseStartTime;
+	@ApiModelProperty(value = "上课时间")
+	private List<CourseScheduleDate> classTime;
+
+	public BigDecimal getUnitPrice() {
+		return unitPrice;
+	}
+
+	public void setUnitPrice(BigDecimal unitPrice) {
+		this.unitPrice = unitPrice;
+	}
+
+	public Long getGroupId() {
+		return groupId;
+	}
+
+	public void setGroupId(Long groupId) {
+		this.groupId = groupId;
+	}
+
+	public Long getStudentId() {
+		return studentId;
+	}
+
+	public void setStudentId(Long studentId) {
+		this.studentId = studentId;
+	}
+
+	public Long getTeacherId() {
+		return teacherId;
+	}
+
+	public void setTeacherId(Long teacherId) {
+		this.teacherId = teacherId;
+	}
+
+	public String getType() {
+		return type;
+	}
+
+	public void setType(String type) {
+		this.type = type;
+	}
+
+	public String getCourseGroupName() {
+		return courseGroupName;
+	}
+
+	public void setCourseGroupName(String courseGroupName) {
+		this.courseGroupName = courseGroupName;
+	}
+
+	public String getSubjectId() {
+		return subjectId;
+	}
+
+	public void setSubjectId(String subjectId) {
+		this.subjectId = subjectId;
+	}
+
+	public Integer getSingleCourseMinutes() {
+		return singleCourseMinutes;
+	}
+
+	public void setSingleCourseMinutes(Integer singleCourseMinutes) {
+		this.singleCourseMinutes = singleCourseMinutes;
+	}
+
+	public Integer getCourseNum() {
+		return courseNum;
+	}
+
+	public void setCourseNum(Integer courseNum) {
+		this.courseNum = courseNum;
+	}
+
+	public String getCourseIntroduce() {
+		return courseIntroduce;
+	}
+
+	public void setCourseIntroduce(String courseIntroduce) {
+		this.courseIntroduce = courseIntroduce;
+	}
+
+	public BigDecimal getCoursePrice() {
+		return coursePrice;
+	}
+
+	public void setCoursePrice(BigDecimal coursePrice) {
+		this.coursePrice = coursePrice;
+	}
+
+	public String getStatus() {
+		return status;
+	}
+
+	public void setStatus(String status) {
+		this.status = status;
+	}
+
+	public Integer getMixStudentNum() {
+		return mixStudentNum;
+	}
+
+	public void setMixStudentNum(Integer mixStudentNum) {
+		this.mixStudentNum = mixStudentNum;
+	}
+
+	public Date getCourseStartTime() {
+		return courseStartTime;
+	}
+
+	public void setCourseStartTime(Date courseStartTime) {
+		this.courseStartTime = courseStartTime;
+	}
+
+	public List<CourseScheduleDate> getClassTime() {
+		return classTime;
+	}
+
+	public void setClassTime(List<CourseScheduleDate> classTime) {
+		this.classTime = classTime;
+	}
+}

+ 11 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java

@@ -20,6 +20,17 @@ public class VideoLessonGroupSearch extends QueryInfo {
     @ApiModelProperty(value = "筛选条件")
     private String search;
 
+    @ApiModelProperty(value = "学生id")
+    private Long studentId;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
     public AuthStatusEnum getAuditStatus() {
         return auditStatus;
     }

+ 56 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/CourseScheduleDate.java

@@ -0,0 +1,56 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/20
+ */
+@ApiModel(value = "CourseScheduleDate")
+public class CourseScheduleDate implements Serializable {
+    @DateTimeFormat(pattern = "yyyy-MM-dd")
+    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
+    @ApiModelProperty(value = "上课日期")
+    private Date classDate;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "上课时间")
+    private Date startTime;
+
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    @ApiModelProperty(value = "下课时间")
+    private Date endTime;
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}
+

+ 13 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -54,9 +54,13 @@ public class MusicSheet implements Serializable {
 
     @NotNull(message = "曲谱音频文件类型不能为空!")
     @TableField("audio_type_")
-    @ApiModelProperty(value = "曲目音频类型 MP3:mp3, MIDI:midi, MP3_METRONOME:mp3_metronome")
+    @ApiModelProperty(value = "曲目音频类型 MP3:mp3, MIDI:midi,")
     private AudioTypeEnum audioType;
 
+	@TableField("mp3_type_")
+	@ApiModelProperty(value = "mp3类型 MP3:mp3, MP3_METRONOME:MP3_METRONOME,")
+	private AudioTypeEnum mp3Type;
+
     @NotBlank(message = "曲谱标签不能为空!")
     @TableField("music_tag_")
     @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
@@ -409,4 +413,12 @@ public class MusicSheet implements Serializable {
 	public void setSourceType(SourceTypeEnum sourceType) {
 		this.sourceType = sourceType;
 	}
+
+	public AudioTypeEnum getMp3Type() {
+		return mp3Type;
+	}
+
+	public void setMp3Type(AudioTypeEnum mp3Type) {
+		this.mp3Type = mp3Type;
+	}
 }

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

@@ -3,6 +3,7 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
+import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.MyCourseSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.PracticeTeacherSearch;
@@ -177,5 +178,7 @@ public interface CourseScheduleService extends IService<CourseSchedule> {
      *              <p> - subjectId 声部id
      */
     PageInfo<CourseStudent> queryStudentLiveCourse(Map<String, Object> param);
+
+    void creatPractice(PracticeScheduleDto scheduleDto);
 }
 

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

@@ -11,4 +11,10 @@ import com.baomidou.mybatisplus.extension.service.IService;
  **/
 public interface MusicSheetAccompanimentService extends IService<MusicSheetAccompaniment> {
 
+    /**
+     * 删除原音
+     *
+     * @param musicSheetId
+     */
+    void delByMusicSheetId(Long musicSheetId);
 }

+ 8 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -17,12 +17,6 @@ import com.yonge.cooleshow.biz.dal.vo.*;
  * @version v1.0
  **/
 public interface MusicSheetService extends IService<MusicSheet> {
-    /**
-     * 保存mp3以及相应的主音或者伴奏文件
-     * @param musicSheetDto
-     * @return
-     */
-    boolean saveMp3AndAccompaniment(MusicSheetDto musicSheetDto, SysUser sysUser);
 
 
     /**
@@ -172,4 +166,12 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @return: java.lang.Integer
      */
     Integer getUserToDoNum();
+
+    /**
+     * 保存曲目信息
+     *
+     * @param musicSheetDto
+     * @return
+     */
+    boolean saveMusicSheet(MusicSheetDto musicSheetDto,Long userId);
 }

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

@@ -42,4 +42,6 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     IPage<LessonGroupVo> selectLessonGroup(IPage<LessonGroupVo> page, VideoLessonGroupSearch query);
 
     IPage<VideoLessonAuthGroup> queryGroupList(IPage<VideoLessonAuthGroup> page, VideoGroupSearch query);
+
+    IPage<LessonGroupVo> selectLessonGroupById(IPage<LessonGroupVo> page, VideoLessonGroupSearch query);
 }

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

@@ -10,10 +10,12 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleRepliedDao;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleStudentPaymentDao;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
+import com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto;
 import com.yonge.cooleshow.biz.dal.dto.search.HomeworkSearch;
 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.*;
+import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
@@ -28,16 +30,14 @@ import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.toolset.utils.date.DateUtil;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
-import org.apache.ibatis.annotations.Param;
 import org.redisson.api.RMap;
 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 org.springframework.validation.annotation.Validated;
 
-import javax.validation.Valid;
+import java.math.BigDecimal;
 import java.time.LocalDate;
 import java.time.temporal.TemporalAdjusters;
 import java.util.*;
@@ -69,7 +69,6 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
     private TeacherFreeTimeService teacherFreeTimeService;
     @Autowired
     private CourseGroupService courseGroupService;
-
     @Autowired
     private CourseScheduleStudentPaymentService courseScheduleStudentPaymentService;
 
@@ -791,5 +790,63 @@ public class CourseScheduleServiceImpl extends ServiceImpl<CourseScheduleDao, Co
        return PageUtil.pageInfo(baseMapper.queryStudentLiveCourse(pageInfo,param));
     }
 
+
+    /**
+     * @Description: 创建陪练课
+     * @Author: cy
+     * @Date: 2022/4/20
+     */
+    @Transactional(rollbackFor = Exception.class)
+    public void creatPractice(PracticeScheduleDto scheduleDto){
+        //创建单号
+        String orderNo="";
+        scheduleDto.setType(CourseScheduleEnum.PRACTICE.getCode());
+        scheduleDto.setStatus(CourseGroupEnum.NOT_SALE.getCode());
+        scheduleDto.setMixStudentNum(1);
+
+        //写入course_group
+        baseMapper.addCourseGroup(scheduleDto);
+        Long groupId = scheduleDto.getGroupId();
+
+        BigDecimal unitPrice = scheduleDto.getUnitPrice();
+        List<CourseScheduleDate> classTime = scheduleDto.getClassTime();
+        for (int i = 0; i < classTime.size(); i++) {
+            CourseScheduleDate date = classTime.get(i);
+            CourseSchedule schedule = new CourseSchedule();
+            schedule.setClassDate(date.getClassDate());
+            schedule.setStartTime(date.getStartTime());
+            schedule.setEndTime(date.getEndTime());
+            schedule.setCourseGroupId(groupId);
+            schedule.setType(CourseScheduleEnum.PRACTICE.getCode());
+            schedule.classNum(i+1);
+            schedule.setTeacherId(scheduleDto.getTeacherId());
+            schedule.setLock(1);
+            schedule.setStatus(CourseScheduleEnum.NOT_START.getCode());
+            schedule.setCreatedBy(scheduleDto.getStudentId());
+            //写入course_schedule
+            baseMapper.insert(schedule);
+
+            Long scheduleId = schedule.getId();
+            CourseScheduleStudentPayment payment = new CourseScheduleStudentPayment();
+            payment.setUserId(scheduleDto.getStudentId());
+            payment.setCourseId(scheduleId);
+            payment.setCourseGroupId(groupId);
+            payment.setCourseType(CourseScheduleEnum.PRACTICE.getCode());
+            payment.setOrderNo(orderNo);
+            payment.setOriginalPrice(unitPrice);
+            payment.setExpectPrice(unitPrice);
+            payment.setActualPrice(unitPrice);
+            //写course_schedule_student_payment
+            courseScheduleStudentPaymentService.save(payment);
+        }
+    }
+
+    /**
+     * 陪练课下单
+     *
+     * 调用下单接口
+     * 成功:将course_schedule中lock_改为0
+     * 失败:回滚以上数据
+     */
 }
 

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

@@ -26,4 +26,9 @@ public class MusicSheetAccompanimentServiceImpl extends ServiceImpl<MusicSheetAc
     public MusicSheetAccompanimentDao getDao() {
         return musicSheetAccompanimentDao;
     }
+
+    @Override
+    public void delByMusicSheetId(Long musicSheetId) {
+        musicSheetAccompanimentDao.delByMusicSheetId(musicSheetId);
+    }
 }

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

@@ -63,26 +63,21 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         return musicSheetDao;
     }
 
-    @Override
     @Transactional(rollbackFor = Exception.class)
-    public boolean saveMp3AndAccompaniment(MusicSheetDto musicSheetDto, SysUser sysUser) {
+    public boolean saveMp3AndAccompaniment(MusicSheetDto musicSheetDto,Long userId) {
         MusicSheet musicSheet = new MusicSheet();
         BeanUtils.copyProperties(musicSheetDto, musicSheet);
         //保存主表
-        musicSheet.setCreateBy(sysUser.getId());
-        musicSheet.setUpdateBy(sysUser.getId());
+        musicSheet.setUpdateBy(userId);
         musicSheet.setUpdateTime(new Date());
         musicSheet.setState(YesOrNoEnum.NO);
-        musicSheet.setCreateTime(new Date());
-        int count = musicSheetDao.insert(musicSheet);
+        this.saveOrUpdate(musicSheet);
 
         Long sheetId = musicSheet.getId();
         List<MusicSheetAccompaniment> list = musicSheetDto.getBackground();
-        list.forEach(musicSheetAccompaniment -> musicSheetAccompaniment.setMusicSheetId(sheetId).setCreateBy(sysUser.getId()).setCreateTime(new Date()));
-        musicSheetAccompanimentService.saveBatch(list);
-        count += list.size();
+        list.forEach(musicSheetAccompaniment -> musicSheetAccompaniment.setMusicSheetId(sheetId).setCreateBy(userId).setCreateTime(new Date()));
+        return musicSheetAccompanimentService.saveBatch(list);
 
-        return count > 1;
     }
 
     @Override
@@ -276,4 +271,28 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     public Integer getUserToDoNum() {
         return baseMapper.getUserToDoNum();
     }
+
+    @Override
+    public boolean saveMusicSheet(MusicSheetDto musicSheetDto,Long userId) {
+
+        if (musicSheetDto.getId() != null) {
+            musicSheetAccompanimentService.delByMusicSheetId(musicSheetDto.getId());
+        }
+
+        List<MusicSheetAccompaniment> list;
+        if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
+            list = musicSheetDto.getBackground();
+            if (CollectionUtils.isEmpty(list)){
+                throw new BizException("mp3音频文件对应的主音或者伴奏文件没有提供");
+            }
+            return saveMp3AndAccompaniment(musicSheetDto,userId);
+        } else {
+            MusicSheet musicSheet = new MusicSheet();
+            BeanUtils.copyProperties(musicSheetDto, musicSheet);
+            musicSheet.setUpdateTime(new Date());
+            musicSheet.setUpdateBy(userId);
+            musicSheet.setState(YesOrNoEnum.NO);
+            return this.saveOrUpdate(musicSheet);
+        }
+    }
 }

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

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
 import com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo;
+import com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -61,6 +62,9 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
     @Override
     public TeacherFreeTimeVo getDetail(PracticeTimesSetting practiceTimesSetting) {
         TeacherFreeTimeVo getDetail=baseMapper.getDetail(practiceTimesSetting);
+        if (getDetail==null){
+            throw new BizException("陪练课设置不存在");
+        }
         List<TeacherSubjectPrice> priceList=baseMapper.getPrice(getDetail.getId());
         getDetail.setSubjectPrice(priceList);
         return getDetail;

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

@@ -231,4 +231,14 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     public IPage<VideoLessonAuthGroup> queryGroupList(IPage<VideoLessonAuthGroup> page, VideoGroupSearch query) {
         return page.setRecords(baseMapper.queryGroupList(page, query));
     }
+
+    /**
+     * @Description: 学生端-我的-我的课程-购买的视频课组
+     * @Author: cy
+     * @Date: 2022/4/20
+     */
+    @Override
+    public IPage<LessonGroupVo> selectLessonGroupById(IPage<LessonGroupVo> page, VideoLessonGroupSearch query) {
+        return page.setRecords(baseMapper.selectLessonGroup(page, query));
+    }
 }

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

@@ -47,6 +47,9 @@ public class LiveCourseGroupStudentCourseVo {
     @ApiModelProperty("学生考勤id")
     private Long studentAttendanceId;
 
+    @ApiModelProperty("订单编号")
+    private String orderNo;
+
     public Long getCourseId() {
         return courseId;
     }
@@ -103,4 +106,12 @@ public class LiveCourseGroupStudentCourseVo {
     public void setStudentAttendanceId(Long studentAttendanceId) {
         this.studentAttendanceId = studentAttendanceId;
     }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
 }

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

@@ -247,6 +247,7 @@
         cs.start_time_ as startTime,
         cs.end_time_ as endTime,
         cs.status_ as courseStatue,
+        cssp.order_no_ as orderNo,
         sa.id_ as studentAttendanceId
         from course_schedule cs
         left join course_schedule_student_payment cssp on cs.id_ = cssp.course_id_

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

@@ -428,4 +428,10 @@
         </if>
     </select>
 
+    <insert id="addCourseGroup" parameterType="com.yonge.cooleshow.biz.dal.dto.PracticeScheduleDto" useGeneratedKeys="true" keyProperty="groupId">
+        Insert INTO course_group(teacher_id_,type_,name_,subject_id_,single_course_minutes_,course_num_,course_introduce_,
+        course_price_,status_,created_by_,mix_student_num_,course_start_time_)
+        VALUES (#{teacherId},#{type},#{courseGroupName},#{subjectId},#{singleCourseMinutes},#{courseNum},#{courseIntroduce},
+        #{coursePrice},#{status},#{studentId},#{mixStudentNum},#{courseStartTime})
+    </insert>
 </mapper>

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

@@ -17,6 +17,7 @@
 		id_, music_sheet_id_, music_subject_, audio_file_url_, sort_number_, create_time_, create_by_
 	</sql>
 
-
-
+	<delete id="delByMusicSheetId">
+		delete  from music_sheet_accompaniment where music_sheet_id_ = #{musicSheetId}
+    </delete>
 </mapper>

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

@@ -220,6 +220,10 @@
 			<if test="param.auditStatus !=null">
 				AND g.audit_status_ = #{param.auditStatus}
 			</if>
+			<if	test="param.studentId != null">
+				g.id_ IN
+				(SELECT video_lesson_group_id_ FROM video_lesson_purchase_record WHERE student_id_=#{param.studentId} AND order_status_=1)
+			</if>
 		</where>
 	</select>
 	<select id="queryGroupList" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonAuthGroup">
@@ -258,4 +262,7 @@
 			</if>
 		</where>
 	</select>
+	<select id="selectLessonGroupById" resultType="com.yonge.cooleshow.biz.dal.vo.LessonGroupVo">
+
+	</select>
 </mapper>

+ 13 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java

@@ -20,6 +20,7 @@ import com.yonge.cooleshow.common.page.PageInfo;
 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.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
@@ -94,4 +95,16 @@ public class VideoLessonController extends BaseController {
         IPage<LessonGroupVo> pages = videoLessonGroupService.selectLessonGroup(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));
     }
+
+    @ApiOperation(value = "学生端-我的-我的课程-购买的视频课组")
+    @PostMapping("/selectMyGroup")
+    public HttpResponseResult<PageInfo<LessonGroupVo>> myLessonGroup(@RequestBody VideoLessonGroupSearch query) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        query.setStudentId(user.getId());
+        IPage<LessonGroupVo> pages = videoLessonGroupService.selectLessonGroupById(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(pages));
+    }
 }

+ 8 - 18
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -76,28 +76,17 @@ public class MusicSheetController extends BaseController {
         musicSheetDto.setAuditStatus(AuthStatusEnum.DOING);
         musicSheetDto.setSubmitAuditTime(new Date());
         musicSheetDto.setSourceType(SourceTypeEnum.TEACHER);
-        List<MusicSheetAccompaniment> list;
-        if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
-            list = musicSheetDto.getBackground();
-            if (CollectionUtils.isEmpty(list)){
-                return failed("mp3音频文件对应的主音或者伴奏文件没有提供");
-            }
-            musicSheetService.saveMp3AndAccompaniment(musicSheetDto,sysUser);
-        } else {
-            MusicSheet musicSheet = new MusicSheet();
-            BeanUtils.copyProperties(musicSheetDto, musicSheet);
-            musicSheet.setCreateBy(sysUser.getId());
-            musicSheet.setCreateTime(new Date());
-            musicSheet.setState(YesOrNoEnum.NO);
-            musicSheetService.save(musicSheet);
-        }
+
+        musicSheetDto.setCreateBy(sysUser.getId());
+        musicSheetDto.setCreateTime(new Date());
+        musicSheetService.saveMusicSheet(musicSheetDto,sysUser.getId());
         return succeed("新增曲谱成功");
     }
 
 
     @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody MusicSheet musicSheet) {
+    public HttpResponseResult<Object> update(@Valid @RequestBody MusicSheetDto musicSheet) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null  || sysUser.getId() == null) {
             return failed("用户信息获取失败");
@@ -110,8 +99,9 @@ public class MusicSheetController extends BaseController {
         musicSheet.setUpdateTime(new Date());
         musicSheet.setSubmitAuditTime(new Date());
         musicSheet.setAuditStatus(AuthStatusEnum.DOING);
-        boolean result = musicSheetService.updateById(musicSheet);
-        if (result){
+        musicSheet.setUpdateBy(sysUser.getId());
+        musicSheet.setUpdateTime(new Date());
+        if ( musicSheetService.saveMusicSheet(musicSheet,sysUser.getId())){
             return succeed("修改成功");
         } else {
             return failed("修改失败");