瀏覽代碼

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

liujunchi 3 年之前
父節點
當前提交
820dfd7c7e
共有 34 個文件被更改,包括 498 次插入205 次删除
  1. 5 5
      cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java
  2. 2 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/LiveRoomConstant.java
  3. 30 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/HomeDao.java
  4. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java
  5. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java
  6. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthMusicianRecordDao.java
  7. 27 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/HomeTotalReq.java
  8. 9 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/OrderReq.java
  9. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderSearch.java
  10. 1 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrder.java
  11. 5 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/enums/CourseGroupEnum.java
  12. 5 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/CourseGroupService.java
  13. 5 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/HomeService.java
  14. 9 4
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java
  15. 1 8
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java
  16. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthEntryRecordService.java
  17. 0 7
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/TeacherAuthMusicianRecordService.java
  18. 21 1
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/CourseGroupServiceImpl.java
  19. 35 17
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/HomeServiceImpl.java
  20. 98 2
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/LiveRoomServiceImpl.java
  21. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/MusicSheetServiceImpl.java
  22. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthEntryRecordServiceImpl.java
  23. 0 5
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherAuthMusicianRecordServiceImpl.java
  24. 4 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/TeacherFreeTimeServiceImpl.java
  25. 5 3
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserOrderServiceImpl.java
  26. 0 93
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/HomeTotalVo.java
  27. 75 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeTotalTeacher.java
  28. 42 0
      cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/res/HomeUserToDoNum.java
  29. 13 0
      cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml
  30. 0 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml
  31. 0 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml
  32. 0 3
      cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml
  33. 101 0
      cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentLiveRoomController.java
  34. 4 3
      cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherLiveRoomController.java

+ 5 - 5
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/HomeController.java

@@ -6,6 +6,8 @@ import com.yonge.cooleshow.biz.dal.dto.req.HomeTotalReq;
 import com.yonge.cooleshow.biz.dal.entity.Subject;
 import com.yonge.cooleshow.biz.dal.service.HomeService;
 import com.yonge.cooleshow.biz.dal.vo.HomeTotalVo;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
 import io.swagger.annotations.*;
