liweifan преди 3 години
родител
ревизия
2524e23305
променени са 19 файла, в които са добавени 315 реда и са изтрити 40 реда
  1. 19 0
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java
  2. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/VideoLessonGroupDao.java
  3. 2 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  4. 11 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoGroupSearch.java
  5. 15 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/VideoLessonGroupSearch.java
  6. 48 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java
  7. 3 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java
  8. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java
  9. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OrderTypeEnum.java
  10. 14 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java
  11. 7 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/VideoLessonGroupService.java
  12. 2 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserAccountServiceImpl.java
  13. 10 12
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  14. 30 10
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/VideoLessonGroupServiceImpl.java
  15. 13 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonGroupUpVo.java
  16. 76 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonShelvesVo.java
  17. 5 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/PianoRoomChangeRecordMapper.xml
  18. 45 2
      cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml
  19. 10 1
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

+ 19 - 0
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/VideoLessonController.java

@@ -24,6 +24,7 @@ import org.springframework.validation.annotation.Validated;
 import org.springframework.web.bind.annotation.*;
 
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 import java.util.List;
 
 /**
@@ -134,6 +135,24 @@ public class VideoLessonController extends BaseController {
         return succeed();
     }
 
+    /**
+     * @Description: 更新上架状态
+     * @Author: cy
+     * @Date: 2022/4/25
+     */
+    @ApiOperation(value = "更新上架状态", httpMethod = "POST", consumes = "application/json", produces = "application/json")
+    @PostMapping(value = "/updateShelves", consumes = "application/json", produces = "application/json")
+    public HttpResponseResult<Object> updateShelves(@Validated @RequestBody VideoLessonShelvesVo shelvesVo) {
+        SysUser user = sysUserFeignService.queryUserInfo();
+        if (user == null || null == user.getId()) {
+            return failed(HttpStatus.FORBIDDEN, "请登录");
+        }
+        shelvesVo.setShelvesId(user.getId());
+        shelvesVo.setShelvesTime(new Date());
+        lessonGroupService.updateShelves(shelvesVo);
+        return succeed();
+    }
+
     @ApiOperation(value = "首页-视频课统计")
     @GetMapping("/countVideoGroup")
     public HttpResponseResult<CountVideoGroupVo> countVideoGroup() {

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

@@ -27,6 +27,8 @@ public interface VideoLessonGroupDao extends BaseMapper<VideoLessonGroup> {
 
     void updateExamine(VideoLessonExamineVo examineVo);
 
+    void updateShelves(VideoLessonShelvesVo shelvesVo);
+
     //学员详情-查询视频课列表
     List<VideoLessonStudentDetailVo> selectStudentPage(IPage page, @Param("param") VideoLessonSearch videoLessonSearch);
 

+ 2 - 2
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java

@@ -32,7 +32,7 @@ public class OrderReq {
     @ApiModelProperty(value = "订单名称 ", required = true)
     private String orderName;
     @NotNull(message = "订单类型不能为空")
-    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)", required = true)
+    @ApiModelProperty(value = "订单类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ACTI_REGIST、活动报名 ) 老师端(VIP、开通会员 PINAO_ROOM、琴房时长)", required = true)
     private OrderTypeEnum orderType;
     @ApiModelProperty(value = "订单描述信息 ")
     private String orderDesc;
@@ -61,7 +61,7 @@ public class OrderReq {
         @ApiModelProperty(value = "订单详情号", hidden = true)
         private String subOrderNo;
         @NotNull(message = "商品类型不能为空")
-        @ApiModelProperty(value = "商品类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播) 老师端( PINAO_ROOM、琴房时长)", required = true)
+        @ApiModelProperty(value = "商品类型: 学生端( VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ) 老师端( PINAO_ROOM、琴房时长)", required = true)
         private GoodTypeEnum goodType;
         @ApiModelProperty("商品名称 ")
         private String goodName;

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

@@ -23,6 +23,9 @@ public class VideoGroupSearch extends QueryInfo {
     @ApiModelProperty("声部id")
     private Integer subjectId;
 
+    @ApiModelProperty(value = "是否上架 (0:否  1:是)")
+    private Integer shelvesFlag;
+
     @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
     private String auditStatus;
 
@@ -60,6 +63,14 @@ public class VideoGroupSearch extends QueryInfo {
         this.subjectId = subjectId;
     }
 
+    public Integer getShelvesFlag() {
+        return shelvesFlag;
+    }
+
+    public void setShelvesFlag(Integer shelvesFlag) {
+        this.shelvesFlag = shelvesFlag;
+    }
+
     public String getAuditStatus() {
         return auditStatus;
     }

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

@@ -1,6 +1,5 @@
 package com.yonge.cooleshow.biz.dal.dto.search;
 
-import com.yonge.cooleshow.biz.dal.enums.AuthStatusEnum;
 import com.yonge.cooleshow.common.enums.YesOrNoEnum;
 import com.yonge.toolset.base.page.QueryInfo;
 import io.swagger.annotations.ApiModel;
@@ -12,8 +11,11 @@ import io.swagger.annotations.ApiModelProperty;
  */
 @ApiModel(value = "VideoLessonGroupSearch", description = "视频课组列表查询")
 public class VideoLessonGroupSearch extends QueryInfo {
-    @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
-    private AuthStatusEnum auditStatus;
+    @ApiModelProperty(value = "是否上架 (0:否  1:是)",hidden = true)
+    private Integer shelvesFlag;
+
+    @ApiModelProperty(value = "审核状态(DOING:审核中 PASS:已上架 UNPASS:审核失败 UNSHELVES: 下架)")
+    private String auditStatus;
 
     @ApiModelProperty(value = "视频课组id")
     private Long groupId;
@@ -54,6 +56,14 @@ public class VideoLessonGroupSearch extends QueryInfo {
     @ApiModelProperty("当前课程组id(查看其他课程时,筛选掉)")
     private Long videoLessonGroupId;
 
+    public Integer getShelvesFlag() {
+        return shelvesFlag;
+    }
+
+    public void setShelvesFlag(Integer shelvesFlag) {
+        this.shelvesFlag = shelvesFlag;
+    }
+
     public Long getVideoLessonGroupId() {
         return videoLessonGroupId;
     }
@@ -110,11 +120,11 @@ public class VideoLessonGroupSearch extends QueryInfo {
         this.studentId = studentId;
     }
 
-    public AuthStatusEnum getAuditStatus() {
+    public String getAuditStatus() {
         return auditStatus;
     }
 
-    public void setAuditStatus(AuthStatusEnum auditStatus) {
+    public void setAuditStatus(String auditStatus) {
         this.auditStatus = auditStatus;
     }
 

+ 48 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/VideoLessonGroup.java

@@ -83,6 +83,22 @@ public class VideoLessonGroup extends BaseEntity {
     @ApiModelProperty(value = "是否热门课程")
     private Integer hotFlag;  //是否热门课程
 
+    @TableField("shelves_flag_")
+    @ApiModelProperty(value = "是否上架 (0:否  1:是)")
+    private Integer shelvesFlag;  //是否上架 (0:否  1:是)
+
+    @TableField("shelves_time_")
+    @ApiModelProperty(value = "上下架时间")
+    private Date shelvesTime;
+
+    @TableField("shelves_reason_")
+    @ApiModelProperty(value = "上下架原因")
+    private String shelvesReason;
+
+    @TableField("shelves_id_")
+    @ApiModelProperty(value = "上下架人")
+    private Long shelvesId;
+
     @TableField("audit_status_")
     @ApiModelProperty(value = "审核状态(DOING:待审核 PASS:通过 UNPASS:未通过)")
     private AuthStatusEnum auditStatus;  //审核状态
@@ -259,4 +275,36 @@ public class VideoLessonGroup extends BaseEntity {
     public void setAuditVersion(YesOrNoEnum auditVersion) {
         this.auditVersion = auditVersion;
     }
+
+    public Integer getShelvesFlag() {
+        return shelvesFlag;
+    }
+
+    public void setShelvesFlag(Integer shelvesFlag) {
+        this.shelvesFlag = shelvesFlag;
+    }
+
+    public Date getShelvesTime() {
+        return shelvesTime;
+    }
+
+    public void setShelvesTime(Date shelvesTime) {
+        this.shelvesTime = shelvesTime;
+    }
+
+    public String getShelvesReason() {
+        return shelvesReason;
+    }
+
+    public void setShelvesReason(String shelvesReason) {
+        this.shelvesReason = shelvesReason;
+    }
+
+    public Long getShelvesId() {
+        return shelvesId;
+    }
+
+    public void setShelvesId(Long shelvesId) {
+        this.shelvesId = shelvesId;
+    }
 }

+ 3 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/GoodTypeEnum.java

@@ -16,7 +16,9 @@ public enum GoodTypeEnum implements BaseEnum<String, GoodTypeEnum> {
     VIDEO("视频课购买"),
     MUSIC("单曲点播"),
     PINAO_ROOM("琴房时长"),
-    MALL("商城");
+    ACTI_REGIST("活动报名")
+    ;
+
     @EnumValue
     private String code;
     private String msg;

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/MessageTypeEnum.java

@@ -94,7 +94,7 @@ public enum MessageTypeEnum implements BaseEnum<String, MessageTypeEnum> {
 
     MUSIC_SHEET_OUT_SALE_REASON("老师曲目下架通知"),
     LIVE_COURSE_OUT_SALE_REASON("老师直播课下架通知"),
-
+    VIDEO_COURSE_OUT_SALE_REASON("老师视频课下架通知"),
 
     ;
 

+ 2 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/OrderTypeEnum.java

@@ -15,7 +15,8 @@ public enum OrderTypeEnum implements BaseEnum<String, OrderTypeEnum> {
     LIVE("直播课购买"),
     VIDEO("视频课购买"),
     MUSIC("单曲点播"),
-    PINAO_ROOM("琴房时长")
+    PINAO_ROOM("琴房时长"),
+    ACTI_REGIST("活动报名")
     ;
     @EnumValue
     private String code;

+ 14 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UserOrderService.java

@@ -168,5 +168,18 @@ public interface UserOrderService extends IService<UserOrder> {
 
     Date getAccountPeriodTime(UserOrderDetailVo orderDetailVo);
 
-    public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType);
+    /**
+     * 通过goodType获取分润
+     * @param goodType
+     * @return
+     */
+    BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType);
+
+    /**
+     * 通过配置名称获取分润比例
+     * @param configName
+     * @return
+     */
+    BigDecimal getShareFreeByConfigName(String configName);
+
 }

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

@@ -28,6 +28,11 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
     void updateGroup(VideoLessonGroupUpVo lessonGroupUpVo);
 
     void updateGroup(VideoLessonExamineVo examineVo);
+    /**
+     * 更新上架状态
+     * @param shelvesVo
+     */
+    void updateShelves(VideoLessonShelvesVo shelvesVo);
 
     void deleteGroup(Long id);
 
@@ -59,4 +64,6 @@ public interface VideoLessonGroupService extends IService<VideoLessonGroup> {
      * @return
      */
     ShareProfitVo shareVideoCourseProfit(SysUser sysUser, Long videoGroupId);
+
+
 }

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

@@ -16,6 +16,7 @@ import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
 import com.yonge.cooleshow.biz.dal.service.*;
 import com.yonge.cooleshow.biz.dal.vo.UserAccountRecordVo;
 import com.yonge.cooleshow.biz.dal.vo.res.AccountShareTotal;
+import com.yonge.cooleshow.common.constant.SysConfigConstant;
 import com.yonge.cooleshow.common.entity.MallOrderItemDto;
 import com.yonge.cooleshow.common.enums.CacheNameEnum;
 import com.yonge.cooleshow.biz.dal.vo.res.AccountTotal;
@@ -481,7 +482,7 @@ public class UserAccountServiceImpl extends ServiceImpl<UserAccountDao, UserAcco
         //分润
         if (null != shareDto.getPromoterId() && !shareDto.getPromoterId().equals(shareDto.getUserId()) && shareDto.getPromoterId() != 0) {
             //获取分润收益费率
-            BigDecimal shareFeeRate = userOrderService.getShareFreeByGoodType(GoodTypeEnum.MALL);
+            BigDecimal shareFeeRate = userOrderService.getShareFreeByConfigName(SysConfigConstant.MUSIC_SHARE_FEE);
             if (shareFeeRate.compareTo(BigDecimal.ZERO) > 0) {
                 //入老师账户
                 BigDecimal shareFee = expectPrice.multiply(shareFeeRate).setScale(2, RoundingMode.HALF_UP);

+ 10 - 12
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java

@@ -879,28 +879,26 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     @Override
     public BigDecimal getShareFreeByGoodType(GoodTypeEnum goodType) {
         if (GoodTypeEnum.VIP.equals(goodType)) {
-            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.VIP_SHARE_FEE))
-                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            return getShareFreeByConfigName(SysConfigConstant.VIP_SHARE_FEE);
         }
         if (GoodTypeEnum.LIVE.equals(goodType)) {
-            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.LIVE_SHARE_FEE))
-                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            return getShareFreeByConfigName(SysConfigConstant.LIVE_SHARE_FEE);
         }
         if (GoodTypeEnum.VIDEO.equals(goodType)) {
-            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.VIDEO_SHARE_FEE))
-                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            return getShareFreeByConfigName(SysConfigConstant.VIDEO_SHARE_FEE);
         }
         if (GoodTypeEnum.MUSIC.equals(goodType)) {
-            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MUSIC_SHARE_FEE))
-                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
-        }
-        if (GoodTypeEnum.MALL.equals(goodType)) {
-            return new BigDecimal(sysConfigService.findConfigValue(SysConfigConstant.MALL_SHARE_FEE))
-                    .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+            return getShareFreeByConfigName(SysConfigConstant.MUSIC_SHARE_FEE);
         }
         return BigDecimal.ZERO;
     }
 
+    @Override
+    public BigDecimal getShareFreeByConfigName(String configName) {
+        return new BigDecimal(sysConfigService.findConfigValue(configName))
+                .divide(new BigDecimal("100"), 2, RoundingMode.HALF_UP);
+    }
+
     /**
      * 获取平台服务费率
      *

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

@@ -10,13 +10,11 @@ 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.LiveSaleOutDto;
 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.VideoLessonAuthRecord;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroup;
-import com.yonge.cooleshow.biz.dal.entity.VideoLessonGroupDetail;
+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;
@@ -38,10 +36,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.transaction.annotation.Transactional;
 
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -171,7 +166,31 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
                 log.warn("视频课审核失败,{}", e.getMessage());
             }
         }
+    }
+
+    @Override
+    public void updateShelves(VideoLessonShelvesVo shelvesVo) {
+        //改主表
+        videoLessonGroupDao.updateShelves(shelvesVo);
+        if(shelvesVo.getShelvesFlag() == 0){
+            //发推送
+            sendOutSaleMessage(shelvesVo);
+        }
+    }
 
+    private void sendOutSaleMessage(VideoLessonShelvesVo shelvesVo) {
+        VideoLessonGroupVo detail = detail(shelvesVo.getId());
+        // 发送课程下架通知
+        try {
+            SysUser user = sysUserFeignService.queryUserById(detail.getTeacherId());
+            Map<Long, String> receivers = new HashMap<>();
+            receivers.put(user.getId(), user.getPhone());
+            sysMessageService.batchSendMessage(MessageSenderPluginContext.MessageSender.JIGUANG, MessageTypeEnum.VIDEO_COURSE_OUT_SALE_REASON,
+                    receivers, null, 0, null, ClientEnum.TEACHER.getCode(),
+                    detail.getLessonName(), shelvesVo.getShelvesReason());
+        } catch (Exception e) {
+            log.warn("视频课下架推送发送失败,{}", e.getMessage());
+        }
     }
 
     /**
@@ -341,7 +360,7 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
      */
     @Override
     public IPage<LessonGroupVo> selectLessonGroup(IPage<LessonGroupVo> page, VideoLessonGroupSearch query) {
-        query.setAuditStatus(AuthStatusEnum.PASS);
+        query.setAuditStatus(AuthStatusEnum.PASS.getCode());
         return page.setRecords(baseMapper.selectLessonGroup(page, query));
     }
 
@@ -378,7 +397,6 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
 
     @Override
     public ShareProfitVo shareVideoCourseProfit(SysUser sysUser, Long videoGroupId) {
-
         VideoLessonStudentVo videoLessonStudentVo = selectVideoLesson(videoGroupId);
 
         String teacherVideoGroupShareProfitUrl= sysConfigService.findConfigValue(SysConfigConstant.TEACHER_VIDEO_GROUP_SHARE_PROFIT_URL);
@@ -393,4 +411,6 @@ public class VideoLessonGroupServiceImpl extends ServiceImpl<VideoLessonGroupDao
         return result;
 
     }
+
+
 }

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

@@ -1,5 +1,6 @@
 package com.yonge.cooleshow.biz.dal.vo;
 
+import com.baomidou.mybatisplus.annotation.TableField;
 import com.yonge.cooleshow.biz.dal.valid.ListValue;
 import com.yonge.cooleshow.common.entity.BaseEntity;
 import io.swagger.annotations.ApiModel;
@@ -45,6 +46,10 @@ public class VideoLessonGroupUpVo extends BaseEntity {
     @ApiModelProperty(value = "是否热门课程")
     private Integer hotFlag;
 
+    @ApiModelProperty(value = "是否上架 (0:否  1:是)")
+    @ListValue(vals = {0, 1}, message = "是否上架必须提交指定值")
+    private Integer shelvesFlag;
+
     @ApiModelProperty(value = "审核状态(0:待审核;1:通过;2:未通过)")
     @ListValue(vals = {0, 1, 2}, message = "审核状态必须提交指定值")
     private Integer auditStatus;
@@ -136,4 +141,12 @@ public class VideoLessonGroupUpVo extends BaseEntity {
     public void setAuditStatus(Integer auditStatus) {
         this.auditStatus = auditStatus;
     }
+
+    public Integer getShelvesFlag() {
+        return shelvesFlag;
+    }
+
+    public void setShelvesFlag(Integer shelvesFlag) {
+        this.shelvesFlag = shelvesFlag;
+    }
 }

+ 76 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/VideoLessonShelvesVo.java

@@ -0,0 +1,76 @@
+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 io.swagger.models.auth.In;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+import java.util.Date;
+
+/**
+ * @Author: cy
+ * @Date: 2022/4/19
+ */
+@ApiModel(value = "VideoLessonShelvesVo")
+public class VideoLessonShelvesVo extends BaseEntity {
+    @ApiModelProperty(value = "主键id")
+    @NotNull(message = "视频组id不能为空")
+    private Long id;
+
+    @ApiModelProperty(value = "是否上架 (0:否  1:是)")
+    @ListValue(vals = {0, 1}, message = "是否上架必须提交指定值")
+    private Integer shelvesFlag;
+
+    @ApiModelProperty(value = "原因")
+    @NotBlank(message = "原因不能为空")
+    private String shelvesReason;
+
+    @ApiModelProperty(value = "上下架时间",hidden = true)
+    private Date shelvesTime;
+
+    @ApiModelProperty(value = "上下架操作人",hidden = true)
+    private Long shelvesId;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+
+    public Integer getShelvesFlag() {
+        return shelvesFlag;
+    }
+
+    public void setShelvesFlag(Integer shelvesFlag) {
+        this.shelvesFlag = shelvesFlag;
+    }
+
+    public String getShelvesReason() {
+        return shelvesReason;
+    }
+
+    public void setShelvesReason(String shelvesReason) {
+        this.shelvesReason = shelvesReason;
+    }
+
+    public Date getShelvesTime() {
+        return shelvesTime;
+    }
+
+    public void setShelvesTime(Date shelvesTime) {
+        this.shelvesTime = shelvesTime;
+    }
+
+    public Long getShelvesId() {
+        return shelvesId;
+    }
+
+    public void setShelvesId(Long shelvesId) {
+        this.shelvesId = shelvesId;
+    }
+}

+ 5 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/PianoRoomChangeRecordMapper.xml

@@ -45,13 +45,15 @@
                 and t.in_or_out_ = #{param.inOrOut}
             </if>
             <if test="param.operaUser != null and param.operaUser != ''">
-                and u.username_ LIKE CONCAT('%', #{param.operaUser}, '%')
+                and (
+                    u.real_name_ LIKE CONCAT('%', #{param.operaUser}, '%') or u.username_ LIKE CONCAT('%', #{param.operaUser}, '%')
+                )
             </if>
             <if test="param.startTime !=null">
-                <![CDATA[AND t.created_time_ >= #{param.startTime} ]]>
+                <![CDATA[AND t.create_time_ >= #{param.startTime} ]]>
             </if>
             <if test="param.endTime !=null">
-                <![CDATA[AND t.created_time_ <= #{param.endTime} ]]>
+                <![CDATA[AND t.create_time_ <= #{param.endTime} ]]>
             </if>
         </where>
     </select>

+ 45 - 2
cooleshow-user/user-biz/src/main/resources/config/mybatis/VideoLessonGroupMapper.xml

@@ -15,11 +15,15 @@
 		<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="shelves_flag_" jdbcType="TINYINT" property="shelvesFlag" />
+		<result column="shelves_time_" property="shelvesTime" />
+		<result column="shelves_reason_" property="shelvesReason" />
+		<result column="shelves_id_" property="shelvesId" />
 		<result column="audit_status_" jdbcType="TINYINT" property="auditStatus" />
-		<result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
-		<result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
 		<result column="audit_id_" jdbcType="INTEGER" property="auditId" />
 		<result column="audit_name_" jdbcType="VARCHAR" property="auditName" />
+		<result column="create_time_" jdbcType="TIMESTAMP" property="createTime" />
+		<result column="update_time_" jdbcType="TIMESTAMP" property="updateTime" />
 	</resultMap>
 
 	<sql id="baseColumns">
@@ -35,7 +39,11 @@
 		g.lesson_tag_ AS lessonTag,
 		g.top_flag_ AS topFlag,
 		g.hot_flag_ AS hotFlag,
+		g.shelves_flag_ AS shelvesFlag,
+		g.shelves_time_ as shelvesTime,
+		g.shelves_reason_ as shelvesReason,
 		g.audit_status_ AS auditStatus,
+		g.shelves_id_ as shelvesId,
 		g.create_time_ AS createTime,
 		g.update_time_ AS updateTime,
 		g.audit_id_ AS auditId,
@@ -54,6 +62,9 @@
 		g.lesson_tag_ AS lessonTag,
 		g.top_flag_ AS topFlag,
 		g.hot_flag_ AS hotFlag,
+		g.shelves_flag_ AS shelvesFlag,
+		g.shelves_time_ as shelvesTime,
+		g.shelves_reason_ as shelvesReason,
 		g.create_time_ AS createTime,
 		g.update_time_ AS updateTime,
 		g.audit_id_ AS auditId,
@@ -72,6 +83,10 @@
 			<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="shelvesFlag !=null">shelves_flag_ = #{shelvesFlag},</if>
+			<if test="shelvesTime !=null">shelves_time_ = #{shelvesTime},</if>
+			<if test="shelvesReason !=null and shelvesReason !=''">shelves_reason_ = #{shelvesReason},</if>
+			<if test="shelvesId !=null">shelves_id_ = #{shelvesId},</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})
@@ -89,6 +104,18 @@
 		</set>
 		WHERE id_ = #{id}
 	</update>
+
+	<update id="updateShelves">
+		UPDATE video_lesson_group
+		<set>
+			<if test="shelvesFlag !=null">shelves_flag_ = #{shelvesFlag},</if>
+			<if test="shelvesTime !=null">shelves_time_ = #{shelvesTime},</if>
+			<if test="shelvesReason !=null and shelvesReason!=''">shelves_reason_ = #{shelvesReason},</if>
+			<if test="shelvesId !=null">shelves_id_ = #{shelvesId},</if>
+			update_time_ = SYSDATE()
+		</set>
+		WHERE id_ = #{id}
+	</update>
 	<select id="selectPage" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonGroupVo">
 		SELECT
 			<include refid="baseColumns"/>
@@ -101,6 +128,9 @@
 		LEFT JOIN sys_user s ON g.teacher_id_ = s.id_
 		LEFT JOIN `subject` b ON g.lesson_subject_=b.id_
 		<where>
+			<if test="param.shelvesFlag !=null">
+				AND g.shelves_flag_ = #{param.shelvesFlag}
+			</if>
 			<if test="param.auditStatus !=null">
 				AND g.audit_status_ = #{param.auditStatus}
 			</if>
@@ -154,6 +184,9 @@
 			<if test="null != param.lessonSubject and '' != param.lessonSubject">
 				AND g.lesson_subject_ = #{param.lessonSubject}
 			</if>
+			<if test="param.shelvesFlag !=null">
+				AND g.shelves_flag_ = #{param.shelvesFlag}
+			</if>
 			<if test="param.auditStatus !=null">
 				AND g.audit_status_ = #{param.auditStatus}
 			</if>
@@ -195,6 +228,9 @@
 			<if test="param.auditStatus !=null">
 				AND g.audit_status_ = #{param.auditStatus}
 			</if>
+			<if test="param.shelvesFlag !=null">
+				AND g.shelves_flag_ = #{param.shelvesFlag}
+			</if>
 		</where>
 	</select>
 	<select id="selectPurchaseStudent" resultType="com.yonge.cooleshow.biz.dal.vo.VideoLessonPurchaseVo">
@@ -256,6 +292,9 @@
 				g.lesson_name_ LIKE CONCAT('%', #{param.search}, '%')
 				)
 			</if>
+			<if test="param.shelvesFlag !=null">
+				AND g.shelves_flag_ = #{param.shelvesFlag}
+			</if>
 			<if test="param.auditStatus !=null">
 				AND g.audit_status_ = #{param.auditStatus}
 			</if>
@@ -301,6 +340,9 @@
 			<if test="param.auditStatus !=null and param.auditStatus !=''">
 				AND r.audit_status_ = #{param.auditStatus}
 			</if>
+			<if test="param.shelvesFlag !=null">
+				AND g.shelves_flag_ = #{param.shelvesFlag}
+			</if>
 			<if test="param.subjectId !=null">
 				AND g.lesson_subject_ = #{param.subjectId}
 			</if>
@@ -341,6 +383,7 @@
 			COUNT(1) AS payCount
 		FROM video_lesson_purchase_record r
 		LEFT JOIN video_lesson_group g ON r.video_lesson_group_id_=g.id_
+		where g.shelves_flag_ = 1 and g.audit_status_ = 'PASS'
 		GROUP BY r.video_lesson_group_id_
 		ORDER BY payCount DESC
 		LIMIT 5

+ 10 - 1
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/VideoLessonGroupController.java

@@ -16,6 +16,7 @@ import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.cooleshow.biz.dal.valid.AddGroup;
 import com.yonge.cooleshow.biz.dal.valid.UpdateGroup;
 import com.yonge.toolset.base.page.PageInfo;
+import io.netty.util.internal.StringUtil;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.apache.commons.collections.CollectionUtils;
@@ -63,6 +64,14 @@ public class VideoLessonGroupController extends BaseController {
         if (sysUser == null || sysUser.getId() == null) {
             return failed(HttpStatus.FORBIDDEN, "请登录");
         }
+        if(!StringUtil.isNullOrEmpty(query.getAuditStatus())){
+            if(query.getAuditStatus().equals("UNSHELVES")){
+                query.setShelvesFlag(0);
+            }else{
+                query.setShelvesFlag(1);
+            }
+        }
+
         if (query.getMyself() == null || query.getMyself()) {
             query.setTeacherId(sysUser.getId());
         } else {
@@ -70,7 +79,7 @@ public class VideoLessonGroupController extends BaseController {
             query.setAuditVersion(appVersionInfoService.getAppAuditVersion(query.getPlatform(),query.getVersion()));
         }
         if (query.getMyself() != null && !query.getMyself()) {
-            query.setAuditStatus(AuthStatusEnum.PASS);
+            query.setAuditStatus(AuthStatusEnum.PASS.getCode());
         }
         IPage<VideoLessonGroupVo> pages = videoLessonGroupService.selectPage(PageUtil.getPage(query), query);
         return succeed(PageUtil.pageInfo(pages));