zouxuan hace 7 meses
padre
commit
cef772f38f

+ 10 - 69
cooleshow-app/src/main/java/com/yonge/cooleshow/website/controller/VideoGroupController.java

@@ -1,10 +1,10 @@
 package com.yonge.cooleshow.website.controller;
 
 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.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
+import com.yonge.cooleshow.biz.dal.service.SysUserService;
 import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
@@ -19,16 +19,10 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.HttpStatus;
 import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.PostMapping;
-import org.springframework.web.bind.annotation.RequestBody;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
 
+import javax.annotation.Resource;
 import javax.validation.constraints.NotNull;
 
 /**
@@ -41,53 +35,28 @@ import javax.validation.constraints.NotNull;
 @RequestMapping("${app-config.url.website:}/videoLessonGroup")
 @Api(tags = "视频课组")
 public class VideoGroupController extends BaseController {
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
+    @Resource
+    private SysUserService sysUserService;
 
-    @Autowired
+    @Resource
     private VideoLessonGroupService videoLessonGroupService;
 
-    /**
-    * @Description: 查询视频课组
-    * @Author: cy
-    * @Date: 2022/3/31
-    */
     @ApiOperation(value = "查询视频课组")
     @PostMapping(value = "/page")
     public HttpResponseResult<PageInfo<VideoLessonGroupVo>> page(@RequestBody VideoLessonGroupSearch query) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        if (sysUser == null || sysUser.getId() == null) {
-            return failed(HttpStatus.FORBIDDEN, "请登录");
-        }
-
-        query.setTeacherId(sysUser.getId());
+        query.setTeacherId(sysUserService.getUserId());
         IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.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());
+        videoLessonGroup.setTeacherId(sysUserService.getUserId());
         videoLessonGroupService.save(videoLessonGroup);
         return succeed();
     }
 
