瀏覽代碼

Merge remote-tracking branch 'origin/feature/0803-im' into feature/0803-im

zouxuan 2 年之前
父節點
當前提交
906b57f0f0

+ 0 - 4
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/ImGroupController.java

@@ -152,10 +152,6 @@ public class ImGroupController extends BaseController {
             info = imGroupService.getRongYunInfo(page,size);
             //IM导入
             imGroupService.importInfo(info);
-
-            //为已导入数据更改标识
-            imGroupService.updateStatus(info);
-
         }
     }
 

+ 1 - 1
cooleshow-user/user-admin/src/main/java/com/yonge/cooleshow/admin/controller/open/ImController.java

@@ -233,7 +233,7 @@ public class ImController extends BaseController {
     }
 
     private Integer getSpeakerId(String streamId) {
-        return Integer.parseInt(imGroupService.analysisImUserId(streamId.split("_")[1]));
+        return Integer.parseInt(imGroupService.analysisImUserId(streamId.split("_",2)[1]));
     }
 
     private String getRoomUid(String streamId) {

+ 1 - 3
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/UploadFileService.java

@@ -59,9 +59,7 @@ public class UploadFileService {
             uploadReturn.setMessage("上传图片格式错误,目前只支持" + supportType);
             return uploadReturn;
         }
-
-        String root = "d:";
-                //fileRoot;
+        String root = fileRoot;
         if (StringUtils.isBlank(root)) {
             uploadReturn.setMessage("上传临时目录没有配置");
             return uploadReturn;

+ 7 - 22
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/ImGroupServiceImpl.java

@@ -765,10 +765,9 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                     String size = jsonObject.getString("size");
                     int duration = jsonObject.getInteger("duration");
                     String content = jsonObject.getString("content");
-                    String name = jsonObject.getString("name");
                     TencentRequest.MessageBody body1 = null;
                     try {
-                        body1 = getTimVideoFileElem(sightUrl,size,duration,content,name);
+                        body1 = getTimVideoFileElem(sightUrl,size,duration,content);
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
@@ -891,10 +890,9 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                     String size = jsonObject.getString("size");
                     int duration = jsonObject.getInteger("duration");
                     String content = jsonObject.getString("content");
-                    String name = jsonObject.getString("name");
                     TencentRequest.MessageBody body1 = null;
                     try {
-                        body1 = getTimVideoFileElem(sightUrl,size,duration,content,name);
+                        body1 = getTimVideoFileElem(sightUrl,size,duration,content);
                     } catch (IOException e) {
                         e.printStackTrace();
                     }
@@ -938,6 +936,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 groupImportMessage.setMsgList(list);
                 try {
                     imPluginContext.getPluginService().importGroupMessage(groupImportMessage);
+                    //为已导入数据更改标识
+                    imGroupService.updateStatus(info);
                 } catch (Exception e) {
                     log.error("导入群组IM消息失败 msg:{}",list,e);
                 }
@@ -1012,7 +1012,7 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
     }
 
     //构建视频请求体
-    public  TencentRequest.MessageBody getTimVideoFileElem(String sightUrl, String size, int duration, String content,String name) throws IOException {
+    public  TencentRequest.MessageBody getTimVideoFileElem(String sightUrl, String size, int duration, String content) throws IOException {
         if (StringUtils.isEmpty(sightUrl) && StringUtils.isEmpty(sightUrl) && duration == 0) {
             return null;
         }
@@ -1028,26 +1028,9 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
             format = "JPG";
         }
 
-        //获取JDK8里的解码器Base64.Decoder,将base64字符串转为字节数组
-        //byte[] bytes = Base64.getDecoder().decode(content);
-        //构建字节数组输入流
-        //bais = new ByteArrayInputStream(bytes);
-
-            //获取图片类型
-            //String suffix = name.substring(name.lastIndexOf(".") + 1);
-            //获取JDK8里的解码器Base64.Decoder,将base64字符串转为字节数组
             byte[] bytes = Base64.getDecoder().decode(content);
             //构建字节数组输入流
             bais = new ByteArrayInputStream(bytes);
-           /* //通过ImageIO把字节数组输入流转为BufferedImage
-            BufferedImage bufferedImage = ImageIO.read(bais);
-
-            //构建文件
-            File imageFile = new File(name);
-            //写入生成文件
-            ImageIO.write(bufferedImage, format, imageFile);*/
-
-
 
 
 
@@ -1063,6 +1046,8 @@ public class ImGroupServiceImpl extends ServiceImpl<ImGroupDao, ImGroup> impleme
                 .suffix(format)
                 .build();
 
+        // 获取图片基本信息
+        ImageUtil.imageToBase64(imageReq);
 
         ImHistoryMessageWrapper.TimVideoFileElem timVideoFileElem = new ImHistoryMessageWrapper.TimVideoFileElem();
         timVideoFileElem.setVideoUrl(sightUrl);

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

@@ -874,22 +874,22 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                     .update(roomMember);
 
             //向直播间发送当前在线人数消息
-//            this.sendOnlineUserCount(roomUid, roomInfo.getSpeakerId(), onlineUserInfo.size());
+            this.sendOnlineUserCount(roomUid, roomInfo.getSpeakerId(), onlineUserInfo.size());
             log.info("opsRoom>>>> looker userInfo: {}", userJsonStr);
-//            //用户离开直播间发送退出房间消息给主讲人
-//            ImRoomMessage message = new ImRoomMessage();
-//            message.setFromUserId(userId.toString());
-//            message.setToChatroomId(roomUid);
-//            message.setClientType(ClientEnum.STUDENT.getCode());
-//            message.setObjectName(ImRoomMessage.LOOKER_LOGIN_OUT);
-//            message.setContent(userId);
-//            try {
-//                this.publishRoomMessage(message);
-//                log.info("opsRoom>>>> looker RC_CHATROOM_LEAVE : {}", userJsonStr);
-//            } catch (Exception e) {
-//                log.error("opsRoom>>>>  looker error RC_CHATROOM_LEAVE {}", e.getMessage());
-//                log.error("opsRoom>>>>  looker error sendMessage {} : RC_CHATROOM_LEAVE : {}", message, userJsonStr);
-//            }
+            //用户离开直播间发送退出房间消息给主讲人
+            ImRoomMessage message = new ImRoomMessage();
+            message.setFromUserId(userId.toString());
+            message.setToChatroomId(roomUid);
+            message.setClientType(ClientEnum.STUDENT.getCode());
+            message.setObjectName(ImRoomMessage.LOOKER_LOGIN_OUT);
+            message.setContent(userId);
+            try {
+                this.publishRoomMessage(message);
+                log.info("opsRoom>>>> looker RC_CHATROOM_LEAVE : {}", userJsonStr);
+            } catch (Exception e) {
+                log.error("opsRoom>>>>  looker error RC_CHATROOM_LEAVE {}", e.getMessage());
+                log.error("opsRoom>>>>  looker error sendMessage {} : RC_CHATROOM_LEAVE : {}", message, userJsonStr);
+            }
         });
 
     }