@@ -22,21 +24,19 @@ import javax.validation.Valid;
 public class HomeController extends BaseController {
     @Autowired
     private HomeService homeService;
-    @Autowired
-    private SysUserFeignService sysUserFeignService;
 
     @ApiOperation(value = "查询用户待办事项数")
     @PostMapping("/getUserToDoNum")
     @PreAuthorize("@pcs.hasPermissions('home/getUserToDoNum')")
-    public HttpResponseResult<HomeTotalVo.UserToDoNum> getUserToDoNum() {
+    public HttpResponseResult<HomeUserToDoNum> getUserToDoNum() {
         return succeed(homeService.getUserToDoNum());
     }
 
     @ApiOperation(value = "老师数据统计")
     @PostMapping("/totalTeacher")
     @PreAuthorize("@pcs.hasPermissions('home/totalTeacher')")
-    public HttpResponseResult<HomeTotalVo.TotalTeacher> totalTeacher(@Valid @RequestBody HomeTotalReq totalReq) {
-        return succeed(homeService.totalTeacher(totalReq));
+    public HttpResponseResult<HomeTotalTeacher> totalTeacher(@Valid @RequestBody HomeTotalReq totalReq) {
+        return homeService.totalTeacher(totalReq);
     }
 
 

+ 2 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/constant/LiveRoomConstant.java

@@ -23,4 +23,6 @@ public interface LiveRoomConstant {
     //房间的信息
     String LIVE_ROOM_INFO = String.join(":", COOLESHOW, "LIVE_ROOM_INFO", ROOM_UID);
 
+    //记录老师最后变更的状态消息时间
+    String LIVE_TEACHER_LAST_TIME = String.join(":", COOLESHOW, "LIVE_TEACHER_LAST_TIME", USER_ID);
 }

+ 30 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/HomeDao.java

@@ -0,0 +1,30 @@
+package com.yonge.cooleshow.biz.dal.dao;
+
+import com.yonge.cooleshow.biz.dal.dto.req.HomeTotalReq;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
+
+import java.util.List;
+
+/**
+ * 首页统计查询
+ * @Author: liweifan
+ * @Data: 2022/4/20 18:34
+ */
+public interface HomeDao {
+    /***
+     * 待办事项统计查询
+     * @author liweifan
+     * @updateTime 2022/4/20 18:39
+     * @return: com.yonge.cooleshow.biz.dal.vo.HomeUserToDoNum
+     */
+    HomeUserToDoNum getUserToDoNum();
+    /***
+     * 统计查询老师信息
+     * @author liweifan
+     * @param: totalReq
+     * @updateTime 2022/4/21 11:33
+     * @return: java.util.List<com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher>
+     */
+    List<HomeTotalTeacher> totalTeacher(HomeTotalReq totalReq);
+}

+ 0 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/MusicSheetDao.java

@@ -110,11 +110,4 @@ public interface MusicSheetDao extends BaseMapper<MusicSheet> {
     List<TeacherMusicSheetVo> selectAuditPage(@Param("page") IPage<TeacherMusicSheetVo> page, @Param(
             "param") TeacherMusicSheetAuditSearch query);
 
-    /***
-     * 查询待处理的记录数
-     * @author liweifan
-     * @updateTime 2022/3/30 18:45
-     * @return: java.lang.Integer
-     */
-    Integer getUserToDoNum();
 }

+ 0 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthEntryRecordDao.java

@@ -42,11 +42,4 @@ public interface TeacherAuthEntryRecordDao extends BaseMapper<TeacherAuthEntryRe
 	 * @return: com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord
 	 */
 	TeacherAuthEntryRecordVo getLastRecordByUserId(@Param("userId") Long userId);
-	/***
-	 * 查询待处理的记录数
-	 * @author liweifan
-	 * @updateTime 2022/3/30 18:35
-	 * @return: java.lang.Integer
-	 */
-	Integer getUserToDoNum();
 }

+ 0 - 7
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/TeacherAuthMusicianRecordDao.java

@@ -29,11 +29,4 @@ public interface TeacherAuthMusicianRecordDao extends BaseMapper<TeacherAuthMusi
 	List<MusicianAuthEntryRecordVo> selectPage(@Param("page")IPage page,@Param("param") AuthEntryRecordSearch authEntryRecordSearch);
 
     TeacherAuthMusicianRecord getLastRecordByUserId(@Param("userId") Long userId);
-	/***
-	 * 查询待处理的记录数
-	 * @author liweifan
-	 * @updateTime 2022/3/30 18:45
-	 * @return: java.lang.Integer
-	 */
-    Integer getUserToDoNum();
 }

+ 27 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/req/HomeTotalReq.java

@@ -1,11 +1,14 @@
 package com.yonge.cooleshow.biz.dal.dto.req;
 
+import com.fasterxml.jackson.annotation.JsonFormat;
 import com.yonge.cooleshow.biz.dal.enums.TimeTypeEnum;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
+import org.springframework.format.annotation.DateTimeFormat;
 
 import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
+import java.util.Date;
 
 /**
  * @Author: liweifan
@@ -21,7 +24,14 @@ public class HomeTotalReq {
     @ApiModelProperty("时间 yyyy | yyyy-MM")
     private String dateTime;
 
-
+    @ApiModelProperty(value = "开始时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date startTime;
+    @ApiModelProperty(value = "结束时间")
+    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date endTime;
 
     public TimeTypeEnum getTimeType() {
         return timeType;
@@ -38,4 +48,20 @@ public class HomeTotalReq {
     public void setDateTime(String dateTime) {
         this.dateTime = dateTime;
     }
+
+    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;
+    }
 }

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

@@ -43,6 +43,7 @@ public class OrderReq {
     @ApiModel(value = "OrderReqInfo对象", description = "下单请求业务详情对象")
     public class OrderReqInfo {
         private Long userId;
+        private String orderNo;
         @NotNull(message = "商品类型不能为空")
         @ApiModelProperty(value = "商品类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播 ", required = true)
         private GoodTypeEnum goodType;
@@ -59,6 +60,14 @@ public class OrderReq {
             this.userId = userId;
         }
 
+        public String getOrderNo() {
+            return orderNo;
+        }
+
+        public void setOrderNo(String orderNo) {
+            this.orderNo = orderNo;
+        }
+
         public GoodTypeEnum getGoodType() {
             return goodType;
         }

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dto/search/OrderSearch.java

@@ -21,7 +21,7 @@ public class OrderSearch extends QueryInfo{
 	private String searchNo;
 	@ApiModelProperty("订单类型:  VIP、开通会员  PRACTICE、陪练课购买  LIVE、直播课购买 VIDEO、视频课购买 MUSIC、单曲点播")
 	private OrderTypeEnum orderType;
-	@ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 ")
+	@ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 FAIL 支付失败")
 	private OrderStatusEnum status;
 	@ApiModelProperty(value = "交易开始时间")
 	@DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")

+ 1 - 1
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/entity/UserOrder.java

@@ -41,7 +41,7 @@ public class UserOrder implements Serializable {
     @ApiModelProperty("订单描述信息 ")
     @TableField(value = "order_desc_")
     private String orderDesc;
-    @ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 ")
+    @ApiModelProperty("订单状态 WAIT_PAY 待支付 PAYING 支付中  PAID 已付款 CLOSE 已关闭 FAIL 支付失败")
     @TableField(value = "status_")
     private OrderStatusEnum status;
     @ApiModelProperty("原价 ")

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

@@ -4,12 +4,12 @@ import com.baomidou.mybatisplus.annotation.EnumValue;
 import com.yonge.cooleshow.common.enums.BaseEnum;
 
 public enum CourseGroupEnum implements BaseEnum<String,CourseGroupEnum> {
-    ING("ING", "进行中"),
-    COMPLETE("COMPLETE", "已完成"),
+    ING("ING", "进行中"),//课程已开始进行中
+    COMPLETE("COMPLETE", "已完成"),//课程组课程全部完成
     DISSOLVE("DISSOLVE", "未成课"),//解散课程
-    CANCEL("CANCEL", "已取消"),
-    APPLY("APPLY", "报名中"),
-    NOT_SALE("NOT_SALE", "未开售");
+    CANCEL("CANCEL", "已取消"),//课程已取消
+    APPLY("APPLY", "报名中"),//开售中可以报名
+    NOT_SALE("NOT_SALE", "未开售");//还未到开售日期
 
     @EnumValue
     private String code;

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

@@ -135,5 +135,10 @@ public interface CourseGroupService extends IService<CourseGroup> {
      * 学生购买直播课程-成功-回调
      */
     void buyLiveCourseSuccess(UserOrderDetailVo orderParam);
+
+    /**
+     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+     */
+    void openCourseGroup();
 }
 

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