-    /**
-    * @Description: 修改视频课组
-    * @Author: cy
-    * @Date: 2022/3/31
-    */
     @ApiOperation(value = "修改视频课组", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/updateGroup", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> update(@Validated @RequestBody VideoLessonGroupUpVo lessonGroupUpVo) {
@@ -95,11 +64,6 @@ public class VideoGroupController extends BaseController {
         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) {
@@ -107,19 +71,10 @@ public class VideoGroupController extends BaseController {
         return succeed();
     }
 
-    /**
-    * @Description: 新增视频课组&视频课
-    * @Author: cy
-    * @Date: 2022/4/1
-    */
     @ApiOperation(value = "新增视频课组&视频课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/add", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> add(@Validated(AddGroup.class) @RequestBody VideoLessonVo lessonVo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-
-        if (sysUser == null||sysUser.getId()==null) {
-            return failed("用户信息获取失败");
-        }
+        SysUser sysUser = sysUserService.getUser();
         lessonVo.setUserBy(sysUser.getId());
         if ( CollectionUtils.isEmpty(lessonVo.getLessonList())) {
             return failed("课程不能为空");
@@ -128,30 +83,16 @@ public class VideoGroupController extends BaseController {
         return succeed();
     }
 
-    /**
-     * @Description: 根据组id查询视频课&视频课组
-     * @Author: cy
-     * @Date: 2022/4/2
-     */
     @ApiOperation(value = "根据组id查询视频课&视频课组")
     @GetMapping(value="/selectVideoLesson")
     public HttpResponseResult<VideoLessonStudentVo> selectVideoLesson(@NotNull(message = "视频组id不能为空") Long groupId) {
         return succeed(videoLessonGroupService.selectVideoLesson(groupId));
     }
 
-    /**
-     * @Description: 修改视频课组&视频课
-     * @Author: cy
-     * @Date: 2022/4/7
-     */
     @ApiOperation(value = "修改视频课组&视频课", httpMethod = "POST", consumes = "application/json", produces = "application/json")
     @PostMapping(value = "/update", consumes = "application/json", produces = "application/json")
     public HttpResponseResult<Object> update(@Validated(UpdateGroup.class) @RequestBody VideoLessonVo lessonVo) {
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-
-        if (sysUser == null||sysUser.getId()==null) {
-            return failed("用户信息获取失败");
-        }
+        SysUser sysUser = sysUserService.getUser();
         lessonVo.setUserBy(sysUser.getId());
         if ( CollectionUtils.isEmpty(lessonVo.getLessonList())) {
             return failed("课程不能为空");

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

@@ -1,6 +1,7 @@
 package com.yonge.cooleshow.biz.dal.dao;
 
 import java.util.List;
+import java.util.Map;
 
 import com.yonge.cooleshow.biz.dal.queryInfo.CouponInfoQuery;
 import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
@@ -74,4 +75,5 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
     //查询付费人数前5的课程
     List<CountVideoGroupVo.VideoLesson> selectVideoLesson();
 
+    List<Map<Long, Long>> countMusicAlbum(@Param("videoLessonGroupIds") List<Long> videoLessonGroupIds);
 }

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

@@ -1,88 +1,51 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
-import java.math.BigDecimal;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Optional;
-import java.util.stream.Collectors;
-
-import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
-import com.google.common.collect.Lists;
-import com.yonge.cooleshow.biz.dal.dto.CourseMusicAlbumRelationDto;
-import com.yonge.cooleshow.biz.dal.entity.CourseRelationMusicAlbum;
-import com.yonge.cooleshow.biz.dal.entity.MusicAlbum;
-import com.yonge.cooleshow.biz.dal.entity.MusicTag;
-import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
-import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
-import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
-import com.yonge.cooleshow.biz.dal.service.CourseRelationMusicAlbumService;
-import com.yonge.cooleshow.biz.dal.service.MusicSheetPurchaseRecordService;
-import com.yonge.cooleshow.biz.dal.service.MusicTagService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupDetailService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonPurchaseRecordService;
-import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
-import com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDetailDto;
-import org.apache.commons.collections.CollectionUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.google.common.collect.Lists;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.TeacherDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonAuthRecordDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDao;
 import com.yonge.cooleshow.biz.dal.dao.VideoLessonGroupDetailDao;
+import com.yonge.cooleshow.biz.dal.dto.CourseMusicAlbumRelationDto;
+import com.yonge.cooleshow.biz.dal.dto.VideoLessonGroupDetailDto;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonGroupSearch;
 import com.yonge.cooleshow.biz.dal.dto.search.VideoLessonSearch;
-import com.yonge.cooleshow.biz.dal.entity.Subject;
-import com.yonge.cooleshow.biz.dal.entity.Teacher;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonAuthRecord;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupLog;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
 import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
 import com.yonge.cooleshow.biz.dal.enums.TeacherTagEnum;
-import com.yonge.cooleshow.biz.dal.service.SysConfigService;
-import com.yonge.cooleshow.biz.dal.service.SysMessageService;
-import com.yonge.cooleshow.biz.dal.service.TeacherService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupLogService;
-import com.yonge.cooleshow.biz.dal.service.VideoLessonGroupService;
-import com.yonge.cooleshow.biz.dal.vo.CountVideoGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.LessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.ShareProfitVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonAuthGroup;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonExamineVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupUpVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonShelvesVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentDetailVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonStudentVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonTeacherVo;
-import com.yonge.cooleshow.biz.dal.vo.VideoLessonVo;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseRelationTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.course.CourseTypeEnum;
+import com.yonge.cooleshow.biz.dal.queryInfo.CourseRelationQueryInfo;
+import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.biz.dal.wrapper.course.CourseRelationWrapper;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.string.MessageFormatter;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
+import com.yonge.toolset.utils.collection.MapUtil;
 import com.yonge.toolset.utils.json.JsonUtil;
+import org.apache.commons.collections.CollectionUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.math.BigDecimal;
+import java.util.*;
+import java.util.stream.Collectors;
 
 /**
  * VideoLessonGroupService服务实现类
@@ -152,10 +115,15 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
 			}
 		}
         List<VideoLessonGroupVo> videoLessonGroupVos = baseMapper.selectPage(page, query);
+        //获取直播课关联的曲目数量
+        List<Long> videoLessonGroupIds = videoLessonGroupVos.stream().map(VideoLessonGroupVo::getId).collect(Collectors.toList());
+        List<Map<Long,Long>> musicNum = this.baseMapper.countMusicAlbum(videoLessonGroupIds);
+        Map<Long,Long> map = MapUtil.convertIntegerMap(musicNum);
         for (VideoLessonGroupVo videoLessonGroupVo : videoLessonGroupVos) {
             if (videoLessonGroupVo.getLessonPrice().compareTo(BigDecimal.ZERO) == 0) {
                 videoLessonGroupVo.setCountStudent(videoLessonGroupVo.getCountStudent() + videoLessonGroupVo.getVirtualNumber());
             }
+            videoLessonGroupVo.setMusicNum(map.get(videoLessonGroupVo.getId()));
         }
         return page.setRecords(videoLessonGroupVos);
     }

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

@@ -3,11 +3,13 @@ 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;
+import lombok.Data;
 
 /**
  * @author: cy
  * @date: 2022/3/31 11:39
  */
+@Data
 @ApiModel(value = "VideoLessonGroupVo对象", description = "视频课组列表")
 public class VideoLessonGroupVo extends VideoLessonGroup {
     private String realName;
@@ -21,35 +23,6 @@ public class VideoLessonGroupVo extends VideoLessonGroup {
     @ApiModelProperty("购买人数")
     private Integer countStudent;
 
-    public String getRealName() {
-        return realName;
-    }
-
-    public void setRealName(String realName) {
-        this.realName = realName;
-    }
-
-    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;
-    }
+    @ApiModelProperty("曲目数量")
+    private Long musicNum;
 }

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

@@ -601,4 +601,23 @@
 		ORDER BY payCount DESC
 		LIMIT 5
 	</select>
+	<select id="countMusicAlbum" resultType="java.util.Map">
+		select c.course_group_id_ 'key',COUNT(distinct ms.id_) 'value' from
+			(
+				select crma.course_group_id_, music_album_id_ music_sheet_id_ from course_relation_music_album crma
+				where crma.relation_type_ = 'MUSIC' AND crma.course_group_id_ IN
+				<foreach collection="videoLessonGroupIds" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>
+				union
+				select crma.course_group_id_,amr.music_sheet_id_ from course_relation_music_album crma
+				left join album_music_relate amr ON amr.id_ = crma.music_album_id_
+				where crma.relation_type_ = 'ALBUM' AND course_group_id_ IN
+				<foreach collection="videoLessonGroupIds" item="item" open="(" separator="," close=")">
+					#{item}
+				</foreach>) c
+				LEFT JOIN music_sheet ms ON c.music_sheet_id_ = ms.id_
+				AND state_ = 1 AND client_state_ = 1 AND del_flag_ = 0
+		GROUP BY c.course_group_id_
+	</select>
 </mapper>