Browse Source

Merge branch 'ui_20220829'

yonge 2 years ago
parent
commit
e89c4c7804

+ 4 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/dao/LiveRoomDao.java

@@ -2,6 +2,8 @@ package com.yonge.cooleshow.biz.dal.dao;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.yonge.cooleshow.biz.dal.entity.LiveRoom;
+import com.yonge.cooleshow.biz.dal.vo.TeacherLivingInfoVo;
+
 import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
@@ -17,5 +19,7 @@ public interface LiveRoomDao extends BaseMapper<LiveRoom> {
     int insertBatch(@Param("entities") List<LiveRoom> entities);
 
     LiveRoom getLiveInRoomBySpeakerId(@Param("speakerId") Long speakerId);
+    
+    List<TeacherLivingInfoVo> queryTeacherLivingList();
 }
 

+ 11 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/LiveRoomService.java

@@ -1,16 +1,17 @@
 package com.yonge.cooleshow.biz.dal.service;
 
+import java.util.List;
+import java.util.Map;
+
 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.ImUserStateSync;
 import com.yonge.cooleshow.biz.dal.entity.LiveRoom;
 import com.yonge.cooleshow.biz.dal.entity.RoomInfoCache;
+import com.yonge.cooleshow.biz.dal.vo.TeacherLivingInfoVo;
 import com.yonge.toolset.base.page.PageInfo;
 
-import java.util.List;
-import java.util.Map;
-
 /**
  * 直播房间与课程的关系表表(LiveRoom)表服务接口
  *
@@ -120,6 +121,13 @@ public interface LiveRoomService extends IService<LiveRoom> {
      * @param speakerId 房间uid
      */
     LiveRoom getLiveInRoomBySpeakerId(Long speakerId);
+    
+    /**
+     * 查询老师正在直播的列表
+     * 
+     * @return
+     */
+    List<TeacherLivingInfoVo> queryTeacherLivingList();
 
 }
 

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

@@ -1,5 +1,46 @@
 package com.yonge.cooleshow.biz.dal.service.impl;
 
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.COOLESHOW;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_ROOM_HEART_BEAT;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_ROOM_INFO;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_ROOM_LIKE;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_ROOM_ONLINE_USER_LIST;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_ROOM_TOTAL_USER_LIST;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_USER_LAST_CLIENT_IP;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_USER_LAST_TIME;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.LIVE_USER_ROOM;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.ROOM_UID;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.TEACHER_TEMP_LIVE_ROOM;
+import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.USER_ID;
+import static com.yonge.cooleshow.common.constant.SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE;
+import static com.yonge.cooleshow.common.constant.SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE;
+
+import java.time.LocalDate;
+import java.util.Collections;
+import java.util.Date;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Optional;
+import java.util.concurrent.TimeUnit;
+import java.util.function.BiFunction;
+import java.util.function.BiPredicate;
+import java.util.function.Consumer;
+import java.util.function.Function;
+import java.util.stream.Collectors;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.redisson.api.RBucket;
+import org.redisson.api.RMap;
+import org.redisson.api.RedissonClient;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
 import com.alibaba.fastjson.JSONObject;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.core.toolkit.Wrappers;
@@ -8,40 +49,42 @@ import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.yonge.cooleshow.auth.api.client.SysUserFeignService;
 import com.yonge.cooleshow.auth.api.entity.SysUser;
 import com.yonge.cooleshow.biz.dal.dao.LiveRoomDao;
