Prechádzať zdrojové kódy

修改直播查询返回

hgw 3 rokov pred
rodič
commit
ee9ea91df7

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/dal/dao/ImLiveBroadcastRoomDao.java

@@ -18,7 +18,7 @@ import java.util.Map;
  */
 public interface ImLiveBroadcastRoomDao extends BaseMapper<ImLiveBroadcastRoom> {
 
-    <T> IPage<T> queryPage(Page<T> page, @Param("param") Map<String, Object> param);
+    IPage<ImLiveBroadcastRoomVo> queryPage(Page<ImLiveBroadcastRoomVo> page, @Param("param") Map<String, Object> param);
 
     List<ImLiveBroadcastRoomVo> queryPage(@Param("param") Map<String, Object> param);
 

+ 19 - 19
mec-biz/src/main/java/com/ym/mec/biz/dal/vo/ImLiveBroadcastRoomVo.java

@@ -57,7 +57,7 @@ public class ImLiveBroadcastRoomVo implements Serializable {
     private Integer roomState;
 
     @ApiModelProperty(value = "创建人")
-    private Integer createdByName;
+    private String createdByName;
 
     @ApiModelProperty(value = "预热模版")
     private String preTemplate;
@@ -102,6 +102,14 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.tenantName = tenantName;
     }
 
+    public String getTenantLogo() {
+        return tenantLogo;
+    }
+
+    public void setTenantLogo(String tenantLogo) {
+        this.tenantLogo = tenantLogo;
+    }
+
     public String getRoomUid() {
         return roomUid;
     }
@@ -142,6 +150,14 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.speakerName = speakerName;
     }
 
+    public String getSpeakerPic() {
+        return speakerPic;
+    }
+
+    public void setSpeakerPic(String speakerPic) {
+        this.speakerPic = speakerPic;
+    }
+
     public Date getLiveStartTime() {
         return liveStartTime;
     }
@@ -166,11 +182,11 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.roomState = roomState;
     }
 
-    public Integer getCreatedByName() {
+    public String getCreatedByName() {
         return createdByName;
     }
 
-    public void setCreatedByName(Integer createdByName) {
+    public void setCreatedByName(String createdByName) {
         this.createdByName = createdByName;
     }
 
@@ -190,22 +206,6 @@ public class ImLiveBroadcastRoomVo implements Serializable {
         this.roomConfig = roomConfig;
     }
 
-    public String getTenantLogo() {
-        return tenantLogo;
-    }
-
-    public void setTenantLogo(String tenantLogo) {
-        this.tenantLogo = tenantLogo;
-    }
-
-    public String getSpeakerPic() {
-        return speakerPic;
-    }
-
-    public void setSpeakerPic(String speakerPic) {
-        this.speakerPic = speakerPic;
-    }
-
     public String getImToken() {
         return imToken;
     }

+ 74 - 23
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveBroadcastRoomServiceImpl.java

@@ -9,7 +9,6 @@ import com.ym.mec.auth.api.entity.SysUser;
 import com.ym.mec.biz.dal.dao.ImLiveBroadcastRoomDao;
 import com.ym.mec.biz.dal.dto.ImLiveBroadcastRoomDto;
 import com.ym.mec.biz.dal.entity.ImLiveBroadcastRoom;
-import com.ym.mec.biz.dal.enums.MessageTypeEnum;
 import com.ym.mec.biz.dal.vo.ImLiveBroadcastRoomVo;
 import com.ym.mec.biz.service.ImLiveBroadcastRoomService;
 import com.ym.mec.biz.service.SysMessageService;
@@ -20,8 +19,9 @@ import com.ym.mec.common.page.WrapperUtil;
 import com.ym.mec.common.tenant.TenantContextHolder;
 import com.ym.mec.im.ImFeignService;
 import com.ym.mec.util.date.DateUtil;
-import com.ym.mec.util.http.HttpUtil;
+import org.apache.commons.lang3.StringUtils;
 import org.redisson.api.RBucket;
+import org.redisson.api.RList;
 import org.redisson.api.RedissonClient;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
@@ -30,6 +30,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
 import org.springframework.util.CollectionUtils;
 
+import java.io.Serializable;
 import java.util.*;
 
 /**
@@ -55,8 +56,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
     public static final String USER_ID = "${userId}";
     public static final String ROOM_UID = "${roomUid}";
 
+    //直播间用户列表
+    public static final String LIVE_ROOM_USER_LIST = "IM:LIVE_ROOM_USER_LIST:" + ROOM_UID;
     //用户对应的直播间Uid
-    public static final String LIVE_ROOM_USER = "IM:LIVE_ROOM_USER:" + USER_ID;
+    public static final String LIVE_USER_ROOM = "IM:LIVE_ROOM_USER:" + USER_ID;
     //用户进入房间时间
     public static final String LIVE_ROOM_USER_JOIN_TIME = "IM:LIVE_ROOM_USER_JOIN_TIME:" + USER_ID;
     //用户退出房间时间
@@ -231,12 +234,8 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * @param userId  用户id
      */
     public void joinRoom(String roomUid, Integer userId) {
-        //查询有没有这个房间
-//        RList<Object> roomInfoCache = redissonClient.getList(LIVE_ROOM_INFO.replace(ROOM_UID, roomUid));
-//        roomInfoCache.contains()
-
         //用户对应的直播间信息
-        RBucket<String> roomUserCache = redissonClient.getBucket(LIVE_ROOM_USER.replace(USER_ID, userId.toString()));
+        RBucket<String> roomUserCache = redissonClient.getBucket(LIVE_USER_ROOM.replace(USER_ID, userId.toString()));
         //获取原有房间信息
         if (roomUserCache.isExists()) {
             //原有的房间uid
@@ -247,6 +246,10 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
             } else {
                 //如果不同就把原房间的当前人员数量-1
                 redissonClient.getAtomicLong(LIVE_ROOM_LOOK.replace(ROOM_UID, lodRoomUid)).decrementAndGet();
+                //将用户数据从老直播间用户列表删除
+                RList<UserInfo> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, lodRoomUid));
+                UserInfo userInfo = getUserInfo(userId);
+                list.remove(userInfo);
             }
         }
         //写入用户房间uid