@@ -1173,10 +1173,8 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
                     .build();
         }
 
-        LiveRoomMessage.MessageContent messageContent = LiveRoomMessage.MessageContent
-                .builder()
-                .sendUserInfo(messageUser)
-                .build();
+        LiveRoomMessage.MessageContent messageContent = getMessageContent(message);
+        messageContent.setSendUserInfo(messageUser);
 
         LiveRoomMessage build = LiveRoomMessage.builder()
                 .isIncludeSender(1)
@@ -1189,13 +1187,40 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
 
             LivePluginService pluginService = livePluginContext.getPluginService(message.getServiceProvider());
             pluginService.sendChatRoomMessage(build);
-            log.info("sendLiveRoomLoginOutMessage>>>> looker {} : roomId={}, userId={}",message.getObjectName(), message.getToChatroomId(), message.getFromUserId());
+            log.info("sendLiveRoomMessage>>>> looker {} : roomId={}, userId={}",message.getObjectName(), message.getToChatroomId(), message.getFromUserId());
         } catch (Exception e) {
             log.error("sendLiveRoomMessage>>>>  looker error {} {}", message.getObjectName(),e.getMessage());
             log.error("sendLiveRoomMessage>>>>  looker error sendMessage {} : {} : : roomId={}, userId={}",message.getObjectName(), message, message.getToChatroomId(), message.getFromUserId());
         }
     }
 
