浏览代码

Merge remote-tracking branch 'origin/master'

weifanli 3 年之前
父节点
当前提交
719ea96bcd
共有 31 个文件被更改,包括 1539 次插入31 次删除
  1. 49 2
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  2. 38 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java
  3. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetAuthRecordDao.java
  4. 35 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  5. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  6. 55 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherMusicSheetAuditReq.java
  7. 106 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/StudentMusicSheetOrderSearch.java
  8. 81 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherMusicSheetAuditSearch.java
  9. 69 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/TeacherMusicSheetSearch.java
  10. 15 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  11. 86 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonSearch.java
  12. 103 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetAuthRecord.java
  13. 22 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAuthRecordService.java
  14. 39 6
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  15. 3 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  16. 4 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  17. 41 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetAuthRecordServiceImpl.java
  18. 38 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  19. 27 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  20. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  21. 27 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/EnumValid.java
  22. 64 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/impl/EnumValidtor.java
  23. 104 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentMusicSheetOrderVo.java
  24. 161 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetVo.java
  25. 89 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentDetailVo.java
  26. 34 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentVo.java
  27. 26 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetAuthRecordMapper.xml
  28. 114 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  29. 44 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  30. 37 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/VideoLessonController.java
  31. 1 2
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

+ 49 - 2
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -5,7 +5,11 @@ import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetOrderSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetAuditSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.TeacherMusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
 import com.yonge.cooleshow.biz.dal.enums.AudioTypeEnum;
@@ -13,9 +17,11 @@ import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
 import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.StudentMusicSheetOrderVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherMusicSheetVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -79,6 +85,7 @@ public class MusicSheetController extends BaseController {
         }
 
         musicSheetDto.setUserId(0L);
+        musicSheetDto.setAuditStatus(AuditEnum.OPEN);
         List<MusicSheetAccompaniment> list;
         if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
             list = musicSheetDto.getBackground();
@@ -89,7 +96,6 @@ public class MusicSheetController extends BaseController {
         } else {
             MusicSheet musicSheet = new MusicSheet();
             BeanUtils.copyProperties(musicSheetDto, musicSheet);
-            musicSheet.setAuditStatus(AuditEnum.AUDITING);
             musicSheet.setCreateBy(sysUser.getId());
             musicSheet.setCreateTime(new Date());
             musicSheet.setState(StateEnum.STOP);
@@ -161,4 +167,45 @@ public class MusicSheetController extends BaseController {
         }
         return status(musicSheetService.state(id));
     }
+
+    /**
+     * 学生详情-乐谱
+     */
+    @PostMapping("/student")
+    @ApiOperation(value = "学生详情-乐谱")
+    public HttpResponseResult<PageInfo<StudentMusicSheetOrderVo>> student(@Valid @RequestBody StudentMusicSheetOrderSearch query) {
+        return succeed(PageUtil.pageInfo(musicSheetService.selectStudentOrderPage(PageUtil.getPage(query),query)));
+    }
+
+
+    /**
+     * 老师详情-乐谱
+     */
+    @PostMapping("/teacher")
+    @ApiOperation(value = "老师详情-乐谱")
+    public HttpResponseResult<PageInfo<TeacherMusicSheetVo>> teacher(@Valid @RequestBody TeacherMusicSheetSearch query) {
+        return succeed(PageUtil.pageInfo(musicSheetService.selectTeacherPage(PageUtil.getPage(query),query)));
+    }
+
+    /**
+     * 审核中心-乐谱审核
+     */
+    @PostMapping("/audit/list")
+    @ApiOperation(value = "审核中心-乐谱审核列表")
+    public HttpResponseResult<PageInfo<TeacherMusicSheetVo>> audit(@RequestBody TeacherMusicSheetAuditSearch query) {
+        return succeed(PageUtil.pageInfo(musicSheetService.selectAuditPage(PageUtil.getPage(query),query)));
+    }
+
+    /**
+     * 审核中心-乐谱审核
+     */
+    @PostMapping("/audit")
+    @ApiOperation(value = "审核中心-乐谱审核")
+    public HttpResponseResult<Boolean> audit(@Valid @RequestBody TeacherMusicSheetAuditReq param) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        return status(musicSheetService.audit(param,sysUser.getId()));
+    }
 }

+ 38 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java

@@ -0,0 +1,38 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentDetailVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+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.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+/**
+* @Author: cy
+* @Date: 2022/4/2
+*/
+@RestController
+@RequestMapping("/videoLesson")
+@Api(tags = "视频课")
+@Validated
+public class VideoLessonController extends BaseController {
+	@Autowired
+	private VideoLessonGroupService lessonGroupService;
+
+    /**
+    * @Description: 查询学员购买视频课
+    * @Author: cy
+    * @Date: 2022/4/2
+    */
+    @ApiOperation(value = "查询学员购买视频课")
+    @PostMapping(value = "/selectStudentPage")
+    public HttpResponseResult<PageInfo<VideoLessonStudentDetailVo>> selectStudentPage(@RequestBody VideoLessonSearch query) {
+        return succeed(PageUtil.pageInfo(lessonGroupService.selectStudentPage(PageUtil.getPage(query), query)));
+    }
+}

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetAuthRecordDao.java

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

+ 35 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -2,12 +2,12 @@ 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.search.MusicAlbumDetailSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.StudentMusicSheetOrderVo;
+import com.yonge.cooleshow.biz.dal.vo.TeacherMusicSheetVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -77,6 +77,36 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
      * @param practiceMusicIdList 最近练习曲目id
      * @return list
      */