@@ -257,6 +260,47 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         redissonClient.getAtomicLong(LIVE_ROOM_LOOK.replace(ROOM_UID, roomUid)).incrementAndGet();
         //添加房间中累计总用户数量
         redissonClient.getAtomicLong(LIVE_ROOM_TOTAL_LOOK.replace(ROOM_UID, roomUid)).incrementAndGet();
+        //将用户数据写入直播间
+        RList<UserInfo> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, roomUid));
+        UserInfo userInfo = getUserInfo(userId);
+        list.add(userInfo);
+    }
+
+    private UserInfo getUserInfo(Integer userId) {
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(userId);
+        SysUser sysUser = sysUserFeignService.queryUserById(userId);
+        String name = userId.toString();
+        if (Objects.nonNull(sysUser)) {
+            if (StringUtils.isNotBlank(sysUser.getRealName())) {
+                name = sysUser.getRealName();
+            } else {
+                name = sysUser.getPhone();
+            }
+        }
+        userInfo.setUserName(name);
+        return userInfo;
+    }
+
+    static class UserInfo implements Serializable {
+        private Integer userId;
+        private String userName;
+
+        public Integer getUserId() {
+            return userId;
+        }
+
+        public void setUserId(Integer userId) {
+            this.userId = userId;
+        }
+
+        public String getUserName() {
+            return userName;
+        }
+
+        public void setUserName(String userName) {
+            this.userName = userName;
+        }
     }
 
     /**
@@ -279,6 +323,9 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         list.forEach(this::createLiveRoom);
     }
 
+    /**
+     * 去融云创建房间
+     */
     private void createLiveRoom(ImLiveBroadcastRoom room) {
         try {
             //去融云创建房间
@@ -286,11 +333,7 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
         } catch (Exception e) {
 
         }
-
-
-        //创建房间缓存
-        RBucket<Object> roomInfoCache = redissonClient.getBucket(LIVE_ROOM_INFO.replace(ROOM_UID, room.getRoomUid()));
-
+        //初始化房间数据  点赞 人数 等 为0
         //修改房间状态
 
     }
@@ -311,20 +354,28 @@ public class ImLiveBroadcastRoomServiceImpl extends ServiceImpl<ImLiveBroadcastR
      * 分享直播间
      */
     public void test() {
-
+        //将用户数据写入直播间
+        RList<UserInfo> list = redissonClient.getList(LIVE_ROOM_USER_LIST.replace(ROOM_UID, "roomUid"));
+        UserInfo userInfo = new UserInfo();
+        userInfo.setUserId(1);
+        userInfo.setUserName("1");
+        boolean contains = list.contains(userInfo);
+        if (!contains) {
+            list.add(userInfo);
+        }
     }
 
     @Override
     public void shareGroup(String roomUid, String groupIds) {
-        ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = queryRoomInfo(roomUid);
-        if (imLiveBroadcastRoomVo == null) {
-            throw new BizException("直播间信息异常!");
-        }
-        SysUser sysUser = sysUserFeignService.queryUserInfo();
-        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_SHARE_LIVE_URL, sysUser.getId().toString(), null, groupIds.split(","), null,
-                imLiveBroadcastRoomVo.getTenantName(), imLiveBroadcastRoomVo.getRoomTitle(), imLiveBroadcastRoomVo.getSpeakerName(),
-                DateUtil.format(imLiveBroadcastRoomVo.getLiveStartTime(), DateUtil.CHINESE_DATA_FORMAT_1),
-                imLiveBroadcastRoomVo.getLiveRemark(), HttpUtil.getSortUrl("https://test.dayaedu.com/"));
+//        ImLiveBroadcastRoomVo imLiveBroadcastRoomVo = queryRoomInfo(roomUid);
+//        if (imLiveBroadcastRoomVo == null) {
+//            throw new BizException("直播间信息异常!");
+//        }
+//        SysUser sysUser = sysUserFeignService.queryUserInfo();
+//        sysMessageService.batchSendImMessage(MessageTypeEnum.IM_SHARE_LIVE_URL, sysUser.getId().toString(), null, groupIds.split(","), null,
+//                imLiveBroadcastRoomVo.getTenantName(), imLiveBroadcastRoomVo.getRoomTitle(), imLiveBroadcastRoomVo.getSpeakerName(),
+//                DateUtil.format(imLiveBroadcastRoomVo.getLiveStartTime(), DateUtil.CHINESE_DATA_FORMAT_1),
+//                imLiveBroadcastRoomVo.getLiveRemark(), HttpUtil.getSortUrl("https://test.dayaedu.com/"));
     }
 }