@@ -2,6 +2,9 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.yonge.cooleshow.biz.dal.dto.req.HomeTotalReq;
 import com.yonge.cooleshow.biz.dal.vo.HomeTotalVo;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
 
 /**
  * @Author: liweifan
@@ -14,7 +17,7 @@ public interface HomeService {
      * @updateTime 2022/3/30 18:10
      * @return: com.yonge.cooleshow.biz.dal.vo.HomeTotalVo
      */
-    HomeTotalVo.UserToDoNum getUserToDoNum();
+    HomeUserToDoNum getUserToDoNum();
 
     /***
      * 统计老师数据
@@ -23,5 +26,5 @@ public interface HomeService {
      * @updateTime 2022/4/20 17:00
      * @return: com.yonge.cooleshow.biz.dal.vo.HomeTotalVo.TotalTeacher
      */
-    HomeTotalVo.TotalTeacher totalTeacher(HomeTotalReq totalReq);
+    HttpResponseResult<HomeTotalTeacher> totalTeacher(HomeTotalReq totalReq);
 }

+ 9 - 4
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java

@@ -2,10 +2,7 @@ package com.yonge.cooleshow.biz.dal.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
 import com.yonge.cooleshow.biz.dal.dao.LiveRoomDao;
-import com.yonge.cooleshow.biz.dal.entity.ImRoomMessage;
-import com.yonge.cooleshow.biz.dal.entity.LiveRoom;
-import com.yonge.cooleshow.biz.dal.entity.RoomInfoCache;
-import com.yonge.cooleshow.biz.dal.entity.RoomUserInfoCache;
+import com.yonge.cooleshow.biz.dal.entity.*;
 import com.yonge.cooleshow.biz.dal.vo.RoomVo;
 
 import java.util.List;
@@ -47,6 +44,14 @@ public interface LiveRoomService extends IService<LiveRoom> {
     String createTempLiveRoom(Map<String, Object> param);
 
     /**
+     * <p>主讲人处理进入和退出房间数据
+     * <p>观看者只处理退出房间数据
+     *
+     * @param userState 用户状态数据
+     */
+    void opsRoom(List<ImUserStateSync> userState);
+
+    /**
      * 同步点赞数量
      *
      * @param roomUid 房间uid

+ 1 - 8
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/MusicSheetService.java

@@ -159,14 +159,6 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @return
      */
     Integer countTeacherMusicSheet(SysUser sysUser);
-    /***
-     * 查询待处理的记录数
-     * @author liweifan
-     * @updateTime 2022/3/30 18:41
-     * @return: java.lang.Integer
-     */
-    Integer getUserToDoNum();
-
     /**
      * 保存曲目信息
      *
@@ -174,4 +166,5 @@ public interface MusicSheetService extends IService<MusicSheet> {
      * @return
      */
     boolean saveMusicSheet(MusicSheetDto musicSheetDto,Long userId);
+
 }

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

@@ -57,11 +57,4 @@ public interface TeacherAuthEntryRecordService extends IService<TeacherAuthEntry
      * @return: com.yonge.cooleshow.biz.dal.entity.TeacherAuthEntryRecord
      */
     TeacherAuthEntryRecordVo getLastRecordByUserId(Long userId);
-    /***
-     * 查询待处理的记录数
-     * @author liweifan
-     * @updateTime 2022/3/30 18:33
-     * @return: java.lang.Integer
-     */
-    Integer getUserToDoNum();
 }

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

@@ -66,11 +66,4 @@ public interface TeacherAuthMusicianRecordService extends IService<TeacherAuthMu
      * @return: com.yonge.cooleshow.biz.dal.entity.TeacherAuthMusicianRecord
      */
     TeacherAuthMusicianRecord getLastRecordByUserId(Long userId);
-    /***
-     * 查询待处理的记录数
-     * @author liweifan
-     * @updateTime 2022/3/30 18:41
-     * @return: java.lang.Integer
-     */
-    Integer getUserToDoNum();
 }

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

@@ -641,7 +641,7 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         //总课酬  1 - (1 * 手续费率)
         BigDecimal totalRatePrice = expectPrice.subtract(expectPrice.multiply(liveServiceRate)).setScale(2, RoundingMode.HALF_UP);
         //获取每节课的课酬 key 课堂数  value 课酬
-        Map<Integer, BigDecimal> singerCourseSalary =  getCourseAveragePrice(courseGroup.getCourseNum(), totalRatePrice);
+        Map<Integer, BigDecimal> singerCourseSalary = getCourseAveragePrice(courseGroup.getCourseNum(), totalRatePrice);
         //写入课酬表计算-根据课程组总金额计算分配到每节课的金额
         Date now = new Date();
         List<CourseScheduleTeacherSalary> teacherSalaryList = new ArrayList<>();
@@ -707,5 +707,25 @@ public class CourseGroupServiceImpl extends ServiceImpl<CourseGroupDao, CourseGr
         return Optional.ofNullable(sysUserFeignService.queryUserInfo())
                 .orElseThrow(() -> new BizException("用户不存在"));
     }
+
+    /**
+     * 定时任务-定时修改为报名中状态-每隔10分钟执行一次
+     */
+    public void openCourseGroup() {
+        LocalDate toDay = LocalDate.now();
+        //查询今天未开售的课程组
+        List<CourseGroup> courseGroupList = this.list(Wrappers.<CourseGroup>lambdaQuery()
+                .eq(CourseGroup::getSalesStartDate, toDay.toString())
+                .eq(CourseGroup::getStatus, CourseGroupEnum.NOT_SALE.getCode()));
+        if (CollectionUtils.isEmpty(courseGroupList)) {
+            return;
+        }
+        //修改为报名中状态
+        courseGroupList.forEach(courseGroup -> {
+            courseGroup.setStatus(CourseGroupEnum.APPLY.getCode());
+            this.updateById(courseGroup);
+        })  ;
+    }
+
 }
 

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

