Explorar el Código

Merge remote-tracking branch 'origin/master'

weifanli hace 3 años
padre
commit
f624522d97
Se han modificado 32 ficheros con 1290 adiciones y 260 borrados
  1. 44 53
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  2. 46 42
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java
  3. 52 10
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupController.java
  4. 14 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  5. 30 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicTagDao.java
  6. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  7. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicTagSaveDto.java
  8. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/VideoLessonGroupDto.java
  9. 61 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java
  10. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicTagSearch.java
  11. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  12. 35 22
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  13. 53 45
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicTag.java
  14. 12 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java
  15. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuditEnum.java
  16. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ChargeTypeEnum.java
  17. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OpenEnum.java
  18. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/StateEnum.java
  19. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  20. 33 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicTagService.java
  21. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  22. 24 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  23. 148 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicTagServiceImpl.java
  24. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  25. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetVo.java
  26. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicTagVo.java
  27. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailVo.java
  28. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupVo.java
  29. 52 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonPurchaseStudent.java
  30. 77 34
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  31. 72 14
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml
  32. 68 5
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

+ 44 - 53
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java

@@ -1,24 +1,32 @@
 package com.yonge.cooleshow.admin.controller;
 
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import javax.validation.Valid;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
+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.support.Condition;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.toolset.utils.string.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
+import jodd.util.CollectionUtil;
 import org.springframework.beans.BeanUtils;
-import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-import com.yonge.cooleshow.common.controller.BaseController;
-import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
-import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import org.springframework.util.CollectionUtils;
+import org.springframework.web.bind.annotation.*;
 
+import javax.validation.Valid;
 import java.util.Date;
 import java.util.List;
 
@@ -46,32 +54,32 @@ public class MusicSheetController extends BaseController {
             return failed("用户信息获取失败");
         }
 