-    List<MusicSheetVo> selectPracticeMusicPage(@Param("param") StudentMusicSheetSearch query,
-                                               @Param("practiceMusicIdList") List<Long> practiceMusicIdList);
+    List<MusicSheetVo> selectPracticeMusicPage(@Param("param") StudentMusicSheetSearch query, @Param(
+            "practiceMusicIdList") List<Long> practiceMusicIdList);
+
+    /**
+     * 学生曲目购买信息
+     *
+     * @param page  分页
+     * @param query 查询条件
+     * @return list
+     */
+    List<StudentMusicSheetOrderVo> selectStudentOrderPage(@Param("page") IPage<StudentMusicSheetOrderVo> page, @Param(
+            "param") StudentMusicSheetOrderSearch query);
+
+    /**
+     * 老师曲目信息
+     *
+     * @param page  分页
+     * @param query 查询条件
+     * @return list
+     */
+    List<TeacherMusicSheetVo> selectTeacherPage(@Param("page") IPage<TeacherMusicSheetVo> page, @Param(
+            "param") TeacherMusicSheetSearch query);
+
+    /**
+     * 审核中心-乐谱审核
+     *
+     * @param page  分页
+     * @param query 查询条件
+     * @return list
+     */
+    List<TeacherMusicSheetVo> selectAuditPage(@Param("page") IPage<TeacherMusicSheetVo> page, @Param(
+            "param") TeacherMusicSheetAuditSearch query);
 }

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

@@ -2,10 +2,12 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 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.VideoLessonGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentDetailVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -22,4 +24,7 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
 
     //修改视频课组
     void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
+
+    //查询学员购买视频课
+    List<VideoLessonStudentDetailVo> selectStudentPage(IPage page,@Param("param") VideoLessonSearch videoLessonSearch);
 }

+ 55 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/TeacherMusicSheetAuditReq.java