@@ -1,14 +1,23 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import com.yonge.cooleshow.biz.dal.dao.HomeDao;
 import com.yonge.cooleshow.biz.dal.dto.req.HomeTotalReq;
+import com.yonge.cooleshow.biz.dal.enums.TimeTypeEnum;
 import com.yonge.cooleshow.biz.dal.service.HomeService;
 import com.yonge.cooleshow.biz.dal.service.MusicSheetService;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthEntryRecordService;
 import com.yonge.cooleshow.biz.dal.service.TeacherAuthMusicianRecordService;
 import com.yonge.cooleshow.biz.dal.vo.HomeTotalVo;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher;
+import com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import com.yonge.toolset.utils.date.DateUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 
+import java.util.Calendar;
+import java.util.List;
+
 /**
  * @Author: liweifan
  * @Data: 2022/3/30 18:08
@@ -16,30 +25,39 @@ import org.springframework.stereotype.Service;
 @Service
 public class HomeServiceImpl implements HomeService {
     @Autowired
-    private TeacherAuthEntryRecordService entryRecordService;
-    @Autowired
-    private TeacherAuthMusicianRecordService musicianRecordService;
-    @Autowired
-    private MusicSheetService musicSheetService;
+    private HomeDao baserMapper;
+
     @Override
-    public HomeTotalVo.UserToDoNum getUserToDoNum() {
-        Integer entryNum = entryRecordService.getUserToDoNum();
-        Integer musicianNum = musicianRecordService.getUserToDoNum();
-        Integer musicNum = musicSheetService.getUserToDoNum();
-
-        HomeTotalVo.UserToDoNum userToDoNum = new HomeTotalVo.UserToDoNum();
-        userToDoNum.setEntryNum(entryNum);
-        userToDoNum.setMusicianNum(musicianNum);
-        userToDoNum.setMusicNum(musicNum);
+    public HomeUserToDoNum getUserToDoNum() {
+        HomeUserToDoNum userToDoNum = baserMapper.getUserToDoNum();
+        userToDoNum.setEntryNum(null == userToDoNum.getEntryNum() ? 0 : userToDoNum.getEntryNum());
+        userToDoNum.setMusicianNum(null == userToDoNum.getMusicianNum() ? 0 : userToDoNum.getMusicianNum());
+        userToDoNum.setMusicNum(null == userToDoNum.getMusicNum() ? 0 : userToDoNum.getMusicNum());
         return userToDoNum;
     }
 
     @Override
-    public HomeTotalVo.TotalTeacher totalTeacher(HomeTotalReq totalReq) {
+    public HttpResponseResult<HomeTotalTeacher> totalTeacher(HomeTotalReq totalReq) {
+        //参数处理
+        Calendar calendar = Calendar.getInstance();
+        if (TimeTypeEnum.MONTH.equals(totalReq.getTimeType())) {
+            String[] classDateSp = totalReq.getDateTime().split("-");
+            calendar.set(Integer.parseInt(classDateSp[0]), Integer.parseInt(classDateSp[1]), 1, 0, 0, 0);
+            totalReq.setStartTime(calendar.getTime());
+            totalReq.setEndTime(DateUtil.dayEnd(DateUtil.getLastDayOfMonth(calendar.getTime())));
+        } else if (TimeTypeEnum.YEAR.equals(totalReq.getTimeType())) {
+            calendar.set(Integer.parseInt(totalReq.getDateTime()), 1, 1, 0, 0, 0);
+            totalReq.setStartTime(calendar.getTime());
+
+            calendar.set(Integer.parseInt(totalReq.getDateTime()), 12, 1, 0, 0, 0);
+            totalReq.setEndTime(DateUtil.dayEnd(DateUtil.getLastDayOfMonth(calendar.getTime())));
+        } else {
+            return HttpResponseResult.failed("参数异常");
+        }
+        //统计查询
+        List<HomeTotalTeacher> totalList = baserMapper.totalTeacher(totalReq);
 
-        /*if(){
 
-        }*/
         return null;
     }
 }

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

@@ -325,6 +325,102 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         log.info("destroyLiveRoom success: {}", roomId);
     }
 
