Prechádzať zdrojové kódy

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/SysConfigConstant.java
hgw 3 rokov pred
rodič
commit
ba72a97a69
82 zmenil súbory, kde vykonal 3336 pridanie a 749 odobranie
  1. 36 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java
  2. 107 32
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicAlbumController.java
  3. 44 54
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicSheetController.java
  4. 57 40
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java
  5. 1 1
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java
  6. 9 8
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java
  7. 8 7
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthMusicianRecordController.java
  8. 5 5
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java
  9. 0 108
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupController.java
  10. 0 108
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupDetailController.java
  11. 17 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/SysConfigConstant.java
  12. 16 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicAlbumDao.java
  13. 25 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  14. 30 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicTagDao.java
  15. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java
  16. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthMusicianRecordDao.java
  17. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  18. 20 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java
  19. 53 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/MusicTagSaveDto.java
  20. 4 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/VideoLessonGroupDto.java
  21. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumDetailSearch.java
  22. 55 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicAlbumSearch.java
  23. 92 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicSheetSearch.java
  24. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/MusicTagSearch.java
  25. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  26. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonSearch.java
  27. 21 14
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicAlbum.java
  28. 110 124
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java
  29. 53 45
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicTag.java
  30. 10 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysConfig.java
  31. 12 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java
  32. 11 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java
  33. 43 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/AuditEnum.java
  34. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/ChargeTypeEnum.java
  35. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OpenEnum.java
  36. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/StateEnum.java
  37. 21 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumMusicRelateService.java
  38. 18 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/HomeService.java
  39. 64 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.java
  40. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  41. 41 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicTagService.java
  42. 8 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthEntryRecordService.java
  43. 7 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthMusicianRecordService.java
  44. 15 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  45. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  46. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/AlbumMusicRelateServiceImpl.java
  47. 35 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/HomeServiceImpl.java
  48. 102 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicAlbumServiceImpl.java
  49. 36 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  50. 179 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicTagServiceImpl.java
  51. 18 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/StudentServiceImpl.java
  52. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  53. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthMusicianRecordServiceImpl.java
  54. 9 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherServiceImpl.java
  55. 108 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  56. 41 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  57. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/AddGroup.java
  58. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/DeleteGroup.java
  59. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/ListValue.java
  60. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/UpdateGroup.java
  61. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/impl/ListValueValidator.java
  62. 138 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/impl/ValidList.java
  63. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/AlbumDetailVo.java
  64. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/HomeTotalVo.java
  65. 36 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicAlbumVo.java
  66. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicSheetVo.java
  67. 37 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicTagVo.java
  68. 107 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailUpVo.java
  69. 139 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupUpVo.java
  70. 46 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupVo.java
  71. 57 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonPurchaseStudent.java
  72. 52 23
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml
  73. 120 33
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  74. 72 14
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicTagMapper.xml
  75. 11 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SubjectMapper.xml
  76. 9 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/SysConfigMapper.xml
  77. 3 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  78. 58 55
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml
  79. 78 4
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupDetailMapper.xml
  80. 63 20
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  81. 91 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java
  82. 119 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupDetailController.java

+ 36 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.admin.controller;
+
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.entity.Subject;
+import com.yonge.cooleshow.biz.dal.service.HomeService;
+import com.yonge.cooleshow.biz.dal.vo.HomeTotalVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpStatus;
+import org.springframework.security.access.prepost.PreAuthorize;
+import org.springframework.web.bind.annotation.*;
+
+@RestController
+@RequestMapping("/home")
+@Api(value = "首页", tags = "首页")
+public class HomeController extends BaseController {
+    @Autowired
+    private HomeService homeService;
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "查询用户待办事项数")
+    @GetMapping("/getUserToDoNum ")
+    @PreAuthorize("@pcs.hasPermissions('home/getUserToDoNum')")
+    public HttpResponseResult<HomeTotalVo> getUserToDoNum() {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        return succeed(homeService.getUserToDoNum(user.getId()));
+    }
+
+}

+ 107 - 32
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicAlbumController.java

@@ -1,12 +1,18 @@
 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 com.baomidou.mybatisplus.core.metadata.IPage;
+
 import javax.validation.Valid;
-import com.yonge.cooleshow.biz.dal.dto.MusicAlbumDto;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
+
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.common.page.PageInfo;
+import com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.*;
 import org.springframework.web.bind.annotation.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -17,6 +23,8 @@ import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 
+import java.util.Date;
+
 /**
  * 专辑表 web 控制层
  * @author yzp
@@ -41,9 +49,10 @@ public class MusicAlbumController extends BaseController {
             return failed("用户信息获取失败");
         }
 
-        //musicAlbum.setCreateBy(sysUser.getId());
-        //musicAlbum.setCreateTime(new Date());
-        musicAlbumService.save(musicAlbum);
+        musicAlbum.setCreateBy(sysUser.getId());
+        musicAlbum.setCreateTime(new Date());
+        musicAlbum.setAlbumStatus(StateEnum.STOP);
+        musicAlbumService.createMusicAlbum(musicAlbum);
         return succeed();
     }
 
@@ -70,39 +79,105 @@ public class MusicAlbumController extends BaseController {
             return failed("缺少ID");
         }
 
-        //musicAlbum.setUpdateBy(sysUser.getId());
-        //musicAlbum.setUpdateTime(new Date());
-        musicAlbumService.updateById(musicAlbum);
+        musicAlbum.setUpdateBy(sysUser.getId());
+        musicAlbum.setUpdateTime(new Date());
+        musicAlbumService.updateMusicAlbum(musicAlbum);
         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 MusicAlbumDto musicAlbumDto) {
+    public HttpResponseResult<PageInfo<MusicAlbumVo>> list(@RequestBody MusicAlbumSearch query) {
         SysUser sysUser = sysUserFeignService.queryUserInfo();
         if (sysUser == null) {
             return failed("用户信息获取失败");
         }
+        IPage<MusicAlbumVo> iPage = musicAlbumService.selectPage(Condition.getPage(query),query);
+        return succeed(Condition.pageInfo(iPage));
+    }
+
+    /**
+     * 启用/停用
+     */
+    @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(musicAlbumService.state(id));
+    }
+
+
+    /**
+     * 专辑详情
+     */
+    @PostMapping("/detail")
+    @ApiOperation(value = "专辑详情", consumes="application/json", produces="application/json")
+    public HttpResponseResult<AlbumDetailVo> detail(@Valid @RequestBody MusicAlbumDetailSearch query) {
+
+        query.setType(2);
+        AlbumDetailVo albumDetailVo = musicAlbumService.detail(Condition.getPage(query),query);
+        return succeed(albumDetailVo);
+    }
+
+
+    /**
+     * 专辑详情能新增的曲目列表
+     */
+    @PostMapping("/detail/canAddMusicSheet")
+    @ApiOperation(value = "专辑详情能新增的曲目列表")
+    public HttpResponseResult<AlbumDetailVo> detailAddMusicSheet(@Valid @RequestBody MusicAlbumDetailSearch query) {
+
+        query.setType(1);
+        query.setState(StateEnum.ENABLE);
+        AlbumDetailVo albumDetailVo = musicAlbumService.detail(Condition.getPage(query),query);
+        return succeed(albumDetailVo);
+    }
+
+
+    /**
+     * 专辑详情删除曲目列表
+     */
+    @PostMapping("/detail/delMusicSheet")
+    @ApiOperation(value = "专辑详情删除曲目列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "albumId",value = "专辑编号ID", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "musicSheetIds",value = "删除曲目编号,多个逗号隔开", required = true, dataType = "String")
+    })
+    public HttpResponseResult<Boolean> detailDelMusicSheet(Long albumId, String musicSheetIds) {
+        if (StringUtil.isEmpty(albumId)) {
+            return failed("专辑编号ID不能为空");
+        }
+        if (StringUtil.isEmpty(musicSheetIds)) {
+            return failed("曲目编号不能为空");
+        }
+        return status(musicAlbumService.delMusicSheet(albumId,musicSheetIds));
+    }
+
 
-        int pageNo = musicAlbumDto.getPageNo();
-        int pageSize = musicAlbumDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            LambdaQueryWrapper<MusicAlbum> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(MusicAlbum::getName , "k");
-
-            Page<MusicAlbum> page = new Page<>(pageNo,pageSize);
-            return succeed(musicAlbumService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
+
+    /**
+     * 专辑详情添加曲目列表
+     */
+    @PostMapping("/detail/addMusicSheet")
+    @ApiOperation(value = "专辑详情添加曲目列表")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "albumId",value = "专辑编号ID", required = true, dataType = "Integer"),
+            @ApiImplicitParam(name = "musicSheetIds",value = "添加曲目编号,多个逗号隔开", required = true, dataType = "String")
+    })
+    public HttpResponseResult<Boolean> detailAddMusicSheet(Long albumId, String musicSheetIds) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
         }
+        if (StringUtil.isEmpty(albumId)) {
+            return failed("专辑编号ID不能为空");
+        }
+        if (StringUtil.isEmpty(musicSheetIds)) {
+            return failed("曲目编号不能为空");
+        }
+        return status(musicAlbumService.addMusicSheet(albumId,musicSheetIds,sysUser.getId()));
     }
+
 }

+ 44 - 54
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,31 @@ 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.setUserId(0L);
             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 +120,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));
     }
 }

+ 57 - 40
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/MusicTagController.java

@@ -1,86 +1,103 @@
 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;
+import java.util.List;
 
 @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));
 	}
 
+
 	/**
+	 * 查询分页tree
+	 */
+	@GetMapping("/tree")
+	@ApiOperation(value = "查询标签树列表", notes = "传入musicTag")
+	public HttpResponseResult<List<MusicTagVo>> tree() {
+		List<MusicTagVo> treeList = musicTagService.selectMusicTagTree();
+		return succeed(treeList);
+	}
+
+    /**
 	 * 新增
 	 */
 	@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));
 	}
 }

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/StudentController.java

@@ -36,7 +36,7 @@ public class StudentController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入student")
-    public HttpResponseResult<PageInfo<StudentVo>> page(StudentSearch query) {
+    public HttpResponseResult<PageInfo<StudentVo>> page(@RequestBody StudentSearch query) {
 		IPage<StudentVo> pages = studentService.selectPage(Condition.getPage(query), query);
         return succeed(Condition.pageInfo(pages));
 	}

+ 9 - 8
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthEntryRecordController.java

@@ -13,9 +13,7 @@ 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 io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -33,9 +31,12 @@ public class TeacherAuthEntryRecordController extends BaseController {
     /**
      * 查询单条详情
      */
-    @GetMapping("/detail")
-    @ApiOperation(value = "详情", notes = "传入teacherAuthEntryRecord")
-    public HttpResponseResult<TeacherAuthEntryRecordVo> detail(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "详情", notes = "传入id")
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
+    })
+    public HttpResponseResult<TeacherAuthEntryRecordVo> detail(@PathVariable("id") Long id) {
         TeacherAuthEntryRecordVo detail = teacherAuthEntryRecordService.detail(id);
         return succeed(detail);
     }
