Browse Source

增加im禁言功能

hgw 3 years ago
parent
commit
d2fa885f7e

+ 4 - 0
mec-biz/src/main/java/com/ym/mec/biz/service/impl/ImLiveRoomBlackServiceImpl.java

@@ -90,6 +90,8 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
             this.save(imLiveRoomBlack);
             //发送消息到直播房间
             this.sendBlackMsg(roomUid, userId, userId, ImRoomMessage.BLOCK_BLACK_USER);
+            //调用融云方法加入禁言
+            imFeignService.addUserUnableSpeak(roomUid, userIdStr);
         });
     }
 
@@ -112,6 +114,8 @@ public class ImLiveRoomBlackServiceImpl extends ServiceImpl<ImLiveRoomBlackDao,
                     .eq(ImLiveRoomBlack::getUserId, userId));
             //发送消息到直播房间
             this.sendBlackMsg(roomUid, userId, userId, ImRoomMessage.UNBLOCK_BLACK_USER);
+            //调用融云方法加入禁言
+            imFeignService.removeUserUnableSpeak(roomUid, userIdStr);
         });
     }
 

+ 18 - 0
mec-client-api/src/main/java/com/ym/mec/im/ImFeignService.java

@@ -198,4 +198,22 @@ public interface ImFeignService {
     @PostMapping(value = "/liveRoom/checkOnline")
     boolean checkOnline(@RequestParam("userId") String userId);
 
+    /**
+     * 添加禁言成员-默认禁言120分钟
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    @PostMapping(value ="/liveRoom/addUserUnableSpeak")
+    boolean addUserUnableSpeak(@RequestParam("roomUid") String roomUid, @RequestParam("userId") String userId);
+
+    /**
+     * 移除禁言成员
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    @PostMapping(value ="/liveRoom/removeUserUnableSpeak")
+    boolean removeUserUnableSpeak(@RequestParam("roomUid") String roomUid, @RequestParam("userId") String userId);
+
 }

+ 2 - 1
mec-im/src/main/java/com/ym/config/ResourceServerConfig.java

@@ -15,7 +15,8 @@ public class ResourceServerConfig extends ResourceServerConfigurerAdapter {
                         "/room/statusImMsg", "/group/batchDismiss", "/private/send", "/group/send",
                         "/group/dismiss", "/room/statusImMsg", "/history/get", "/user/statusImUser", "/liveRoom/recordSync",
                         "/liveRoom/publishRoomMsg", "/liveRoom/destroy", "/liveRoom/create", "/liveRoom/startRecord",
-                        "/liveRoom/stopRecord", "/liveRoom/userExistInRoom","/liveRoom/checkOnline")
+                        "/liveRoom/stopRecord", "/liveRoom/userExistInRoom","/liveRoom/checkOnline",
+                        "/liveRoom/addUserUnableSpeak","/liveRoom/removeUserUnableSpeak","/liveRoom/syncChatRoomStatus")
                 .permitAll().anyRequest().authenticated().and().csrf().disable();
     }
 }

+ 12 - 0
mec-im/src/main/java/com/ym/controller/LiveRoomController.java

@@ -75,6 +75,18 @@ public class LiveRoomController {
         return liveRoomService.checkOnline(userId);
     }
 
+    @ApiOperation("添加禁言成员-默认禁言120分钟")
+    @PostMapping(value = "/addUserUnableSpeak")
+    public boolean addUserUnableSpeak(String roomUid, String userId) {
+        return liveRoomService.addUserUnableSpeak(roomUid, userId);
+    }
+
+    @ApiOperation("移除禁言成员")
+    @PostMapping(value = "/removeUserUnableSpeak")
+    public boolean removeUserUnableSpeak(String roomUid, String userId) {
+        return liveRoomService.removeUserUnableSpeak(roomUid, userId);
+    }
+
     /**
      * https://doc.rongcloud.cn/imserver/server/v1/chatroom/status
      */

+ 36 - 0
mec-im/src/main/java/com/ym/mec/im/IMHelper.java

@@ -490,4 +490,40 @@ public class IMHelper {
         return (IMUserOnlineInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMUserOnlineInfo.class);
     }
 
+    /**
+     * 添加禁言成员
+     *
+     * @param userId  用户 ID,可同时禁言多个用户,最多不超过 20 个。
+     * @param roomUid 聊天室 ID。
+     * @param minute  禁言时长,以分钟为单位,最大值为 43200 分钟。
+     */
+    public IMApiResultInfo addUserUnableSpeak(String roomUid, String userId, String minute) throws Exception {
+        String body = "&userId=" + URLEncoder.encode(userId, UTF8) +
+                "&chatroomId=" + URLEncoder.encode(roomUid, UTF8) +
+                "&minute=" + URLEncoder.encode(minute, UTF8);
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+        HttpURLConnection conn = httpHelper.createIMPostHttpConnection("/chatroom/user/gag/add.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+        return (IMApiResultInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMApiResultInfo.class);
+    }
+
+    /**
+     * 移除禁言成员
+     *
+     * @param userId  用户 ID
+     * @param roomUid 聊天室 ID。
+     */
+    public IMApiResultInfo removeUserUnableSpeak(String roomUid, String userId) throws Exception {
+        String body = "&userId=" + URLEncoder.encode(userId, UTF8) +
+                "&chatroomId=" + URLEncoder.encode(roomUid, UTF8);
+        if (body.indexOf("&") == 0) {
+            body = body.substring(1);
+        }
+        HttpURLConnection conn = httpHelper.createIMPostHttpConnection("/chatroom/user/gag/rollback.json", "application/x-www-form-urlencoded");
+        httpHelper.setBodyParameter(body, conn);
+        return (IMApiResultInfo) GsonUtil.fromJson(httpHelper.returnResult(conn), IMApiResultInfo.class);
+    }
+
 }

+ 44 - 0
mec-im/src/main/java/com/ym/service/Impl/LiveRoomServiceImpl.java

@@ -237,6 +237,50 @@ public class LiveRoomServiceImpl implements LiveRoomService {
         return Objects.equals("1", resultInfo.getStatus());
     }
 
+    /**
+     * 添加禁言成员-默认禁言120分钟
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    public boolean addUserUnableSpeak(String roomUid, String userId) {
+        log.info("addUserUnableToSpeak chatroomId : {}  userId : {}", roomUid, userId);
+        IMApiResultInfo resultInfo;
+        try {
+            resultInfo = imHelper.addUserUnableSpeak(roomUid, userId, "120");
+        } catch (Exception e) {
+            log.error("addUserUnableToSpeak chatroomId error: {}  userId : {}", roomUid, userId);
+            return false;
+        }
+        if (!resultInfo.isSuccess()) {
+            log.error("addUserUnableToSpeak chatroomId : {}  userId : {}", roomUid, userId);
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 移除禁言成员
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    public boolean removeUserUnableSpeak(String roomUid, String userId) {
+        log.info("removeUserUnableSpeak chatroomId : {}  userId : {}", roomUid, userId);
+        IMApiResultInfo resultInfo;
+        try {
+            resultInfo = imHelper.removeUserUnableSpeak(roomUid, userId);
+        } catch (Exception e) {
+            log.error("removeUserUnableSpeak chatroomId error: {}  userId : {}", roomUid, userId);
+            return false;
+        }
+        if (!resultInfo.isSuccess()) {
+            log.error("removeUserUnableSpeak chatroomId : {}  userId : {}", roomUid, userId);
+            return false;
+        }
+        return true;
+    }
+
     public String getRoomSessionId(String roomId) {
         RBucket<String> bucket = redissonClient.getBucket("sessionId:" + roomId);
         if (bucket.isExists()) {

+ 15 - 0
mec-im/src/main/java/com/ym/service/LiveRoomService.java

@@ -47,4 +47,19 @@ public interface LiveRoomService {
 
     boolean checkOnline(String userId);
 
+    /**
+     * 添加禁言成员-默认禁言120分钟
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    boolean addUserUnableSpeak(String roomUid, String userId);
+
+    /**
+     * 移除禁言成员
+     *
+     * @param roomUid 房间uid
+     * @param userId  用户id
+     */
+    boolean removeUserUnableSpeak(String roomUid, String userId);
 }