ソースを参照

Merge branch 'master' of http://git.dayaedu.com/yonge/cooleshow

liujunchi 3 年 前
コミット
11516d68f9

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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