Forráskód Böngészése

视频课组所有接口完成

cy 3 éve
szülő
commit
2fd5646fd6
26 módosított fájl, 1007 hozzáadás és 378 törlés
  1. 0 150
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupController.java
  2. 0 108
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonGroupDetailController.java
  3. 5 9
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  4. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDetailDao.java
  5. 7 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  6. 23 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonSearch.java
  7. 11 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroupDetail.java
  8. 12 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupDetailService.java
  9. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  10. 91 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupDetailServiceImpl.java
  11. 32 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  12. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/AddGroup.java
  13. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/DeleteGroup.java
  14. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/ListValue.java
  15. 8 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/UpdateGroup.java
  16. 33 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/impl/ListValueValidator.java
  17. 138 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/valid/impl/ValidList.java
  18. 107 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailUpVo.java
  19. 0 33
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupDetailVo.java
  20. 139 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupUpVo.java
  21. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupVo.java
  22. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonPurchaseStudent.java
  23. 87 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupDetailMapper.xml
  24. 35 55
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  25. 91 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java
  26. 106 0
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupDetailController.java

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

@@ -1,150 +0,0 @@
-package com.yonge.cooleshow.admin.controller;
-
-import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.baomidou.mybatisplus.core.toolkit.Wrappers;
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import javax.validation.Valid;
-import com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDto;
-import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
-import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
-import com.yonge.cooleshow.biz.dal.entity.MusicSheet;
-import com.yonge.cooleshow.biz.dal.support.Condition;
-import com.yonge.cooleshow.biz.dal.support.Query;
-import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.common.page.PageInfo;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiParam;
-import org.springframework.web.bind.annotation.*;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.RequestMapping;
-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;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-
-/**
- * 视频课基本信息表 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.setTeacherId(sysUser.getId());
-        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 = "教师端视频课-首页分页")
-    @GetMapping(value="/page")
-    public HttpResponseResult<PageInfo<VideoLessonGroupVo>> page(VideoLessonGroupSearch search, Query query) {
-        IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(Condition.getPage(query),search);
-        return succeed(Condition.pageInfo(pages));
-/*        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null) {
-            return failed("用户信息获取失败");
-        }
-
-        int pageNo = videoLessonGroupDto.getPageNo();
-        int pageSize = videoLessonGroupDto.getPageSize();
-
-        try {
-            if (pageNo==0) {
-                pageNo = 1;
-            }
-            if (pageSize==0) {
-                pageSize = 10;
-            }
-
-            String search;
-            if(videoLessonGroupDto.getSearch()==null){
-                search = "";
-            } else {
-                search = videoLessonGroupDto.getSearch();
-            }
-            LambdaQueryWrapper<VideoLessonGroup> lambdaQueryWrapper = Wrappers.lambdaQuery();
-            lambdaQueryWrapper.or().like(VideoLessonGroup::getLessonName , search);
-            lambdaQueryWrapper.or().like(VideoLessonGroup::getLessonSubject , search);
-            lambdaQueryWrapper.or().like(VideoLessonGroup::getLessonTag , search);
-            Page<VideoLessonGroup> page = new Page<>(pageNo,pageSize);
-            videoLessonGroupService.selectPage(page,)
-            return succeed(videoLessonGroupService.page(page, lambdaQueryWrapper));
-        } catch (Exception e) {
-            e.printStackTrace();
-            return HttpResponseResult.failed(e.getMessage());
-        }*/
-    }
-
-    /**
-     * 教师端视频课-查询详情
-     * 根据组id查组内课程及购买人员信息
-     */
-    @ApiOperation(value = "教师端视频课-查询详情")
-    @GetMapping("/detail")
-    public HttpResponseResult<VideoLessonGroupDetailVo> detail(@ApiParam(value = "主键", required = true) @RequestParam Long id) {
-        VideoLessonGroupDetailVo detail = videoLessonGroupService.detail(id);
-        return succeed(detail);
-    }
-}

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

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

@@ -4,8 +4,7 @@ import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 import org.apache.ibatis.annotations.Param;
 
@@ -18,12 +17,9 @@ import java.util.List;
  * @version v1.0
  **/
 public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
-    //查询视频课组-分页
-    List<VideoLessonGroupVo> selectPage(IPage page,@Param("param")  VideoLessonGroupSearch search);
+    //查询视频课组
+    List<VideoLessonGroupVo> selectPage(IPage page,@Param("param")  VideoLessonGroupSearch query);
 
-    //根据组id查视频课详情
-    List<VideoLessonGroupDetail> selectDetail(Long id);
-
-    //根据组id查询购买学员信息
-    List<VideoLessonPurchaseStudent> selectStudent(Long id);
+    //修改视频课组
+    void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
 }

+ 23 - 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,21 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @version v1.0
  **/
 public interface VideoLessonGroupDetailDao extends BaseMapper<VideoLessonGroupDetail> {
+    //TODO 根据组id查视频课详情
+    List<VideoLessonGroupDetail> selectDetail(Long id);
+
+    //TODO 根据组id查询购买学员信息
+    List<VideoLessonPurchaseStudent> selectStudent(Long id);
+
+    //查询视频课
+    List<VideoLessonGroupDetail> selectPage(IPage page,@Param("param") VideoLessonSearch query);
+
+    //新增视频课
+    void insertVideoLesson(List<VideoLessonGroupDetail> list);
+
+    //修改视频课
+    void updateDetail(VideoLessonGroupDetailUpVo detailUpVo);
 
+    //根据组id删除视频课
+    void deleteByGroupId(Long groupId);
 }

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