+
+    /**
+     * <p>主讲人处理进入和退出房间数据
+     * <p>观看者只处理退出房间数据
+     *
+     * @param userState 用户状态数据
+     */
+    public void opsRoom(List<ImUserStateSync> userState) {
+        if (CollectionUtils.isEmpty(userState)) {
+            return;
+        }
+        userState.forEach(user -> {
+            log.info("opsRoom>>>> {}", JSONObject.toJSONString(user));
+            if (StringUtils.isBlank(user.getStatus())) {
+                return;
+            }
+            Date now = new Date();
+            //获取当前用户状态变更的时间
+            long userStateTime = Optional.ofNullable(user.getTime()).orElse(now.getTime());
+            String userIdStr = user.getUserid();
+            RBucket<Long> userStateTimeCache = redissonClient.getBucket(LIVE_TEACHER_LAST_TIME.replace(USER_ID, userIdStr));
+            if (userStateTimeCache.isExists()) {
+                //缓存的时间比当前传入时间大则放弃这条数据
+                long cacheTime = userStateTimeCache.get();
+                if (cacheTime > userStateTime) {
+                    return;
+                }
+            }
+            //将最新的时间写入缓存
+            userStateTimeCache.set(userStateTime, 5L, TimeUnit.MINUTES);
+            //直播间号
+            String roomUid;
+            //根据用户id获取用户当前房间号
+            RBucket<String> roomUidCache = redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userIdStr));
+            if (!roomUidCache.isExists()) {
+                return;
+            }
+            roomUid = roomUidCache.get();
+            //根据房间号获取房间信息
+            RBucket<RoomInfoCache> roomInfoCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
+            if (!roomInfoCache.isExists()) {
+                return;
+            }
+            RoomInfoCache roomInfo = roomInfoCache.get();
+            //主讲人
+            if (roomInfo.getSpeakerId().toString().equals(userIdStr)) {
+                //主讲人进入房间
+                if (user.getStatus().equals("0")) {
+                    roomInfo.setSpeakerState(0);
+                    roomInfo.setJoinRoomTime(now);
+                    log.info("opsRoom>>>> join roomInfo {}", JSONObject.toJSONString(roomInfo));
+                    roomInfoCache.set(roomInfo);
+                    return;
+                }
+                roomInfo.setExitRoomTime(now);
+                log.info("opsRoom>>>> exit roomInfo {}", JSONObject.toJSONString(roomInfo));
+                roomInfoCache.set(roomInfo);
+                return;
+            }
+            //观看者只接受退出消息 status=0 是进入房间
+            if (user.getStatus().equals("0")) {
+                return;
+            }
+            //观看者
+            Long userId = Long.valueOf(userIdStr);
+            //从房间累计用户信息中查询该用户的信息
+            RMap<Long, RoomUserInfoCache> roomTotalUser = redissonClient.getMap(LIVE_ROOM_TOTAL_USER_LIST.replace(ROOM_UID, roomUid));
+            //该房间未查询到用户数据则不处理
+            if (!roomTotalUser.isExists() && !roomTotalUser.containsKey(userId)) {
+                return;
+            }
+            //查询到用户数据
+            RoomUserInfoCache userInfo = roomTotalUser.get(userId);
+            //用户是在房间的状态 并且 突然离线 - 那么融云会发送用户离线消息-此刻就发送退出房间消息给主讲人
+            if (userInfo.getState() == 0 && user.getStatus().equals("1")) {
+                ImRoomMessage message = new ImRoomMessage();
+                message.setFromUserId(userId.toString());
+                message.setToChatroomId(roomUid);
+                message.setObjectName(ImRoomMessage.RC_CHATROOM_LEAVE);
+                try {
+                    publishRoomMessage(message);
+                } catch (Exception e) {
+                    log.error("opsRoom>>>>  looker error {}", e.getMessage());
+                    log.error("opsRoom>>>>  looker error sendMessage {} : leave : {}", message, JSONObject.toJSONString(userInfo));
+                }
+                log.info("opsRoom>>>> looker leave : {}", JSONObject.toJSONString(userInfo));
+            }
+            //记录退出时间 并写入缓存
+            userInfo.setLastOutTime(now);
+            userInfo.setState(1);
+            roomTotalUser.fastPut(userId, userInfo);
+            log.info("opsRoom>>>> looker userInfo: {}", JSONObject.toJSONString(userInfo));
+        });
+
+    }
+
     /**
      * 同步点赞数量
      *
@@ -352,7 +448,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         roomInfo.setLikeNum(getLike(roomUid));
         roomInfo.setLookNum(getLooker(roomUid));
 
-        //记录当前对应的房间uid
+        //记录当前用户对应的房间uid
         redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString())).set(roomUid, 2L, TimeUnit.DAYS);
 
         Date now = new Date();
@@ -484,7 +580,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         param.put("year", "2022");
         param.put("singleCourseMinutes", 60);
         param.put("teacherId", 4);
-        List<CourseCalendarEntity> courseTimeEntities =  courseScheduleService.createLiveCourseCalendar(param);
+        List<CourseCalendarEntity> courseTimeEntities = courseScheduleService.createLiveCourseCalendar(param);
         result.put("自动生成课时", courseTimeEntities);
 
         //获取房间信息

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

@@ -268,11 +268,6 @@ public class MusicSheetServiceImpl extends ServiceImpl<MusicSheetDao,MusicSheet>
     }
 
     @Override
-    public Integer getUserToDoNum() {
-        return baseMapper.getUserToDoNum();
-    }
-
-    @Override
     public boolean saveMusicSheet(MusicSheetDto musicSheetDto,Long userId) {
 
         if (musicSheetDto.getId() != null) {

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

@@ -84,11 +84,6 @@ public class TeacherAuthEntryRecordServiceImpl extends ServiceImpl<TeacherAuthEn
         return baseMapper.getLastRecordByUserId(userId);
     }
 
-    @Override
-    public Integer getUserToDoNum() {
-        return baseMapper.getUserToDoNum();
-    }
-
     /***
      * 判断用户是否已经提交申请
      * @author liweifan

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

@@ -68,11 +68,6 @@ public class TeacherAuthMusicianRecordServiceImpl extends ServiceImpl<TeacherAut
     }
 
     @Override
-    public Integer getUserToDoNum() {
-        return baseMapper.getUserToDoNum();
-    }
-
-    @Override
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<Boolean> doAuth(AuthOperaReq authOperaReq, SysUser sysUser) {
         TeacherAuthMusicianRecord build = baseMapper.selectById(authOperaReq.getId());

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

@@ -8,6 +8,7 @@ import com.yonge.cooleshow.biz.dal.entity.TeacherFreeTime;
 import com.yonge.cooleshow.biz.dal.entity.TeacherSubjectPrice;
 import com.yonge.cooleshow.biz.dal.service.TeacherFreeTimeService;
 import com.yonge.cooleshow.biz.dal.vo.TeacherFreeTimeVo;
+import com.yonge.cooleshow.common.exception.BizException;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -61,6 +62,9 @@ public class TeacherFreeTimeServiceImpl extends ServiceImpl<TeacherFreeTimeDao,
     @Override
     public TeacherFreeTimeVo getDetail(PracticeTimesSetting practiceTimesSetting) {
         TeacherFreeTimeVo getDetail=baseMapper.getDetail(practiceTimesSetting);
+        if (getDetail==null){
+            return getDetail;
+        }
         List<TeacherSubjectPrice> priceList=baseMapper.getPrice(getDetail.getId());
         getDetail.setSubjectPrice(priceList);
         return getDetail;

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

@@ -136,6 +136,8 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
     @Transactional(rollbackFor = Exception.class)
     public HttpResponseResult<UserOrder> executeOrder(OrderReq orderReq) {
         log.info("订单[创建订单] Req:{}", JSONObject.toJSONString(orderReq));
+        //订单号生成
+        Long orderNo = idGeneratorService.generatorId("userOrder");
         //验证参数,必须验证参数
         List<OrderCreateRes> resList = new ArrayList<>();
         for (OrderReq.OrderReqInfo info : orderReq.getOrderInfos()) {
@@ -143,6 +145,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
             if (Objects.isNull(createFunction)) {
                 return HttpResponseResult.failed("订单商品信息获取失败");
             }
+            info.setOrderNo(Long.toString(orderNo));
             info.setUserId(orderReq.getUserId());
             HttpResponseResult<OrderCreateRes> createResult = createFunction.apply(info);
             OrderCreateRes createRes = createResult.getData();
@@ -155,7 +158,7 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
         }
 
         //验证成功后,订单入库
-        UserOrderVo orderVo = insertOrder(orderReq, resList);
+        UserOrderVo orderVo = insertOrder(orderNo,orderReq, resList);
         List<UserOrderDetailVo> orderDetailList = orderVo.getOrderDetailList();
         for (UserOrderDetailVo orderDetailVo : orderDetailList) {
             orderDetailVo.setUserId(orderReq.getUserId());
@@ -380,10 +383,9 @@ public class UserOrderServiceImpl extends ServiceImpl<UserOrderDao, UserOrder> i
      * @updateTime 2022/3/31 16:15
      * @return: com.yonge.cooleshow.biz.dal.entity.Order
      */
