소스 검색

add:添加直播课详情

liujunchi 3 년 전
부모
커밋
1120053c01

+ 89 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/CourseGroupController.java

@@ -0,0 +1,89 @@
+package com.yonge.cooleshow.admin.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.CheckCourseTimeDto;
+import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch;
+import com.yonge.cooleshow.biz.dal.entity.AlbumFavorite;
+import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
+import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
+import com.yonge.cooleshow.biz.dal.support.PageUtil;
+import com.yonge.cooleshow.biz.dal.vo.*;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.cooleshow.common.page.PageInfo;
+import io.swagger.annotations.*;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 课程组表(CourseGroup)表控制层
+ *
+ * @author hgw
+ * @since 2022-03-18 15:29:10
+ */
+@Api(tags = "课程组表")
+@RestController
+@RequestMapping("/courseGroup")
+public class CourseGroupController extends BaseController {
+    /**
+     * 服务对象
+     */
+    @Resource
+    private CourseGroupService courseGroupService;
+
+    @Autowired
+    private SysUserFeignService sysUserFeignService;
+
+    @ApiOperation(value = "直播课列表", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/live/list", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<LiveCourseGroupVo>> list(@Valid @RequestBody LiveCourseGroupSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+        query.setCourseType(CourseScheduleEnum.LIVE);
+
+        IPage<LiveCourseGroupVo> liveCourseGroupVoIPage = courseGroupService
+                .selectAdminLivePage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(liveCourseGroupVoIPage));
+    }
+
+    @ApiOperation(value = "直播课购买学员信息", httpMethod="POST", consumes="application/json", produces="application/json")
+    @PostMapping(value="/live/student", consumes="application/json", produces="application/json")
+    public HttpResponseResult<PageInfo<LiveCourseGroupStudentVo>> student(@Valid @RequestBody LiveCourseGroupStudentSearch query) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+
+        IPage<LiveCourseGroupStudentVo> liveCourseGroupVoIPage = courseGroupService
+                .selectAdminLiveStudentPage(PageUtil.getPage(query), query);
+        return succeed(PageUtil.pageInfo(liveCourseGroupVoIPage));
+    }
+
+
+    @ApiOperation(value = "教学计划")
+    @PostMapping(value="/live/{courseGroupId}")
+    public HttpResponseResult<List<LiveCourseGroupPlanVo>> student(@ApiParam(value = "课程组编号ID", required = true)
+                                                                              @PathVariable("courseGroupId") Long courseGroupId) {
+        SysUser sysUser = sysUserFeignService.queryUserInfo();
+        if (sysUser == null) {
+            return failed("用户信息获取失败");
+        }
+
+        List<LiveCourseGroupPlanVo> LiveCourseGroupPlanVoList = courseGroupService.selectAdminLivePlan(courseGroupId);
+        return succeed(LiveCourseGroupPlanVoList);
+    }
+}
+

+ 39 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/CourseGroupDao.java

@@ -3,7 +3,12 @@ package com.yonge.cooleshow.biz.dal.dao;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
+import com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupPlanVo;
+import com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentVo;
+import com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo;
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -24,5 +29,39 @@ public interface CourseGroupDao extends BaseMapper<CourseGroup> {
      */
     <T> IPage<T> queryTeacherCourseGroup(Page<T> page, @Param("param") Map<String, Object> param);
 
+    /**
+     * 平台方 老师详情直播课列表
+     *
+     * @param page  分页信息
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<LiveCourseGroupVo> selectAdminLivePage(@Param("page") IPage<LiveCourseGroupVo> page, @Param(
+            "param") LiveCourseGroupSearch query);
+
+    /**
+     * 获取课程组声部
+     *
+     * @param courseGroupIdList 课程组id集合
+     * @return 声部信息
+     */
+    List<LiveCourseGroupVo> selectCourseGroupSubject(@Param("courseGroupIdList") List<Long> courseGroupIdList);
+
+    /**
+     * 直播课购买学生信息
+     *
+     * @param page  分页
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<LiveCourseGroupStudentVo> selectAdminLiveStudentPage(@Param("page") IPage<LiveCourseGroupStudentVo> page, @Param("param") LiveCourseGroupStudentSearch query);
+
+    /**
+     * 直播课程详情 课程计划
+     *
+     * @param courseGroupId 课程组id
+     * @return
+     */
+    List<LiveCourseGroupPlanVo> selectAdminLivePlan(@Param("courseGroupId") Long courseGroupId);
 }
 