@@ -1,10 +1,15 @@
 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;
 
-@ApiModel(value = "VideoLessonGroupSearch", description = "视频课列表查询")
-public class VideoLessonGroupSearch {
+/**
+ * @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;
 

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

+ 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_")

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

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

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

@@ -1,12 +1,10 @@
 package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.yonge.cooleshow.biz.dal.dto.search.AuthEntryRecordSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
 import com.baomidou.mybatisplus.extension.service.IService;
-import com.yonge.cooleshow.biz.dal.vo.TeacherAuthEntryRecordVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupDetailVo;
+import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
 import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
 
 /**
@@ -16,7 +14,9 @@ import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
  * @version v1.0
  **/
 public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
-    IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch search);
+    IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch query);
 
-    VideoLessonGroupDetailVo detail(Long id);
+    void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
+
+    void deleteGroup(Long id);
 }

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

@@ -1,13 +1,25 @@
 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.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 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 +34,87 @@ 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: 新增视频课
+    * @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("创建课程必须属于同组");
+        }
+
+        //添加课程
+        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);
+    }
 }

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

@@ -1,17 +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.VideoLessonGroupDetailVo;
+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服务实现类
@@ -26,21 +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
-    public IPage<VideoLessonGroupVo> selectPage(IPage<VideoLessonGroupVo> page, VideoLessonGroupSearch search) {
-        return page.setRecords(baseMapper.selectPage(page,search));
+    @Transactional(rollbackFor = Exception.class)
+    public void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo) {
+        videoLessonGroupDao.updateGroup(lessonGroupUpVo);
     }
 
+    /**
+    * @Description: 删除视频课
+    * @Author: cy
+    * @Date: 2022/3/31
+    */
     @Override
-    public VideoLessonGroupDetailVo detail(Long id) {
-        VideoLessonGroupDetailVo detailVo = new VideoLessonGroupDetailVo();
-        detailVo.setGroupDetailList(videoLessonGroupDao.selectDetail(id));
-        detailVo.setPurchaseStudent(videoLessonGroupDao.selectStudent(id));
-        return detailVo;
+    @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;
+    }
+
+}

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

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

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

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

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

@@ -4,6 +4,10 @@ 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 {
 

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

@@ -5,6 +5,10 @@ import io.swagger.annotations.ApiModelProperty;
 
 import java.util.Date;
 
+/**
+ * @author: cy
+ * @date: 2022/3/30 11:39
+ */
 @ApiModel(value = "VideoLessonPurchaseStudent对象")
 public class VideoLessonPurchaseStudent {
     @ApiModelProperty("头像地址")

+ 87 - 3
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,95 @@
 		 <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>
+	<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>
 
 
+	<select id="selectDetail" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail"
+			parameterType="java.lang.Long">
+		SELECT
+		<include refid="groupDetail"/>
+		FROM video_lesson_group_detail
+		WHERE video_lesson_group_id_ = #{id}
+	</select>
 
+	<select id="selectStudent" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent"
+			parameterType="java.lang.Long">
+		SELECT
+		<include refid="userDetail"/>
+		FROM sys_user
+		WHERE id_ IN
+		(SELECT student_id_
+		FROM video_lesson_purchase_record
+		WHERE video_lesson_group_id_ = #{id})
+	</select>
 </mapper>

+ 35 - 55
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -2,25 +2,24 @@
 <!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="baseColumns">
 		g.id_ AS id,
 		g.lesson_name_ AS lessonName,
@@ -38,28 +37,26 @@
 		g.create_time_ AS createTime,
 		g.update_time_ AS updateTime
 	</sql>
-	<sql id="groupDetail">
-		id_ AS id,
-		video_lesson_group_id_ AS videoLessonGroupId,
-		video_title_ AS videoTitle,
-		video_content_ AS videoContent,
-		video_url_ AS videoUrl,
-		cover_url_ AS coverUrl,
-		charge_flag_ AS chargeFlag,
-		sort_number_ AS sortNumber,
-		teacher_id_ AS teacherId,
-		create_time_ AS createTime,
-		update_by_ AS updateBy,
-		update_time_ AS updateTime
-	</sql>
-	<sql id="userDetail">
-		username_ AS username,
-		avatar_ AS avatar,
-		gender_ AS gender,
-		create_time_ AS createTime
-	</sql>
 
-    <select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo">
+	<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,
@@ -73,21 +70,4 @@
 			</if>
 		</where>
 	</select>
-	<select id="selectDetail" resultType="com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail"
-			parameterType="java.lang.Long">
-		SELECT
-			<include refid="groupDetail"/>
-		FROM video_lesson_group_detail
-		WHERE video_lesson_group_id_ = #{id}
-	</select>
-	<select id="selectStudent" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseStudent"
-			parameterType="java.lang.Long">
-		SELECT
-			<include refid="userDetail"/>
-		FROM sys_user
-		WHERE id_ IN
-			  (SELECT student_id_
-			   FROM video_lesson_purchase_record
-			   WHERE video_lesson_group_id_ = #{id})
-	</select>
 </mapper>

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

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

@@ -0,0 +1,106 @@
+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.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: 新增视频课
+    * @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();
+    }
+}