-import com.yonge.cooleshow.biz.dal.entity.*;
-import com.yonge.cooleshow.biz.dal.enums.*;
-import com.yonge.cooleshow.biz.dal.service.*;
+import com.yonge.cooleshow.biz.dal.entity.CourseSchedule;
+import com.yonge.cooleshow.biz.dal.entity.CourseScheduleStudentPayment;
+import com.yonge.cooleshow.biz.dal.entity.CourseScheduleTeacherSalary;
+import com.yonge.cooleshow.biz.dal.entity.IMApiResultInfo;
+import com.yonge.cooleshow.biz.dal.entity.ImRoomMessage;
+import com.yonge.cooleshow.biz.dal.entity.ImUserStateSync;
+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.StudentAttendance;
+import com.yonge.cooleshow.biz.dal.entity.TeacherAttendance;
+import com.yonge.cooleshow.biz.dal.enums.ClientEnum;
+import com.yonge.cooleshow.biz.dal.enums.CourseScheduleEnum;
+import com.yonge.cooleshow.biz.dal.enums.MessageTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.OrderStatusEnum;
+import com.yonge.cooleshow.biz.dal.enums.RoomTypeEnum;
+import com.yonge.cooleshow.biz.dal.enums.TeacherSalaryEnum;
+import com.yonge.cooleshow.biz.dal.service.CourseGroupService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleStudentPaymentService;
+import com.yonge.cooleshow.biz.dal.service.CourseScheduleTeacherSalaryService;
+import com.yonge.cooleshow.biz.dal.service.LiveRoomService;
+import com.yonge.cooleshow.biz.dal.service.StudentAttendanceService;
+import com.yonge.cooleshow.biz.dal.service.SysConfigService;
+import com.yonge.cooleshow.biz.dal.service.SysMessageService;
+import com.yonge.cooleshow.biz.dal.service.TeacherAttendanceService;
+import com.yonge.cooleshow.biz.dal.service.UserOrderService;
 import com.yonge.cooleshow.biz.dal.support.IMHelper;
 import com.yonge.cooleshow.biz.dal.support.WrapperUtil;
+import com.yonge.cooleshow.biz.dal.vo.TeacherLivingInfoVo;
 import com.yonge.cooleshow.biz.dal.vo.UserOrderVo;
 import com.yonge.toolset.base.exception.BizException;
 import com.yonge.toolset.base.page.PageInfo;
 import com.yonge.toolset.mybatis.support.PageUtil;
 import com.yonge.toolset.thirdparty.message.MessageSenderPluginContext;
 import com.yonge.toolset.utils.date.DateUtil;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.redisson.api.RBucket;