+    private LiveRoomMessage.MessageContent getMessageContent(ImRoomMessage message) {
+
+        switch (message.getObjectName()) {
+            case LiveRoomMessage.FORCED_OFFLINE:
+                return LiveRoomMessage.MessageContent.builder()
+                        .build();
+            case LiveRoomMessage.LOOKER_LOGIN_OUT:
+                return LiveRoomMessage.MessageContent.builder()
+                        .targetId( imGroupService.getImUserId(message.getFromUserId(),message.getClientType()))
+                        .build();
+            case LiveRoomMessage.MEMBER_COUNT:
+                LiveRoomWrapper.LiveRoomVo liveRoomVo = queryRoomInfo(message.getToChatroomId());
+                return LiveRoomMessage.MessageContent.builder()
+                        .count(liveRoomVo.getLookNum().longValue())
+                        .onlineUsers(liveRoomVo.getLookNum().longValue())
+                        .viewers(liveRoomVo.getTotalLookNum().longValue())
+                        .likes(liveRoomVo.getLikeNum().longValue())
+                        .build();
+            case LiveRoomMessage.WELCOME:
+                return LiveRoomMessage.MessageContent.builder()
+                        .build();
+            default:
+                return LiveRoomMessage.MessageContent.builder()
+                        .build();
+        }
+    }
+
     private SysUser getSysUser(Long userId) {
         return Optional.ofNullable(userId)
                 .map(sysUserFeignService::queryUserById)
@@ -2130,7 +2155,7 @@ public class LiveRoomServiceImpl extends ServiceImpl<LiveRoomDao, LiveRoom> impl
         onlineUserCache.fastPut(userId, userJsonStr);
         log.info("joinRoom>>>> userInfo: {}", userJsonStr);
         //向直播间发送当前在线人数消息
-//        this.sendOnlineUserCount(roomUid, userId, onlineUserCache.size());
+        this.sendOnlineUserCount(roomUid, userId, onlineUserCache.size());
         log.info("join sendOnlineUserCount>>>> param is null   roomUid: {}  fromUserId:{}  count:{}", roomUid, userId, onlineUserCache.size());
         log.info("joinRoom>>>> userInfo: {}", userJsonStr);
         //记录当前用户对应的房间uid

+ 5 - 0
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/wrapper/ImHistoryMessageWrapper.java

@@ -14,18 +14,23 @@ public class ImHistoryMessageWrapper {
     @ApiModel("ImHistoryMessage-iM语音消息")
     public static class TimSoundElem {
 
+        @JSONField(name = "Url")
         @ApiModelProperty("语音下载地址,可通过该 URL 地址直接下载相应语音。")
         private String Url;
 
+        @JSONField(name = "UUID")
         @ApiModelProperty("语音的唯一标识,客户端用于索引语音的键值")
         private String UUID;
 
+        @JSONField(name = "Size")
         @ApiModelProperty("语音数据大小,单位:字节。")
         private Integer Size;
 
+        @JSONField(name = "Second")
         @ApiModelProperty("语音时长,单位:秒。")
         private Integer Second;
 
+        @JSONField(name = "Download_Flag")
         @ApiModelProperty("语音下载方式标记。目前 Download_Flag 取值只能为2,表示可通过Url字段值的 URL 地址直接下载语音。")
         private Integer Download_Flag;