-        if (musicSheetDto.getChargeType()==2 && musicSheetDto.getMusicPrice()==null){
+        if (ChargeTypeEnum.CHARGE.getCode().equals(musicSheetDto.getChargeType().getCode())
+                && musicSheetDto.getMusicPrice()==null){
             return failed("此曲谱为收费曲谱,需要提供价格");
         }
 
-        List<MusicSheetAccompaniment> list = null;
+        List<MusicSheetAccompaniment> list;
         if (!musicSheetDto.getAudioType().equalsIgnoreCase("midi")){
             list = musicSheetDto.getBackground();
-            if (list.isEmpty()){
+            if (CollectionUtils.isEmpty(list)){
                 return failed("mp3音频文件对应的主音或者伴奏文件没有提供");
             }
+            musicSheetService.saveMp3AndAccompaniment(musicSheetDto,sysUser);
         } else {
             MusicSheet musicSheet = new MusicSheet();
             BeanUtils.copyProperties(musicSheetDto, musicSheet);
-            musicSheet.setAuditStatus(0);
+            musicSheet.setAuditStatus(AuditEnum.AUDITING);
             musicSheet.setCreateBy(sysUser.getId());
             musicSheet.setUserId(sysUser.getId());
             musicSheet.setCreateTime(new Date());
+            musicSheet.setState(StateEnum.STOP);
             musicSheetService.save(musicSheet);
         }
 
-        boolean result = musicSheetService.saveMp3AndAccompaniment(musicSheetDto,sysUser);
-        if (result) {
-            return succeed("新增曲谱成功");
-        } else {
-            return failed("新增曲谱失败");
-        }
+
+        return succeed("新增曲谱成功");
+
     }
 
     @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
@@ -113,43 +121,26 @@ public class MusicSheetController extends BaseController {
 
     @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> list(@RequestBody MusicSheetDto musicSheetDto) {
+    public HttpResponseResult<PageInfo<MusicSheetVo>> list(@RequestBody MusicSheetSearch query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
 
-        int pageNo;
-        int pageSize;
+        IPage<MusicSheetVo> musicSheetVoIPage = musicSheetService.selectPage(Condition.getPage(query), query);
+        return succeed(Condition.pageInfo(musicSheetVoIPage));
+    }
 
-        try {
-            if (musicSheetDto.getPageNo() ==null || musicSheetDto.getPageNo() ==0) {
-                pageNo = 1;
-            } else {
-                pageNo = musicSheetDto.getPageNo();
-            }
-            if (musicSheetDto.getPageSize() ==null || musicSheetDto.getPageSize() ==0) {
-                pageSize = 10;
-            } else {
-                pageSize = musicSheetDto.getPageSize();
-            }
-            String search;
-            if(musicSheetDto.getSearch()==null){
-                search = "";
-            } else {
-                search = musicSheetDto.getSearch();
-            }
-            LambdaQueryWrapper<MusicSheet> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            lambdaQueryWrapper.or().like(MusicSheet::getMusicSheetName , search);
-            lambdaQueryWrapper.or().like(MusicSheet::getComposer , search);
-            lambdaQueryWrapper.or().like(MusicSheet::getMusicTag , search);
-            lambdaQueryWrapper.or().like(MusicSheet::getMusicSubject , search);
-
-            Page<MusicSheet> page = new Page<>(pageNo,pageSize);
-            return succeed(musicSheetService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
+
+    /**
+     * 启用/停用
+     */
+    @PostMapping("/state")
+    @ApiOperation(value = "启用/停用", notes = "传入id")
+    public HttpResponseResult<Boolean> state(@ApiParam(value = "曲目编号", required = true) @RequestParam Long id) {
+        if (StringUtil.isEmpty(id)) {
+            return failed("参数不能为空");
         }
+        return status(musicSheetService.state(id));
     }
 }

+ 46 - 42
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java

@@ -1,86 +1,90 @@
 package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-
+import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
+import com.yonge.cooleshow.biz.dal.service.MusicTagService;
 import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import com.yonge.cooleshow.common.page.PageInfo;
 import com.yonge.toolset.utils.string.StringUtil;
-import io.swagger.annotations.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
-import javax.validation.Valid;
-
-import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
-import com.yonge.cooleshow.biz.dal.entity.MusicTag;
-import com.yonge.cooleshow.biz.dal.service.MusicTagService;
-
 @RestController
-@RequestMapping("/musicTag")
+@RequestMapping("/MusicTag")
 @Api(value = "音乐标签表", tags = "音乐标签表")
 public class MusicTagController extends BaseController {
 
-	@Autowired
-	private MusicTagService musicTagService;
+    @Autowired
+    private MusicTagService musicTagService;
 
 	/**
-	 * 查询单条
-	 */
-	@GetMapping("/detail/{id}")
-	@ApiOperation(value = "详情", notes = "传入id")
-	public HttpResponseResult<MusicTagVo> detail(@PathVariable("id") Long id) {
-		return succeed(musicTagService.detail(id));
+     * 查询单条
+     */
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "详情", notes = "传入musicTag")
+    public HttpResponseResult<MusicTagVo> detail(@ApiParam(value = "标签编号", required = true) @PathVariable("id") Long id) {
+    	return succeed(musicTagService.detail(id));
 	}
 
-	/**
-	 * 查询分页
-	 */
-	@PostMapping("/page")
-	@ApiOperation(value = "查询分页", notes = "传入musicTag")
-	public HttpResponseResult<PageInfo<MusicTagVo>> page(MusicTagSearch query) {
+    /**
+     * 查询分页tree
+     */
+    @GetMapping("/page")
+    @ApiOperation(value = "查询分页", notes = "传入musicTag")
+    public HttpResponseResult<PageInfo<MusicTagVo>> page(MusicTagSearch query) {
 		IPage<MusicTagVo> pages = musicTagService.selectPage(Condition.getPage(query), query);
 		return succeed(Condition.pageInfo(pages));
 	}
 
-	/**
+    /**
 	 * 新增
 	 */
 	@PostMapping("/save")
 	@ApiOperation(value = "新增", notes = "传入musicTag")
-	public HttpResponseResult save(@Valid @RequestBody MusicTag musicTag) {
-		return status(musicTagService.save(musicTag));
+	public HttpResponseResult<Boolean> save(@Validated(MusicTagSaveDto.Create.class) @RequestBody MusicTagSaveDto musicTagSaveDto) {
+		musicTagService.createMusicTag(musicTagSaveDto);
+		return succeed();
 	}
 
-	/**
+    /**
 	 * 修改
 	 */
 	@PostMapping("/update")
 	@ApiOperation(value = "修改", notes = "传入musicTag")
-	public HttpResponseResult update(@Valid @RequestBody MusicTag musicTag) {
-		return status(musicTagService.updateById(musicTag));
+	public HttpResponseResult<Boolean> update(@Validated(MusicTagSaveDto.Update.class) @RequestBody MusicTagSaveDto musicTagSaveDto) {
+		musicTagService.updateMusicTag(musicTagSaveDto);
+		return succeed();
 	}
 
-	/**
-	 * 新增或修改
+ 	/**
+	 * 删除
 	 */
-	@PostMapping("/submit")
-	@ApiOperation(value = "新增或修改", notes = "传入musicTag")
-	public HttpResponseResult submit(@RequestBody MusicTag musicTag) {
-		return status(musicTagService.saveOrUpdate(musicTag));
+	@PostMapping("/remove")
+	@ApiOperation(value = "逻辑删除", notes = "传入id")
+	public HttpResponseResult<Boolean> remove(@ApiParam(value = "标签编号", required = true) @RequestParam Long id) {
+        if (StringUtil.isEmpty(id)) {
+			return failed("参数不能为空");
+		}
+		return status(musicTagService.del(id));
 	}
 
 	/**
-	 * 删除
+	 * 启用/停用
 	 */
-	@PostMapping("/remove")
-	@ApiOperation(value = "逻辑删除", notes = "传入ids")
-	public HttpResponseResult remove(@ApiParam(value = "主键集合", required = true) @RequestParam String ids) {
-		if (StringUtil.isEmpty(ids)) {
+	@PostMapping("/state")
+	@ApiOperation(value = "启用/停用", notes = "传入id")
+	public HttpResponseResult<Boolean> state(@ApiParam(value = "标签编号", required = true) @RequestParam Long id) {
+		if (StringUtil.isEmpty(id)) {
 			return failed("参数不能为空");
 		}
-		return status(musicTagService.removeByIds(StringUtil.toLongList(ids)));
+		return status(musicTagService.state(id));
 	}
 }

+ 52 - 10
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupController.java

@@ -1,12 +1,23 @@
 package com.yonge.cooleshow.admin.controller;
 
 import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import javax.validation.Valid;
 import com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDto;
+import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.common.page.PageInfo;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
+import io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +28,10 @@ import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 
+import java.text.DateFormat;
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
 /**
  * 视频课基本信息表 web 控制层
  * @author yzp
@@ -33,7 +48,10 @@ public class VideoLessonGroupController extends BaseController {
 	@Autowired
 	private VideoLessonGroupService videoLessonGroupService;
 
-	@ApiOperation(value = "新增", httpMethod="POST", consumes="application/json", produces="application/json")
+    /**
+     * 新增视频课组
+     */
+	@ApiOperation(value = "新增视频课组", httpMethod="POST", consumes="application/json", produces="application/json")
     @PostMapping(value="/create", consumes="application/json", produces="application/json")
     public HttpResponseResult<Object> create(@Valid @RequestBody VideoLessonGroup videoLessonGroup) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
@@ -41,8 +59,7 @@ public class VideoLessonGroupController extends BaseController {
             return failed("用户信息获取失败");
         }
 
-        //videoLessonGroup.setCreateBy(sysUser.getId());
-        //videoLessonGroup.setCreateTime(new Date());
+        videoLessonGroup.setTeacherId(sysUser.getId());
         videoLessonGroupService.save(videoLessonGroup);
         return succeed();
     }
@@ -76,10 +93,16 @@ public class VideoLessonGroupController extends BaseController {
         return succeed();
     }
 
-    @ApiOperation(value = "分页查询", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/list", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> list(@RequestBody VideoLessonGroupDto videoLessonGroupDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
+    /**
+     * 教师端视频课-首页分页
+     * 可根据审核状态筛选
+     */
+    @ApiOperation(value = "教师端视频课-首页分页")
+    @GetMapping(value="/page")
+    public HttpResponseResult<PageInfo<VideoLessonGroupVo>> page(VideoLessonGroupSearch search, Query query) {
+        IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(Condition.getPage(query),search);
+        return succeed(Condition.pageInfo(pages));
+/*        SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
@@ -95,14 +118,33 @@ public class VideoLessonGroupController extends BaseController {
                 pageSize = 10;
             }
 
+            String search;
+            if(videoLessonGroupDto.getSearch()==null){
+                search = "";
+            } else {
+                search = videoLessonGroupDto.getSearch();
+            }
             LambdaQueryWrapper<VideoLessonGroup> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(VideoLessonGroup::getName , "k");
-
+            lambdaQueryWrapper.or().like(VideoLessonGroup::getLessonName , search);
+            lambdaQueryWrapper.or().like(VideoLessonGroup::getLessonSubject , search);
+            lambdaQueryWrapper.or().like(VideoLessonGroup::getLessonTag , search);
             Page<VideoLessonGroup> page = new Page<>(pageNo,pageSize);
+            videoLessonGroupService.selectPage(page,)
             return succeed(videoLessonGroupService.page(page, lambdaQueryWrapper));
         } catch (Exception e) {
             e.printStackTrace();
             return HttpResponseResult.failed(e.getMessage());
-        }
+        }*/
+    }
+
+    /**
+     * 教师端视频课-查询详情
+     * 根据组id查组内课程及购买人员信息
+     */
+    @ApiOperation(value = "教师端视频课-查询详情")
+    @GetMapping("/detail")
+    public HttpResponseResult<VideoLessonGroupDetailVo> detail(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
+        VideoLessonGroupDetailVo detail = videoLessonGroupService.detail(id);
+        return succeed(detail);
     }
 }

+ 14 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -1,7 +1,15 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * MusicSheetDao数据库访问类
@@ -10,5 +18,10 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface MusicSheetDao extends BaseMapper<MusicSheet> {
-
+    /**
+     * 分页查询
+     *
+     * @return com.yonge.cooleshow.biz.dal.vo.MusicSheetVo
+     */
+    List<MusicSheetVo> selectPage(@Param("page") IPage page, @Param("param") MusicSheetSearch query);
 }

+ 30 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicTagDao.java

@@ -4,27 +4,49 @@ import java.util.List;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import org.apache.ibatis.annotations.Param;
 import com.yonge.cooleshow.biz.dal.entity.MusicTag;
 import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
 
 
-public interface MusicTagDao extends BaseMapper<MusicTag>{
+public interface MusicTagDao extends BaseMapper<MusicTag> {
 	/**
 	 * 查询详情
-     * @author liweifan
-     * @date 2022-03-29 17:47:57
-     * @return: com.yonge.cooleshow.biz.dal.vo.MusicTagVo
+	 *
+	 * @author liweifan
+	 * @date 2022-03-29 17:47:57
+	 * @return: com.yonge.cooleshow.biz.dal.vo.MusicTagVo
 	 */
 	MusicTagVo detail(@Param("id") Long id);
 
 	/**
 	 * 分页查询
-     * @author liweifan
-     * @date 2022-03-29 17:47:57
-     * @return: com.yonge.cooleshow.biz.dal.vo.MusicTagVo
+	 *
+	 * @author liweifan
+	 * @date 2022-03-29 17:47:57
+	 * @return: com.yonge.cooleshow.biz.dal.vo.MusicTagVo
 	 */
 	List<MusicTagVo> selectPage(@Param("page") IPage page, @Param("param") MusicTagSearch musicTag);
-	
+
+	/**
+	 * 根据父级id查询子级列表
+	 *
+	 * @param id        父级id
+	 * @param state     状态
+	 * @param idAndName 标签编号/名称
+	 * @return List
+	 */
+	List<MusicTagVo> getChildren(@Param("id") Long id, @Param("state") StateEnum state, @Param("idAndName") String idAndName);
+
+
+	/**
+	 * 根据父级id集合查询子集标签
+	 *
+	 * @param longList 父级id集合
+	 * @param state    状态
+	 * @return 子集集合
+	 */
+	List<MusicTagVo> getChildrenByParentIdList(@Param("longList") List<Long> longList, @Param("state") StateEnum state);
 }

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

@@ -1,7 +1,15 @@
 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.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * VideoLessonGroupDao数据库访问类
@@ -10,5 +18,12 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
+    //查询视频课组-分页
+    List<VideoLessonGroupVo> selectPage(IPage page,@Param("param")  VideoLessonGroupSearch search);
+
+    //根据组id查视频课详情
+    List<VideoLessonGroupDetail> selectDetail(Long id);
 
+    //根据组id查询购买学员信息
+    List<VideoLessonPurchaseStudent> selectStudent(Long id);
 }

+ 53 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicTagSaveDto.java

@@ -0,0 +1,53 @@
+package com.yonge.cooleshow.biz.dal.dto;
+
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.groups.Default;
+
+/**
+ * Description
+ *
+ * @author liujc
+ * @date 2022-03-30
+ */
+public class MusicTagSaveDto {
+
+    public interface Create extends Default{}
+    public interface Update extends Default{}
+
+
+    @ApiModelProperty("标签id ")
+    private Long id;
+
+    @ApiModelProperty("父级标签id ")
+    private Long parentTagId;
+
+    @ApiModelProperty(value = "标签名称 ",required = true)
+    @NotBlank(message = "标签名称不能为空")
+    private String name;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getParentTagId() {
+        return parentTagId;
+    }
+
+    public void setParentTagId(Long parentTagId) {
+        this.parentTagId = parentTagId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}

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

@@ -13,19 +13,19 @@ public class VideoLessonGroupDto extends VideoLessonGroup {
     private Integer pageSize;
     private String search;
 
-    public int getPageNo() {
+    public Integer getPageNo() {
         return pageNo;
     }
 
-    public void setPageNo(int pageNo) {
+    public void setPageNo(Integer pageNo) {
         this.pageNo = pageNo;
     }
 
-    public int getPageSize() {
+    public Integer getPageSize() {
         return pageSize;
     }
 
-    public void setPageSize(int pageSize) {
+    public void setPageSize(Integer pageSize) {
         this.pageSize = pageSize;
     }
 

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

@@ -0,0 +1,61 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author: liujunchi
+ * @date: 2022-03-30
+ */
+@ApiModel(value = "MusicSheetSearch对象", description = "曲目表查询对象")
+public class MusicSheetSearch  extends Query {
+
+    @ApiModelProperty("曲目编号/名称")
+    private String idAndName;
+
+    @ApiModelProperty("标签id(多个逗号隔开)")
+    private String musicTagIds;
+
+    @ApiModelProperty("声部id(多个逗号隔开)")
+    private String subjectIds;
+
+
+    @ApiModelProperty("曲目状态(0:停用,1:启用))")
+    private StateEnum state;
+
+    public String getIdAndName() {
+        return idAndName;
+    }
+
+    public void setIdAndName(String idAndName) {
+        this.idAndName = idAndName;
+    }
+
+    public String getMusicTagIds() {
+        return musicTagIds;
+    }
+
+    public void setMusicTagIds(String musicTagIds) {
+        this.musicTagIds = musicTagIds;
+    }
+
+    public String getSubjectIds() {
+        return subjectIds;
+    }
+
+    public void setSubjectIds(String subjectIds) {
+        this.subjectIds = subjectIds;
+    }
+
+    public StateEnum getState() {
+        return state;
+    }
+
+    public void setState(StateEnum state) {
+        this.state = state;
+    }
+}

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

@@ -1,7 +1,9 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import com.yonge.cooleshow.biz.dal.support.Query;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
 
 /**
  * @Author: liweifan
@@ -11,4 +13,25 @@ import io.swagger.annotations.ApiModel;
 public class MusicTagSearch extends Query{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("标签编号/名称")
+	private String idAndName;
+
+	@ApiModelProperty("标签状态(0:禁用,1:启用)")
+	private StateEnum state;
+
+	public String getIdAndName() {
+		return idAndName;
+	}
+
+	public void setIdAndName(String idAndName) {
+		this.idAndName = idAndName;
+	}
+
+	public StateEnum getState() {
+		return state;
+	}
+
+	public void setState(StateEnum state) {
+		this.state = state;
+	}
 }

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

@@ -0,0 +1,18 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+@ApiModel(value = "VideoLessonGroupSearch", description = "视频课列表查询")
+public class VideoLessonGroupSearch {
+    @ApiModelProperty(value = "审核状态(0:待审核 1:通过 2:未通过)")
+    private Integer auditStatus;
+
+    public Integer getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Integer auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+}

+ 35 - 22
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.*;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -63,20 +64,25 @@ public class MusicSheet extends BaseEntity {
 
     @TableField("can_evaluate_")
     @ApiModelProperty(value = "是否可以评测(0:否;1:是)")
-    private Integer canEvaluate;  //是否可以评测(0:否;1:是)
+    private YesOrNoEnum canEvaluate;  //是否可以评测(0:否;1:是)
 
     @TableField("show_fingering_")
     @ApiModelProperty(value = "是否展示指法(0:否;1:是)")
-    private Integer showFingering;  //是否展示指法(0:否;1:是)
+    private YesOrNoEnum showFingering;  //是否展示指法(0:否;1:是)
 
     @NotNull(message = "收费类型不能为空!")
     @TableField("charge_type_")
     @ApiModelProperty(value = "收费类型(0:免费;1:会员;2:单曲收费)")
-    private Integer chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
+    private ChargeTypeEnum chargeType;  //收费类型(0:免费;1:会员;2:单曲收费)
+
+
+	@TableField("state_")
+	@ApiModelProperty(value = "曲目状态(0:停用,1:启用)")
+	private StateEnum state;
 
     @TableField("audit_status_")
     @ApiModelProperty(value = "审核状态(0:待审核;1:通过;2:未通过)")
-    private Integer auditStatus;  //审核状态(0:待审核;1:通过;2:未通过)
+    private AuditEnum auditStatus;  //审核状态(0:待审核;1:通过;2:未通过)
 
     @TableField("sort_number_")
     @ApiModelProperty(value = "排序号")
@@ -84,11 +90,11 @@ public class MusicSheet extends BaseEntity {
 
     @TableField("top_flag_")
     @ApiModelProperty(value = "是否置顶(0:否;1:是)")
-    private Integer topFlag;  //是否置顶(0:否;1:是)
+    private YesOrNoEnum topFlag;  //是否置顶(0:否;1:是)
 
     @TableField("hot_flag_")
     @ApiModelProperty(value = "是否热门曲谱(0:否;1:是)")
-    private Integer hotFlag;  //是否热门曲谱(0:否;1:是)
+    private YesOrNoEnum hotFlag;  //是否热门曲谱(0:否;1:是)
 
     @TableField("music_price_")
     @ApiModelProperty(value = "曲谱价格")
@@ -106,7 +112,7 @@ public class MusicSheet extends BaseEntity {
 
     @TableField("has_beat_")
     @ApiModelProperty(value = "是否自带节拍器(0:否;1:是)")
-    private Integer hasBeat;  //是否自带节拍器(0:否;1:是)
+    private YesOrNoEnum hasBeat;  //是否自带节拍器(0:否;1:是)
 
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")
@@ -201,39 +207,39 @@ public class MusicSheet extends BaseEntity {
 	    return this.playSpeed;
 	}
 
-	public MusicSheet setCanEvaluate(Integer canEvaluate) {
+	public MusicSheet setCanEvaluate(YesOrNoEnum canEvaluate) {
 	    this.canEvaluate = canEvaluate;
 	    return this;
 	}
 
-	public Integer getCanEvaluate() {
+	public YesOrNoEnum getCanEvaluate() {
 	    return this.canEvaluate;
 	}
 
-	public MusicSheet setShowFingering(Integer showFingering) {
+	public MusicSheet setShowFingering(YesOrNoEnum showFingering) {
 	    this.showFingering = showFingering;
 	    return this;
 	}
 
-	public Integer getShowFingering() {
+	public YesOrNoEnum getShowFingering() {
 	    return this.showFingering;
 	}
 
-	public MusicSheet setChargeType(Integer chargeType) {
+	public MusicSheet setChargeType(ChargeTypeEnum chargeType) {
 	    this.chargeType = chargeType;
 	    return this;
 	}
 
-	public Integer getChargeType() {
+	public ChargeTypeEnum getChargeType() {
 	    return this.chargeType;
 	}
 
-	public MusicSheet setAuditStatus(Integer auditStatus) {
+	public MusicSheet setAuditStatus(AuditEnum auditStatus) {
 	    this.auditStatus = auditStatus;
 	    return this;
 	}
 
-	public Integer getAuditStatus() {
+	public AuditEnum getAuditStatus() {
 	    return this.auditStatus;
 	}
 
@@ -246,21 +252,21 @@ public class MusicSheet extends BaseEntity {
 	    return this.sortNumber;
 	}
 
-	public MusicSheet setTopFlag(Integer topFlag) {
+	public MusicSheet setTopFlag(YesOrNoEnum topFlag) {
 	    this.topFlag = topFlag;
 	    return this;
 	}
 
-	public Integer getTopFlag() {
+	public YesOrNoEnum getTopFlag() {
 	    return this.topFlag;
 	}
 
-	public MusicSheet setHotFlag(Integer hotFlag) {
+	public MusicSheet setHotFlag(YesOrNoEnum hotFlag) {
 	    this.hotFlag = hotFlag;
 	    return this;
 	}
 
-	public Integer getHotFlag() {
+	public YesOrNoEnum getHotFlag() {
 	    return this.hotFlag;
 	}
 
@@ -291,12 +297,12 @@ public class MusicSheet extends BaseEntity {
 	    return this.xmlFileUrl;
 	}
 
-	public MusicSheet setHasBeat(Integer hasBeat) {
+	public MusicSheet setHasBeat(YesOrNoEnum hasBeat) {
 	    this.hasBeat = hasBeat;
 	    return this;
 	}
 
-	public Integer getHasBeat() {
+	public YesOrNoEnum getHasBeat() {
 	    return this.hasBeat;
 	}
 
@@ -345,8 +351,15 @@ public class MusicSheet extends BaseEntity {
 	    return this.remark;
 	}
 
+	public StateEnum getState() {
+		return state;
+	}
+
+	public void setState(StateEnum state) {
+		this.state = state;
+	}
 
-    @Override
+	@Override
     public String toString() {
         return ToStringBuilder.reflectionToString(this);
     }

+ 53 - 45
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicTag.java

@@ -4,6 +4,8 @@ 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.StateEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 
@@ -18,56 +20,63 @@ import org.springframework.format.annotation.DateTimeFormat;
 @TableName("music_tag")
 @ApiModel(value = "MusicTag对象", description = "音乐标签表")
 public class MusicTag implements Serializable {
-    private static final long serialVersionUID = 1L;
+	private static final long serialVersionUID = 1L;
     @ApiModelProperty("标签id ")
     @TableId(value = "id_", type = IdType.AUTO)
-    private Integer id;
+    private Long id;
     @ApiModelProperty("父级标签id ")
-    @TableField(value = "parent_tag_id_")
-    private Integer parentTagId;
-    @ApiModelProperty("标签名称 ")
-    @TableField(value = "name_")
+	@TableField(value = "parent_tag_id_")
+    private Long parentTagId;
+
+    @ApiModelProperty(value = "标签名称 ",required = true)
+	@TableField(value = "name_")
     private String name;
-    @ApiModelProperty("标签状态(0:启用,1:禁用) ")
+
     @TableField(value = "state_")
-    private Integer state;
-    @ApiModelProperty("假删标识(0:正常,1:删除) ")
-    @TableField(value = "del_flag_")
-    private Byte delFlag;
-    @ApiModelProperty("创建时间 ")
-    @TableField(value = "create_time_")
+    @ApiModelProperty(value = "标签状态(0:禁用,1:启用)")
+    private StateEnum state;
+
+	@TableField(value = "del_flag_")
+    @ApiModelProperty(value = "假删标识(0:正常,1:删除)")
+    private YesOrNoEnum delFlag;
+
+	@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;
-    @ApiModelProperty("更新时间 ")
-    @TableField(value = "update_time_")
+
+
+    @TableField("create_by_")
+    @ApiModelProperty(value = "创建人(后台平台用户)")
+    private Long createBy;  //创建人(老师或者是后台平台用户)
+
+	@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;
-    @ApiModelProperty("更新人(后台平台用户) ")
-    @TableField(value = "update_by_")
-    private Integer updateBy;
-    @ApiModelProperty("创建人(后台平台用户) ")
-    @TableField(value = "create_by_")
-    private Integer createBy;
-
-    public Integer getId() {
+
+
+    @TableField("update_by_")
+    @ApiModelProperty(value = "更新人(后台平台用户)")
+    private Long updateBy;  //更新人(老师或者是后台平台用户)
+
+	public Long getId() {
         return id;
     }
 
-    public void setId(Integer id) {
+    public void setId(Long id) {
         this.id = id;
     }
 
-    public Integer getParentTagId() {
+	public Long getParentTagId() {
         return parentTagId;
     }
 
-    public void setParentTagId(Integer parentTagId) {
+    public void setParentTagId(Long parentTagId) {
         this.parentTagId = parentTagId;
     }
 
-    public String getName() {
+	public String getName() {
         return name;
     }
 
@@ -75,23 +84,15 @@ public class MusicTag implements Serializable {
         this.name = name;
     }
 
-    public Integer getState() {
-        return state;
-    }
-
-    public void setState(Integer state) {
-        this.state = state;
-    }
-
-    public Byte getDelFlag() {
+	public YesOrNoEnum getDelFlag() {
         return delFlag;
     }
 
-    public void setDelFlag(Byte delFlag) {
+    public void setDelFlag(YesOrNoEnum delFlag) {
         this.delFlag = delFlag;
     }
 
-    public Date getCreateTime() {
+	public Date getCreateTime() {
         return createTime;
     }
 
@@ -99,7 +100,7 @@ public class MusicTag implements Serializable {
         this.createTime = createTime;
     }
 
-    public Date getUpdateTime() {
+	public Date getUpdateTime() {
         return updateTime;
     }
 
@@ -107,20 +108,27 @@ public class MusicTag implements Serializable {
         this.updateTime = updateTime;
     }
 
-    public Integer getUpdateBy() {
-        return updateBy;
+    public StateEnum getState() {
+        return state;
     }
 
-    public void setUpdateBy(Integer updateBy) {
-        this.updateBy = updateBy;
+    public void setState(StateEnum state) {
+        this.state = state;
     }
 
-    public Integer getCreateBy() {
+    public Long getCreateBy() {
         return createBy;
     }
 
-    public void setCreateBy(Integer createBy) {
+    public void setCreateBy(Long createBy) {
         this.createBy = createBy;
     }
 
+    public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
 }

+ 12 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java

@@ -7,7 +7,9 @@ import com.baomidou.mybatisplus.annotation.TableId;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import org.apache.commons.lang3.builder.ToStringBuilder;
-import java.util.Date;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
 
 /**
  * 视频课基本信息表
@@ -23,7 +25,8 @@ public class VideoLessonGroup extends BaseEntity {
     private Long id;  //主键ID
 
     @TableField("lesson_name_")
-    @ApiModelProperty(value = "课程名称")
+    @ApiModelProperty(value = "课程名称",required = true)
+	@NotBlank(message = "课程名称不能为空;")
     private String lessonName;  //课程名称
 
     @TableField("lesson_subject_")
@@ -31,15 +34,18 @@ public class VideoLessonGroup extends BaseEntity {
     private String lessonSubject;  //课程声部
 
     @TableField("lesson_desc_")
-    @ApiModelProperty(value = "课程介绍")
+    @ApiModelProperty(value = "课程介绍",required = true)
+	@NotBlank(message = "课程介绍不能为空;")
     private String lessonDesc;  //课程介绍
 
     @TableField("lesson_price_")
-    @ApiModelProperty(value = "课程价格")
+    @ApiModelProperty(value = "课程价格",required = true)
+	@NotNull(message = "课程价格不能为空;")
     private Integer lessonPrice;  //课程价格
 
     @TableField("lesson_cover_url_")
-    @ApiModelProperty(value = "课程封面图片URL")
+    @ApiModelProperty(value = "课程封面图片URL",required = true)
+	@NotBlank(message = "课程封面图片URL不能为空;")
     private String lessonCoverUrl;  //课程封面图片URL
 
     @TableField("teacher_id_")
@@ -67,7 +73,7 @@ public class VideoLessonGroup extends BaseEntity {
     private Integer hotFlag;  //是否热门课程
 
     @TableField("audit_status_")
-    @ApiModelProperty(value = "审核状态")
+    @ApiModelProperty(value = "审核状态(0:待审核;1:通过;2:未通过)")
     private Integer auditStatus;  //审核状态
 
     @TableField("create_time_")
@@ -78,7 +84,6 @@ public class VideoLessonGroup extends BaseEntity {
     @ApiModelProperty(value = "更新时间")
     private java.util.Date updateTime;  //更新时间
 
-
 	public VideoLessonGroup setId(Long id) {
 	    this.id = id;
 	    return this;

+ 43 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuditEnum.java

@@ -0,0 +1,43 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * Description 审核状态(0:待审核;1:通过;2:未通过)
+ *
+ * @author: liujunchi
+ * @date: 2022-03-30
+ */
+public enum AuditEnum implements BaseEnum<Integer,AuditEnum> {
+
+
+    AUDITING(0,"待审核"),
+    OPEN(1,"通过"),
+    REJECT(2,"未通过");
+    @EnumValue
+    private Integer code;
+    private String msg;
+
+    AuditEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+}

+ 42 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ChargeTypeEnum.java

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * Description 收费类型(0:免费;1:会员;2:单曲收费)
+ *
+ * @author: liujunchi
+ * @date: 2022-03-30
+ */
+public enum ChargeTypeEnum implements BaseEnum<Integer,ChargeTypeEnum> {
+
+    FREE(0,"免费"),
+    VIP(1,"会员"),
+    CHARGE(2,"单曲收费");
+    @EnumValue
+    private Integer code;
+    private String msg;
+
+    ChargeTypeEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public void setCode(Integer code) {
+        this.code = code;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    public void setMsg(String msg) {
+        this.msg = msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+}

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OpenEnum.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * Description 标签列表是否展开列表
+ *
+ * @author: liujunchi
+ * @date: 2022-03-30
+ */
+public enum OpenEnum implements BaseEnum<Integer, OpenEnum> {
+    OPEN(0,"展开"),
+    CLOSE(1, "不展开");
+    @EnumValue
+    private Integer code;
+
+    private String msg;
+
+    OpenEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+}

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/StateEnum.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.enums;
+
+import com.baomidou.mybatisplus.annotation.EnumValue;
+import com.yonge.cooleshow.common.enums.BaseEnum;
+
+/**
+ * Description
+ *
+ * @author: liujunchi
+ * @date: 2022-03-30
+ */
+public enum StateEnum implements BaseEnum<Integer, StateEnum> {
+    STOP(0,"停用"),
+    ENABLE(1, "启用");
+    @EnumValue
+    private Integer code;
+
+    private String msg;
+
+    StateEnum(Integer code, String msg) {
+        this.code = code;
+        this.msg = msg;
+    }
+
+    public String getMsg() {
+        return msg;
+    }
+
+    @Override
+    public Integer getCode() {
+        return this.code;
+    }
+}

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -1,9 +1,12 @@
 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.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
 
 /**
  * MusicSheetService服务类
@@ -19,4 +22,21 @@ public interface MusicSheetService extends IService<MusicSheet> {
      */
     boolean saveMp3AndAccompaniment(MusicSheetDto musicSheetDto, SysUser sysUser);
 
+
+    /**
+     * 曲目分页查询
+     *
+     * @param page 分页
+     * @param query 查询条件
+     * @return iPage 分页信息
+     */
+    IPage<MusicSheetVo> selectPage(IPage<MusicSheetVo> page, MusicSheetSearch query);
+
+    /**
+     * 曲目状态修改 启用、停用
+     *
+     * @param id 曲目id
+     * @return boolean
+     */
+    boolean state(Long id);
 }

+ 33 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicTagService.java

@@ -2,9 +2,10 @@ 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.vo.MusicTagVo;
+import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
 import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicTag;
+import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
 
 /**
  * 音乐标签表 服务类
@@ -26,4 +27,35 @@ public interface MusicTagService extends IService<MusicTag>  {
  	 * @date 2022-03-29
      */
     IPage<MusicTagVo> selectPage(IPage<MusicTagVo> page, MusicTagSearch query);
+
+	/**
+	 * 假删除标签
+	 *
+	 * @param musicTagId 标签ID
+	 * @return boolean
+	 */
+    boolean del(Long musicTagId);
+
+	/**
+	 * 启用/停用 标签
+	 *
+	 * @param musicTagId 标签ID
+	 * @return boolean
+	 */
+	boolean state(Long musicTagId);
+
+	/**
+	 * 创建音乐标签
+	 *
+	 * @param musicTagSaveDto 音乐标签信息
+	 */
+    void createMusicTag(MusicTagSaveDto musicTagSaveDto);
+
+	/**
+	 * 修改音乐标签
+	 *
+	 * @param musicTagSaveDto 音乐标签信息
+	 */
+	void updateMusicTag(MusicTagSaveDto musicTagSaveDto);
+
 }

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

@@ -1,7 +1,13 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 
 /**
  * VideoLessonGroupService服务类
@@ -10,5 +16,7 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @version v1.0
  **/
 public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
+    IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch search);
 
+    VideoLessonGroupDetailVo detail(Long id);
 }

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

@@ -1,13 +1,18 @@
 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.MusicSheetAccompanimentDao;
 import com.yonge.cooleshow.biz.dal.dto.MusicSheetDto;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicSheetSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 import com.yonge.cooleshow.biz.dal.dao.MusicSheetDao;
 import com.yonge.cooleshow.biz.dal.entity.MusicSheetAccompaniment;
+import com.yonge.cooleshow.biz.dal.enums.AuditEnum;
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetAccompanimentService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -28,7 +33,7 @@ import java.util.List;
 @Service
 public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet> implements MusicSheetService {
 
-    private final static Logger log = LoggerFactory.getLogger(MusicSheetServiceImpl.class);
+    private static final  Logger log = LoggerFactory.getLogger(MusicSheetServiceImpl.class);
 
     @Autowired
     private MusicSheetDao musicSheetDao;
@@ -46,7 +51,7 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         MusicSheet musicSheet = new MusicSheet();
         BeanUtils.copyProperties(musicSheetDto, musicSheet);
         //保存主表
-        musicSheet.setAuditStatus(0);
+        musicSheet.setAuditStatus(AuditEnum.AUDITING);
         musicSheet.setCreateBy(sysUser.getId());
         musicSheet.setUserId(sysUser.getId());
         musicSheet.setCreateTime(new Date());
@@ -58,10 +63,24 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
         musicSheetAccompanimentService.saveBatch(list);
         count += list.size();
 
-        if (count > 1){
-            return true;
+        return count > 1;
+    }
+
+    @Override
+    public IPage<MusicSheetVo> selectPage(IPage<MusicSheetVo> page, MusicSheetSearch query) {
+        return page.setRecords(baseMapper.selectPage(page, query));
+
+    }
+
+    @Override
+    public boolean state(Long id) {
+        MusicSheet musicSheet = this.getById(id);
+        if (StateEnum.STOP.getCode().equals(musicSheet.getState().getCode())) {
+            musicSheet.setState(StateEnum.ENABLE);
         } else {
-            return false;
+            musicSheet.setState(StateEnum.STOP);
         }
+        return this.updateById(musicSheet);
+
     }
 }

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

@@ -1,27 +1,166 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
-import org.springframework.stereotype.Service;
-import com.yonge.cooleshow.biz.dal.entity.MusicTag;
-import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
-import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.MusicTagDao;
+import com.yonge.cooleshow.biz.dal.dto.MusicTagSaveDto;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicTagSearch;
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
+import com.yonge.cooleshow.biz.dal.enums.OpenEnum;
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.biz.dal.service.MusicTagService;
+import com.yonge.cooleshow.biz.dal.vo.MusicTagVo;
+import com.yonge.cooleshow.common.exception.BizException;
+import jodd.util.StringUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.stream.Collectors;
 
 
 @Service
 public class MusicTagServiceImpl extends ServiceImpl<MusicTagDao, MusicTag> implements MusicTagService {
 
+
+    @Autowired
+    private MusicTagDao musicTagDao;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
 	@Override
     public MusicTagVo detail(Long id) {
-        MusicTagVo detail = baseMapper.detail(id);
-        return detail;
+        return baseMapper.detail(id);
     }
-    
+
      @Override
     public IPage<MusicTagVo> selectPage(IPage<MusicTagVo> page, MusicTagSearch query){
-        return page.setRecords(baseMapper.selectPage(page, query));
+         IPage<MusicTagVo> musicTagVoIPage = page.setRecords(baseMapper.selectPage(page, query));
+         // 将父类的id 拿出来,集体查出子集
+         List<Long> longList = musicTagVoIPage
+                 .getRecords()
+                 .stream()
+                 .map(MusicTag::getId)
+                 .collect(Collectors.toList());
+
+         List<MusicTagVo> musicTagVoList = musicTagDao.getChildrenByParentIdList(longList,query.getState());
+
+         // 根据父级id, 将子集分类
+         Map<String, List<MusicTagVo>> musicTagMap = musicTagVoList.stream()
+                                                                .collect(Collectors.groupingBy( vo -> vo.getParentTagId().toString()));
+         musicTagVoIPage.getRecords()
+                 .forEach(musicTagVo -> {
+                     List<MusicTagVo> childrenList = musicTagMap.get(musicTagVo.getId().toString());
+                     // 如果没有按名称/编号查询 或 父级标签包含了名称/编号 , 展示所有子集 标签列表子集收起
+                     if (StringUtil.isBlank(query.getIdAndName())
+                             || musicTagVo.getName().contains(query.getIdAndName())
+                             || musicTagVo.getId().toString().contains(query.getIdAndName())) {
+                         musicTagVo.setChildren(childrenList);
+                     } else {
+                         // 如果名称查询中,父级不包含名称/编号,子集包含,只展示包含的子集,并且默认展开子集列表
+                         musicTagVo.setOpen(OpenEnum.OPEN);
+                         List<MusicTagVo> childrenNameList = childrenList.stream()
+                                                                .filter(vo -> vo.getName().contains(query.getIdAndName())
+                                                                        ||vo.getId().toString().contains(query.getIdAndName()))
+                                                                .collect(Collectors.toList());
+                         musicTagVo.setChildren(childrenNameList);
+                     }
+                 });
+         return musicTagVoIPage;
+     }
+
+    @Override
+    public boolean del(Long musicTagId) {
+        MusicTag musicTag = new MusicTag();
+        musicTag.setId(musicTagId);
+        musicTag.setDelFlag(YesOrNoEnum.YES);
+        return this.updateById(musicTag);
+    }
+
+    @Override
+    public boolean state(Long musicTagId) {
+        MusicTag tag = this.getById(musicTagId);
+        if (Objects.isNull(tag)) {
+            throw new BizException("标签信息不存在");
+        }
+        MusicTag musicTag = new MusicTag();
+        musicTag.setId(musicTagId);
+        if (tag.getState().getCode().equals(StateEnum.STOP.getCode())) {
+            musicTag.setState(StateEnum.ENABLE);
+        } else {
+            musicTag.setState(StateEnum.STOP);
+        }
+        return this.updateById(musicTag);
+    }
+
+    @Override
+    public void createMusicTag(MusicTagSaveDto musicTagSaveDto) {
+
+        if (checkNameRepeat(musicTagSaveDto.getName(), musicTagSaveDto.getId())) {
+            throw new BizException("标签名称重复");
+        }
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        MusicTag musicTag = new MusicTag();
+        musicTag.setDelFlag(YesOrNoEnum.NO);
+        musicTag.setState(StateEnum.STOP);
+        if (musicTagSaveDto.getParentTagId() == null) {
+            musicTag.setParentTagId(0L);
+        } else {
+            musicTag.setParentTagId(musicTagSaveDto.getParentTagId());
+        }
+        musicTag.setName(musicTagSaveDto.getName());
+        musicTag.setCreateTime(new Date());
+        musicTag.setCreateBy(sysUser.getId());
+        this.save(musicTag);
     }
-	
+
+    /**
+     * 检查标签名称重复
+     *
+     * @param name 名称
+     * @param id 标签id, 更新
+     * @return boolean
+     */
+    private boolean checkNameRepeat(String name,Long id) {
+        LambdaQueryChainWrapper<MusicTag> eq = this.lambdaQuery()
+                                                   .eq(MusicTag::getDelFlag, YesOrNoEnum.NO.getCode())
+                                                   .eq(MusicTag::getName, name);
+        if (id != null) {
+            eq.ne(MusicTag::getId,id);
+        }
+        return eq.count() != 0;
+    }
+
+    @Override
+    public void updateMusicTag(MusicTagSaveDto musicTagSaveDto) {
+
+        if (checkNameRepeat(musicTagSaveDto.getName(), musicTagSaveDto.getId())) {
+            throw new BizException("标签名称重复");
+        }
+
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        MusicTag musicTag = new MusicTag();
+        musicTag.setDelFlag(YesOrNoEnum.NO);
+        musicTag.setId(musicTagSaveDto.getId());
+        if (musicTagSaveDto.getParentTagId() == null) {
+            musicTag.setParentTagId(0L);
+        } else {
+            musicTag.setParentTagId(musicTagSaveDto.getParentTagId());
+        }
+        musicTag.setName(musicTagSaveDto.getName());
+        musicTag.setUpdateTime(new Date());
+        musicTag.setUpdateBy(sysUser.getId());
+        this.updateById(musicTag);
+    }
+
+
 }

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

@@ -1,8 +1,12 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -26,4 +30,17 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
     public VideoLessonGroupDao getDao() {
         return videoLessonGroupDao;
     }
+
+    @Override
+    public IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch search) {
+        return page.setRecords(baseMapper.selectPage(page,search));
+    }
+
+    @Override
+    public VideoLessonGroupDetailVo detail(Long id) {
+        VideoLessonGroupDetailVo detailVo = new VideoLessonGroupDetailVo();
+        detailVo.setGroupDetailList(videoLessonGroupDao.selectDetail(id));
+        detailVo.setPurchaseStudent(videoLessonGroupDao.selectStudent(id));
+        return detailVo;
+    }
 }

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetVo.java

@@ -0,0 +1,48 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description
+ *
+ * @author: liujunchi
+ * @date: 2022-03-30
+ */
+@ApiModel(value = "MusicSheetVo对象", description = "音乐曲目表查询视图对象")
+public class MusicSheetVo extends MusicSheet {
+
+    @ApiModelProperty("添加人")
+    private String addName;
+
+    @ApiModelProperty("标签名")
+    private String musicTagNames;
+
+    @ApiModelProperty("声部名")
+    private String subjectNames;
+
+    public String getAddName() {
+        return addName;
+    }
+
+    public void setAddName(String addName) {
+        this.addName = addName;
+    }
+
+    public String getMusicTagNames() {
+        return musicTagNames;
+    }
+
+    public void setMusicTagNames(String musicTagNames) {
+        this.musicTagNames = musicTagNames;
+    }
+
+    public String getSubjectNames() {
+        return subjectNames;
+    }
+
+    public void setSubjectNames(String subjectNames) {
+        this.subjectNames = subjectNames;
+    }
+}

+ 37 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicTagVo.java

@@ -1,7 +1,12 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
 import com.yonge.cooleshow.biz.dal.entity.MusicTag;
+import com.yonge.cooleshow.biz.dal.enums.OpenEnum;
 import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.ArrayList;
+import java.util.List;
 
 /**
  * @Author: liweifan
@@ -11,4 +16,36 @@ import io.swagger.annotations.ApiModel;
 public class MusicTagVo extends MusicTag{
 	private static final long serialVersionUID = 1L;
 
+	@ApiModelProperty("更新人")
+	private String updateName;
+
+	@ApiModelProperty("是否展开标签(0:展开,1:不展开)")
+	private OpenEnum open = OpenEnum.CLOSE;
+
+	@ApiModelProperty("二级标签")
+	private List<MusicTagVo> children = new ArrayList<>();
+
+	public OpenEnum getOpen() {
+		return open;
+	}
+
+	public void setOpen(OpenEnum open) {
+		this.open = open;
+	}
+
+	public List<MusicTagVo> getChildren() {
+		return children;
+	}
+
+	public void setChildren(List<MusicTagVo> children) {
+		this.children = children;
+	}
+
+	public String getUpdateName() {
+		return updateName;
+	}
+
+	public void setUpdateName(String updateName) {
+		this.updateName = updateName;
+	}
 }

+ 33 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailVo.java

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+@ApiModel(value = "VideoLessonGroupDetailVo对象", description = "视频课组详情")
+public class VideoLessonGroupDetailVo{
+
+    @ApiModelProperty(value = "组内课程")
+    private List<VideoLessonGroupDetail> groupDetailList;
+
+    @ApiModelProperty(value = "购买学生")
+    private List<VideoLessonPurchaseStudent> purchaseStudent;
+
+    public List<VideoLessonGroupDetail> getGroupDetailList() {
+        return groupDetailList;
+    }
+
+    public void setGroupDetailList(List<VideoLessonGroupDetail> groupDetailList) {
+        this.groupDetailList = groupDetailList;
+    }
+
+    public List<VideoLessonPurchaseStudent> getPurchaseStudent() {
+        return purchaseStudent;
+    }
+
+    public void setPurchaseStudent(List<VideoLessonPurchaseStudent> purchaseStudent) {
+        this.purchaseStudent = purchaseStudent;
+    }
+}

+ 42 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupVo.java

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+@ApiModel(value = "VideoLessonGroupVo对象", description = "视频课组列表")
+public class VideoLessonGroupVo extends VideoLessonGroup {
+
+    @ApiModelProperty(value = "用户名")
+    private String username;
+
+    @ApiModelProperty(value = "头像URL")
+    private String avatar;
+
+    @ApiModelProperty("购买人数")
+    private Integer countStudent;
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public Integer getCountStudent() {
+        return countStudent;
+    }
+
+    public void setCountStudent(Integer countStudent) {
+        this.countStudent = countStudent;
+    }
+}

+ 52 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonPurchaseStudent.java

@@ -0,0 +1,52 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+@ApiModel(value = "VideoLessonPurchaseStudent对象")
+public class VideoLessonPurchaseStudent {
+    @ApiModelProperty("头像地址")
+    private String avatar;
+
+    @ApiModelProperty("昵称")
+    private String username;
+
+    @ApiModelProperty(value = "性别 0女 1男")
+    private Integer gender;
+
+    private java.util.Date createTime;
+
+    public String getAvatar() {
+        return avatar;
+    }
+
+    public void setAvatar(String avatar) {
+        this.avatar = avatar;
+    }
+
+    public String getUsername() {
+        return username;
+    }
+
+    public void setUsername(String username) {
+        this.username = username;
+    }
+
+    public Integer getGender() {
+        return gender;
+    }
+
+    public void setGender(Integer gender) {
+        this.gender = gender;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+}

+ 77 - 34
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -1,39 +1,82 @@
 <?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">
+<!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.MusicSheetDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.MusicSheet">
+        <id column="id_" jdbcType="BIGINT" property="id"/>
+        <result column="music_sheet_name_" jdbcType="VARCHAR" property="musicSheetName"/>
+        <result column="user_id_" jdbcType="BIGINT" property="userId"/>
+        <result column="composer_" jdbcType="VARCHAR" property="composer"/>
+        <result column="music_subject_" jdbcType="VARCHAR" property="musicSubject"/>
+        <result column="audio_type_" jdbcType="VARCHAR" property="audioType"/>
+        <result column="music_tag_" jdbcType="VARCHAR" property="musicTag"/>
+        <result column="play_speed_" jdbcType="INTEGER" property="playSpeed"/>
+        <result column="can_evaluate_" jdbcType="TINYINT" property="canEvaluate"/>
+        <result column="show_fingering_" jdbcType="TINYINT" property="showFingering"/>
+        <result column="charge_type_" jdbcType="TINYINT" property="chargeType"/>
+        <result column="audit_status_" jdbcType="TINYINT" property="auditStatus"/>
+        <result column="sort_number_" jdbcType="INTEGER" property="sortNumber"/>
+        <result column="top_flag_" jdbcType="TINYINT" property="topFlag"/>
+        <result column="hot_flag_" jdbcType="TINYINT" property="hotFlag"/>
+        <result column="music_price_" jdbcType="DECIMAL" property="musicPrice"/>
+        <result column="audio_file_url_" jdbcType="VARCHAR" property="audioFileUrl"/>
+        <result column="xml_file_url_" jdbcType="VARCHAR" property="xmlFileUrl"/>
+        <result column="has_beat_" jdbcType="TINYINT" property="hasBeat"/>
+        <result column="create_time_" jdbcType="TIMESTAMP" property="createTime"/>
+        <result column="create_by_" jdbcType="BIGINT" property="createBy"/>
+        <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime"/>
+        <result column="update_by_" jdbcType="BIGINT" property="updateBy"/>
+        <result column="remark_" jdbcType="VARCHAR" property="remark"/>
+    </resultMap>
 
-	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.MusicSheet">
-	     <id column="id_" jdbcType="BIGINT" property="id" />
-		 <result column="music_sheet_name_" jdbcType="VARCHAR" property="musicSheetName" />
-		 <result column="user_id_" jdbcType="BIGINT" property="userId" />
-		 <result column="composer_" jdbcType="VARCHAR" property="composer" />
-		 <result column="music_subject_" jdbcType="VARCHAR" property="musicSubject" />
-		 <result column="audio_type_" jdbcType="VARCHAR" property="audioType" />
-		 <result column="music_tag_" jdbcType="VARCHAR" property="musicTag" />
-		 <result column="play_speed_" jdbcType="INTEGER" property="playSpeed" />
-		 <result column="can_evaluate_" jdbcType="TINYINT" property="canEvaluate" />
-		 <result column="show_fingering_" jdbcType="TINYINT" property="showFingering" />
-		 <result column="charge_type_" jdbcType="TINYINT" property="chargeType" />
-		 <result column="audit_status_" jdbcType="TINYINT" property="auditStatus" />
-		 <result column="sort_number_" jdbcType="INTEGER" property="sortNumber" />
-		 <result column="top_flag_" jdbcType="TINYINT" property="topFlag" />
-		 <result column="hot_flag_" jdbcType="TINYINT" property="hotFlag" />
-		 <result column="music_price_" jdbcType="DECIMAL" property="musicPrice" />
-		 <result column="audio_file_url_" jdbcType="VARCHAR" property="audioFileUrl" />
-		 <result column="xml_file_url_" jdbcType="VARCHAR" property="xmlFileUrl" />
-		 <result column="has_beat_" jdbcType="TINYINT" property="hasBeat" />
-		 <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
-		 <result column="create_by_" jdbcType="BIGINT" property="createBy" />
-		 <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
-		 <result column="update_by_" jdbcType="BIGINT" property="updateBy" />
-		 <result column="remark_" jdbcType="VARCHAR" property="remark" />
-	</resultMap>
-
-	<sql id="Base_Column_List">
-		id_, music_sheet_name_, user_id_, composer_, music_subject_, audio_type_, music_tag_, play_speed_, can_evaluate_, show_fingering_, charge_type_, audit_status_, sort_number_, top_flag_, hot_flag_, music_price_, audio_file_url_, xml_file_url_, has_beat_, create_time_, create_by_, update_time_, update_by_, remark_
-	</sql>
-
-
+    <sql id="Base_Column_List">
+        t.id_ as id ,
+        t.music_sheet_name_ as musicSheetName,
+        t.user_id_ as userId,
+        t.composer_ as composer,
+        t.music_subject_ as musicSubject,
+        t.audio_type_ as audioType,
+        t.music_tag_ as musicTag,
+        t.play_speed_ as playSpeed,
+        t.can_evaluate_ as canEvaluate,
+        t.show_fingering_ as showFingering,
+        t.charge_type_ as chargeType,
+        t.state_ as state,
+        t.audit_status_ as auditStatus,
+        t.sort_number_ as sortNumber,
+        t.top_flag_ as topFlag,
+        t.hot_flag_ as hotFlag,
+        t.music_price_ as musicPrice,
+        t.audio_file_url_ as audioFileUrl,
+        t.xml_file_url_ as xmlFileUrl,
+        t.has_beat_ as hasBeat,
+        t.create_time_ as createTime,
+        t.create_by_ as createBy,
+        t.update_time_ as updateTime,
+        t.update_by_ as updateBy,
+        t.remark_ as remark
+    </sql>
 
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicSheetVo">
+        select <include refid="Base_Column_List"/>
+        ,su.username_ as addName
+        ,(select group_concat(mt.name_,',') from music_tag mt where mt.id_ in ( t.music_tag_) and mt.del_flag_ = 0) as musicTagNames
+        ,(select group_concat(s.name_,',') from subject s where s.id_ in ( t.music_subject_ )) as subjectNames
+        from music_sheet t
+        left join sys_user su on t.create_by_ = su.id_
+        <where>
+            <if test="param.idAndName != null and param.idAndName != ''">
+                and t.id_ like concat('%',#{param.idAndName},'%')
+            </if>
+            <if test="param.musicTagIds != null and param.musicTagIds != ''">
+                and t.music_tag_ like concat('%',#{param.musicTagIds},'%')
+            </if>
+            <if test="param.subjectIds != null and param.subjectIds != ''">
+                and t.music_subject_ like concat('%',#{param.subjectIds},'%')
+            </if>
+            <if test="param.state != null">
+                and t.state_ = #{param.state}
+            </if>
+        </where>
+    </select>
 </mapper>

+ 72 - 14
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml

@@ -15,27 +15,85 @@
 
     <!-- 表字段 -->
     <sql id="baseColumns">
-         t.id_
-        , t.parent_tag_id_
-        , t.name_
-        , t.state_
-        , t.del_flag_
-        , t.create_time_
-        , t.update_time_
-        , t.update_by_
-        , t.create_by_
-        </sql>
-
+         t.id_ as id
+        , t.parent_tag_id_ as parentTagId
+        , t.name_ as name
+        , t.state_ as state
+        , t.del_flag_ as delFlag
+        , t.create_time_ as createTime
+        , t.update_time_ as updateTime
+        , t.update_by_ as updateBy
+        , t.create_by_ as createBy
+        </sql> 
+    
     <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.MusicTagVo">
         SELECT
-        <include refid="baseColumns"/>
+            <include refid="baseColumns"/>
         FROM music_tag t
         where t.id_ = #{id}
     </select>
+    
+    <select id="selectPage"  resultType="com.yonge.cooleshow.biz.dal.vo.MusicTagVo">
+		SELECT         
+        	<include refid="baseColumns" />,
+            su.username_ as updateName
+		FROM music_tag t
+        left join sys_user su on t.update_by_ = su.id_
+        <where>
+            t.parent_tag_id_ = 0 and t.del_flag_ = 0
+            <if test="param.state != null">
+                and t.state_ = #{param.state}
+            </if>
+            <if test="param.idAndName != null and param.idAndName != ''">
+                and ( t.id_ like concat( '%',#{param.idAndName},'%') or
+                    t.name_ like  concat ('%',#{param.idAndName},'%') or
+                    exists(select mt.parent_tag_id_ from music_tag mt
+                        where (mt.name_ like concat( '%',#{param.idAndName},'%') or mt.id_ like concat('%',#{param.idAndName},'%') )
+                        and mt.parent_tag_id_ = t.id_ and mt.del_flag_ = 0
+                    )
+                    )
+            </if>
+        </where>
+	</select>
+
+	<select id="getChildren" resultType="com.yonge.cooleshow.biz.dal.vo.MusicTagVo">
+        SELECT
+        <include refid="baseColumns" />,
+        su.username_ as updateName
+        FROM music_tag t
+        left join sys_user su on t.update_by_ = su.id_
+        <where>
+            t.del_flag_ = 0
+            <if test="id != null">
+                and t.parent_tag_id_ = #{id}
+            </if>
+            <if test="state != null">
+                and t.state_ = #{state}
+            </if>
+            <if test="idAndName != null and idAndName != ''">
+                and ( t.id_ like concat( '%',#{idAndName},'%') or
+                t.name_ like  concat ('%',#{idAndName},'%')
+            </if>
+        </where>
+    </select>
 
-    <select id="selectPage" resultMap="BaseResultMap">
+	<select id="getChildrenByParentIdList" resultType="com.yonge.cooleshow.biz.dal.vo.MusicTagVo">
         SELECT
-        <include refid="baseColumns" />
+        <include refid="baseColumns" />,
+        su.username_ as updateName
         FROM music_tag t
+        left join sys_user su on t.update_by_ = su.id_
+        <where>
+            t.del_flag_ = 0
+            <if test="longList != null and longList.size() != 0">
+                and t.parent_tag_id_ in
+                <foreach collection="longList" close=")" item="item" open="(" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+            <if test="state != null">
+                and t.state_ = #{state}
+            </if>
+        </where>
     </select>
 </mapper>

+ 68 - 5
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -20,11 +20,74 @@
 		 <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
 		 <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
 	</resultMap>
-
-	<sql id="Base_Column_List">
-		id_, lesson_name_, lesson_subject_, lesson_desc_, lesson_price_, lesson_cover_url_, teacher_id_, lesson_count_, sort_number_, lesson_tag_, top_flag_, hot_flag_, audit_status_, create_time_, update_time_
+	
+	<sql id="baseColumns">
+		g.id_ AS id,
+		g.lesson_name_ AS lessonName,
+		g.lesson_subject_ AS lessonSubject,
+		g.lesson_desc_ AS lessonDesc,
+		g.lesson_price_ AS lessonPrice,
+		g.lesson_cover_url_ AS lessonCoverUrl,
+		g.teacher_id_ AS teacherId,
+		g.lesson_count_ AS lessonCount,
+		g.sort_number_ AS sortNumber,
+		g.lesson_tag_ AS lessonTag,
+		g.top_flag_ AS topFlag,
+		g.hot_flag_ AS hotFlag,
+		g.audit_status_ AS auditStatus,
+		g.create_time_ AS createTime,
+		g.update_time_ AS updateTime
+	</sql>
+	<sql id="groupDetail">
+		id_ AS id,
+		video_lesson_group_id_ AS videoLessonGroupId,
+		video_title_ AS videoTitle,
+		video_content_ AS videoContent,
+		video_url_ AS videoUrl,
+		cover_url_ AS coverUrl,
+		charge_flag_ AS chargeFlag,
+		sort_number_ AS sortNumber,
+		teacher_id_ AS teacherId,
+		create_time_ AS createTime,
+		update_by_ AS updateBy,
+		update_time_ AS updateTime
+	</sql>
+	<sql id="userDetail">
+		username_ AS username,
+		avatar_ AS avatar,
+		gender_ AS gender,
+		create_time_ AS createTime
 	</sql>
 
-
-
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo">
+		SELECT
+			<include refid="baseColumns"/>,
+			s.username_ AS username,
+			s.avatar_ AS avatar,
+			(SELECT COUNT(1) FROM video_lesson_purchase_record r WHERE r.video_lesson_group_id_=g.id_) AS countStudent
+		FROM video_lesson_group g
+		LEFT JOIN sys_user s ON g.teacher_id_ = s.id_
+		<where>
+			<if test="param.auditStatus !=null">
+				AND g.audit_status_ = #{param.auditStatus}
+			</if>
+		</where>
+	</select>
+	<select id="selectDetail" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail"
+			parameterType="java.lang.Long">
+		SELECT
+			<include refid="groupDetail"/>
+		FROM video_lesson_group_detail
+		WHERE video_lesson_group_id_ = #{id}
+	</select>
+	<select id="selectStudent" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent"
+			parameterType="java.lang.Long">
+		SELECT
+			<include refid="userDetail"/>
+		FROM sys_user
+		WHERE id_ IN
+			  (SELECT student_id_
+			   FROM video_lesson_purchase_record
+			   WHERE video_lesson_group_id_ = #{id})
+	</select>
 </mapper>