-import org.redisson.api.RMap;
-import org.redisson.api.RedissonClient;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-import org.springframework.transaction.annotation.Transactional;
-
-import java.time.LocalDate;
-import java.util.*;
-import java.util.concurrent.TimeUnit;
-import java.util.function.BiFunction;
-import java.util.function.BiPredicate;
-import java.util.function.Consumer;
-import java.util.function.Function;
-import java.util.stream.Collectors;
-
-import static com.yonge.cooleshow.biz.dal.constant.LiveRoomConstant.*;
-import static com.yonge.cooleshow.common.constant.SysConfigConstant.DESTROY_EXPIRED_LIVE_ROOM_MINUTE;
-import static com.yonge.cooleshow.common.constant.SysConfigConstant.PRE_CREATE_LIVE_ROOM_MINUTE;
 
 /**
  * 直播房间与课程的关系表表(LiveRoom)表服务实现类
@@ -274,6 +317,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         String roomTitle = WrapperUtil.toStr(param, "roomTitle", "房间标题不能为空!");
         String liveRemark = WrapperUtil.toStr(param, "liveRemark", "直播间描述不能为空!");
         Integer liveTime = WrapperUtil.toInt(param, "liveTime", "请选择直播时长!");
+        String coverPic = WrapperUtil.toStr(param, "coverPic", "直播封面图不能为空!");
         if (roomTitle.length() > 20) {
             throw new BizException("直播标题不能超出20个字");
         }
@@ -301,6 +345,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         room.setCreatedBy(teacherId);
         room.setCreatedTime(liveStartTime);
         room.setType(en.getCode());
+        room.setCoverPic(coverPic);
         this.save(room);
         log.info("createTempLiveRoom>>>>>>room:{}", room.getRoomUid());
         //去融云创建房间及创建房间缓存信息
@@ -1069,5 +1114,10 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
     public LiveRoom getLiveInRoomBySpeakerId(Long speakerId) {
         return baseMapper.getLiveInRoomBySpeakerId(speakerId);
     }
+
+	@Override
+	public List<TeacherLivingInfoVo> queryTeacherLivingList() {
+		return baseMapper.queryTeacherLivingList();
+	}
 }
 

+ 72 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/vo/TeacherLivingInfoVo.java

@@ -0,0 +1,72 @@
+package com.yonge.cooleshow.biz.dal.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+
+public class TeacherLivingInfoVo {
+
+	@ApiModelProperty(value = "直播房间号")
+	private String roomUid;
+
+	@ApiModelProperty(value = "老师编号")
+	private Long teacherId;
+
+	@ApiModelProperty(value = "昵称")
+	private String username;
+
+	@ApiModelProperty(value = "头像")
+	private String avatar;
+
+	@ApiModelProperty(value = "直播封面图")
+	private String liveCoverImg;
+
+	@ApiModelProperty(value = "直播主题")
+	private String liveTitle;
+
+	public String getRoomUid() {
+		return roomUid;
+	}
+
+	public void setRoomUid(String roomUid) {
+		this.roomUid = roomUid;
+	}
+
+	public Long getTeacherId() {
+		return teacherId;
+	}
+
+	public void setTeacherId(Long teacherId) {
+		this.teacherId = teacherId;
+	}
+
+	public String getUsername() {
+		return username;
+	}
+
+	public void setUsername(String username) {
+		this.username = username;
+	}
+
+	public String getLiveCoverImg() {
+		return liveCoverImg;
+	}
+
+	public void setLiveCoverImg(String liveCoverImg) {
+		this.liveCoverImg = liveCoverImg;
+	}
+
+	public String getLiveTitle() {
+		return liveTitle;
+	}
+
+	public void setLiveTitle(String liveTitle) {
+		this.liveTitle = liveTitle;
+	}
+
+	public String getAvatar() {
+		return avatar;
+	}
+
+	public void setAvatar(String avatar) {
+		this.avatar = avatar;
+	}
+}

+ 7 - 0
cooleshow-user/user-biz/src/main/resources/config/mybatis/LiveRoomMapper.xml

@@ -45,5 +45,12 @@
         where speaker_id_ = #{speakerId} and live_state_ = 1 and room_state_ = 0
         order by live_start_time_ desc limit 1
     </select>
+    
+    <select id="queryTeacherLivingList" resultType="com.yonge.cooleshow.biz.dal.vo.TeacherLivingInfoVo">
+        select lr.room_uid_ roomUid, lr.room_title_ liveTitle, lr.speaker_id_ teacherId, lr.cover_pic_ liveCoverImg, u.avatar_ avatar, u.username_ username
+        from live_room lr left join sys_user u on lr.speaker_id_ = u.id_
+        where lr.live_state_ = 1 and lr.type_ = 'temp'
+        order by lr.live_start_time_ desc
+    </select>
 
 </mapper>

+ 25 - 8
cooleshow-user/user-student/src/main/java/com/yonge/cooleshow/student/controller/StudentLiveRoomController.java

@@ -1,20 +1,30 @@
 package com.yonge.cooleshow.student.controller;
 
 
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+
+import java.util.List;
+
+import javax.annotation.Resource;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
 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.TeacherLivingInfoVo;
 import com.yonge.cooleshow.common.controller.BaseController;
 import com.yonge.cooleshow.common.entity.HttpResponseResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.springframework.web.bind.annotation.*;
-
-import javax.annotation.Resource;
-import java.util.List;
+import com.yonge.toolset.base.page.PageInfo;
 
 /**
  * 直播房间与课程的关系表表(LiveRoom)表控制层
@@ -66,5 +76,12 @@ public class StudentLiveRoomController extends BaseController {
         return liveRoomService.test(roomUid);
     }
 
+    @ApiOperation("老师直播列表")
+    @GetMapping("/queryTeacherLivingList")
+    public HttpResponseResult<List<TeacherLivingInfoVo>> queryTeacherLivingList() {
+    	
+        return succeed(liveRoomService.queryTeacherLivingList());
+    }
+
 }
 

+ 1 - 0
cooleshow-user/user-teacher/src/main/java/com/yonge/cooleshow/teacher/controller/TeacherLiveRoomController.java

@@ -60,6 +60,7 @@ public class TeacherLiveRoomController extends BaseController {
             @ApiImplicitParam(name = "roomTitle", dataType = "String", value = "房间标题"),
             @ApiImplicitParam(name = "liveRemark", dataType = "String", value = "直播内容/最多200个字"),
             @ApiImplicitParam(name = "liveTime", dataType = "Integer", value = "直播时长"),
+            @ApiImplicitParam(name = "coverPic", dataType = "String", value = "封面图"),
     })
     @ApiOperation("创建临时房间-直播间")
     @PostMapping("/createTempLiveRoom")