@@ -45,8 +46,8 @@ public class TeacherAuthEntryRecordController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacherAuthEntryRecord")
-    public HttpResponseResult<PageInfo<TeacherAuthEntryRecordVo>> page(AuthEntryRecordSearch search, Query query) {
-        IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(Condition.getPage(query), search);
+    public HttpResponseResult<PageInfo<TeacherAuthEntryRecordVo>> page(@RequestBody AuthEntryRecordSearch search) {
+        IPage<TeacherAuthEntryRecordVo> pages = teacherAuthEntryRecordService.selectPage(Condition.getPage(search), search);
         return succeed(Condition.pageInfo(pages));
     }
 

+ 8 - 7
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherAuthMusicianRecordController.java

@@ -15,9 +15,7 @@ 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 io.swagger.annotations.*;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.web.bind.annotation.*;
 
@@ -38,8 +36,11 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 	 * 查询单条详情
 	 */
 	@GetMapping("/detail")
-	@ApiOperation(value = "详情", notes = "传入teacherAuthEntryRecord")
-	public HttpResponseResult<MusicianAuthEntryRecordVo> detail(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
+	@ApiOperation(value = "详情", notes = "传入id")
+	@ApiImplicitParams({
+			@ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
+	})
+	public HttpResponseResult<MusicianAuthEntryRecordVo> detail(@PathVariable("id") Long id) {
 		MusicianAuthEntryRecordVo detail = teacherAuthMusicianRecordService.detail(id);
 		return succeed(detail);
 	}
@@ -49,8 +50,8 @@ public class TeacherAuthMusicianRecordController extends BaseController {
 	 */
 	@PostMapping("/page")
 	@ApiOperation(value = "查询分页", notes = "传入AuthEntryRecordSearch")
-	public HttpResponseResult<PageInfo<MusicianAuthEntryRecordVo>> page(AuthEntryRecordSearch search, Query query) {
-		IPage<MusicianAuthEntryRecordVo> pages = teacherAuthMusicianRecordService.selectPage(Condition.getPage(query), search);
+	public HttpResponseResult<PageInfo<MusicianAuthEntryRecordVo>> page(@RequestBody AuthEntryRecordSearch query) {
+		IPage<MusicianAuthEntryRecordVo> pages = teacherAuthMusicianRecordService.selectPage(Condition.getPage(query), query);
 		return succeed(Condition.pageInfo(pages));
 	}
 

+ 5 - 5
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/TeacherController.java

@@ -34,12 +34,12 @@ public class TeacherController extends BaseController {
     /**
      * 查询单条
      */
-    @GetMapping("/detail/{userId}")
-    @ApiOperation(value = "详情", notes = "传入teacher")
+    @GetMapping("/detail/{id}")
+    @ApiOperation(value = "详情", notes = "传入id")
     @ApiImplicitParams({
-            @ApiImplicitParam(name = "userId", value = "userId", paramType = "path", dataType = "long", required = true),
+            @ApiImplicitParam(name = "id", value = "id", paramType = "path", dataType = "long", required = true),
     })
-    public HttpResponseResult<TeacherVo> detail(Long userId) {
+    public HttpResponseResult<TeacherVo> detail(@PathVariable("id") Long userId) {
         TeacherVo detail = teacherService.detail(userId);
         return succeed(detail);
     }
@@ -49,7 +49,7 @@ public class TeacherController extends BaseController {
      */
     @PostMapping("/page")
     @ApiOperation(value = "查询分页", notes = "传入teacher")
-    public HttpResponseResult<IPage<TeacherVo>> page(TeacherSearch query) {
+    public HttpResponseResult<IPage<TeacherVo>> page(@RequestBody TeacherSearch query) {
         IPage<TeacherVo> pages = teacherService.selectPage(Condition.getPage(query), query);
         return succeed(pages);
     }

+ 0 - 108
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupController.java

@@ -1,108 +0,0 @@
-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.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDto;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-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.VideoLessonGroup;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-
-/**
- * 视频课基本信息表 web 控制层
- * @author yzp
- * @date 2022-03-26 00:21:46
- * @version v1.0
- **/
-@RestController
-@RequestMapping("/video/lesson/group")
-@Api(tags = "视频课基本信息表 API接口")
-public class VideoLessonGroupController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-	@Autowired
-	private VideoLessonGroupService videoLessonGroupService;
-
-	@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();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        //videoLessonGroup.setCreateBy(sysUser.getId());
-        //videoLessonGroup.setCreateTime(new Date());
-        videoLessonGroupService.save(videoLessonGroup);
-        return succeed();
-    }
-
-    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping("/delete/{id}")
-    public Object delete(@PathVariable Long id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        videoLessonGroupService.removeById(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonGroup videoLessonGroup) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        if (videoLessonGroup.getId()==null){
-            return failed("缺少ID");
-        }
-
-        //videoLessonGroup.setUpdateBy(sysUser.getId());
-        //videoLessonGroup.setUpdateTime(new Date());
-        videoLessonGroupService.updateById(videoLessonGroup);
-        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();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        int pageNo = videoLessonGroupDto.getPageNo();
-        int pageSize = videoLessonGroupDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            LambdaQueryWrapper<VideoLessonGroup> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(VideoLessonGroup::getName , "k");
-
-            Page<VideoLessonGroup> page = new Page<>(pageNo,pageSize);
-            return succeed(videoLessonGroupService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
-        }
-    }
-}

+ 0 - 108
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupDetailController.java

@@ -1,108 +0,0 @@
-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.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDetailDto;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-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.VideoLessonGroupDetail;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
-import com.yonge.cooleshow.auth.api.entity.SysUser;
-import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
-
-/**
- * 视频课明细表 web 控制层
- * @author yzp
- * @date 2022-03-26 00:21:46
- * @version v1.0
- **/
-@RestController
-@RequestMapping("/video/lesson/group/detail")
-@Api(tags = "视频课明细表 API接口")
-public class VideoLessonGroupDetailController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
-
-	@Autowired
-	private VideoLessonGroupDetailService videoLessonGroupDetailService;
-
-	@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 VideoLessonGroupDetail videoLessonGroupDetail) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        //videoLessonGroupDetail.setCreateBy(sysUser.getId());
-        //videoLessonGroupDetail.setCreateTime(new Date());
-        videoLessonGroupDetailService.save(videoLessonGroupDetail);
-        return succeed();
-    }
-
-    @ApiOperation(value = "删除", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping("/delete/{id}")
-    public Object delete(@PathVariable Long id) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        videoLessonGroupDetailService.removeById(id);
-        return succeed();
-    }
-
-    @ApiOperation(value = "修改", httpMethod="POST", consumes="application/json", produces="application/json")
-    @PostMapping(value="/update", consumes="application/json", produces="application/json")
-    public HttpResponseResult<Object> update(@Valid @RequestBody VideoLessonGroupDetail videoLessonGroupDetail) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-        if (videoLessonGroupDetail.getId()==null){
-            return failed("缺少ID");
-        }
-
-        //videoLessonGroupDetail.setUpdateBy(sysUser.getId());
-        //videoLessonGroupDetail.setUpdateTime(new Date());
-        videoLessonGroupDetailService.updateById(videoLessonGroupDetail);
-        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 VideoLessonGroupDetailDto videoLessonGroupDetailDto) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        int pageNo = videoLessonGroupDetailDto.getPageNo();
-        int pageSize = videoLessonGroupDetailDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            LambdaQueryWrapper<VideoLessonGroupDetail> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            //lambdaQueryWrapper.like(VideoLessonGroupDetail::getName , "k");
-
-            Page<VideoLessonGroupDetail> page = new Page<>(pageNo,pageSize);
-            return succeed(videoLessonGroupDetailService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
-        }
-    }
-}

+ 17 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/SysConfigConstant.java

@@ -97,4 +97,21 @@ public interface SysConfigConstant {
     String auto_planning_course_max_week = "auto_planning_course_max_week";
 
 
+    /**
+     * 管理端默认头像
+     */
+    String DEFAULT_HEARD_ADMIN = "default_heard_admin";
+    /**
+     * 老师默认头像
+     */
+    String DEFAULT_HEARD_TEACHER = "default_heard_teacher";
+    /**
+     * 学生默认头像-男
+     */
+    String DEFAULT_HEARD_STUDENT_BOY = "default_heard_student_boy";
+    /**
+     * 学生默认头像-女
+     */
+    String DEFAULT_HEARD_STUDENT_GIRL = "default_heard_student_girl";
+
 }

+ 16 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicAlbumDao.java

@@ -1,14 +1,29 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * MusicAlbumDao数据库访问类
+ *
  * @author yzp
- * @date 2022-03-25 23:46:28
  * @version v1.0
+ * @date 2022-03-25 23:46:28
  **/
 public interface MusicAlbumDao extends BaseMapper<MusicAlbum> {
 
+    /**
+     * 专辑查询
+     *
+     * @param page  分页信息
+     * @param query 查询条件
+     * @return page
+     */
+    List<MusicAlbumVo> selectPage(@Param("page") IPage<MusicAlbumVo> page, @Param("query") MusicAlbumSearch query);
 }

+ 25 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -1,14 +1,37 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
 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.entity.MusicSheet;
+import com.yonge.cooleshow.biz.dal.vo.MusicSheetVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * MusicSheetDao数据库访问类
+ *
  * @author yzp
- * @date 2022-03-25 23:46:28
  * @version v1.0
+ * @date 2022-03-25 23:46:28
  **/
 public interface MusicSheetDao extends BaseMapper<MusicSheet> {
+    /**
+     * 分页查询
+     *
+     * @return com.yonge.cooleshow.biz.dal.vo.MusicSheetVo
+     */
+    List<MusicSheetVo> selectPage(@Param("page") IPage<MusicSheetVo> page, @Param("param") MusicSheetSearch query);
 
+    /**
+     * 分页查询专辑详情里的曲目
+     *
+     * @param page  分页
+     * @param query 查询条件
+     * @return
+     */
+    List<MusicSheet> selectAlbumDetailPage(@Param("page") IPage<MusicSheet> page,
+                                           @Param("param") MusicAlbumDetailSearch 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);
 }

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

@@ -42,4 +42,11 @@ public interface TeacherAuthEntryRecordDao extends BaseMapper<TeacherAuthEntryRe
 	 * @return: com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord
 	 */
 	TeacherAuthEntryRecordVo getLastRecordByUserId(@Param("userId") Long userId);
+	/***
+	 * 查询待处理的记录数
+	 * @author liweifan
+	 * @updateTime 2022/3/30 18:35
+	 * @return: java.lang.Integer
+	 */
+	Integer getUserToDoNum();
 }

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

@@ -29,4 +29,11 @@ public interface TeacherAuthMusicianRecordDao extends BaseMapper<TeacherAuthMusi
 	List<MusicianAuthEntryRecordVo> selectPage(IPage page, AuthEntryRecordSearch authEntryRecordSearch);
 
     TeacherAuthMusicianRecord getLastRecordByUserId(@Param("userId") Long userId);
+	/***
+	 * 查询待处理的记录数
+	 * @author liweifan
+	 * @updateTime 2022/3/30 18:45
+	 * @return: java.lang.Integer
+	 */
+    Integer getUserToDoNum();
 }

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

@@ -1,7 +1,14 @@
 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.vo.VideoLessonGroupUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * VideoLessonGroupDao数据库访问类
@@ -10,5 +17,9 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
+    //查询视频课组
+    List<VideoLessonGroupVo> selectPage(IPage page,@Param("param")  VideoLessonGroupSearch query);
 
+    //修改视频课组
+    void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
 }

+ 20 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java

@@ -1,7 +1,14 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
 
 /**
  * VideoLessonGroupDetailDao数据库访问类
@@ -10,5 +17,18 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface VideoLessonGroupDetailDao extends BaseMapper<VideoLessonGroupDetail> {
+    //查询视频课
+    List<VideoLessonGroupDetail> selectPage(IPage page,@Param("param") VideoLessonSearch query);
+
+    //根据组id查询购买用户
+    List<VideoLessonPurchaseStudent> selectPageStudent(IPage page,@Param("param")  VideoLessonSearch query);
+
+    //新增视频课
+    void insertVideoLesson(List<VideoLessonGroupDetail> list);
+
+    //修改视频课
+    void updateDetail(VideoLessonGroupDetailUpVo detailUpVo);
 
+    //根据组id删除视频课
+    void deleteByGroupId(Long groupId);
 }

+ 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;
     }
 

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

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * Description 专辑详情下的曲目查询
+ *
+ * @author liujunchi
+ * @date 2022-03-31
+ */
+@ApiModel(value = "MusicAlbumDetailSearch", description = "专辑详情查询")
+public class MusicAlbumDetailSearch extends MusicSheetSearch {
+
+    @NotNull(message = "专辑编号ID不能为空")
+    @ApiModelProperty("专辑编号ID")
+    private Long id;
+
+    /**
+     * 1:新增曲目,2:已有曲目
+     */
+    @ApiModelProperty(hidden = true,value = "1:新增曲目,2:已有曲目1:新增曲目,2:已有曲目")
+    private Integer type;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+}

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

@@ -0,0 +1,55 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+/**
+ * Description 专辑查询
+ *
+ * @author: liujunchi
+ * @date: 2022-03-31
+ */
+@ApiModel(value = "MusicAlbumSearch", description = "专辑列表查询")
+public class MusicAlbumSearch extends Query {
+
+    @ApiModelProperty("专辑编号/名称")
+    private String idAndName;
+
+    @ApiModelProperty("标签id,多个逗号隔开")
+    private String albumTagIds;
+
+    @ApiModelProperty(hidden = true)
+    private List<Long> albumTagIdList;
+
+    public String getIdAndName() {
+        return idAndName;
+    }
+
+    public void setIdAndName(String idAndName) {
+        this.idAndName = idAndName;
+    }
+
+    public String getAlbumTagIds() {
+        return albumTagIds;
+    }
+
+    public void setAlbumTagIds(String albumTagIds) {
+        this.albumTagIds = albumTagIds;
+        if (StringUtils.isNotBlank(albumTagIds)) {
+            this.albumTagIdList = StringUtil.toLongList(albumTagIds);
+        }
+    }
+
+    public List<Long> getAlbumTagIdList() {
+        return albumTagIdList;
+    }
+
+    public void setAlbumTagIdList(List<Long> albumTagIdList) {
+        this.albumTagIdList = albumTagIdList;
+    }
+}

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

@@ -0,0 +1,92 @@
+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 com.yonge.toolset.utils.string.StringUtil;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.StringUtils;
+
+import java.util.List;
+
+/**
+ * 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(hidden = true)
+    private List<Long> musicTagIdList;
+
+    @ApiModelProperty("声部id(多个逗号隔开)")
+    private String subjectIds;
+
+    @ApiModelProperty(hidden = true)
+    private List<Long> subjectIdList;
+
+    @ApiModelProperty("曲目状态(0:停用,1:启用))")
+    private StateEnum state;
+
+    public String getIdAndName() {
+        return idAndName;
+    }
+
+    public void setIdAndName(String idAndName) {
+        this.idAndName = idAndName;
+    }
+
+    public List<Long> getMusicTagIdList() {
+        return musicTagIdList;
+    }
+
+    public void setMusicTagIdList(List<Long> musicTagIdList) {
+        this.musicTagIdList = musicTagIdList;
+    }
+
+    public List<Long> getSubjectIdList() {
+        return this.subjectIdList;
+    }
+
+    public void setSubjectIdList(List<Long> subjectIdList) {
+        this.subjectIdList = subjectIdList;
+    }
+
+    public String getMusicTagIds() {
+        return musicTagIds;
+    }
+
+    public void setMusicTagIds(String musicTagIds) {
+        this.musicTagIds = musicTagIds;
+        if (StringUtils.isNotBlank(musicTagIds)) {
+            this.musicTagIdList = StringUtil.toLongList(musicTagIds);
+        }
+    }
+
+    public String getSubjectIds() {
+        return subjectIds;
+    }
+
+    public void setSubjectIds(String subjectIds) {
+        this.subjectIds = subjectIds;
+        if (StringUtils.isNotBlank(subjectIds)) {
+            this.subjectIdList = StringUtil.toLongList(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;
+	}
 }

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

@@ -0,0 +1,23 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.biz.dal.support.Query;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author: cy
+ * @date: 2022/3/30 11:32
+ */
+@ApiModel(value = "VideoLessonGroupSearch", description = "视频课组列表查询")
+public class VideoLessonGroupSearch extends Query {
+    @ApiModelProperty(value = "审核状态(0:待审核 1:通过 2:未通过)")
+    private Integer auditStatus;
+
+    public Integer getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Integer auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+}

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