+ 17 - 6
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/HomeworkAdminSearch.java

@@ -17,8 +17,11 @@ import java.util.Date;
  */
 public class HomeworkAdminSearch extends QueryInfo {
 
-    @ApiModelProperty("布置老师、学生,名称/手机号/编号")
-    private String search;
+    @ApiModelProperty("学生 名称/手机号/编号")
+    private String studentSearch;
+
+    @ApiModelProperty("布置老师 名称/手机号/编号")
+    private String teacherSearch;
 
     @ApiModelProperty("布置开始时间")
     @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
@@ -39,12 +42,20 @@ public class HomeworkAdminSearch extends QueryInfo {
     @ApiModelProperty(value = "布置作业状态 0:否,1:是",hidden = true)
     private YesOrNoEnum decorate;
 
-    public String getSearch() {
-        return search;
+    public String getStudentSearch() {
+        return studentSearch;
+    }
+
+    public void setStudentSearch(String studentSearch) {
+        this.studentSearch = studentSearch;
+    }
+
+    public String getTeacherSearch() {
+        return teacherSearch;
     }
 
-    public void setSearch(String search) {
-        this.search = search;
+    public void setTeacherSearch(String teacherSearch) {
+        this.teacherSearch = teacherSearch;
     }
 
     public Date getStartTime() {

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

@@ -0,0 +1,112 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
+import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.common.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Description  平台方 老师详情直播课列表查询条件
+ *
+ * @author liujunchi
+ * @date 2022-04-18
+ */
+@ApiModel("平台方-老师详情-直播课列表查询条件")
+public class LiveCourseGroupSearch extends QueryInfo {
+
+    @ApiModelProperty(value = "老师编号id",required = true)
+    @NotNull(message = "老师编号不能为空")
+    private Long teacherId;
+
+    @ApiModelProperty("课程编号/学员编号/学员姓名/学员手机号")
+    private String search;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("声部id")
+    private Long subjectId;
+
+    @ApiModelProperty("课程状态")
+    private CourseGroupEnum status;
+
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    @ApiModelProperty(value = "课程类型",hidden = true)
+    private CourseScheduleEnum courseType;
+
+    public CourseScheduleEnum getCourseType() {
+        return courseType;
+    }
+
+    public void setCourseType(CourseScheduleEnum courseType) {
+        this.courseType = courseType;
+    }
+
+    public Long getTeacherId() {
+        return teacherId;
+    }
+
+    public void setTeacherId(Long teacherId) {
+        this.teacherId = teacherId;
+    }
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Long getSubjectId() {
+        return subjectId;
+    }
+
+    public void setSubjectId(Long subjectId) {
+        this.subjectId = subjectId;
+    }
+
+    public CourseGroupEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CourseGroupEnum status) {
+        this.status = status;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

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

@@ -0,0 +1,76 @@
+package com.yonge.cooleshow.biz.dal.dto.search;
+
+import com.yonge.cooleshow.common.page.QueryInfo;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * Description 直播课购买学员 查询
+ *
+ * @author liujunchi
+ * @date 2022-04-18
+ */
+@ApiModel("直播课购买学员 查询")
+public class LiveCourseGroupStudentSearch extends QueryInfo {
+
+    @ApiModelProperty(value = "直播课 课程组id",required = true)
+    @NotNull(message = "课程组id不能为空")
+    private Long courseGroupId;
+
+    @ApiModelProperty("课程编号/学员编号/学员姓名/学员手机号")
+    private String search;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("开始时间")
+    private Date startTime;
+
+    @ApiModelProperty("结束时间")
+    private Date endTime;
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    @Override
+    public String getSearch() {
+        return search;
+    }
+
+    @Override
+    public void setSearch(String search) {
+        this.search = search;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+}

+ 3 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CourseGroupEnum.java

@@ -1,5 +1,7 @@
 package com.yonge.cooleshow.biz.dal.enums;
 
+import com.baomidou.mybatisplus.annotation.EnumValue;
+
 public enum CourseGroupEnum{
     ING("ING", "进行中"),
     COMPLETE("COMPLETE", "已完成"),
@@ -8,6 +10,7 @@ public enum CourseGroupEnum{
     APPLY("APPLY", "报名中"),
     NOT_SALE("NOT_SALE", "未开售");
 
+    @EnumValue
     private String code;
 
     private String msg;

+ 30 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java

@@ -1,13 +1,15 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.CourseGroup;
 import com.yonge.cooleshow.biz.dal.entity.CourseTimeEntity;
-import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.page.PageInfo;
 import org.redisson.api.RMap;
 
@@ -62,5 +64,31 @@ public interface CourseGroupService extends IService<CourseGroup> {
      */
     RMap<Long, List<CourseTimeEntity>> getLiveLockTimeCache(Long teacherId);
 
+    /**
+     * 平台方 老师详情直播课列表
+     *
+     * @param page 分页
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<LiveCourseGroupVo> selectAdminLivePage(IPage<LiveCourseGroupVo> page, LiveCourseGroupSearch query);
+
+    /**
+     * 课程详情 购买学生
+     *
+     * @param page 分页
+     * @param query 查询条件
+     * @return page
+     */
+    IPage<LiveCourseGroupStudentVo> selectAdminLiveStudentPage(IPage<LiveCourseGroupStudentVo> page,
+                                                               LiveCourseGroupStudentSearch query);
+
+    /**
+     * 直播课程详情 课程计划
+     *
+     * @param courseGroupId 课程组id
+     * @return
+     */
+    List<LiveCourseGroupPlanVo> selectAdminLivePlan(Long courseGroupId);
 }
 

+ 38 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java

@@ -12,13 +12,14 @@ import com.yonge.cooleshow.biz.dal.dao.CourseGroupDao;
 import com.yonge.cooleshow.biz.dal.dto.CheckCourseTimeDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto;
 import com.yonge.cooleshow.biz.dal.dto.LiveCourseGroupDto.CoursePlanDto;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupSearch;
+import com.yonge.cooleshow.biz.dal.dto.search.LiveCourseGroupStudentSearch;
 import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
 import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.support.PageUtil;
-import com.yonge.cooleshow.biz.dal.vo.CourseGroupVo;
-import com.yonge.cooleshow.biz.dal.vo.LiveCourseInfoVo;
+import com.yonge.cooleshow.biz.dal.vo.*;
 import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.exception.BizException;
 import com.yonge.cooleshow.common.page.PageInfo;
@@ -420,6 +421,41 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         return redissonClient.getMap(key);
     }
 
+    @Override
+    public IPage<LiveCourseGroupVo> selectAdminLivePage(IPage<LiveCourseGroupVo> page, LiveCourseGroupSearch query) {
+
+        IPage<LiveCourseGroupVo> liveCourseGroupVoIPage = baseMapper.selectAdminLivePage(page, query);
+        List<LiveCourseGroupVo> records = liveCourseGroupVoIPage.getRecords();
+
+        if (CollectionUtils.isEmpty(records)) {
+            return liveCourseGroupVoIPage;
+        }
+        List<Long> courseGroupIdList = records.stream()
+                                              .map(LiveCourseGroupVo::getCourseGroupId)
+                                              .collect(Collectors.toList());
+
+        // 获取课程组声部
+        List<LiveCourseGroupVo> subjectList = baseMapper.selectCourseGroupSubject(courseGroupIdList);
+        for (int i = 0; i < records.size(); i++) {
+            records.get(i).setSubjectName(subjectList.get(i).getSubjectName());
+        }
+
+        return liveCourseGroupVoIPage;
+    }
+
+    @Override
+    public IPage<LiveCourseGroupStudentVo> selectAdminLiveStudentPage(IPage<LiveCourseGroupStudentVo> page,
+                                                                      LiveCourseGroupStudentSearch query) {
+        return baseMapper.selectAdminLiveStudentPage(page, query);
+    }
+
+    @Override
+    public List<LiveCourseGroupPlanVo> selectAdminLivePlan(Long courseGroupId) {
+
+        return baseMapper.selectAdminLivePlan(courseGroupId);
+
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                 .map(sysUserFeignService::queryUserById)

+ 113 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupPlanVo.java

@@ -0,0 +1,113 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
+
+import java.util.Date;
+
+/**
+ * Description 教学计划信息
+ *
+ * @author liujunchi
+ * @date 2022-04-18
+ */
+@ApiModel("教学计划信息")
+public class LiveCourseGroupPlanVo {
+
+    @ApiModelProperty("课程id")
+    private Long courseId;
+
+    @ApiModelProperty("课堂编号")
+    private Long classNum;
+
+    @ApiModelProperty("上课日期")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone="GMT+8")
+    private Date classDate;
+
+    @ApiModelProperty("上课时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date startTime;
+
+    @ApiModelProperty("下课时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone="GMT+8")
+    private Date endTime;
+
+    @ApiModelProperty("课程状态 NOT_START未开始 ING进行中 COMPLETE已完成 CANCEL已取消")
+    private CourseScheduleEnum courseStatus;
+
+    @ApiModelProperty("教学计划/最多200字")
+    private String planInfo;
+
+    @ApiModelProperty("直播视频地址")
+    private String videoUrl;
+
+    public String getVideoUrl() {
+        return videoUrl;
+    }
+
+    public void setVideoUrl(String videoUrl) {
+        this.videoUrl = videoUrl;
+    }
+
+    public Long getCourseId() {
+        return courseId;
+    }
+
+    public void setCourseId(Long courseId) {
+        this.courseId = courseId;
+    }
+
+    public Long getClassNum() {
+        return classNum;
+    }
+
+    public void setClassNum(Long classNum) {
+        this.classNum = classNum;
+    }
+
+    public Date getClassDate() {
+        return classDate;
+    }
+
+    public void setClassDate(Date classDate) {
+        this.classDate = classDate;
+    }
+
+    public Date getStartTime() {
+        return startTime;
+    }
+
+    public void setStartTime(Date startTime) {
+        this.startTime = startTime;
+    }
+
+    public Date getEndTime() {
+        return endTime;
+    }
+
+    public void setEndTime(Date endTime) {
+        this.endTime = endTime;
+    }
+
+    public CourseScheduleEnum getCourseStatus() {
+        return courseStatus;
+    }
+
+    public void setCourseStatus(CourseScheduleEnum courseStatus) {
+        this.courseStatus = courseStatus;
+    }
+
+    public String getPlanInfo() {
+        return planInfo;
+    }
+
+    public void setPlanInfo(String planInfo) {
+        this.planInfo = planInfo;
+    }
+}

+ 75 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupStudentVo.java

@@ -0,0 +1,75 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Description 直播课购买学生信息
+ *
+ * @author liujunchi
+ * @date 2022-04-18
+ */
+@ApiModel("直播课签署学生信息")
+public class LiveCourseGroupStudentVo {
+
+    @ApiModelProperty("学生id")
+    private Long studentId;
+
+    @ApiModelProperty("学生姓名")
+    private String studentName;
+
+    @ApiModelProperty("支付金额")
+    private BigDecimal price;
+
+    @ApiModelProperty("订单号")
+    private String orderNo;
+
+    @ApiModelProperty("购买时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date payTime;
+
+
+    public Long getStudentId() {
+        return studentId;
+    }
+
+    public void setStudentId(Long studentId) {
+        this.studentId = studentId;
+    }
+
+    public String getStudentName() {
+        return studentName;
+    }
+
+    public void setStudentName(String studentName) {
+        this.studentName = studentName;
+    }
+
+    public BigDecimal getPrice() {
+        return price;
+    }
+
+    public void setPrice(BigDecimal price) {
+        this.price = price;
+    }
+
+    public String getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(String orderNo) {
+        this.orderNo = orderNo;
+    }
+
+    public Date getPayTime() {
+        return payTime;
+    }
+
+    public void setPayTime(Date payTime) {
+        this.payTime = payTime;
+    }
+}

+ 143 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/LiveCourseGroupVo.java

@@ -0,0 +1,143 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import com.fasterxml.jackson.annotation.JsonFormat;
+import com.yonge.cooleshow.biz.dal.enums.CourseGroupEnum;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.math.BigDecimal;
+import java.util.Date;
+
+/**
+ * Description 平台方 老师详情直播课列表
+ *
+ * @author liujunchi
+ * @date 2022-04-18
+ */
+@ApiModel("平台方 老师详情直播课列表")
+public class LiveCourseGroupVo {
+
+
+    @ApiModelProperty("课程组编号")
+    private Long courseGroupId;
+
+    @ApiModelProperty("课程名称")
+    private String name;
+
+    @ApiModelProperty("课程声部")
+    private String subjectName;
+
+    @ApiModelProperty("课程数")
+    private Long courseNum;
+
+    @ApiModelProperty("已结束课时数")
+    private Integer endCourseNum;
+
+    @ApiModelProperty("未开始课程数")
+    private Integer noStartCourseNum;
+
+    @ApiModelProperty("销售价格(元)")
+    private BigDecimal coursePrice;
+
+    @ApiModelProperty("购买人数")
+    private Integer preStudentNum;
+
+    @ApiModelProperty("课程状态")
+    private CourseGroupEnum status;
+
+    @ApiModelProperty("创建时间")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    private Date createTime;
+
+    @ApiModelProperty("课程简介")
+    private String courseIntroduce;
+
+
+    public Long getCourseNum() {
+        return courseNum;
+    }
+
+    public void setCourseNum(Long courseNum) {
+        this.courseNum = courseNum;
+    }
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getCourseIntroduce() {
+        return courseIntroduce;
+    }
+
+    public void setCourseIntroduce(String courseIntroduce) {
+        this.courseIntroduce = courseIntroduce;
+    }
+
+    public Long getCourseGroupId() {
+        return courseGroupId;
+    }
+
+    public void setCourseGroupId(Long courseGroupId) {
+        this.courseGroupId = courseGroupId;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getSubjectName() {
+        return subjectName;
+    }
+
+    public void setSubjectName(String subjectName) {
+        this.subjectName = subjectName;
+    }
+
+    public Integer getEndCourseNum() {
+        return endCourseNum;
+    }
+
+    public void setEndCourseNum(Integer endCourseNum) {
+        this.endCourseNum = endCourseNum;
+    }
+
+    public Integer getNoStartCourseNum() {
+        return noStartCourseNum;
+    }
+
+    public void setNoStartCourseNum(Integer noStartCourseNum) {
+        this.noStartCourseNum = noStartCourseNum;
+    }
+
+    public BigDecimal getCoursePrice() {
+        return coursePrice;
+    }
+
+    public void setCoursePrice(BigDecimal coursePrice) {
+        this.coursePrice = coursePrice;
+    }
+
+    public Integer getPreStudentNum() {
+        return preStudentNum;
+    }
+
+    public void setPreStudentNum(Integer preStudentNum) {
+        this.preStudentNum = preStudentNum;
+    }
+
+    public CourseGroupEnum getStatus() {
+        return status;
+    }
+
+    public void setStatus(CourseGroupEnum status) {
+        this.status = status;
+    }
+}

+ 123 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseGroupMapper.xml

@@ -89,6 +89,129 @@
         </where>
     </select>
 
+    <select id="selectAdminLivePage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
+        select distinct
+        cg.id_ as courseGroupId,
+        cg.name_ as name,
+        cg.complete_course_num_ as endCourseNum,
+        if(cg.complete_course_num_ = 0 ,cg.course_num_,cg.course_num_ - cg.complete_course_num_) as noStartCourseNum,
+        cg.course_price_ as coursePrice,
+        cg.pre_student_num_ as preStudentNum,
+        cg.status_ as status,
+        cg.course_num_ as courseNum,
+        cg.created_time_ as createTime,
+        cg.course_introduce_ as courseIntroduce
+        from course_group cg
+        left join course_schedule_student_payment cssp on cg.id_ = cssp.course_group_id_
+        <if test="param.search != null and param.search != ''">
+            left join sys_user su on su.id_ = cssp.user_id_
+        </if>
+        <where>
+            <if test="param.teacherId != null">
+                and #{param.teacherId} = cg.teacher_id_
+            </if>
+            <if test="param.search != null and param.search !=''">
+                and  (
+                    cg.id_ like concat('%',#{param.search},'%')
+                    or su.id_ like concat('%',#{param.search},'%')
+                    or su.username_ like concat('%',#{param.search},'%')
+                    or su.phone_  like concat('%',#{param.search},'%')
+                )
+            </if>
+            <if test="param.orderNo != null and param.orderNo != ''">
+                and cssp.order_no_ like concat('%',#{param.orderNo},'%')
+            </if>
+            <if test="param.subjectId != null">
+                and #{param.subjectId} = cg.subject_id_
+            </if>
+            <if test="param.status != null">
+                and #{param.status} = cg.status_
+            </if>
+            <if test="param.startTime != null">
+                and #{param.startTime} &lt;= cg.created_time_
+            </if>
+            <if test="param.endTime != null">
+                and #{param.endTime} &gt;= cg.created_time_
+            </if>
+            <if test="param.courseType != null">
+                and #{param.courseType} = cg.type_
+            </if>
+        </where>
+    </select>
+
+    <select id="selectCourseGroupSubject" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupVo">
+        select
+        cg.id_ as courseGroupId,
+        s.name_ as subjectName
+        from course_group cg
+        left join subject s on cg.subject_id_ = s.id_
+        <where>
+            <if test="courseGroupIdList != null and courseGroupIdList.size() != 0">
+                and cg.id_ in
+                <foreach collection="courseGroupIdList" item="item" open="(" close=")" separator=",">
+                    #{item}
+                </foreach>
+            </if>
+        </where>
+        <if test="courseGroupIdList != null and courseGroupIdList.size() != 0">
+            order by  field(cg.id_,
+            <foreach collection="courseGroupIdList" item="item" open="" close=")" separator=",">
+                #{item}
+            </foreach>
+        </if>
+    </select>
 
+    <select id="selectAdminLiveStudentPage" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupStudentVo">
+        select
+        su.id_ as studentId,
+        su.username_ as studentName,
+        cssp.actual_price_ as price,
+        cssp.order_no_ as orderNo,
+        cssp.created_time_ as payTime
+        from course_schedule_student_payment cssp
+        left join sys_user su on cssp.user_id_ = su.id_
+        <where>
+            <if test="param.courseGroupId != null">
+                and #{param.courseGroupId} = cssp.course_group_id_
+            </if>
+            <if test="param.search != null and param.search != ''">
+                and (
+                    cssp.course_group_id_ like concat('%',#{param.search},'%')
+                    or su.id_ like concat('%',#{param.search},'%')
+                    or su.username_ like concat('%',#{param.search},'%')
+                    or su.phone_ like concat('%',#{param.search},'%')
+                )
+            </if>
+            <if test="param.orderNo != null and param.orderNo != ''">
+                and cssp.order_no_ like concat('%',#{param.orderNo},'%')
+            </if>
+            <if test="param.startTime != null">
+                and #{param.startTime} &lt;= cssp.created_time_
+            </if>
+            <if test="param.endTime != null">
+                and #{param.endTime} &gt;= cssp.created_time_
+            </if>
+        </where>
+    </select>
 
+    <select id="selectAdminLivePlan" resultType="com.yonge.cooleshow.biz.dal.vo.LiveCourseGroupPlanVo">
+        select
+        cs.id_ as courseId,
+        cs.class_num_ as classNum,
+        cs.class_date_ as classDate,
+        cs.start_time_ as startTime,
+        cs.end_time_ as endTime,
+        cs.status_ as courseStatus,
+        cp.plan_ as planInfo,
+        lrv.url_ as videoUrl
+        from course_schedule cs
+        left join live_room_video lrv on cs.id_ = lrv.course_id_
+        left join course_plan cp on cp.course_group_id_ = cs.course_group_id_ and cp.class_num_ = cs.class_num_
+        <where>
+            <if test="courseGroupId != null">
+                and #{courseGroupId} = cs.course_group_id_
+            </if>
+        </where>
+        order by  cs.class_num_
+    </select>
 </mapper>

+ 9 - 7
cooleshow-user/user-biz/src/main/resources/config/mybatis/CourseHomeworkMapper.xml

@@ -68,13 +68,15 @@
             <if test="param.endTime != null">
                 and #{param.endTime} &gt; ch.create_time_
             </if>
-            <if test="param.search != null and param.search != ''">
-                and (su.id_ like concat('%',#{param.search},'%')
-                    or su.username_ like concat('%',#{param.search},'%')
-                    or su.phone_ like concat('%',#{param.search},'%')
-                    or su2.id_ like concat('%',#{param.search},'%')
-                    or su2.username_ like concat('%',#{param.search},'%')
-                    or su2.phone_ like concat('%',#{param.search},'%') )
+            <if test="param.studentSearch != null and param.studentSearch != ''">
+                and ( su2.id_ like concat('%',#{param.studentSearch},'%')
+                    or su2.username_ like concat('%',#{param.studentSearch},'%')
+                    or su2.phone_ like concat('%',#{param.studentSearch},'%') )
+            </if>
+            <if test="param.teacherSearch != null and param.teacherSearch != ''">
+                and ( su.id_ like concat('%',#{param.teacherSearch},'%')
+                or su.username_ like concat('%',#{param.teacherSearch},'%')
+                or su.phone_ like concat('%',#{param.teacherSearch},'%') )
             </if>
         </where>
         order by cs.start_time_ desc