-    private UserOrderVo insertOrder(OrderReq orderReq, List<OrderCreateRes> resList) {
+    private UserOrderVo insertOrder(Long orderNo, OrderReq orderReq, List<OrderCreateRes> resList) {
         UserOrder userOrder = new UserOrder();
         //订单号生成
-        long orderNo = idGeneratorService.generatorId("userOrder");
         userOrder.setOrderNo(Long.toString(orderNo));
         userOrder.setUserId(orderReq.getUserId());
         userOrder.setOrderName(orderReq.getOrderName());

+ 0 - 93
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/HomeTotalVo.java

@@ -10,102 +10,9 @@ import java.util.List;
  * @Data: 2022/3/30 17:53
  */
 public class HomeTotalVo {
-    @ApiModel(value = "HomeTotalVo.UserToDoNum", description = "后台首页待办事项统计查询对象")
     public static class UserToDoNum{
-        @ApiModelProperty("待审核老师认证数 ")
-        private Integer entryNum;
-        @ApiModelProperty("待审核音乐认证人数 ")
-        private Integer musicianNum;
-        @ApiModelProperty("待审核乐谱 ")
-        private Integer musicNum;
 
-        public Integer getEntryNum() {
-            return entryNum;
-        }
-
-        public void setEntryNum(Integer entryNum) {
-            this.entryNum = entryNum;
-        }
-
-        public Integer getMusicianNum() {
-            return musicianNum;
-        }
-
-        public void setMusicianNum(Integer musicianNum) {
-            this.musicianNum = musicianNum;
-        }
-
-        public Integer getMusicNum() {
-            return musicNum;
-        }
-
-        public void setMusicNum(Integer musicNum) {
-            this.musicNum = musicNum;
-        }
     }
 
-    @ApiModel(value = "HomeTotalVo.TotalTeacher", description = "后台首页老师数据统计查询对象")
-    public class TotalTeacher {
-        @ApiModelProperty("老师注册量 ")
-        private Integer registerNum;
-        @ApiModelProperty("认证老师 ")
-        private Integer entryNum;
-        @ApiModelProperty("直播老师 ")
-        private Integer liveNum;
-        @ApiModelProperty("平台音乐人 ")
-        private Integer musicianNum;
-
-        @ApiModelProperty("时间(详情数据中使用) ")
-        private String time;
-        @ApiModelProperty("详情数据 ")
-        private List<TotalTeacher> infoList;
-
-        public Integer getRegisterNum() {
-            return registerNum;
-        }
-
-        public void setRegisterNum(Integer registerNum) {
-            this.registerNum = registerNum;
-        }
-
-        public Integer getEntryNum() {
-            return entryNum;
-        }
 
-        public void setEntryNum(Integer entryNum) {
-            this.entryNum = entryNum;
-        }
-
-        public Integer getLiveNum() {
-            return liveNum;
-        }
-
-        public void setLiveNum(Integer liveNum) {
-            this.liveNum = liveNum;
-        }
-
-        public Integer getMusicianNum() {
-            return musicianNum;
-        }
-
-        public void setMusicianNum(Integer musicianNum) {
-            this.musicianNum = musicianNum;
-        }
-
-        public String getTime() {
-            return time;
-        }
-
-        public void setTime(String time) {
-            this.time = time;
-        }
-
-        public List<TotalTeacher> getInfoList() {
-            return infoList;
-        }
-
-        public void setInfoList(List<TotalTeacher> infoList) {
-            this.infoList = infoList;
-        }
-    }
 }

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

@@ -0,0 +1,75 @@
+package com.yonge.cooleshow.biz.dal.vo.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+import java.util.List;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/21 11:29
+ */
+@ApiModel(value = "HomeTotalTeacher", description = "后台首页老师数据统计查询对象")
+public class HomeTotalTeacher {
+    @ApiModelProperty("老师注册量 ")
+    private Integer registerNum;
+    @ApiModelProperty("认证老师 ")
+    private Integer entryNum;
+    @ApiModelProperty("直播老师 ")
+    private Integer liveNum;
+    @ApiModelProperty("平台音乐人 ")
+    private Integer musicianNum;
+
+    @ApiModelProperty("时间(详情数据中使用) ")
+    private String time;
+    @ApiModelProperty("详情数据 ")
+    private List<HomeTotalTeacher> infoList;
+
+    public Integer getRegisterNum() {
+        return registerNum;
+    }
+
+    public void setRegisterNum(Integer registerNum) {
+        this.registerNum = registerNum;
+    }
+
+    public Integer getEntryNum() {
+        return entryNum;
+    }
+
+    public void setEntryNum(Integer entryNum) {
+        this.entryNum = entryNum;
+    }
+
+    public Integer getLiveNum() {
+        return liveNum;
+    }
+
+    public void setLiveNum(Integer liveNum) {
+        this.liveNum = liveNum;
+    }
+
+    public Integer getMusicianNum() {
+        return musicianNum;
+    }
+
+    public void setMusicianNum(Integer musicianNum) {
+        this.musicianNum = musicianNum;
+    }
+
+    public String getTime() {
+        return time;
+    }
+
+    public void setTime(String time) {
+        this.time = time;
+    }
+
+    public List<HomeTotalTeacher> getInfoList() {
+        return infoList;
+    }
+
+    public void setInfoList(List<HomeTotalTeacher> infoList) {
+        this.infoList = infoList;
+    }
+}

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

@@ -0,0 +1,42 @@
+package com.yonge.cooleshow.biz.dal.vo.res;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+
+/**
+ * @Author: liweifan
+ * @Data: 2022/4/20 18:39
+ */
+@ApiModel(value = "HomeUserToDoNum", description = "后台首页待办事项统计查询对象")
+public class HomeUserToDoNum {
+    @ApiModelProperty("待审核老师认证数 ")
+    private Integer entryNum;
+    @ApiModelProperty("待审核音乐认证人数 ")
+    private Integer musicianNum;
+    @ApiModelProperty("待审核乐谱 ")
+    private Integer musicNum;
+
+    public Integer getEntryNum() {
+        return entryNum;
+    }
+
+    public void setEntryNum(Integer entryNum) {
+        this.entryNum = entryNum;
+    }
+
+    public Integer getMusicianNum() {
+        return musicianNum;
+    }
+
+    public void setMusicianNum(Integer musicianNum) {
+        this.musicianNum = musicianNum;
+    }
+
+    public Integer getMusicNum() {
+        return musicNum;
+    }
+
+    public void setMusicNum(Integer musicNum) {
+        this.musicNum = musicNum;
+    }
+}

+ 13 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/HomeMapper.xml

@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.yonge.cooleshow.biz.dal.dao.HomeDao">
+	<select id="getUserToDoNum" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeUserToDoNum">
+		select
+			(select count(1) from teacher_auth_entry_record where teacher_auth_status_ = 1) as entryNum,
+			(select count(1) from teacher_auth_musician_record where teacher_auth_status_ = 1) as musicianNum,
+        	(select count(1) from music_sheet where del_flag_ = 0 and audit_status_ = 'DOING') as musicNum
+        from dual
+	</select>
+    <select id="totalTeacher" resultType="com.yonge.cooleshow.biz.dal.vo.res.HomeTotalTeacher"></select>
+</mapper>

+ 0 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/MusicSheetMapper.xml

@@ -444,7 +444,4 @@
         order by  ms.submit_audit_time_ desc
     </select>
 
-    <select id="getUserToDoNum" resultType="java.lang.Integer">
-        select count(1) from music_sheet where del_flag_ = 0 and audit_status_ = 'DOING'
-    </select>
 </mapper>

+ 0 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthEntryRecordMapper.xml

@@ -123,7 +123,4 @@
         where t.user_id_ = #{userId}
 		order by t.create_time_ desc limit 1
     </select>
-    <select id="getUserToDoNum" resultType="java.lang.Integer">
-        select count(1) from teacher_auth_entry_record where teacher_auth_status_ = 1
-    </select>
 </mapper>

+ 0 - 3
cooleshow-user/user-biz/src/main/resources/config/mybatis/TeacherAuthMusicianRecordMapper.xml

@@ -73,7 +73,4 @@
 		select * from teacher_auth_musician_record where user_id_ = #{userId}
 		order by create_time_ desc limit 1
 	</select>
-    <select id="getUserToDoNum" resultType="java.lang.Integer">
-		select count(1) from teacher_auth_musician_record where teacher_auth_status_ = 1
-	</select>
 </mapper>

+ 101 - 0
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentLiveRoomController.java

@@ -0,0 +1,101 @@
+package com.yonge.cooleshow.student.controller;
+
+
+import com.alibaba.fastjson.JSONObject;
+import com.yonge.cooleshow.biz.dal.entity.ImUserStateSync;
+import com.yonge.cooleshow.biz.dal.entity.RoomInfoCache;
+import com.yonge.cooleshow.biz.dal.service.LiveRoomService;
+import com.yonge.cooleshow.biz.dal.vo.RoomVo;
+import com.yonge.cooleshow.common.controller.BaseController;
+import com.yonge.cooleshow.common.entity.HttpResponseResult;
+import io.swagger.annotations.*;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.*;
+
+import javax.annotation.Resource;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 直播房间与课程的关系表表(LiveRoom)表控制层
+ *
+ * @author hgw
+ * @since 2022-03-18 15:41:16
+ */
+@Api(tags = "直播房间与课程的关系表表")
+@RestController
+@RequestMapping("/liveRoom")
+public class StudentLiveRoomController extends BaseController {
+    private final static Logger log = LoggerFactory.getLogger(StudentLiveRoomController.class);
+    /**
+     * 服务对象
+     */
+    @Resource
+    private LiveRoomService liveRoomService;
+
+    /**
+     * 根据房间uid查询房间信息
+     *
+     * @param roomUid 房间uid
+     */
+    @GetMapping("queryRoomInfo")
+    public HttpResponseResult<RoomVo> queryRoomInfo(@RequestParam("roomUid") String roomUid) {
+        return succeed(liveRoomService.queryRoomInfo(roomUid));
+    }
+
+    @ApiImplicitParams({
+            @ApiImplicitParam(name = "roomTitle", dataType = "String", value = "房间标题"),
+            @ApiImplicitParam(name = "liveRemark", dataType = "String", value = "直播内容/最多200个字"),
+    })
+    @ApiOperation("创建临时房间-直播间")
+    @PostMapping("/createTempLiveRoom")
+    public HttpResponseResult<String> createTempLiveRoom(@RequestBody Map<String, Object> param) {
+        return succeed(liveRoomService.createTempLiveRoom(param));
+    }
+
+    @ApiOperation("同步点赞数量")
+    @GetMapping("/syncLike")
+    public HttpResponseResult<Object> syncLike(@ApiParam(value = "房间uid", required = true) String roomUid,
+                                       @ApiParam(value = "点赞数", required = true) Integer likeNum) {
+        liveRoomService.syncLike(roomUid, likeNum);
+        return succeed();
+    }
+
+    @ApiOperation("进入房间")
+    @GetMapping(value = "/joinRoom")
+    public HttpResponseResult<RoomInfoCache> joinRoom(String roomUid, Long userId) {
+        return succeed(liveRoomService.joinRoom(roomUid, userId));
+    }
+
+    @ApiOperation("定时任务-创建房间-直播间")
+    @GetMapping("/createCourseLiveRoom")
+    public void createCourseLiveRoom() {
+        liveRoomService.createCourseLiveRoom();
+    }
+
+    @ApiOperation("定时任务-销毁房间-直播间")
+    @GetMapping("/destroyExpiredLiveRoom")
+    public void destroyExpiredLiveRoom() {
+        liveRoomService.destroyExpiredLiveRoom();
+    }
+
+    /**
+     * 同步融云用户状态变更
+     *
+     * @param userState
+     */
+    @PostMapping(value = "/syncUserStatus")
+    public void statusImUser(@RequestBody List<ImUserStateSync> userState) {
+        log.info("opsRoom >>>>> : {}", JSONObject.toJSONString(userState));
+        liveRoomService.opsRoom(userState);
+    }
+
+    @ApiOperation("方便测试观察房间数据的方法")
+    @GetMapping("/test")
+    public Object destroyExpiredLiveRoom(@RequestParam("roomUid") String roomUid) {
+        return liveRoomService.test(roomUid);
+    }
+
+}
+

+ 4 - 3
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/LiveRoomController.java → cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherLiveRoomController.java

@@ -26,8 +26,8 @@ import java.util.Map;
 @Api(tags = "直播房间与课程的关系表表")
 @RestController
 @RequestMapping("/liveRoom")
-public class LiveRoomController extends BaseController {
-    private final static Logger log = LoggerFactory.getLogger(LiveRoomController.class);
+public class TeacherLiveRoomController extends BaseController {
+    private final static Logger log = LoggerFactory.getLogger(TeacherLiveRoomController.class);
     /**
      * 服务对象
      */
@@ -87,7 +87,8 @@ public class LiveRoomController extends BaseController {
      */
     @PostMapping(value = "/syncUserStatus")
     public void statusImUser(@RequestBody List<ImUserStateSync> userState) {
-        log.info("statusImUser >>>>> : {}", JSONObject.toJSONString(userState));
+        log.info("opsRoom >>>>> : {}", JSONObject.toJSONString(userState));
+        liveRoomService.opsRoom(userState);
     }
 
     @ApiOperation("方便测试观察房间数据的方法")