@@ -0,0 +1,23 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.biz.dal.support.Query;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @author: cy
+ * @date: 2022/3/30 11:32
+ */
+@ApiModel(value = "VideoLessonGroupSearch", description = "视频课组列表查询")
+public class VideoLessonSearch extends Query {
+    @ApiModelProperty(value = "视频组id")
+    private Long videoLessonGroupId;
+
+    public Long getVideoLessonGroupId() {
+        return videoLessonGroupId;
+    }
+
+    public void setVideoLessonGroupId(Long videoLessonGroupId) {
+        this.videoLessonGroupId = videoLessonGroupId;
+    }
+}

+ 21 - 14
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicAlbum.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
@@ -7,7 +9,8 @@ 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;
 
 /**
  * 专辑表
@@ -23,24 +26,28 @@ public class MusicAlbum extends BaseEntity {
     private Long id;  //主键ID
 
     @TableField("album_name_")
-    @ApiModelProperty(value = "专辑名称")
+	@NotBlank(message = "专辑名称不能为空 ")
+    @ApiModelProperty(value = "专辑名称",required = true)
     private String albumName;  //专辑名称
 
     @TableField("album_desc_")
-    @ApiModelProperty(value = "专辑简介")
+	@NotBlank(message = "专辑简介不能为空 ")
+    @ApiModelProperty(value = "专辑简介",required = true)
     private String albumDesc;  //专辑简介
 
     @TableField("album_tag_")
-    @ApiModelProperty(value = "专辑标签(多个标签以逗号分开)")
+	@NotBlank(message = "专辑标签不能为空 ")
+    @ApiModelProperty(value = "专辑标签(多个标签以逗号分开)",required = true)
     private String albumTag;  //专辑标签(多个标签以逗号分开)
 
     @TableField("album_cover_url_")
-    @ApiModelProperty(value = "专辑封面图片URL")
+	@NotBlank(message = "专辑封面图片不能为空 ")
+    @ApiModelProperty(value = "专辑封面图片URL",required = true)
     private String albumCoverUrl;  //专辑封面图片URL
 
     @TableField("album_status_")
     @ApiModelProperty(value = "专辑状态(1:启用;0:停用)")
-    private Integer albumStatus;  //专辑状态(1:启用;0:停用)
+    private StateEnum albumStatus;  //专辑状态(1:启用;0:停用)
 
     @TableField("sort_number_")
     @ApiModelProperty(value = "排序号")
@@ -48,11 +55,11 @@ public class MusicAlbum extends BaseEntity {
 
     @TableField("hot_flag_")
     @ApiModelProperty(value = "是否热门专辑(1:是;0:否)")
-    private Integer hotFlag;  //是否热门专辑(1:是;0:否)
+    private YesOrNoEnum hotFlag;  //是否热门专辑(1:是;0:否)
 
     @TableField("top_flag_")
     @ApiModelProperty(value = "是否置顶(1:是;0:否)")
-    private Integer topFlag;  //是否置顶(1:是;0:否)
+    private YesOrNoEnum topFlag;  //是否置顶(1:是;0:否)
 
     @TableField("create_time_")
     @ApiModelProperty(value = "创建时间")
@@ -116,12 +123,12 @@ public class MusicAlbum extends BaseEntity {
 	    return this.albumCoverUrl;
 	}
 
-	public MusicAlbum setAlbumStatus(Integer albumStatus) {
+	public MusicAlbum setAlbumStatus(StateEnum albumStatus) {
 	    this.albumStatus = albumStatus;
 	    return this;
 	}
 
-	public Integer getAlbumStatus() {
+	public StateEnum getAlbumStatus() {
 	    return this.albumStatus;
 	}
 
@@ -134,21 +141,21 @@ public class MusicAlbum extends BaseEntity {
 	    return this.sortNumber;
 	}
 
-	public MusicAlbum setHotFlag(Integer hotFlag) {
+	public MusicAlbum setHotFlag(YesOrNoEnum hotFlag) {
 	    this.hotFlag = hotFlag;
 	    return this;
 	}
 
-	public Integer getHotFlag() {
+	public YesOrNoEnum getHotFlag() {
 	    return this.hotFlag;
 	}
 
-	public MusicAlbum setTopFlag(Integer topFlag) {
+	public MusicAlbum setTopFlag(YesOrNoEnum topFlag) {
 	    this.topFlag = topFlag;
 	    return this;
 	}
 
-	public Integer getTopFlag() {
+	public YesOrNoEnum getTopFlag() {
 	    return this.topFlag;
 	}
 

+ 110 - 124
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/MusicSheet.java

@@ -1,16 +1,20 @@
 package com.yonge.cooleshow.biz.dal.entity;
 
-import com.yonge.cooleshow.common.entity.BaseEntity;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
+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.enums.YesOrNoEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang3.builder.ToStringBuilder;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import javax.validation.constraints.Size;
+import java.io.Serializable;
+import java.math.BigDecimal;
 import java.util.Date;
 
 /**
@@ -20,7 +24,7 @@ import java.util.Date;
  * @version v1.0
  **/
 @ApiModel(value = "music_sheet-曲谱表")