@@ -0,0 +1,55 @@
+package com.yonge.cooleshow.biz.dal.dto.req;
+
+
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * Description 曲目审核参数
+ *
+ * @author liujunchi
+ * @date 2022-04-02
+ */
+@ApiModel(value = "TeacherMusicSheetAuditReq对象", description = "曲目审核")
+public class TeacherMusicSheetAuditReq {
+
+    @ApiModelProperty(value = "曲目id",required = true)
+    @NotNull(message = "曲目id不能为空 ")
+    private Long musicSheetId;
+
+    @ApiModelProperty(value = "审批状态(1:通过,2:不通过)",required = true)
+    @NotNull(message = "审批状态不为空 ")
+    private AuditEnum auditStatus;
+
+    @ApiModelProperty(value = "审核理由",required = true)
+    @NotBlank(message = "审核理由不能为空 ")
+    private String remark;
+
+    public Long getMusicSheetId() {
+        return musicSheetId;
+    }
+
+    public void setMusicSheetId(Long musicSheetId) {
+        this.musicSheetId = musicSheetId;
+    }
+
+    public AuditEnum getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(AuditEnum auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+}

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

@@ -0,0 +1,106 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang.StringUtils;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+import java.util.List;
+
+/**
+ * Description  平台 学生管理 学员详情 乐谱
+ *
+ * @author liujunchi
+ * @date 2022-04-02
+ */
+public class StudentMusicSheetOrderSearch extends Query {
+
+    @ApiModelProperty(value = "学生id",required = true)
+    @NotNull(message = "学生编号不能为空")
+    private Long studentId;
+
+    @ApiModelProperty("曲目编号/名称")
+    private String idAndName;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("曲目标签id,多个逗号隔开")
+    private String musicTagIds;
+
+    @ApiModelProperty(hidden = true)
+    private List<Long> musicTagList;
+
+    @ApiModelProperty(value = "购买开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "购买结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getIdAndName() {
+        return idAndName;
+    }
+
+    public void setIdAndName(String idAndName) {
+        this.idAndName = idAndName;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getMusicTagIds() {
+        return musicTagIds;
+    }
+
+    public void setMusicTagIds(String musicTagIds) {
+        this.musicTagIds = musicTagIds;
+        if (StringUtils.isNotBlank(musicTagIds)) {
+            this.musicTagList = StringUtil.toLongList(musicTagIds);
+        }
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public List<Long> getMusicTagList() {
+        return musicTagList;
+    }
+
+    public void setMusicTagList(List<Long> musicTagList) {
+        this.musicTagList = musicTagList;
+    }
+}

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

@@ -0,0 +1,81 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * Description 老师乐谱审核
+ *
+ * @author liujunchi
+ * @date 2022-04-02
+ */
+@ApiModel(value = "TeacherMusicSheetAuditSearch", description = "老师乐谱审核查询")
+public class TeacherMusicSheetAuditSearch extends Query {
+
+    @ApiModelProperty("老师编号/名称/电话")
+    private String idAndName;
+
+
+    @ApiModelProperty("审批人")
+    private String auditName;
+
+    @ApiModelProperty(value = "申请开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "申请结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+
+    @ApiModelProperty("审核状态(0:审核中,1:已通过,2:已拒绝)")
+    private AuditEnum state;
+
+    public String getIdAndName() {
+        return idAndName;
+    }
+
+    public void setIdAndName(String idAndName) {
+        this.idAndName = idAndName;
+    }
+
+    public String getAuditName() {
+        return auditName;
+    }
+
+    public void setAuditName(String auditName) {
+        this.auditName = auditName;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public AuditEnum getState() {
+        return state;
+    }
+
+    public void setState(AuditEnum state) {
+        this.state = state;
+    }
+}

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

@@ -0,0 +1,69 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * Description 老师详情 乐谱
+ *
+ * @author liujunchi
+ * @date 2022-04-02
+ */
+@ApiModel(value = "TeacherMusicSheetSearch", description = "老师详情乐谱查询")
+public class TeacherMusicSheetSearch extends Query {
+
+    @ApiModelProperty(value = "老师编号",required = true)
+    @NotNull(message = "老师ID不为空")
+    private Long teacherId;
+
+    @ApiModelProperty("乐谱编号/名称/作曲人")
+    private String idAndName;
+
+    @ApiModelProperty(value = "上传开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "上传结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getIdAndName() {
+        return idAndName;
+    }
+
+    public void setIdAndName(String idAndName) {
+        this.idAndName = idAndName;
+    }
+
+    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;
+    }
+}

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
 import com.yonge.cooleshow.biz.dal.support.Query;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
@@ -11,13 +12,24 @@ import io.swagger.annotations.ApiModelProperty;
 @ApiModel(value = "VideoLessonGroupSearch", description = "视频课组列表查询")
 public class VideoLessonGroupSearch extends Query {
     @ApiModelProperty(value = "审核状态(0:待审核 1:通过 2:未通过)")
-    private Integer auditStatus;
+    private AuditEnum auditStatus;
 
-    public Integer getAuditStatus() {
+    @ApiModelProperty(value = "视频课组id")
+    private Long groupId;
+
+    public AuditEnum getAuditStatus() {
         return auditStatus;
     }
 
-    public void setAuditStatus(Integer auditStatus) {
+    public void setAuditStatus(AuditEnum auditStatus) {
         this.auditStatus = auditStatus;
     }
+
+    public Long getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(Long groupId) {
+        this.groupId = groupId;
+    }
 }

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

@@ -1,8 +1,13 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
 import com.yonge.cooleshow.biz.dal.support.Query;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
 
 /**
  * @author: cy
@@ -13,6 +18,31 @@ public class VideoLessonSearch extends Query {
     @ApiModelProperty(value = "视频组id")
     private Long videoLessonGroupId;
 
+    @ApiModelProperty(value = "学生id")
+    private Long studentId;
+
+    @ApiModelProperty(value = "课程编号/老师编号/老师姓名/老师手机")
+    private String search;
+
+    @ApiModelProperty(value = "订单号")
+    private String orderNo;
+
+    @ApiModelProperty("课程声部")
+    private String lessonSubject;
+
+    @ApiModelProperty(value = "审核状态(0:待审核 1:通过 2:未通过)")
+    private Integer auditStatus;
+
+    @ApiModelProperty(value = "申请开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty(value = "申请结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
+
     public Long getVideoLessonGroupId() {
         return videoLessonGroupId;
     }
@@ -20,4 +50,60 @@ public class VideoLessonSearch extends Query {
     public void setVideoLessonGroupId(Long videoLessonGroupId) {
         this.videoLessonGroupId = videoLessonGroupId;
     }
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getSearch() {
+        return search;
+    }
+
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getLessonSubject() {
+        return lessonSubject;
+    }
+
+    public void setLessonSubject(String lessonSubject) {
+        this.lessonSubject = lessonSubject;
+    }
+
+    public Integer getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Integer auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    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;
+    }
 }

+ 103 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheetAuthRecord.java

@@ -0,0 +1,103 @@
+package com.yonge.cooleshow.biz.dal.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.io.Serializable;
+import java.util.Date;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import org.springframework.format.annotation.DateTimeFormat;
+
+/**
+ * 曲目审核表
+ */
+@TableName("music_sheet_auth_record")
+@ApiModel(value = "MusicSheetAuthRecord对象", description = "曲目审核表")
+public class MusicSheetAuthRecord implements Serializable {
+	private static final long serialVersionUID = 1L;
+    @ApiModelProperty("审核单id ")
+    @TableId(value = "id_", type = IdType.AUTO)
+    private Long id;
+    @ApiModelProperty("曲目id ")
+	@TableField(value = "music_sheet_id_")
+    private Long musicSheetId;
+    @ApiModelProperty("审核状态 0:审核中;1:通过;2:未通过 ")
+	@TableField(value = "audit_state_")
+    private AuditEnum auditState;
+    @ApiModelProperty("审核人 ")
+	@TableField(value = "verify_user_id_")
+    private Long verifyUserId;
+    @ApiModelProperty("审核理由 ")
+	@TableField(value = "reason_")
+    private String reason;
+	@TableField(value = "create_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date createTime;
+	@TableField(value = "update_time_")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date updateTime;
+
+	public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    
+	public Long getMusicSheetId() {
+        return musicSheetId;
+    }
+
+    public void setMusicSheetId(Long musicSheetId) {
+        this.musicSheetId = musicSheetId;
+    }
+    
+	public AuditEnum getAuditState() {
+        return auditState;
+    }
+
+    public void setAuditState(AuditEnum auditState) {
+        this.auditState = auditState;
+    }
+    
+	public Long getVerifyUserId() {
+        return verifyUserId;
+    }
+
+    public void setVerifyUserId(Long verifyUserId) {
+        this.verifyUserId = verifyUserId;
+    }
+    
+	public String getReason() {
+        return reason;
+    }
+
+    public void setReason(String reason) {
+        this.reason = reason;
+    }
+    
+	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;
+    }
+    
+}

+ 22 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetAuthRecordService.java

@@ -0,0 +1,22 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheetAuthRecord;
+
+/**
+ * 曲目审核表 服务类
+ * @author liweifan
+ * @date 2022-04-02
+ */
+public interface MusicSheetAuthRecordService extends IService<MusicSheetAuthRecord>  {
+
+    /**
+     * 曲目审核
+     *
+     * @param param 审核信息
+     * @param userId 用户id
+     * @return boolean
+     */
+    boolean audit(TeacherMusicSheetAuditReq param, Long userId);
+}

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

@@ -4,14 +4,11 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
+import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetShareVo;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 
 /**
  * MusicSheetService服务类
@@ -116,4 +113,40 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @return page
      */
     IPage<MusicSheetVo> practiceMusic(IPage<MusicSheetVo> page, StudentMusicSheetSearch query);
+
+    /**
+     * 学生购买的曲目信息
+     *
+     * @param page 分页信息
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<StudentMusicSheetOrderVo> selectStudentOrderPage(IPage<StudentMusicSheetOrderVo> page, StudentMusicSheetOrderSearch query);
+
+    /**
+     * 老师详情 乐谱 展示
+     *
+     * @param page 分页
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<TeacherMusicSheetVo> selectTeacherPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetSearch query);
+
+    /**
+     * 审核中心-乐谱审核
+     *
+     * @param page 分页
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<TeacherMusicSheetVo> selectAuditPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetAuditSearch query);
+
+    /**
+     * 审核曲目
+     *
+     * @param param 审核信息
+     * @param userId 审核员id
+     * @return boolean
+     */
+    boolean audit(TeacherMusicSheetAuditReq param, Long userId);
 }

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

@@ -7,6 +7,7 @@ import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
 
 import java.util.List;
 
@@ -26,4 +27,6 @@ public interface VideoLessonGroupDetailService extends IService<VideoLessonGroup
     void updateDetail(VideoLessonGroupDetailUpVo detailUpVo, SysUser sysUser);
 
     void deleteDetail(Long id);
+
+    VideoLessonStudentVo selectVideoLesson(Long groupId);
 }

+ 4 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java

@@ -3,11 +3,10 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 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.VideoLessonGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 
 /**
  * VideoLessonGroupService服务类
@@ -23,4 +22,6 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     void deleteGroup(Long id);
 
     void add(VideoLessonVo lessonVo, SysUser sysUser);
+
+    IPage<VideoLessonStudentDetailVo> selectStudentPage(IPage<VideoLessonStudentDetailVo> page, VideoLessonSearch search);
 }

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

@@ -0,0 +1,41 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.yonge.cooleshow.biz.dal.dao.MusicSheetAuthRecordDao;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheetAuthRecord;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetAuthRecordService;
+import com.yonge.cooleshow.common.exception.BizException;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+
+
+@Service
+public class MusicSheetAuthRecordServiceImpl extends ServiceImpl<MusicSheetAuthRecordDao, MusicSheetAuthRecord> implements MusicSheetAuthRecordService {
+
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean audit(TeacherMusicSheetAuditReq param, Long userId) {
+
+        List<MusicSheetAuthRecord> list = this.lambdaQuery()
+                                              .eq(MusicSheetAuthRecord::getMusicSheetId, param.getMusicSheetId())
+                                              .eq(MusicSheetAuthRecord::getVerifyUserId, userId)
+                                              .list();
+        if (!CollectionUtils.isEmpty(list)) {
+            throw  new BizException("曲目已经过审批");
+        }
+
+        MusicSheetAuthRecord musicSheetAuthRecord = new MusicSheetAuthRecord();
+        musicSheetAuthRecord.setMusicSheetId(param.getMusicSheetId());
+        musicSheetAuthRecord.setCreateTime(new Date());
+        musicSheetAuthRecord.setAuditState(param.getAuditStatus());
+        musicSheetAuthRecord.setReason(param.getRemark());
+        musicSheetAuthRecord.setVerifyUserId(userId);
+        return this.save(musicSheetAuthRecord);
+    }
+}

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

@@ -6,9 +6,8 @@ import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.enums.SysUserType;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.StudentMusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.req.TeacherMusicSheetAuditReq;
+import com.yonge.cooleshow.biz.dal.dto.search.*;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
 import com.yonge.cooleshow.biz.dal.enums.ChargeTypeEnum;
@@ -16,9 +15,7 @@ import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetShareVo;
-import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -62,6 +59,9 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     @Autowired
     private StudentService studentService;
 
+    @Autowired
+    private MusicSheetAuthRecordService musicSheetAuthRecordService;
+
     public MusicSheetDao getDao() {
         return musicSheetDao;
     }
@@ -72,7 +72,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         MusicSheet musicSheet = new MusicSheet();
         BeanUtils.copyProperties(musicSheetDto, musicSheet);
         //保存主表
-        musicSheet.setAuditStatus(AuditEnum.AUDITING);
         musicSheet.setCreateBy(sysUser.getId());
         musicSheet.setState(StateEnum.STOP);
         musicSheet.setCreateTime(new Date());
@@ -210,4 +209,36 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         page.setTotal(practiceMusicIdPage.getTotal());
         return page;
     }
+
+    @Override
+    public IPage<StudentMusicSheetOrderVo> selectStudentOrderPage(IPage<StudentMusicSheetOrderVo> page, StudentMusicSheetOrderSearch query) {
+        return page.setRecords(baseMapper.selectStudentOrderPage(page,query));
+    }
+
+    @Override
+    public IPage<TeacherMusicSheetVo> selectTeacherPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetSearch query) {
+        return page.setRecords(baseMapper.selectTeacherPage(page,query));
+    }
+
+    @Override
+    public IPage<TeacherMusicSheetVo> selectAuditPage(IPage<TeacherMusicSheetVo> page, TeacherMusicSheetAuditSearch query) {
+        return page.setRecords(baseMapper.selectAuditPage(page,query));
+    }
+
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public boolean audit(TeacherMusicSheetAuditReq param, Long userId) {
+
+        MusicSheet musicSheet = this.getById(param.getMusicSheetId());
+        if (musicSheet == null) {
+            throw  new BizException("未找到曲目信息");
+        }
+
+        if (musicSheetAuthRecordService.audit(param,userId)) {
+            musicSheet.setAuditStatus(param.getAuditStatus());
+            return this.updateById(musicSheet);
+        } else {
+            return false;
+        }
+    }
 }

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

@@ -3,14 +3,14 @@ package com.yonge.cooleshow.biz.dal.service.impl;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
+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.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -125,6 +125,30 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
     }
 
     /**
+    * @Description: 根据组id查询视频课&组信息-学生端
+    * @Author: cy
+    * @Date: 2022/4/2
+    */
+    @Override
+    public VideoLessonStudentVo selectVideoLesson(Long groupId) {
+        VideoLessonStudentVo lessonStudentVo = new VideoLessonStudentVo();
+
+        VideoLessonGroupSearch query = new VideoLessonGroupSearch();
+        query.setAuditStatus(AuditEnum.OPEN);
+        query.setGroupId(groupId);
+        List<VideoLessonGroupVo> lessonGroup = videoLessonGroupDao.selectPage(null, query);
+        if (lessonGroup.isEmpty()){
+            return lessonStudentVo;
+        }
+        lessonStudentVo.setLessonGroup(lessonGroup.get(0));
+
+        VideoLessonSearch search = new VideoLessonSearch();
+        search.setVideoLessonGroupId(groupId);
+        lessonStudentVo.setDetailList(videoLessonGroupDetailDao.selectPage(null, search));
+        return lessonStudentVo;
+    }
+
+    /**
     * @Description: 刷新组内lesson_count_
     * @Author: cy 
     * @Date: 2022/3/31 

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

@@ -4,12 +4,14 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
 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.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentDetailVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -101,4 +103,14 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         groupUpVo.setId(lessonGroup.getId());
         videoLessonGroupDao.updateGroup(groupUpVo);
     }
+
+    /**
+    * @Description: 查询学员购买视频课
+    * @Author: cy
+    * @Date: 2022/4/2
+    */
+    @Override
+    public IPage<VideoLessonStudentDetailVo> selectStudentPage(IPage<VideoLessonStudentDetailVo> page, VideoLessonSearch search) {
+        return page.setRecords(baseMapper.selectStudentPage(page,search));
+    }
 }

+ 27 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/EnumValid.java

@@ -0,0 +1,27 @@
+package com.yonge.cooleshow.biz.dal.valid;
+
+import com.yonge.cooleshow.biz.dal.valid.impl.EnumValidtor;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.*;
+
+/**
+ * 校验入参是否为指定enum的值的注解
+ */
+@Target({ ElementType.FIELD, ElementType.METHOD, ElementType.ANNOTATION_TYPE })
+@Retention(RetentionPolicy.RUNTIME)
+@Constraint(validatedBy = {EnumValidtor.class})
+@Documented
+public @interface EnumValid {
+
+    String message() default "";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    Class<?>[] target() default {};
+
+    String vaildField() default "getCode";
+}

+ 64 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/impl/EnumValidtor.java

@@ -0,0 +1,64 @@
+package com.yonge.cooleshow.biz.dal.valid.impl;
+
+
+import com.yonge.cooleshow.biz.dal.valid.EnumValid;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+
+/**
+ * @author: cy
+ * @date: 2022/4/2 14:53
+ */
+public class EnumValidtor implements ConstraintValidator<EnumValid, Object> {
+
+    String vaildField;
+    Class<?>[] cls; //枚举类
+
+    @Override
+    public void initialize(EnumValid constraintAnnotation) {
+        cls = constraintAnnotation.target();
+        vaildField = constraintAnnotation.vaildField();
+    }
+
+    @Override
+    public boolean isValid(Object value, ConstraintValidatorContext context) {
+        if (value != null && value.toString().length() > 0 && cls.length > 0) {
+            for (Class<?> cl : cls) {
+                try {
+                    if (cl.isEnum()) {
+                        //枚举类验证
+                        Object[] objs = cl.getEnumConstants();
+                        Method method = cl.getMethod("name");
+                        for (Object obj : objs) {
+                            Object code = method.invoke(obj, null);
+                            if (value.equals(code.toString())) {
+                                return true;
+                            }
+                        }
+                        Method codeMethod = cl.getMethod(vaildField);
+                        for (Object obj : objs) {
+                            Object code = codeMethod.invoke(obj, null);
+                            if (value.toString().equals(code.toString())) {
+                                return true;
+                            }
+                        }
+                    }
+                } catch (NoSuchMethodException e) {
+                    e.printStackTrace();
+                } catch (IllegalAccessException e) {
+                    e.printStackTrace();
+                } catch (InvocationTargetException e) {
+                    e.printStackTrace();
+                }
+            }
+        } else {
+            return true;
+        }
+        return false;
+    }
+
+}
+

+ 104 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/StudentMusicSheetOrderVo.java

@@ -0,0 +1,104 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Description 学生曲目订单展示
+ *
+ * @author liujunchi
+ * @date 2022-04-02
+ */
+public class StudentMusicSheetOrderVo {
+
+    @ApiModelProperty(value = "曲谱id")
+    private Long  musicSheetId;
+
+    @ApiModelProperty(value = "曲谱名称")
+    private String musicSheetName;  //曲谱名称
+
+    @ApiModelProperty(value = "作曲人")
+    private String composer;  //作曲人
+
+
+    @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
+    private String musicTag;  //曲谱标签(多个标签用逗号分隔)
+
+    @ApiModelProperty("曲目分类名")
+    private String musicTagNames;
+
+    @ApiModelProperty(value = "支付金额")
+    private java.math.BigDecimal purchasePrice;
+
+    @ApiModelProperty("订单编号")
+    private String orderNo;
+
+    @ApiModelProperty(value = "购买时间")
+    private Date purchaseTime;
+
+    public Long getMusicSheetId() {
+        return musicSheetId;
+    }
+
+    public void setMusicSheetId(Long musicSheetId) {
+        this.musicSheetId = musicSheetId;
+    }
+
+    public String getMusicSheetName() {
+        return musicSheetName;
+    }
+
+    public void setMusicSheetName(String musicSheetName) {
+        this.musicSheetName = musicSheetName;
+    }
+
+    public String getComposer() {
+        return composer;
+    }
+
+    public void setComposer(String composer) {
+        this.composer = composer;
+    }
+
+    public String getMusicTag() {
+        return musicTag;
+    }
+
+    public void setMusicTag(String musicTag) {
+        this.musicTag = musicTag;
+    }
+
+    public String getMusicTagNames() {
+        return musicTagNames;
+    }
+
+    public void setMusicTagNames(String musicTagNames) {
+        this.musicTagNames = musicTagNames;
+    }
+
+    public BigDecimal getPurchasePrice() {
+        return purchasePrice;
+    }
+
+    public void setPurchasePrice(BigDecimal purchasePrice) {
+        this.purchasePrice = purchasePrice;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Date getPurchaseTime() {
+        return purchaseTime;
+    }
+
+    public void setPurchaseTime(Date purchaseTime) {
+        this.purchaseTime = purchaseTime;
+    }
+}

+ 161 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherMusicSheetVo.java

@@ -0,0 +1,161 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Description 平台 老师详情 展示数据
+ *
+ * @author liujunchi
+ * @date 2022-04-02
+ */
+public class TeacherMusicSheetVo {
+
+    @ApiModelProperty("老师编号ID")
+    private Long teacherId;
+
+    @ApiModelProperty("老师昵称")
+    private String username;
+
+    @ApiModelProperty("手机号码")
+    private String phone;
+
+    @ApiModelProperty("曲谱id")
+    private Long musicSheetId;
+
+    @ApiModelProperty("曲谱名称")
+    private String musicSheetName;
+
+    @ApiModelProperty(value = "作曲人")
+    private String composer;  //作曲人
+
+
+    @ApiModelProperty(value = "曲谱标签(多个标签用逗号分隔)")
+    private String musicTag;  //曲谱标签(多个标签用逗号分隔)
+
+    @ApiModelProperty("曲目分类名")
+    private String musicTagNames;
+
+    @ApiModelProperty(value = "默认播放速度")
+    private Integer playSpeed;  //默认播放速度
+
+    @ApiModelProperty(value = "曲谱价格")
+    private java.math.BigDecimal musicPrice;  //曲谱价格
+
+    @ApiModelProperty(value = "创建时间")
+    private java.util.Date createTime;  //创建时间
+
+    @ApiModelProperty(value = "审核状态(0:待审核;1:通过;2:未通过)")
+    private AuditEnum auditStatus;  //审核状态(0:待审核;1:通过;2:未通过)
+
+    @ApiModelProperty("审批人姓名")
+    private String auditName;
+
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getPhone() {
+        return phone;
+    }
+
+    public void setPhone(String phone) {
+        this.phone = phone;
+    }
+
+    public Long getMusicSheetId() {
+        return musicSheetId;
+    }
+
+    public void setMusicSheetId(Long musicSheetId) {
+        this.musicSheetId = musicSheetId;
+    }
+
+    public String getMusicSheetName() {
+        return musicSheetName;
+    }
+
+    public void setMusicSheetName(String musicSheetName) {
+        this.musicSheetName = musicSheetName;
+    }
+
+    public String getComposer() {
+        return composer;
+    }
+
+    public void setComposer(String composer) {
+        this.composer = composer;
+    }
+
+    public String getMusicTag() {
+        return musicTag;
+    }
+
+    public void setMusicTag(String musicTag) {
+        this.musicTag = musicTag;
+    }
+
+    public String getMusicTagNames() {
+        return musicTagNames;
+    }
+
+    public void setMusicTagNames(String musicTagNames) {
+        this.musicTagNames = musicTagNames;
+    }
+
+    public Integer getPlaySpeed() {
+        return playSpeed;
+    }
+
+    public void setPlaySpeed(Integer playSpeed) {
+        this.playSpeed = playSpeed;
+    }
+
+    public BigDecimal getMusicPrice() {
+        return musicPrice;
+    }
+
+    public void setMusicPrice(BigDecimal musicPrice) {
+        this.musicPrice = musicPrice;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public AuditEnum getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(AuditEnum auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+
+    public String getAuditName() {
+        return auditName;
+    }
+
+    public void setAuditName(String auditName) {
+        this.auditName = auditName;
+    }
+}

+ 89 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonStudentDetailVo.java

@@ -0,0 +1,89 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author: cy
+ * @date: 2022/4/2 16:04
+ */
+@ApiModel(value = "VideoLessonStudentDetailVo对象")
+public class VideoLessonStudentDetailVo extends BaseEntity {
+    @ApiModelProperty("视频课组id")
+    private String groupId;
+
+    @ApiModelProperty("视频课组名称")
+    private String lessonName;
+
+    @ApiModelProperty("课程声部")
+    private String lessonSubject;
+
+    @ApiModelProperty("课程数")
+    private Integer lessonCount;
+
+    @ApiModelProperty("课程价格")
+    private String lessonPrice;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("购买时间")
+    private String purchaseTime;
+
+    public String getGroupId() {
+        return groupId;
+    }
+
+    public void setGroupId(String groupId) {
+        this.groupId = groupId;
+    }
+
+    public String getLessonName() {
+        return lessonName;
+    }
+
+    public void setLessonName(String lessonName) {
+        this.lessonName = lessonName;
+    }
+
+    public String getLessonSubject() {
+        return lessonSubject;
+    }
+
+    public void setLessonSubject(String lessonSubject) {
+        this.lessonSubject = lessonSubject;
+    }
+
+    public Integer getLessonCount() {
+        return lessonCount;
+    }
+
+    public void setLessonCount(Integer lessonCount) {
+        this.lessonCount = lessonCount;
+    }
+
+    public String getLessonPrice() {
+        return lessonPrice;
+    }
+
+    public void setLessonPrice(String lessonPrice) {
+        this.lessonPrice = lessonPrice;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public String getPurchaseTime() {
+        return purchaseTime;
+    }
+
+    public void setPurchaseTime(String purchaseTime) {
+        this.purchaseTime = purchaseTime;
+    }
+}

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

@@ -0,0 +1,34 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+
+import java.util.List;
+
+/**
+ * @author: cy
+ * @date: 2022/4/2 10:04
+ */
+@ApiModel(value = "VideoLessonStudentVo对象")
+public class VideoLessonStudentVo extends BaseEntity {
+    private VideoLessonGroupVo lessonGroup;
+
+    private List<VideoLessonGroupDetail> detailList;
+
+    public VideoLessonGroupVo getLessonGroup() {
+        return lessonGroup;
+    }
+
+    public void setLessonGroup(VideoLessonGroupVo lessonGroup) {
+        this.lessonGroup = lessonGroup;
+    }
+
+    public List<VideoLessonGroupDetail> getDetailList() {
+        return detailList;
+    }
+
+    public void setDetailList(List<VideoLessonGroupDetail> detailList) {
+        this.detailList = detailList;
+    }
+}

+ 26 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetAuthRecordMapper.xml

@@ -0,0 +1,26 @@
+<?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.MusicSheetAuthRecordDao">
+	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.MusicSheetAuthRecord">
+            <result column="id_" property="id" />
+	        <result column="music_sheet_id_" property="musicSheetId" />
+	        <result column="audit_state_" property="auditState" />
+	        <result column="verify_user_id_" property="verifyUserId" />
+	        <result column="reason_" property="reason" />
+	        <result column="create_time_" property="createTime" />
+	        <result column="update_time_" property="updateTime" />
+		</resultMap>  
+    
+    <!-- 表字段 -->
+    <sql id="baseColumns">
+         t.id_
+        , t.music_sheet_id_
+        , t.audit_state_
+        , t.verify_user_id_
+        , t.reason_
+        , t.create_time_
+        , t.update_time_
+        </sql> 
+    
+
+</mapper>

+ 114 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -271,4 +271,118 @@
         </if>
         )
     </select>
+
+    <select id="selectStudentOrderPage" resultType="com.yonge.cooleshow.biz.dal.vo.StudentMusicSheetOrderVo">
+        select mspr.music_sheet_id_ as musicSheetId
+        ,ms.music_sheet_name_ as musicSheetName
+        ,ms.composer_ as composer
+        ,ms.music_tag_ as musicTag
+        ,(select group_concat(mt.name_) from music_tag mt
+        where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0) as musicTagNames
+        ,mspr.purchase_price_ as purchasePrice
+        ,mspr.order_no_ as orderNo
+        ,mspr.purchase_time_ as purchaseTime
+        from music_sheet_purchase_record mspr
+        left join music_sheet ms on mspr.music_sheet_id_ = ms.id_
+        <where>
+            mspr.order_status_ = '${@ com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum@YES}'
+            <if test="param.idAndName != null and param.idAndName != ''">
+                and (ms.id_ like concat('%',#{param.idAndName} ,'%')
+                    or ms.music_sheet_name_ like concat('%',#{param.idAndName},'%'))
+            </if>
+            <if test="param.studentId != null">
+                and mspr.student_id_ = #{param.studentId}
+            </if>
+            <if test="param.orderNo != null and param.orderNo != ''">
+                and mspr.order_no_ = #{param.orderNo}
+            </if>
+            <if test="param.musicTagList != null and param.musicTagList.size() != 0">
+                and
+                <foreach collection="param.musicTagList" separator="and" item="item">
+                    find_in_set(#{item},ms.music_tag_)
+                </foreach>
+            </if>
+            <if test="param.startTime != null">
+                and mspr.purchase_time_ &gt; #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                and mspr.purchase_time_ &lt; #{param.endTime}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectTeacherPage" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherMusicSheetVo">
+        select ms.id_ as musicSheetId
+        ,ms.music_sheet_name_ as musicSheetName
+        ,ms.composer_ as composer
+        ,ms.music_tag_ as musicTag
+        ,(select group_concat(mt.name_) from music_tag mt
+        where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0) as musicTagNames
+        ,ms.play_speed_ as playSpeed
+        ,ms.music_price_ as musicPrice
+        ,ms.create_time_ as createTime
+        ,ms.audit_status_ as auditStatus
+        ,su.username_ as auditName
+        from music_sheet ms
+        left join music_sheet_auth_record msar on ms.id_ = msar.music_sheet_id_
+        left join sys_user su on msar.verify_user_id_ = su.id_
+        <where>
+            <if test="param.idAndName != null and param.idAndName != ''">
+                and (ms.id_ like concat('%',#{param.idAndName} ,'%')
+                or ms.music_sheet_name_ like concat('%',#{param.idAndName},'%')
+                or ms.composer_ like concat('%',#{param.idAndName},'%'))
+            </if>
+            <if test="param.teacherId != null">
+                and ms.create_by_ = #{param.teacherId}
+            </if>
+            <if test="param.startTime != null">
+                and ms.create_time_ &gt; #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                and ms.create_time_ &lt; #{param.endTime}
+            </if>
+        </where>
+    </select>
+
+    <select id="selectAuditPage" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherMusicSheetVo">
+        select
+        ms.create_by_ as teacherId
+        ,su.username_ as username
+        ,su.phone_ as phone
+        ,ms.id_ as musicSheetId
+        ,ms.music_sheet_name_ as musicSheetName
+        ,ms.composer_ as composer
+        ,ms.music_tag_ as musicTag
+        ,(select group_concat(mt.name_) from music_tag mt
+        where find_in_set(mt.id_,ms.music_tag_) and mt.del_flag_ = 0) as musicTagNames
+        ,ms.play_speed_ as playSpeed
+        ,ms.music_price_ as musicPrice
+        ,ms.create_time_ as createTime
+        ,ms.audit_status_ as auditStatus
+        ,su.username_ as auditName
+        from music_sheet ms
+        left join sys_user su on su.id_ = ms.create_by_
+        left join music_sheet_auth_record msar on ms.id_ = msar.music_sheet_id_
+        left join sys_user su2 on msar.verify_user_id_ = su2.id_
+        <where>
+            ms.user_id_ &gt; 0
+            <if test="param.idAndName != null and param.idAndName != ''">
+                and (su.id_ like concat('%',#{param.idAndName} ,'%')
+                or su.username_ like concat('%',#{param.idAndName},'%')
+                or su.phone_ like concat('%',#{param.idAndName},'%'))
+            </if>
+            <if test="param.auditName != null and param.auditName != ''">
+                and su2.username_ like concat('%',#{param.auditName},'%')
+            </if>
+            <if test="param.state != null">
+                and ms.audit_status_ = #{param.state}
+            </if>
+            <if test="param.startTime != null">
+                and ms.create_time_ &gt; #{param.startTime}
+            </if>
+            <if test="param.endTime != null">
+                and ms.create_time_ &lt; #{param.endTime}
+            </if>
+        </where>
+    </select>
 </mapper>

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

@@ -68,6 +68,50 @@
 			<if test="param.auditStatus !=null">
 				AND g.audit_status_ = #{param.auditStatus}
 			</if>
+			<if test="param.groupId !=null">
+				AND g.id_ = #{param.groupId}
+			</if>
+		</where>
+	</select>
+	<select id="selectStudentPage" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentDetailVo">
+		SELECT
+			g.id_ AS groupId,
+			g.lesson_name_ AS lessonName,
+			g.lesson_subject_ AS lessonSubject,
+			g.lesson_count_ AS lessonCount,
+			g.lesson_price_ AS lessonPrice,
+			p.order_no_ AS orderNo,
+			p.purchase_time_ AS purchaseTime
+		FROM video_lesson_group g
+		LEFT JOIN video_lesson_purchase_record p ON g.id_ = p.video_lesson_group_id_
+		LEFT JOIN sys_user s ON g.teacher_id_ = s.id_
+		<where>
+			<if test="param.studentId !=null">
+				AND p.student_id_ = #{param.studentId}
+			</if>
+			<if test="null != param.search and '' != param.search">
+				AND (
+				s.id_ LIKE CONCAT('%', #{param.search}, '%') OR
+				s.username_ LIKE CONCAT('%', #{param.search}, '%') OR
+				s.phone_ LIKE CONCAT('%', #{param.search}, '%') OR
+				g.id_ LIKE CONCAT('%', #{param.search}, '%')
+				)
+			</if>
+			<if test="null != param.orderNo and '' != param.orderNo">
+				AND p.order_no_ = #{param.orderNo}
+			</if>
+			<if test="null != param.lessonSubject and '' != param.lessonSubject">
+				AND g.lesson_subject_ = #{param.lessonSubject}
+			</if>
+			<if test="param.auditStatus !=null">
+				AND g.audit_status_ = #{param.auditStatus}
+			</if>
+			<if test="param.startTime !=null">
+				<![CDATA[AND p.purchase_time_ >= #{param.startTime} ]]>
+			</if>
+			<if test="param.endTime !=null">
+				<![CDATA[AND p.purchase_time_ <= #{param.endTime} ]]>
+			</if>
 		</where>
 	</select>
 </mapper>

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

@@ -0,0 +1,37 @@
+package com.yonge.cooleshow.student.controller;
+
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
+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.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.validation.constraints.NotNull;
+
+/**
+* @Author: cy
+* @Date: 2022/4/2
+*/
+@RestController
+@RequestMapping("/videoLesson")
+@Api(tags = "视频课")
+@Validated
+public class VideoLessonController extends BaseController {
+	@Autowired
+	private VideoLessonGroupDetailService detailService;
+
+    /**
+    * @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(detailService.selectVideoLesson(groupId));
+    }
+}

+ 1 - 2
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/MusicSheetController.java

@@ -76,6 +76,7 @@ public class MusicSheetController extends BaseController {
         }
 
         musicSheetDto.setUserId(sysUser.getId());
+        musicSheetDto.setAuditStatus(AuditEnum.AUDITING);
         List<MusicSheetAccompaniment> list;
         if (!AudioTypeEnum.MIDI.getCode().equals(musicSheetDto.getAudioType().getCode())){
             list = musicSheetDto.getBackground();
@@ -86,7 +87,6 @@ public class MusicSheetController extends BaseController {
         } else {
             MusicSheet musicSheet = new MusicSheet();
             BeanUtils.copyProperties(musicSheetDto, musicSheet);
-            musicSheet.setAuditStatus(AuditEnum.AUDITING);
             musicSheet.setCreateBy(sysUser.getId());
             musicSheet.setCreateTime(new Date());
             musicSheet.setState(StateEnum.STOP);
@@ -104,7 +104,6 @@ public class MusicSheetController extends BaseController {
         }
         // 设置只查老师用户 状态为启用
         query.setCreateBy(sysUser.getId());
-        query.setState(StateEnum.ENABLE);
 
         IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(musicSheetVoIPage));