-public class MusicSheet extends BaseEntity {
+public class MusicSheet implements Serializable {
 
     @TableId(value = "id_", type = IdType.AUTO)
     @ApiModelProperty(value = "主键id")
@@ -63,20 +67,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 +93,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 +115,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 = "创建时间")
@@ -128,227 +137,204 @@ public class MusicSheet extends BaseEntity {
     @ApiModelProperty(value = "备注")
     private String remark;  //备注,填写未通过审核的原因
 
-
-	public MusicSheet setId(Long id) {
-	    this.id = id;
-	    return this;
-	}
-
 	public Long getId() {
-	    return this.id;
+		return id;
 	}
 
-	public MusicSheet setMusicSheetName(String musicSheetName) {
-	    this.musicSheetName = musicSheetName;
-	    return this;
+	public void setId(Long id) {
+		this.id = id;
 	}
 
 	public String getMusicSheetName() {
-	    return this.musicSheetName;
+		return musicSheetName;
 	}
 
-	public MusicSheet setUserId(Long userId) {
-	    this.userId = userId;
-	    return this;
+	public void setMusicSheetName(String musicSheetName) {
+		this.musicSheetName = musicSheetName;
 	}
 
 	public Long getUserId() {
-	    return this.userId;
+		return userId;
 	}
 
-	public MusicSheet setComposer(String composer) {
-	    this.composer = composer;
-	    return this;
+	public void setUserId(Long userId) {
+		this.userId = userId;
 	}
 
 	public String getComposer() {
-	    return this.composer;
+		return composer;
 	}
 
-	public MusicSheet setMusicSubject(String musicSubject) {
-	    this.musicSubject = musicSubject;
-	    return this;
+	public void setComposer(String composer) {
+		this.composer = composer;
 	}
 
 	public String getMusicSubject() {
-	    return this.musicSubject;
+		return musicSubject;
 	}
 
-	public MusicSheet setAudioType(String audioType) {
-	    this.audioType = audioType;
-	    return this;
+	public void setMusicSubject(String musicSubject) {
+		this.musicSubject = musicSubject;
 	}
 
 	public String getAudioType() {
-	    return this.audioType;
+		return audioType;
 	}
 
-	public MusicSheet setMusicTag(String musicTag) {
-	    this.musicTag = musicTag;
-	    return this;
+	public void setAudioType(String audioType) {
+		this.audioType = audioType;
 	}
 
 	public String getMusicTag() {
-	    return this.musicTag;
+		return musicTag;
 	}
 
-	public MusicSheet setPlaySpeed(Integer playSpeed) {
-	    this.playSpeed = playSpeed;
-	    return this;
+	public void setMusicTag(String musicTag) {
+		this.musicTag = musicTag;
 	}
 
 	public Integer getPlaySpeed() {
-	    return this.playSpeed;
+		return playSpeed;
 	}
 
-	public MusicSheet setCanEvaluate(Integer canEvaluate) {
-	    this.canEvaluate = canEvaluate;
-	    return this;
+	public void setPlaySpeed(Integer playSpeed) {
+		this.playSpeed = playSpeed;
 	}
 
-	public Integer getCanEvaluate() {
-	    return this.canEvaluate;
+	public YesOrNoEnum getCanEvaluate() {
+		return canEvaluate;
 	}
 
-	public MusicSheet setShowFingering(Integer showFingering) {
-	    this.showFingering = showFingering;
-	    return this;
+	public void setCanEvaluate(YesOrNoEnum canEvaluate) {
+		this.canEvaluate = canEvaluate;
 	}
 
-	public Integer getShowFingering() {
-	    return this.showFingering;
+	public YesOrNoEnum getShowFingering() {
+		return showFingering;
 	}
 
-	public MusicSheet setChargeType(Integer chargeType) {
-	    this.chargeType = chargeType;
-	    return this;
+	public void setShowFingering(YesOrNoEnum showFingering) {
+		this.showFingering = showFingering;
 	}
 
-	public Integer getChargeType() {
-	    return this.chargeType;
+	public ChargeTypeEnum getChargeType() {
+		return chargeType;
 	}
 
-	public MusicSheet setAuditStatus(Integer auditStatus) {
-	    this.auditStatus = auditStatus;
-	    return this;
+	public void setChargeType(ChargeTypeEnum chargeType) {
+		this.chargeType = chargeType;
 	}
 
-	public Integer getAuditStatus() {
-	    return this.auditStatus;
+	public StateEnum getState() {
+		return state;
 	}
 
-	public MusicSheet setSortNumber(Integer sortNumber) {
-	    this.sortNumber = sortNumber;
-	    return this;
+	public void setState(StateEnum state) {
+		this.state = state;
+	}
+
+	public AuditEnum getAuditStatus() {
+		return auditStatus;
+	}
+
+	public void setAuditStatus(AuditEnum auditStatus) {
+		this.auditStatus = auditStatus;
 	}
 
 	public Integer getSortNumber() {
-	    return this.sortNumber;
+		return sortNumber;
 	}
 
-	public MusicSheet setTopFlag(Integer topFlag) {
-	    this.topFlag = topFlag;
-	    return this;
+	public void setSortNumber(Integer sortNumber) {
+		this.sortNumber = sortNumber;
 	}
 
-	public Integer getTopFlag() {
-	    return this.topFlag;
+	public YesOrNoEnum getTopFlag() {
+		return topFlag;
 	}
 
-	public MusicSheet setHotFlag(Integer hotFlag) {
-	    this.hotFlag = hotFlag;
-	    return this;
+	public void setTopFlag(YesOrNoEnum topFlag) {
+		this.topFlag = topFlag;
 	}
 
-	public Integer getHotFlag() {
-	    return this.hotFlag;
+	public YesOrNoEnum getHotFlag() {
+		return hotFlag;
 	}
 
-	public MusicSheet setMusicPrice(java.math.BigDecimal musicPrice) {
-	    this.musicPrice = musicPrice;
-	    return this;
+	public void setHotFlag(YesOrNoEnum hotFlag) {
+		this.hotFlag = hotFlag;
 	}
 
-	public java.math.BigDecimal getMusicPrice() {
-	    return this.musicPrice;
+	public BigDecimal getMusicPrice() {
+		return musicPrice;
 	}
 
-	public MusicSheet setAudioFileUrl(String audioFileUrl) {
-	    this.audioFileUrl = audioFileUrl;
-	    return this;
+	public void setMusicPrice(BigDecimal musicPrice) {
+		this.musicPrice = musicPrice;
 	}
 
 	public String getAudioFileUrl() {
-	    return this.audioFileUrl;
+		return audioFileUrl;
 	}
 
-	public MusicSheet setXmlFileUrl(String xmlFileUrl) {
-	    this.xmlFileUrl = xmlFileUrl;
-	    return this;
+	public void setAudioFileUrl(String audioFileUrl) {
+		this.audioFileUrl = audioFileUrl;
 	}
 
 	public String getXmlFileUrl() {
-	    return this.xmlFileUrl;
+		return xmlFileUrl;
 	}
 
-	public MusicSheet setHasBeat(Integer hasBeat) {
-	    this.hasBeat = hasBeat;
-	    return this;
+	public void setXmlFileUrl(String xmlFileUrl) {
+		this.xmlFileUrl = xmlFileUrl;
 	}
 
-	public Integer getHasBeat() {
-	    return this.hasBeat;
+	public YesOrNoEnum getHasBeat() {
+		return hasBeat;
 	}
 
-	public MusicSheet setCreateTime(java.util.Date createTime) {
-	    this.createTime = createTime;
-	    return this;
+	public void setHasBeat(YesOrNoEnum hasBeat) {
+		this.hasBeat = hasBeat;
 	}
 
-	public java.util.Date getCreateTime() {
-	    return this.createTime;
+	public Date getCreateTime() {
+		return createTime;
 	}
 
-	public MusicSheet setCreateBy(Long createBy) {
-	    this.createBy = createBy;
-	    return this;
+	public void setCreateTime(Date createTime) {
+		this.createTime = createTime;
 	}
 
 	public Long getCreateBy() {
-	    return this.createBy;
+		return createBy;
 	}
 
-	public MusicSheet setUpdateTime(java.util.Date updateTime) {
-	    this.updateTime = updateTime;
-	    return this;
+	public void setCreateBy(Long createBy) {
+		this.createBy = createBy;
 	}
 
-	public java.util.Date getUpdateTime() {
-	    return this.updateTime;
+	public Date getUpdateTime() {
+		return updateTime;
 	}
 
-	public MusicSheet setUpdateBy(Long updateBy) {
-	    this.updateBy = updateBy;
-	    return this;
+	public void setUpdateTime(Date updateTime) {
+		this.updateTime = updateTime;
 	}
 
 	public Long getUpdateBy() {
-	    return this.updateBy;
+		return updateBy;
 	}
 
-	public MusicSheet setRemark(String remark) {
-	    this.remark = remark;
-	    return this;
+	public void setUpdateBy(Long updateBy) {
+		this.updateBy = updateBy;
 	}
 
 	public String getRemark() {
-	    return this.remark;
+		return remark;
 	}
 
-
-    @Override
-    public String toString() {
-        return ToStringBuilder.reflectionToString(this);
-    }
+	public void setRemark(String remark) {
+		this.remark = remark;
+	}
 
 }

+ 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;
+    }
 }

+ 10 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/SysConfig.java

@@ -32,6 +32,8 @@ public class SysConfig extends BaseEntity {
 	/** 修改时间 */
 	private java.util.Date modifyOn;
 	
+	private Long modifyBy;
+	
 	@ApiModelProperty(value = "消息组", required = true)
 	private String group;
 	
@@ -99,6 +101,14 @@ public class SysConfig extends BaseEntity {
 		this.group = group;
 	}
 
+	public Long getModifyBy() {
+		return modifyBy;
+	}
+
+	public void setModifyBy(Long modifyBy) {
+		this.modifyBy = modifyBy;
+	}
+
 	@Override
 	public String toString() {
 		return ToStringBuilder.reflectionToString(this);

+ 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;

+ 11 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.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,19 +25,23 @@ public class VideoLessonGroupDetail extends BaseEntity {
     private Long id;  //主键ID
 
     @TableField("video_lesson_group_id_")
-    @ApiModelProperty(value = "课程组ID")
+    @ApiModelProperty(value = "课程组ID", required = true)
+    @NotNull(message = "课程组id不能为空;")
     private Long videoLessonGroupId;  //课程组ID
 
     @TableField("video_title_")
-    @ApiModelProperty(value = "视频标题")
+    @ApiModelProperty(value = "视频标题", required = true)
+    @NotBlank(message = "课程标题不能为空;")
     private String videoTitle;  //视频标题
 
     @TableField("video_content_")
-    @ApiModelProperty(value = "视频内容")
+    @ApiModelProperty(value = "视频内容", required = true)
+    @NotBlank(message = "课程内容不能为空;")
     private String videoContent;  //视频内容
 
     @TableField("video_url_")
-    @ApiModelProperty(value = "视频文件URL")
+    @ApiModelProperty(value = "视频文件URL", required = true)
+    @NotBlank(message = "课程视频URL不能为空;")
     private String videoUrl;  //视频文件URL
 
     @TableField("cover_url_")

+ 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;
+    }
+}

+ 21 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/AlbumMusicRelateService.java

@@ -3,6 +3,8 @@ package com.yonge.cooleshow.biz.dal.service;
 import com.yonge.cooleshow.biz.dal.entity.AlbumMusicRelate;
 import com.baomidou.mybatisplus.extension.service.IService;
 
+import java.util.List;
+
 /**
  * AlbumMusicRelateService服务类
  * @author yzp
@@ -11,4 +13,23 @@ import com.baomidou.mybatisplus.extension.service.IService;
  **/
 public interface AlbumMusicRelateService extends IService<AlbumMusicRelate> {
 
+    /**
+     * 删除专辑关联曲目关系
+     *
+     * @param albumId 专辑第
+     * @param musicSheetIdList 曲目id集合
+     * @return boolean
+     */
+    boolean delMusicSheet(Long albumId, List<Long> musicSheetIdList);
+
+    /**
+     * 添加专辑关联曲目关系
+     *
+     * @param albumId 专辑第
+     * @param musicSheetIdList 曲目id集合
+     * @param userId 操作用户id
+     * @return boolean
+     */
+    boolean addMusicSheet(Long albumId, List<Long> musicSheetIdList, Long userId);
+
 }

+ 18 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/HomeService.java

@@ -0,0 +1,18 @@
+package com.yonge.cooleshow.biz.dal.service;
+
+import com.yonge.cooleshow.biz.dal.vo.HomeTotalVo;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/30 18:07
+ */
+public interface HomeService {
+    /***
+     * 查询首页待办事项
+     * @author liweifan
+     * @param: id
+     * @updateTime 2022/3/30 18:10
+     * @return: com.yonge.cooleshow.biz.dal.vo.HomeTotalVo
+     */
+    HomeTotalVo getUserToDoNum(Long id);
+}

+ 64 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicAlbumService.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.MusicAlbumDetailSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
 
 /**
  * MusicAlbumService服务类
@@ -11,4 +17,62 @@ import com.baomidou.mybatisplus.extension.service.IService;
  **/
 public interface MusicAlbumService extends IService<MusicAlbum> {
 
+    /**
+     * 专辑查询
+     *
+     * @param page 分页信息
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<MusicAlbumVo> selectPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query);
+
+    /**
+     * 启用/停用 专辑
+     *
+     * @param id 专辑id
+     * @return
+     */
+    boolean state(Long id);
+
+    /**
+     * 专辑详情信息
+     *
+     * @param page 分页信息
+     * @param query 查询条件
+     * @return AlbumDetailVo
+     */
+    AlbumDetailVo detail(IPage<MusicSheet> page, MusicAlbumDetailSearch query);
+
+    /**
+     * 删除专辑详情关联曲目
+     *
+     * @param albumId 专辑id
+     * @param musicSheetIds 曲目id
+     * @return boolean
+     */
+    boolean delMusicSheet(Long albumId, String musicSheetIds);
+
+    /**
+     * 添加专辑详情关联曲目
+     *
+     * @param albumId 专辑id
+     * @param musicSheetIds 曲目id
+     * @param userId 操作用户id
+     * @return boolean
+     */
+    boolean addMusicSheet(Long albumId, String musicSheetIds, Long userId);
+
+    /**
+     * 创建专辑
+     *
+     * @param musicAlbum 专辑对象
+     */
+    void createMusicAlbum(MusicAlbum musicAlbum);
+
+    /**
+     * 修改专辑
+     *
+     * @param musicAlbum 专辑对象
+     */
+    void updateMusicAlbum(MusicAlbum musicAlbum);
 }

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

@@ -1,9 +1,13 @@
 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.MusicAlbumDetailSearch;
+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 +23,30 @@ 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);
+
+    /**
+     * 获取专辑详情曲目信息
+     *
+     * @param page 分页信息
+     * @param query 查询条件
+     * @return MusicSheet
+     */
+    IPage<MusicSheet> selectAlbumDetailPage(IPage<MusicSheet> page, MusicAlbumDetailSearch query);
 }

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

@@ -2,9 +2,12 @@ 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;
+
+import java.util.List;
 
 /**
  * 音乐标签表 服务类
@@ -26,4 +29,41 @@ 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);
+
+	/**
+	 * 获取标签树
+	 *
+	 * @return list
+	 */
+    List<MusicTagVo> selectMusicTagTree();
 }

+ 8 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthEntryRecordService.java

@@ -9,6 +9,7 @@ import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord;
 import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.models.auth.In;
 
 /**
  * 老师入驻审核表 服务类
@@ -56,5 +57,11 @@ public interface TeacherAuthEntryRecordService extends IService<TeacherAuthEntry
      * @return: com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord
      */
     TeacherAuthEntryRecordVo getLastRecordByUserId(Long userId);
-
+    /***
+     * 查询待处理的记录数
+     * @author liweifan
+     * @updateTime 2022/3/30 18:33
+     * @return: java.lang.Integer
+     */
+    Integer getUserToDoNum();
 }

+ 7 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthMusicianRecordService.java

@@ -66,5 +66,11 @@ public interface TeacherAuthMusicianRecordService extends IService<TeacherAuthMu
      * @return: com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord
      */
     TeacherAuthMusicianRecord getLastRecordByUserId(Long userId);
-
+    /***
+     * 查询待处理的记录数
+     * @author liweifan
+     * @updateTime 2022/3/30 18:41
+     * @return: java.lang.Integer
+     */
+    Integer getUserToDoNum();
 }

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

@@ -1,7 +1,14 @@
 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.VideoLessonSearch;
 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 java.util.List;
 
 /**
  * VideoLessonGroupDetailService服务类
@@ -10,5 +17,13 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @version v1.0
  **/
 public interface VideoLessonGroupDetailService extends IService<VideoLessonGroupDetail> {
+    IPage<VideoLessonGroupDetail> selectPage(IPage<VideoLessonGroupDetail> page, VideoLessonSearch query);
+
+    IPage<VideoLessonPurchaseStudent> selectPageStudent(IPage<VideoLessonPurchaseStudent> page, VideoLessonSearch query);
+
+    void insertVideoLesson(List<VideoLessonGroupDetail> videoLessonList, SysUser sysUser);
+
+    void updateDetail(VideoLessonGroupDetailUpVo detailUpVo, SysUser sysUser);
 
+    void deleteDetail(Long id);
 }

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

@@ -1,7 +1,11 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+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.extension.service.IService;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 
 /**
  * VideoLessonGroupService服务类
@@ -10,5 +14,9 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @version v1.0
  **/
 public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
+    IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query);
 
+    void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
+
+    void deleteGroup(Long id);
 }

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.baomidou.mybatisplus.extension.service.additional.query.impl.LambdaQueryChainWrapper;
 import com.yonge.cooleshow.biz.dal.entity.AlbumMusicRelate;
 import com.yonge.cooleshow.biz.dal.dao.AlbumMusicRelateDao;
 import com.yonge.cooleshow.biz.dal.service.AlbumMusicRelateService;
@@ -8,6 +9,11 @@ import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.util.CollectionUtils;
+
+import java.util.Date;
+import java.util.List;
+import java.util.stream.Collectors;
 
 /**
  * AlbumMusicRelateService服务实现类
@@ -26,4 +32,40 @@ public class AlbumMusicRelateServiceImpl extends ServiceImpl<AlbumMusicRelateDao
     public AlbumMusicRelateDao getDao() {
         return albumMusicRelateDao;
     }
+
+    @Override
+    public boolean delMusicSheet(Long albumId, List<Long> musicSheetIdList) {
+        List<AlbumMusicRelate> list = this.lambdaQuery()
+                                          .eq(AlbumMusicRelate::getAlbumId, albumId)
+                                          .in(AlbumMusicRelate::getMusicSheetId, musicSheetIdList)
+                                          .list();
+        if (!CollectionUtils.isEmpty(list)) {
+            List<Long> albumMusicRelateIdList = list.stream().map(AlbumMusicRelate::getId).collect(Collectors.toList());
+            return this.removeByIds(albumMusicRelateIdList);
+        }
+        return true;
+    }
+
+    @Override
+    public boolean addMusicSheet(Long albumId, List<Long> musicSheetIdList, Long userId) {
+        List<AlbumMusicRelate> list = this.lambdaQuery()
+                                          .eq(AlbumMusicRelate::getAlbumId, albumId)
+                                          .in(AlbumMusicRelate::getMusicSheetId, musicSheetIdList)
+                                          .list();
+        List<Long> musicSheetIds = list.stream().map(AlbumMusicRelate::getMusicSheetId).collect(Collectors.toList());
+
+        // 去除已有的曲目
+        List<AlbumMusicRelate> albumMusicRelateList = musicSheetIdList.stream()
+                                                                      .filter(id -> !musicSheetIds.contains(id))
+                                                                      .map(id -> {
+            AlbumMusicRelate albumMusicRelate = new AlbumMusicRelate();
+            albumMusicRelate.setAlbumId(albumId);
+            albumMusicRelate.setMusicSheetId(id);
+            albumMusicRelate.setCreateTime(new Date());
+            albumMusicRelate.setCreateBy(userId);
+            return albumMusicRelate;
+        }).collect(Collectors.toList());
+
+        return this.saveBatch(albumMusicRelateList);
+    }
 }

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

@@ -0,0 +1,35 @@
+package com.yonge.cooleshow.biz.dal.service.impl;
+
+import com.yonge.cooleshow.biz.dal.service.HomeService;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
+import com.yonge.cooleshow.biz.dal.service.TeacherAuthMusicianRecordService;
+import com.yonge.cooleshow.biz.dal.vo.HomeTotalVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/30 18:08
+ */
+@Service
+public class HomeServiceImpl implements HomeService {
+    @Autowired
+    private TeacherAuthEntryRecordService entryRecordService;
+    @Autowired
+    private TeacherAuthMusicianRecordService musicianRecordService;
+    @Autowired
+    private MusicSheetService musicSheetService;
+    @Override
+    public HomeTotalVo getUserToDoNum(Long id) {
+        Integer entryNum = entryRecordService.getUserToDoNum();
+        Integer musicianNum = musicianRecordService.getUserToDoNum();
+
+        HomeTotalVo homeTotalVo = new HomeTotalVo();
+        homeTotalVo.setEntryNum(entryNum);
+        homeTotalVo.setMusicianNum(musicianNum);
+        //todo 待审乐谱
+        homeTotalVo.setMusicNum(0);
+        return homeTotalVo;
+    }
+}

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

@@ -1,14 +1,31 @@
 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.yonge.cooleshow.biz.dal.dto.search.MusicAlbumDetailSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.MusicAlbumSearch;
 import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
 import com.yonge.cooleshow.biz.dal.dao.MusicAlbumDao;
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import com.yonge.cooleshow.biz.dal.entity.MusicTag;
+import com.yonge.cooleshow.biz.dal.enums.StateEnum;
+import com.yonge.cooleshow.biz.dal.enums.YesOrNoEnum;
+import com.yonge.cooleshow.biz.dal.service.AlbumMusicRelateService;
 import com.yonge.cooleshow.biz.dal.service.MusicAlbumService;
+import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.vo.AlbumDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo;
+import com.yonge.cooleshow.common.exception.BizException;
+import com.yonge.toolset.utils.string.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 
+import java.util.List;
+
 /**
  * MusicAlbumService服务实现类
  * @author yzp
@@ -23,7 +40,92 @@ public class MusicAlbumServiceImpl extends ServiceImpl<MusicAlbumDao,MusicAlbum>
     @Autowired
     private MusicAlbumDao musicAlbumDao;
 
+    @Autowired
+    private AlbumMusicRelateService albumMusicRelateService;
+
+    @Autowired
+    private MusicSheetService musicSheetService;
+
     public MusicAlbumDao getDao() {
         return musicAlbumDao;
     }
+
+    @Override
+    public IPage<MusicAlbumVo> selectPage(IPage<MusicAlbumVo> page, MusicAlbumSearch query) {
+        return page.setRecords(baseMapper.selectPage(page,query));
+    }
+
+    @Override
+    public boolean state(Long id) {
+        MusicAlbum musicAlbum = this.getById(id);
+        if (musicAlbum == null) {
+            throw  new BizException("未找到专辑信息");
+        }
+        if (StateEnum.STOP.getCode().equals(musicAlbum.getAlbumStatus().getCode())) {
+            musicAlbum.setAlbumStatus(StateEnum.ENABLE);
+        } else {
+            musicAlbum.setAlbumStatus(StateEnum.STOP);
+        }
+        return this.updateById(musicAlbum);
+    }
+
+    @Override
+    public AlbumDetailVo detail(IPage<MusicSheet> page, MusicAlbumDetailSearch query) {
+        MusicAlbum musicAlbum = this.getById(query.getId());
+        if (musicAlbum == null) {
+            throw  new BizException("未找到专辑信息");
+        }
+        AlbumDetailVo albumDetailVo = new AlbumDetailVo();
+        albumDetailVo.setId(musicAlbum.getId());
+        albumDetailVo.setAlbumName(musicAlbum.getAlbumName());
+
+        IPage<MusicSheet> musicSheetVoIPage = musicSheetService.selectAlbumDetailPage(page,query);
+        albumDetailVo.setMusicSheetList(Condition.pageInfo(musicSheetVoIPage));
+        return albumDetailVo;
+    }
+
+    @Override
+    public boolean delMusicSheet(Long albumId, String musicSheetIds) {
+        MusicAlbum musicAlbum = this.getById(albumId);
+        if (musicAlbum == null) {
+            throw  new BizException("未找到专辑信息");
+        }
+        List<Long> musicSheetIdList = StringUtil.toLongList(musicSheetIds);
+        return albumMusicRelateService.delMusicSheet(albumId,musicSheetIdList);
+    }
+
+    @Override
+    public boolean addMusicSheet(Long albumId, String musicSheetIds, Long userId) {
+        MusicAlbum musicAlbum = this.getById(albumId);
+        if (musicAlbum == null) {
+            throw  new BizException("未找到专辑信息");
+        }
+        List<Long> musicSheetIdList = StringUtil.toLongList(musicSheetIds);
+        return albumMusicRelateService.addMusicSheet(albumId,musicSheetIdList,userId);
+    }
+
+    @Override
+    public void createMusicAlbum(MusicAlbum musicAlbum) {
+        if (checkNameRepeat(musicAlbum.getAlbumName(),musicAlbum.getId())) {
+            throw new BizException("专辑名称重复");
+        }
+        this.save(musicAlbum);
+    }
+
+    @Override
+    public void updateMusicAlbum(MusicAlbum musicAlbum) {
+        if (checkNameRepeat(musicAlbum.getAlbumName(),musicAlbum.getId())) {
+            throw new BizException("专辑名称重复");
+        }
+        this.updateById(musicAlbum);
+    }
+
+    private boolean checkNameRepeat(String albumName, Long id) {
+        LambdaQueryChainWrapper<MusicAlbum> eq = this.lambdaQuery()
+                                                   .eq(MusicAlbum::getAlbumName, albumName);
+        if (id != null) {
+            eq.ne(MusicAlbum::getId,id);
+        }
+        return eq.count() != 0;
+    }
 }

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

@@ -1,13 +1,20 @@
 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.MusicAlbumDetailSearch;
+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 com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.beans.BeanUtils;
@@ -28,7 +35,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,9 +53,11 @@ 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.setUserId(0L);
+        musicSheet.setState(StateEnum.STOP);
         musicSheet.setCreateTime(new Date());
         int count = musicSheetDao.insert(musicSheet);
 
@@ -58,10 +67,32 @@ 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 (musicSheet == null) {
+            throw  new BizException("未找到曲目信息");
+        }
+        if (StateEnum.STOP.getCode().equals(musicSheet.getState().getCode())) {
+            musicSheet.setState(StateEnum.ENABLE);
         } else {
-            return false;
+            musicSheet.setState(StateEnum.STOP);
         }
+        return this.updateById(musicSheet);
+
+    }
+
+    @Override
+    public IPage<MusicSheet> selectAlbumDetailPage(IPage<MusicSheet> page, MusicAlbumDetailSearch query) {
+        return page.setRecords(baseMapper.selectAlbumDetailPage(page, query));
     }
 }

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

@@ -1,27 +1,197 @@
 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.BeanUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+
+import java.util.*;
+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);
+    }
+
+    @Override
+    public List<MusicTagVo> selectMusicTagTree() {
+        List<MusicTag> list = this.lambdaQuery()
+                .eq(MusicTag::getDelFlag,YesOrNoEnum.NO.getCode())
+                .eq(MusicTag::getState,StateEnum.ENABLE.getCode())
+                .list();
+        if (list == null) {
+            return new ArrayList<>();
+        }
+        List<MusicTagVo> musicTagVoList = list.stream().map(musicTag -> {
+            MusicTagVo musicTagVo = new MusicTagVo();
+            BeanUtils.copyProperties(musicTag, musicTagVo);
+            return musicTagVo;
+        }).collect(Collectors.toList());
+
+        List<MusicTagVo> tree = new ArrayList<>();
+        for (MusicTagVo musicTagVo : musicTagVoList) {
+            if (musicTagVo.getParentTagId() == null || musicTagVo.getParentTagId() == 0) {
+                tree.add(musicTagVo);
+            }
+            for (MusicTagVo tagVo : musicTagVoList) {
+                if (tagVo.getParentTagId() != null && tagVo.getParentTagId() != 0
+                        && tagVo.getParentTagId().equals(musicTagVo.getId())) {
+                    if (musicTagVo.getChildren() == null) {
+                        musicTagVo.setChildren(new ArrayList<>());
+                    }
+                    musicTagVo.getChildren().add(tagVo);
+                }
+            }
+        }
+        return tree;
+    }
+
+
 }

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

@@ -4,12 +4,16 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.biz.dal.constant.SysConfigConstant;
 import com.yonge.cooleshow.biz.dal.dao.CourseScheduleDao;
 import com.yonge.cooleshow.biz.dal.dao.StudentStarDao;
 import com.yonge.cooleshow.biz.dal.dto.search.StudentSearch;
 import com.yonge.cooleshow.biz.dal.enums.CacheNameEnum;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
 import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.common.enums.UserGenderEnum;
 import com.yonge.toolset.utils.date.DateUtil;
+import com.yonge.toolset.utils.string.StringUtil;
 import org.apache.commons.beanutils.BeanUtils;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,6 +35,8 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
     @Autowired
     private CourseScheduleDao courseScheduleDao;
     @Autowired
+    private SysConfigService sysConfigService;
+    @Autowired
     private RedissonClient redissonClient;
 
     @Override
@@ -93,20 +99,28 @@ public class StudentServiceImpl extends ServiceImpl<StudentDao, Student> impleme
         } catch (InvocationTargetException e) {
             e.printStackTrace();
         }
+        String avatar = "";
+        if (StringUtil.isEmpty(avatar)) {
+            if (UserGenderEnum.WOMAN.getCode().equals(user.getGender())) {
+                avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_STUDENT_GIRL);
+            } else {
+                avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_STUDENT_BOY);
+            }
+        }
+        studentHomeVo.setHeardUrl(avatar);
 
-        studentHomeVo.setHeardUrl(user.getAvatar());
         studentHomeVo.setUsername(user.getUsername());
         int num = DateUtil.daysBetween(new Date(), student.getMembershipEndTime());
         studentHomeVo.setMembershipDays(num < 0 ? 0 : num);
-        StudentTotalVo totalVo = (StudentTotalVo)redissonClient.getBucket(CacheNameEnum.STUDENT_HOME_TOTAL.getRedisKey(user.getId()))
+        StudentTotalVo totalVo = (StudentTotalVo) redissonClient.getBucket(CacheNameEnum.STUDENT_HOME_TOTAL.getRedisKey(user.getId()))
                 .get();
         if (null == totalVo) {
             totalVo = new StudentTotalVo();
         }
         studentHomeVo.setExerciseDays(null == totalVo.getExerciseDays() ? 0 : totalVo.getExerciseDays());
-        studentHomeVo.setExerciseHours(null == totalVo.getExerciseHours() ? 0 :totalVo.getExerciseHours());
+        studentHomeVo.setExerciseHours(null == totalVo.getExerciseHours() ? 0 : totalVo.getExerciseHours());
         studentHomeVo.setTestingNum(null == totalVo.getTestingNum() ? 0 : totalVo.getTestingNum());
-        studentHomeVo.setFinshClassHours(null == totalVo.getFinshClassHours() ? 0 :totalVo.getFinshClassHours());
+        studentHomeVo.setFinshClassHours(null == totalVo.getFinshClassHours() ? 0 : totalVo.getFinshClassHours());
         studentHomeVo.setUnfinshClassHours(null == totalVo.getUnfinshClassHours() ? 0 : totalVo.getUnfinshClassHours());
         studentHomeVo.setStarTeacherNum(null == totalVo.getStarTeacherNum() ? 0 : totalVo.getStarTeacherNum());
         return studentHomeVo;

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

@@ -84,6 +84,11 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         return baseMapper.getLastRecordByUserId(userId);
     }
 
+    @Override
+    public Integer getUserToDoNum() {
+        return baseMapper.getUserToDoNum();
+    }
+
     /***
      * 判断用户是否已经提交申请
      * @author liweifan

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

@@ -68,6 +68,11 @@ public class TeacherAuthMusicianRecordServiceImpl extends ServiceImpl<TeacherAut
     }
 
     @Override
+    public Integer getUserToDoNum() {
+        return baseMapper.getUserToDoNum();
+    }
+
+    @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
         TeacherAuthMusicianRecord build = baseMapper.selectById(authOperaReq.getId());

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

@@ -24,8 +24,10 @@ import com.yonge.cooleshow.biz.dal.vo.TeacherHomeVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherTotalVo;
 import com.yonge.cooleshow.biz.dal.vo.TeacherVo;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.enums.UserGenderEnum;
 import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.toolset.utils.idcard.IdcardInfoExtractor;
+import com.yonge.toolset.utils.string.StringUtil;
 import org.apache.poi.ss.formula.functions.T;
 import org.redisson.api.RedissonClient;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -97,7 +99,13 @@ public class TeacherServiceImpl extends ServiceImpl<TeacherDao, Teacher> impleme
         }
         TeacherHomeVo teacherHomeVo = new TeacherHomeVo();
         teacherHomeVo.setUserId(user.getId());
-        teacherHomeVo.setHeardUrl(user.getAvatar());
+
+        String avatar = user.getAvatar();
+        if (StringUtil.isEmpty(avatar)) {
+            avatar = sysConfigService.findConfigValue(SysConfigConstant.DEFAULT_HEARD_TEACHER);
+        }
+        teacherHomeVo.setHeardUrl(avatar);
+
         teacherHomeVo.setUsername(user.getUsername());
         teacherHomeVo.setLiveFlag(teacher.getLiveFlag());
 

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

@@ -1,13 +1,27 @@
 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.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.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 org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
 
 /**
  * VideoLessonGroupDetailService服务实现类
@@ -22,8 +36,102 @@ public class VideoLessonGroupDetailServiceImpl extends ServiceImpl<VideoLessonGr
 
     @Autowired
     private VideoLessonGroupDetailDao videoLessonGroupDetailDao;
+    @Autowired
+    private VideoLessonGroupDao videoLessonGroupDao;
 
     public VideoLessonGroupDetailDao getDao() {
         return videoLessonGroupDetailDao;
     }
+
+    /**
+    * @Description: 查询视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    public IPage<VideoLessonGroupDetail> selectPage(IPage<VideoLessonGroupDetail> page, VideoLessonSearch query) {
+        return page.setRecords(baseMapper.selectPage(page,query));
+    }
+
+    /**
+    * @Description: 根据组id查询购买用户
+    * @Author: cy
+    * @Date: 2022/4/1
+    */
+    @Override
+    public IPage<VideoLessonPurchaseStudent> selectPageStudent(IPage<VideoLessonPurchaseStudent> page, VideoLessonSearch query) {
+        return page.setRecords(baseMapper.selectPageStudent(page,query));
+    }
+
+    /**
+    * @Description: 新增视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void insertVideoLesson(List<VideoLessonGroupDetail> videoLessonList, SysUser sysUser) {
+        Set<Long> synSet = Collections.synchronizedSet(new HashSet<>());
+        for (VideoLessonGroupDetail detail : videoLessonList) {
+            detail.setTeacherId(sysUser.getId());
+            synSet.add(detail.getVideoLessonGroupId());
+        }
+        if (synSet.size()!=1){
+            throw new RuntimeException("创建课程必须属于同组");
+        }
+
+        VideoLessonGroup lessonGroup = videoLessonGroupDao.selectById(synSet.iterator().next());
+        if (lessonGroup==null){
+            throw new RuntimeException("视频课组不存在");
+        }
+
+        //添加课程
+        videoLessonGroupDetailDao.insertVideoLesson(videoLessonList);
+        //刷新统计
+        refreshLessonCount(synSet.iterator().next());
+    }
+
+    /**
+    * @Description: 修改视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateDetail(VideoLessonGroupDetailUpVo detailUpVo, SysUser sysUser) {
+        //跟新课程
+        detailUpVo.setUpdateBy(sysUser.getId());
+        videoLessonGroupDetailDao.updateDetail(detailUpVo);
+
+        //刷新统计
+        if (detailUpVo.getVideoLessonGroupId()!=null){
+            refreshLessonCount(detailUpVo.getVideoLessonGroupId());
+        }
+    }
+
+    /**
+    * @Description: 删除视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteDetail(Long id) {
+        VideoLessonGroupDetail videoLessonDetail = videoLessonGroupDetailDao.selectById(id);
+        if (videoLessonDetail !=null){
+            videoLessonGroupDetailDao.deleteById(id);
+            refreshLessonCount(videoLessonDetail.getVideoLessonGroupId());
+        }
+    }
+
+    /**
+    * @Description: 刷新组内lesson_count_
+    * @Author: cy 
+    * @Date: 2022/3/31 
+    */
+    public void refreshLessonCount(Long groupId){
+        VideoLessonGroupUpVo groupUpVo = new VideoLessonGroupUpVo();
+        groupUpVo.setId(groupId);
+        videoLessonGroupDao.updateGroup(groupUpVo);
+    }
 }

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

@@ -1,13 +1,19 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
+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.VideoLessonGroupUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.beans.factory.annotation.Autowired;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.transaction.annotation.Transactional;
 
 /**
  * VideoLessonGroupService服务实现类
@@ -22,8 +28,43 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
 
     @Autowired
     private VideoLessonGroupDao videoLessonGroupDao;
+    @Autowired
+    private VideoLessonGroupDetailDao videoLessonGroupDetailDao;
 
     public VideoLessonGroupDao getDao() {
         return videoLessonGroupDao;
     }
+
+    /**
+    * @Description: 查询视频课组
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    public IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query) {
+        return page.setRecords(baseMapper.selectPage(page,query));
+    }
+
+    /**
+    * @Description: 修改视频课组
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo) {
+        videoLessonGroupDao.updateGroup(lessonGroupUpVo);
+    }
+
+    /**
+    * @Description: 删除视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @Override
+    @Transactional(rollbackFor = Exception.class)
+    public void deleteGroup(Long id) {
+        videoLessonGroupDao.deleteById(id);
+        videoLessonGroupDetailDao.deleteByGroupId(id);
+    }
 }

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/AddGroup.java

@@ -0,0 +1,8 @@
+package com.yonge.cooleshow.biz.dal.valid;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 09:54
+ */
+public interface AddGroup {
+}

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/DeleteGroup.java

@@ -0,0 +1,8 @@
+package com.yonge.cooleshow.biz.dal.valid;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 09:54
+ */
+public interface DeleteGroup {
+}

+ 30 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/ListValue.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.biz.dal.valid;
+
+import com.yonge.cooleshow.biz.dal.valid.impl.ListValueValidator;
+
+import javax.validation.Constraint;
+import javax.validation.Payload;
+import java.lang.annotation.Documented;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+import static java.lang.annotation.ElementType.*;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 09:54
+ */
+@Documented
+@Constraint(validatedBy = {ListValueValidator.class})
+@Target({METHOD, FIELD, ANNOTATION_TYPE, CONSTRUCTOR, PARAMETER, TYPE_USE})
+@Retention(RUNTIME)
+public @interface ListValue {
+    String message() default "必须提交指定的值";
+
+    Class<?>[] groups() default {};
+
+    Class<? extends Payload>[] payload() default {};
+
+    int[] vals() default {};
+}

+ 8 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/UpdateGroup.java

@@ -0,0 +1,8 @@
+package com.yonge.cooleshow.biz.dal.valid;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 09:54
+ */
+public interface UpdateGroup {
+}

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

@@ -0,0 +1,33 @@
+package com.yonge.cooleshow.biz.dal.valid.impl;
+
+import com.yonge.cooleshow.biz.dal.valid.ListValue;
+
+import javax.validation.ConstraintValidator;
+import javax.validation.ConstraintValidatorContext;
+import java.util.HashSet;
+import java.util.Set;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 09:54
+ */
+public class ListValueValidator implements ConstraintValidator<ListValue, Integer> {
+    private Set<Integer> set = new HashSet<>();
+
+    @Override
+    public void initialize(ListValue constraintAnnotation) {
+        int[] vals = constraintAnnotation.vals();
+        for (int val : vals) {
+            set.add(null);
+            set.add(val);
+        }
+    }
+
+    @Override
+    public boolean isValid(Integer value, ConstraintValidatorContext context) {
+        if (value==null){
+            return true;
+        }
+        return set.contains(value);
+    }
+}

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

@@ -0,0 +1,138 @@
+package com.yonge.cooleshow.biz.dal.valid.impl;
+
+import javax.validation.Valid;
+import java.util.*;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 09:54
+ */
+public class ValidList<E> implements List<E> {
+
+    @Valid
+    private List<E> list = new LinkedList<>();
+
+    @Override
+    public int size() {
+        return list.size();
+    }
+
+    @Override
+    public boolean isEmpty() {
+        return list.isEmpty();
+    }
+
+    @Override
+    public boolean contains(Object o) {
+        return list.contains(o);
+    }
+
+    @Override
+    public Iterator<E> iterator() {
+        return list.iterator();
+    }
+
+    @Override
+    public Object[] toArray() {
+        return list.toArray();
+    }
+
+    @Override
+    public <T> T[] toArray(T[] a) {
+        return list.toArray(a);
+    }
+
+    @Override
+    public boolean add(E e) {
+        return list.add(e);
+    }
+
+    @Override
+    public boolean remove(Object o) {
+        return list.remove(o);
+    }
+
+    @Override
+    public boolean containsAll(Collection<?> c) {
+        return list.containsAll(c);
+    }
+
+    @Override
+    public boolean addAll(Collection<? extends E> c) {
+        return list.addAll(c);
+    }
+
+    @Override
+    public boolean addAll(int index, Collection<? extends E> c) {
+        return list.addAll(index, c);
+    }
+
+    @Override
+    public boolean removeAll(Collection<?> c) {
+        return list.removeAll(c);
+    }
+
+    @Override
+    public boolean retainAll(Collection<?> c) {
+        return list.retainAll(c);
+    }
+
+    @Override
+    public void clear() {
+        list.clear();
+    }
+
+    @Override
+    public E get(int index) {
+        return list.get(index);
+    }
+
+    @Override
+    public E set(int index, E element) {
+        return list.set(index, element);
+    }
+
+    @Override
+    public void add(int index, E element) {
+        list.add(index, element);
+    }
+
+    @Override
+    public E remove(int index) {
+        return list.remove(index);
+    }
+
+    @Override
+    public int indexOf(Object o) {
+        return list.indexOf(o);
+    }
+
+    @Override
+    public int lastIndexOf(Object o) {
+        return list.lastIndexOf(o);
+    }
+
+    @Override
+    public ListIterator<E> listIterator() {
+        return list.listIterator();
+    }
+
+    @Override
+    public ListIterator<E> listIterator(int index) {
+        return list.listIterator(index);
+    }
+
+    @Override
+    public List<E> subList(int fromIndex, int toIndex) {
+        return list.subList(fromIndex, toIndex);
+    }
+
+    public List<E> getList() {
+        return list;
+    }
+
+    public void setList(List<E> list) {
+        this.list = list;
+    }
+
+}

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

@@ -0,0 +1,48 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
+import com.yonge.cooleshow.common.page.PageInfo;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description 专辑详情展示信息
+ *
+ * @author: liujunchi
+ * @date: 2022-03-31
+ */
+public class AlbumDetailVo {
+
+    @ApiModelProperty(value = "主键id")
+    private Long id;
+
+    @ApiModelProperty(value = "专辑名称")
+    private String albumName;
+
+    @ApiModelProperty("专辑详情曲目")
+    private PageInfo<MusicSheet> musicSheetList;
+
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public String getAlbumName() {
+        return albumName;
+    }
+
+    public void setAlbumName(String albumName) {
+        this.albumName = albumName;
+    }
+
+    public PageInfo<MusicSheet> getMusicSheetList() {
+        return musicSheetList;
+    }
+
+    public void setMusicSheetList(PageInfo<MusicSheet> musicSheetList) {
+        this.musicSheetList = musicSheetList;
+    }
+}

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

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/3/30 17:53
+ */
+@ApiModel(value = "HomeVo对象", description = "后台首页统计查询对象")
+public class HomeTotalVo {
+    @ApiModelProperty("待审核老师认证数 ")
+    private Integer entryNum;
+    @ApiModelProperty("待审核音乐认证人数 ")
+    private Integer musicianNum;
+    @ApiModelProperty("待审核乐谱 ")
+    private Integer musicNum;
+
+    public Integer getEntryNum() {
+        return entryNum;
+    }
+
+    public void setEntryNum(Integer entryNum) {
+        this.entryNum = entryNum;
+    }
+
+    public Integer getMusicianNum() {
+        return musicianNum;
+    }
+
+    public void setMusicianNum(Integer musicianNum) {
+        this.musicianNum = musicianNum;
+    }
+
+    public Integer getMusicNum() {
+        return musicNum;
+    }
+
+    public void setMusicNum(Integer musicNum) {
+        this.musicNum = musicNum;
+    }
+}

+ 36 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/MusicAlbumVo.java

@@ -0,0 +1,36 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * Description 专辑查询展示
+ *
+ * @author: liujunchi
+ * @date: 2022-03-31
+ */
+public class MusicAlbumVo extends MusicAlbum {
+
+    @ApiModelProperty("教材标签")
+    private String musicTagNames;
+
+    @ApiModelProperty("曲目数量")
+    private Integer musicSheetCount;
+
+
+    public String getMusicTagNames() {
+        return musicTagNames;
+    }
+
+    public void setMusicTagNames(String musicTagNames) {
+        this.musicTagNames = musicTagNames;
+    }
+
+    public Integer getMusicSheetCount() {
+        return musicSheetCount;
+    }
+
+    public void setMusicSheetCount(Integer musicSheetCount) {
+        this.musicSheetCount = musicSheetCount;
+    }
+}

+ 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;
+	}
 }

+ 107 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailUpVo.java

@@ -0,0 +1,107 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableField;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.yonge.cooleshow.biz.dal.valid.AddGroup;
+import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.apache.commons.lang3.builder.ToStringBuilder;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 11:39
+ */
+@ApiModel(value = "VideoLessonGroupDetailUpVo视频课")
+public class VideoLessonGroupDetailUpVo extends BaseEntity {
+
+    @TableId(value = "id_", type = IdType.AUTO)
+    @ApiModelProperty(value = "主键id")
+    @NotNull(message = "视频课id不能为空")
+	private Long id;
+
+    @TableField("video_lesson_group_id_")
+    @ApiModelProperty(value = "课程组ID")
+    private Long videoLessonGroupId;
+
+    @TableField("video_title_")
+    @ApiModelProperty(value = "视频标题")
+    private String videoTitle;
+
+    @TableField("video_content_")
+    @ApiModelProperty(value = "视频内容")
+    private String videoContent;
+
+    @TableField("video_url_")
+    @ApiModelProperty(value = "视频文件URL")
+    private String videoUrl;
+
+    @TableField("cover_url_")
+    @ApiModelProperty(value = "视频封面图片URL")
+    private String coverUrl;
+
+    @TableField("update_by_")
+    @ApiModelProperty(value = "更新人")
+    private Long updateBy;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Long getVideoLessonGroupId() {
+        return videoLessonGroupId;
+    }
+
+    public void setVideoLessonGroupId(Long videoLessonGroupId) {
+        this.videoLessonGroupId = videoLessonGroupId;
+    }
+
+    public String getVideoTitle() {
+        return videoTitle;
+    }
+
+    public void setVideoTitle(String videoTitle) {
+        this.videoTitle = videoTitle;
+    }
+
+    public String getVideoContent() {
+        return videoContent;
+    }
+
+    public void setVideoContent(String videoContent) {
+        this.videoContent = videoContent;
+    }
+
+    public String getVideoUrl() {
+        return videoUrl;
+    }
+
+    public void setVideoUrl(String videoUrl) {
+        this.videoUrl = videoUrl;
+    }
+
+    public String getCoverUrl() {
+        return coverUrl;
+    }
+
+    public void setCoverUrl(String coverUrl) {
+        this.coverUrl = coverUrl;
+    }
+
+    public Long getUpdateBy() {
+        return updateBy;
+    }
+
+    public void setUpdateBy(Long updateBy) {
+        this.updateBy = updateBy;
+    }
+}

+ 139 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupUpVo.java

@@ -0,0 +1,139 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.biz.dal.valid.ListValue;
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 11:32
+ */
+@ApiModel(value = "VideoLessonGroupUpVo对象", description = "视频课组")
+public class VideoLessonGroupUpVo extends BaseEntity {
+
+    @ApiModelProperty(value = "主键id")
+    @NotNull(message = "视频组id不能为空")
+    private Long id;
+
+    @ApiModelProperty(value = "课程名称")
+    private String lessonName;
+
+    @ApiModelProperty(value = "课程声部")
+    private String lessonSubject;
+
+    @ApiModelProperty(value = "课程介绍")
+    private String lessonDesc;
+
+    @ApiModelProperty(value = "课程价格")
+    private Integer lessonPrice;
+
+    @ApiModelProperty(value = "课程封面图片URL")
+    private String lessonCoverUrl;
+
+    @ApiModelProperty(value = "排序号")
+    private Integer sortNumber;
+
+    @ApiModelProperty(value = "课程标签")
+    private String lessonTag;
+
+    @ApiModelProperty(value = "是否置顶")
+    private Integer topFlag;
+
+    @ApiModelProperty(value = "是否热门课程")
+    private Integer hotFlag;
+
+    @ApiModelProperty(value = "审核状态(0:待审核;1:通过;2:未通过)")
+    @ListValue(vals = {0, 1, 2}, message = "审核状态必须提交指定值")
+    private Integer auditStatus;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    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 String getLessonDesc() {
+        return lessonDesc;
+    }
+
+    public void setLessonDesc(String lessonDesc) {
+        this.lessonDesc = lessonDesc;
+    }
+
+    public Integer getLessonPrice() {
+        return lessonPrice;
+    }
+
+    public void setLessonPrice(Integer lessonPrice) {
+        this.lessonPrice = lessonPrice;
+    }
+
+    public String getLessonCoverUrl() {
+        return lessonCoverUrl;
+    }
+
+    public void setLessonCoverUrl(String lessonCoverUrl) {
+        this.lessonCoverUrl = lessonCoverUrl;
+    }
+
+    public Integer getSortNumber() {
+        return sortNumber;
+    }
+
+    public void setSortNumber(Integer sortNumber) {
+        this.sortNumber = sortNumber;
+    }
+
+    public String getLessonTag() {
+        return lessonTag;
+    }
+
+    public void setLessonTag(String lessonTag) {
+        this.lessonTag = lessonTag;
+    }
+
+    public Integer getTopFlag() {
+        return topFlag;
+    }
+
+    public void setTopFlag(Integer topFlag) {
+        this.topFlag = topFlag;
+    }
+
+    public Integer getHotFlag() {
+        return hotFlag;
+    }
+
+    public void setHotFlag(Integer hotFlag) {
+        this.hotFlag = hotFlag;
+    }
+
+    public Integer getAuditStatus() {
+        return auditStatus;
+    }
+
+    public void setAuditStatus(Integer auditStatus) {
+        this.auditStatus = auditStatus;
+    }
+}

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

@@ -0,0 +1,46 @@
+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;
+
+/**
+ * @author: cy
+ * @date: 2022/3/31 11:39
+ */
+@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;
+    }
+}

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

@@ -0,0 +1,57 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.yonge.cooleshow.common.entity.BaseEntity;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.Date;
+
+/**
+ * @author: cy
+ * @date: 2022/3/30 11:39
+ */
+@ApiModel(value = "VideoLessonPurchaseStudent对象")
+public class VideoLessonPurchaseStudent extends BaseEntity {
+    @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;
+    }
+}

+ 52 - 23
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicAlbumMapper.xml

@@ -1,28 +1,57 @@
 <?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.MusicAlbumDao">
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.MusicAlbum">
+        <id column="id_" jdbcType="BIGINT" property="id"/>
+        <result column="album_name_" jdbcType="VARCHAR" property="albumName"/>
+        <result column="album_desc_" jdbcType="VARCHAR" property="albumDesc"/>
+        <result column="album_tag_" jdbcType="VARCHAR" property="albumTag"/>
+        <result column="album_cover_url_" jdbcType="VARCHAR" property="albumCoverUrl"/>
+        <result column="album_status_" jdbcType="TINYINT" property="albumStatus"/>
+        <result column="sort_number_" jdbcType="INTEGER" property="sortNumber"/>
+        <result column="hot_flag_" jdbcType="TINYINT" property="hotFlag"/>
+        <result column="top_flag_" jdbcType="TINYINT" property="topFlag"/>
+        <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"/>
+    </resultMap>
 
-	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.MusicAlbum">
-	     <id column="id_" jdbcType="BIGINT" property="id" />
-		 <result column="album_name_" jdbcType="VARCHAR" property="albumName" />
-		 <result column="album_desc_" jdbcType="VARCHAR" property="albumDesc" />
-		 <result column="album_tag_" jdbcType="VARCHAR" property="albumTag" />
-		 <result column="album_cover_url_" jdbcType="VARCHAR" property="albumCoverUrl" />
-		 <result column="album_status_" jdbcType="TINYINT" property="albumStatus" />
-		 <result column="sort_number_" jdbcType="INTEGER" property="sortNumber" />
-		 <result column="hot_flag_" jdbcType="TINYINT" property="hotFlag" />
-		 <result column="top_flag_" jdbcType="TINYINT" property="topFlag" />
-		 <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" />
-	</resultMap>
-
-	<sql id="Base_Column_List">
-		id_, album_name_, album_desc_, album_tag_, album_cover_url_, album_status_, sort_number_, hot_flag_, top_flag_, create_time_, create_by_, update_time_, update_by_
-	</sql>
-
-
+    <sql id="Base_Column_List">
+        t.id_,
+        t.album_name_,
+        t.album_desc_,
+        t.album_tag_,
+        t.album_cover_url_,
+        t.album_status_,
+        t.sort_number_,
+        t.hot_flag_,
+        t.top_flag_,
+        t.create_time_,
+        t.create_by_,
+        t.update_time_,
+        t.update_by_
+    </sql>
 
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicAlbumVo">
+        select <include refid="Base_Column_List"/>
+        ,(select group_concat(mt.name_) from music_tag mt
+            where find_in_set(mt.id_,t.album_tag_) and mt.del_flag_ = 0) as musicTagNames
+        , t1.num as musicSheetCount
+        from music_album t
+        left join (select count(1) as num,amr.album_id_ from album_music_relate amr group by amr.album_id_) t1 on t1.album_id_ = t.id_
+        <where>
+            <if test="query.idAndName != null and query.idAndName != ''">
+                and (t.id_ like concat('%',#{query.idAndName},'%') or
+                    t.album_name_ like concat('%',#{query.idAndName},'%'))
+            </if>
+            <if test="query.albumTagIdList != null and query.albumTagIdList != ''">
+                and
+                <foreach collection="query.albumTagIdList" separator="and" item="item">
+                    find_in_set(#{item},t.album_tag_)
+                </foreach>
+            </if>
+        </where>
+    </select>
 </mapper>

+ 120 - 33
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -1,39 +1,126 @@
 <?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 find_in_set(mt.id_,t.music_tag_) and mt.del_flag_ = 0) as musicTagNames
+        ,(select group_concat(s.name_) from subject s where find_in_set(s.id_,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},'%') or
+                t.music_sheet_name_ like concat('%',#{param.idAndName},'%'))
+            </if>
+            <if test="param.musicTagIds != null and param.musicTagIds != ''">
+                and
+                <foreach collection="param.musicTagIdList" separator="and" item="item">
+                    find_in_set(#{item},t.music_tag_)
+                </foreach>
+            </if>
+            <if test="param.subjectIds != null and param.subjectIds != ''">
+                and
+                <foreach collection="param.subjectIdList" separator="and" item="item">
+                    find_in_set(#{item},t.music_subject_)
+                </foreach>
+            </if>
+            <if test="param.state != null">
+                and t.state_ = #{param.state}
+            </if>
+        </where>
+    </select>
 
+    <select id="selectAlbumDetailPage" resultType="com.yonge.cooleshow.biz.dal.entity.MusicSheet">
+        select <include refid="Base_Column_List"/>
+        from music_sheet t
+        left join album_music_relate amr on t.id_ = amr.music_sheet_id_
+        <where>
+            <if test="param.idAndName != null and param.idAndName != ''">
+                and (t.id_ like concat('%',#{param.idAndName},'%') or
+                t.music_sheet_name_ like concat('%',#{param.idAndName},'%'))
+            </if>
+            <if test="param.musicTagIds != null and param.musicTagIds != ''">
+                and
+                <foreach collection="param.musicTagIdList" separator="and" item="item">
+                    find_in_set(#{item},t.music_tag_)
+                </foreach>
+            </if>
+            <if test="param.subjectIds != null and param.subjectIds != ''">
+                and
+                <foreach collection="param.subjectIdList" separator="and" item="item">
+                    find_in_set(#{item},t.music_subject_)
+                </foreach>
+            </if>
+            <if test="param.state != null">
+                and t.state_ = #{param.state}
+            </if>
+            <if test="param.id != null">
+                <if test="param.type == 2">
+                    and amr.album_id_ = #{param.id}
+                    order by amr.create_time_
+                </if>
+                <if test="param.type == 1">
+                    and (amr.album_id_ &lt;&gt;  #{param.id} or amr.album_id_ is null)
+                </if>
+            </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>

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

@@ -83,7 +83,15 @@
 	</select>
 
     <select id="findByParentId" resultMap="Subject">
-        SELECT * FROM subject <include refid="querySubPageSql"/>
+        SELECT * FROM subject
+        <where>
+            <if test="parentId != null">
+                AND parent_subject_id_ = #{parentId}
+            </if>
+            <if test="delFlag != null">
+                AND del_flag_ = #{delFlag,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler}
+            </if>
+        </where>
     </select>
 
     <select id="queryNameByIds" resultType="java.util.Map">
@@ -98,10 +106,10 @@
             <if test="delFlag != null">
                 AND del_flag_ = #{delFlag,typeHandler=com.yonge.cooleshow.common.dal.CustomEnumTypeHandler}
             </if>
-            <if test="queryType == 'category'">
+            <if test="queryType != null and queryType == 'category'">
             	and (parent_subject_id_ = 0 or parent_subject_id_ is null)
             </if>
-            <if test="queryType == 'list'">
+            <if test="queryType != null and queryType == 'list'">
             	and parent_subject_id_ > 0
             </if>
         </where>

+ 9 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/SysConfigMapper.xml

@@ -11,6 +11,7 @@
 		<result column="create_on_" property="createOn" />
 		<result column="modify_on_" property="modifyOn" />
 		<result column="group_" property="group" />
+		<result column="modify_by_" property="modifyBy" />
 	</resultMap>
 
 	<!-- 根据主键查询一条记录 -->
@@ -33,8 +34,8 @@
 		<!-- <selectKey resultClass="int" keyProperty="id" > SELECT SEQ_WSDEFINITION_ID.nextval 
 			AS ID FROM DUAL </selectKey> -->
 		INSERT INTO sys_config
-		(id_,param_name_,param_value_,description_,create_on_,modify_on_,group_)
-		VALUES(#{id},#{paramName},#{paramValue},#{description},#{createOn},#{modifyOn},#{group})
+		(id_,param_name_,param_value_,description_,create_on_,modify_on_,group_,modify_by_)
+		VALUES(#{id},#{paramName},#{paramValue},#{description},#{createOn},#{modifyOn},#{group},#{modifyBy})
 	</insert>
 
 	<!-- 根据主键查询一条记录 -->
@@ -56,6 +57,9 @@
 			<if test="group != null">
 				group_ = #{group},
 			</if>
+			<if test="modifyBy != null">
+				modify_by_ = #{modifyBy},
+			</if>
 		</set>
 		WHERE id_ = #{id}
 	</update>
@@ -75,6 +79,9 @@
 				<if test="config.group != null">
 					group_ = #{config.group},
 				</if>
+				<if test="config.modifyBy != null">
+					modify_by_ = #{config.modifyBy},
+				</if>
 					modify_on_ = NOW()
 			</set>
 				WHERE id_ = #{config.id}

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

@@ -122,4 +122,7 @@
         where t.user_id_ = #{userId}
 		order by t.create_time_ desc limit 1
     </select>
+    <select id="getUserToDoNum" resultType="java.lang.Integer">
+        select count(1) from teacher_auth_entry_record where teacher_auth_status_ = 1
+    </select>
 </mapper>

+ 58 - 55
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml

@@ -1,18 +1,18 @@
 <?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.TeacherAuthMusicianRecordDao">
-	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord">
-            <result column="id_" property="id" />
-	        <result column="user_id_" property="userId" />
-	        <result column="teacher_auth_status_" property="teacherAuthStatus" />
-	        <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>
+    <resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord">
+        <result column="id_" property="id"/>
+        <result column="user_id_" property="userId"/>
+        <result column="teacher_auth_status_" property="teacherAuthStatus"/>
+        <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">
+    <!-- 表字段 -->
+    <sql id="baseColumns">
          t.id_ as "id"
         , t.user_id_ as "userId"
         , t.teacher_auth_status_ as "teacherAuthStatus"
@@ -22,54 +22,57 @@
         , t.update_time_ as "updateTime"
         </sql>
 
-	<select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo">
-		select
-			<include refid="baseColumns"/>,
-			u.real_name_ as realName,
-			u.id_card_no_ as idCardNo,
-			(
-			SELECT u.username_ FROM sys_user u WHERE u.id_ = t.verify_user_id_
-			) as verifyUser
-		from teacher_auth_entry_record t
-		left join sys_user u on t.user_id_ = u.id_
-		where t.id_ = #{id}
-	</select>
+    <select id="detail" resultType="com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo">
+        select
+        <include refid="baseColumns"/>,
+        u.real_name_ as realName,
+        u.id_card_no_ as idCardNo,
+        (
+        SELECT u.username_ FROM sys_user u WHERE u.id_ = t.verify_user_id_
+        ) as verifyUser
+        from teacher_auth_entry_record t
+        left join sys_user u on t.user_id_ = u.id_
+        where t.id_ = #{id}
+    </select>
 
-	<!-- 分页查询 -->
-	<select id="selectPage" resultType = "com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo">
-		SELECT
-		<include refid="baseColumns"/>,
-		u.real_name_ as realName,
-		u.id_card_no_ as idCardNo,
-		u.phone_ as phone
-		FROM teacher_auth_musician_record t
-		left join sys_user u on t.user_id_ = u.id_
-		left join sys_user v on t.verify_user_id_ = u.id_
-		<where>
-			<if test="null != param.search and '' != param.search">
-				AND (
-				t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
-				u.username_ LIKE CONCAT('%', #{param.search}, '%') or
-				u.phone_ LIKE CONCAT('%', #{param.search}, '%')
-				)
-			</if>
-			<if test="null != param.verifyUser and '' != param.verifyUser">
-				AND v.username_ LIKE CONCAT('%', #{param.verifyUser}, '%')
-			</if>
-			<if test="param.startTime !=null">
-				<![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
-			</if>
-			<if test="param.endTime !=null">
-				<![CDATA[AND t.create_time_ <= #{param.endTime} ]]>
-			</if>
-			<if test="param.authStatus !=null">
-				AND t.teacher_auth_status_ = #{param.authStatus}
-			</if>
-		</where>
-	</select>
+    <!-- 分页查询 -->
+    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.MusicianAuthEntryRecordVo">
+        SELECT
+        <include refid="baseColumns"/>,
+        u.real_name_ as realName,
+        u.id_card_no_ as idCardNo,
+        u.phone_ as phone
+        FROM teacher_auth_musician_record t
+        left join sys_user u on t.user_id_ = u.id_
+        left join sys_user v on t.verify_user_id_ = u.id_
+        <where>
+            <if test="null != param.search and '' != param.search">
+                AND (
+                t.user_id_ LIKE CONCAT('%', #{param.search}, '%') or
+                u.username_ LIKE CONCAT('%', #{param.search}, '%') or
+                u.phone_ LIKE CONCAT('%', #{param.search}, '%')
+                )
+            </if>
+            <if test="null != param.verifyUser and '' != param.verifyUser">
+                AND v.username_ LIKE CONCAT('%', #{param.verifyUser}, '%')
+            </if>
+            <if test="param.startTime !=null">
+                <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
+            </if>
+            <if test="param.endTime !=null">
+                <![CDATA[AND t.create_time_ <= #{param.endTime} ]]>
+            </if>
+            <if test="param.authStatus !=null">
+                AND t.teacher_auth_status_ = #{param.authStatus}
+            </if>
+        </where>
+    </select>
     <select id="getLastRecordByUserId"
             resultType="com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord">
 		select * from teacher_auth_musician_record where user_id_ = #{userId}
 		order by create_time_ desc limit 1
 	</select>
+    <select id="getUserToDoNum" resultType="java.lang.Integer">
+		select count(1) from teacher_auth_musician_record where teacher_auth_status_ = 1
+	</select>
 </mapper>

+ 78 - 4
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupDetailMapper.xml

@@ -2,7 +2,6 @@
 <!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.VideoLessonGroupDetailDao">
-
 	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail">
 	     <id column="id_" jdbcType="BIGINT" property="id" />
 		 <result column="video_lesson_group_id_" jdbcType="BIGINT" property="videoLessonGroupId" />
@@ -18,10 +17,85 @@
 		 <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
 	</resultMap>
 
-	<sql id="Base_Column_List">
-		id_, video_lesson_group_id_, video_title_, video_content_, video_url_, cover_url_, charge_flag_, sort_number_, teacher_id_, create_time_, update_by_, update_time_
+	<sql id="baseColumns">
+		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="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.entity.VideoLessonGroupDetail">
+		SELECT
+		<include refid="baseColumns"/>
+		FROM video_lesson_group_detail
+		<where>
+			<if test="param.videoLessonGroupId !=null">
+				AND video_lesson_group_id_ = #{param.videoLessonGroupId}
+			</if>
+		</where>
+	</select>
+	<select id="selectPageStudent" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent">
+		SELECT
+		<include refid="userDetail"/>
+		FROM sys_user
+		WHERE id_ IN
+		(SELECT student_id_
+		FROM video_lesson_purchase_record
+		WHERE video_lesson_group_id_ = #{param.videoLessonGroupId})
+	</select>
+	<insert id="insertVideoLesson" parameterType="java.util.List">
+		INSERT INTO video_lesson_group_detail (video_lesson_group_id_,video_title_,video_content_,video_url_,cover_url_,teacher_id_)
+		VALUES
+		<foreach collection="list" item="item" index="index" separator=",">
+			(#{item.videoLessonGroupId}, #{item.videoTitle}, #{item.videoContent},
+			#{item.videoUrl}, #{item.coverUrl}, #{item.teacherId})
+		</foreach>
+	</insert>
+	<update id="updateDetail" parameterType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo">
+		UPDATE video_lesson_group_detail
+		<set>
+			<if test="videoLessonGroupId !=null">video_lesson_group_id_ = #{videoLessonGroupId},</if>
+			<if test="videoTitle !=null and videoTitle !=''">video_title_ = #{videoTitle},</if>
+			<if test="videoContent !=null and videoContent !=''">video_content_ = #{videoContent},</if>
+			<if test="videoUrl !=null and videoUrl !=''">video_url_ = #{videoUrl},</if>
+			<if test="coverUrl !=null and coverUrl !=''">cover_url_ = #{coverUrl},</if>
+			<if test="updateBy !=null">update_by_ = #{updateBy},</if>
+			update_time_ = SYSDATE()
+		</set>
+		WHERE id_ = #{id}
+	</update>
+	<delete id="deleteByGroupId" parameterType="java.lang.Long">
+		DELETE
+		FROM video_lesson_group_detail
+		WHERE video_lesson_group_id_ = #{groupId}
+	</delete>
 
 </mapper>

+ 63 - 20
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -2,29 +2,72 @@
 <!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.VideoLessonGroupDao">
-
 	<resultMap id="BaseResultMap" type="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup">
-	     <id column="id_" jdbcType="BIGINT" property="id" />
-		 <result column="lesson_name_" jdbcType="VARCHAR" property="lessonName" />
-		 <result column="lesson_subject_" jdbcType="VARCHAR" property="lessonSubject" />
-		 <result column="lesson_desc_" jdbcType="VARCHAR" property="lessonDesc" />
-		 <result column="lesson_price_" jdbcType="INTEGER" property="lessonPrice" />
-		 <result column="lesson_cover_url_" jdbcType="VARCHAR" property="lessonCoverUrl" />
-		 <result column="teacher_id_" jdbcType="BIGINT" property="teacherId" />
-		 <result column="lesson_count_" jdbcType="INTEGER" property="lessonCount" />
-		 <result column="sort_number_" jdbcType="INTEGER" property="sortNumber" />
-		 <result column="lesson_tag_" jdbcType="VARCHAR" property="lessonTag" />
-		 <result column="top_flag_" jdbcType="TINYINT" property="topFlag" />
-		 <result column="hot_flag_" jdbcType="TINYINT" property="hotFlag" />
-		 <result column="audit_status_" jdbcType="TINYINT" property="auditStatus" />
-		 <result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
-		 <result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
+		<id column="id_" jdbcType="BIGINT" property="id" />
+		<result column="lesson_name_" jdbcType="VARCHAR" property="lessonName" />
+		<result column="lesson_subject_" jdbcType="VARCHAR" property="lessonSubject" />
+		<result column="lesson_desc_" jdbcType="VARCHAR" property="lessonDesc" />
+		<result column="lesson_price_" jdbcType="INTEGER" property="lessonPrice" />
+		<result column="lesson_cover_url_" jdbcType="VARCHAR" property="lessonCoverUrl" />
+		<result column="teacher_id_" jdbcType="BIGINT" property="teacherId" />
+		<result column="lesson_count_" jdbcType="INTEGER" property="lessonCount" />
+		<result column="sort_number_" jdbcType="INTEGER" property="sortNumber" />
+		<result column="lesson_tag_" jdbcType="VARCHAR" property="lessonTag" />
+		<result column="top_flag_" jdbcType="TINYINT" property="topFlag" />
+		<result column="hot_flag_" jdbcType="TINYINT" property="hotFlag" />
+		<result column="audit_status_" jdbcType="TINYINT" property="auditStatus" />
+		<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>
 
-
-
+	<update id="updateGroup" parameterType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo">
+		UPDATE video_lesson_group
+		<set>
+			<if test="lessonName !=null and lessonName !=''">lesson_name_ = #{lessonName},</if>
+			<if test="lessonSubject !=null and lessonSubject !=''">lesson_subject_ = #{lessonSubject},</if>
+			<if test="lessonDesc !=null and lessonDesc !=''">lesson_desc_ = #{lessonDesc},</if>
+			<if test="lessonPrice !=null and lessonPrice !=''">lesson_price_ = #{lessonPrice},</if>
+			<if test="lessonCoverUrl !=null and lessonCoverUrl !=''">lesson_cover_url_ = #{lessonCoverUrl},</if>
+			<if test="sortNumber !=null">sort_number_ = #{sortNumber},</if>
+			<if test="lessonTag !=null and lessonTag !=''">lesson_tag_ = #{lessonTag},</if>
+			<if test="topFlag !=null">top_flag_ = #{topFlag},</if>
+			<if test="hotFlag !=null">hot_flag_ = #{hotFlag},</if>
+			<if test="auditStatus !=null">audit_status_ = #{auditStatus},</if>
+			update_time_ = SYSDATE(),
+			lesson_count_ = (SELECT COUNT(1) FROM video_lesson_group_detail WHERE video_lesson_group_id_ = #{id})
+		</set>
+		WHERE id_ = #{id}
+	</update>
+	<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>
 </mapper>

+ 91 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

@@ -0,0 +1,91 @@
+package com.yonge.cooleshow.teacher.controller;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
+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 org.springframework.validation.annotation.Validated;
+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.VideoLessonGroup;
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+
+/**
+ * 视频课基本信息表 web 控制层
+ * @author yzp
+ * @date 2022-03-26 00:21:46
+ * @version v1.0
+ **/
+@RestController
+@RequestMapping("/videoLessonGroup")
+@Api(tags = "视频课组")
+public class VideoLessonGroupController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @Autowired
+    private VideoLessonGroupService videoLessonGroupService;
+
+    /**
+    * @Description: 查询视频课组
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @ApiOperation(value = "查询视频课组")
+    @PostMapping(value = "/page")
+    public HttpResponseResult<PageInfo<VideoLessonGroupVo>> page(@RequestBody VideoLessonGroupSearch query) {
+        IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(Condition.getPage(query), query);
+        return succeed(Condition.pageInfo(pages));
+    }
+
+    /**
+    * @Description: 新增视频课组
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @ApiOperation(value = "新增视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping(value = "/create", consumes = "application/json", produces = "application/json")
+    public HttpResponseResult<Object> create(@Validated @RequestBody VideoLessonGroup videoLessonGroup) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+
+        videoLessonGroup.setTeacherId(sysUser.getId());
+        videoLessonGroupService.save(videoLessonGroup);
+        return succeed();
+    }
+
+    /**
+    * @Description: 修改视频课组
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @ApiOperation(value = "修改视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping(value = "/update", consumes = "application/json", produces = "application/json")
+    public HttpResponseResult<Object> update(@Validated @RequestBody VideoLessonGroupUpVo lessonGroupUpVo) {
+        videoLessonGroupService.updateGroup(lessonGroupUpVo);
+        return succeed();
+    }
+
+    /**
+    * @Description: 删除视频课组
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @ApiOperation(value = "删除视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping("/delete/{id}")
+    public Object delete(@PathVariable Long id) {
+        videoLessonGroupService.deleteGroup(id);
+        return succeed();
+    }
+}

+ 119 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupDetailController.java

@@ -0,0 +1,119 @@
+package com.yonge.cooleshow.teacher.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.VideoLessonGroupDetailDto;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
+import com.yonge.cooleshow.biz.dal.support.Condition;
+import com.yonge.cooleshow.biz.dal.support.Query;
+import com.yonge.cooleshow.biz.dal.valid.AddGroup;
+import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
+import com.yonge.cooleshow.biz.dal.valid.impl.ValidList;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailUpVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
+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.validation.annotation.Validated;
+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.VideoLessonGroupDetail;
+import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
+import com.yonge.cooleshow.auth.api.entity.SysUser;
+import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
+
+/**
+ * 视频课明细表 web 控制层
+ * @author yzp
+ * @date 2022-03-26 00:21:46
+ * @version v1.0
+ **/
+@RestController
+@RequestMapping("/videoLesson")
+@Api(tags = "视频课")
+public class VideoLessonGroupDetailController extends BaseController {
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+	@Autowired
+	private VideoLessonGroupDetailService videoLessonGroupDetailService;
+
+    /**
+     * @Description: 查询视频课
+     * @Author: cy
+     * @Date: 2022/3/31
+     */
+    @ApiOperation(value = "查询视频课", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/page", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<VideoLessonGroupDetail>> page(@RequestBody VideoLessonSearch query) {
+        IPage<VideoLessonGroupDetail> pages = videoLessonGroupDetailService.selectPage(Condition.getPage(query), query);
+        return succeed(Condition.pageInfo(pages));
+    }
+
+    /**
+    * @Description: 根据组id查询购买用户
+    * @Author: cy
+    * @Date: 2022/4/1
+    */
+    @ApiOperation(value = "根据组id查询购买用户", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/pageStudent", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<VideoLessonPurchaseStudent>> pageStudent(@RequestBody VideoLessonSearch query) {
+        IPage<VideoLessonPurchaseStudent> pages = videoLessonGroupDetailService.selectPageStudent(Condition.getPage(query), query);
+        return succeed(Condition.pageInfo(pages));
+    }
+
+    /**
+    * @Description: 新增视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+	@ApiOperation(value = "新增视频课", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/create", consumes="application/json", produces="application/json")
+    public HttpResponseResult<Object> create(@Validated @RequestBody ValidList<VideoLessonGroupDetail> videoLessonList) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+
+        videoLessonGroupDetailService.insertVideoLesson(videoLessonList,sysUser);
+        return succeed();
+    }
+
+    /** 
+    * @Description: 修改视频课 
+    * @Author: cy 
+    * @Date: 2022/3/31
+    */
+    @ApiOperation(value = "修改视频课", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/update", consumes="application/json", produces="application/json")
+    public HttpResponseResult<Object> update(@Validated @RequestBody VideoLessonGroupDetailUpVo detailUpVo) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+
+        videoLessonGroupDetailService.updateDetail(detailUpVo,sysUser);
+        return succeed();
+    }
+
+    /**
+    * @Description: 删除视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
+    @ApiOperation(value = "删除视频课", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping("/delete/{id}")
+    public Object delete(@PathVariable Long id) {
+        videoLessonGroupDetailService.deleteDetail(id);
+        return succeed();
+    }
+}