Explorar o código

踢出群聊功能流程验证

刘立冬 hai 1 mes
pai
achega
541c8f4574

+ 12 - 19
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/impl/RiskUserHandleService.java

@@ -36,7 +36,14 @@ public class RiskUserHandleService {
     public void handleRiskUser(RiskUserInfo riskUserInfo){
         log.info("handleRiskUser, riskUserInfo: {}", riskUserInfo);
         //根据名称找到人
-        List<UserBase> staffList = findStaffByName(riskUserInfo);
+//        List<UserBase> staffList = findStaffByName(riskUserInfo);
+        //for test
+        List<UserBase> staffList = new ArrayList<>();
+        UserBase staff1 = new UserBase();
+        staff1.setVid("1688858050719288");
+        staff1.setUuid("a09c1237a66a2f30868c9e71b0941fac");
+        staffList.add(staff1);
+
         if (staffList.isEmpty()) return;
         //根据群名匹配到:人-群:哪个员工哪个群
         Map<String, List<RoomListResponse.RoomInfo>> toBeOperate = matchUserAndRoom(staffList, riskUserInfo);
@@ -138,6 +145,7 @@ public class RiskUserHandleService {
         List<UserBase> userBaseList = new ArrayList<>();
         if (userInfo != null ) {
             List<RiskUserInfo.Admin> adminList = userInfo.getAdminList();
+            List<UserBase> staffList = qwUserService.getUserByNickName(userInfo.getExternalNickname());
             if (adminList != null && !adminList.isEmpty()) {
                 for (RiskUserInfo.Admin admin : adminList) {
                     String name = admin.getNickname();
@@ -153,23 +161,6 @@ public class RiskUserHandleService {
         return userBaseList;
     }
 
-    private List<RoomMemberListInfo.Member> getRoomMemberList(UserBase staff,long roomId) {
-        Map<String, Object> requestBody = new HashMap<>();
-        requestBody.put("uuid", staff.getUuid());
-        requestBody.put("roomId", roomId);
-        LOGGER.info("getRoomMemberList, staff: {}", staff);
-        String params = JSON.toJSONString(requestBody);
-        Optional<String> response = httpPoolClientDefault.postJson(qywxConfig.getDomain() + qywxConfig.getPath("get-roomMembers"), params);
-        List<RoomMemberListInfo.Member> memberList = new ArrayList<>();
-        if (response.isPresent()) {
-            QwCommonResModel<RoomMemberListInfo> memberInfo = QwCommonResModel.parseResponse(response.get(), RoomMemberListInfo.class);
-            if (memberInfo.getErrcode() == 0) {
-                memberList = memberInfo.getData().getMemberList();
-            }
-        }
-        return memberList;
-    }
-
     private long externalId2Vid(UserBase staff,RiskUserInfo riskinfo) {
         log.info("externalId2Vid, staff: {}, riskinfo: {}", staff, riskinfo);
         Map<String, Object> requestBody = new HashMap<>();
@@ -178,7 +169,9 @@ public class RiskUserHandleService {
         requestBody.put("scorpid", scorpid);
         requestBody.put("openid",Arrays.asList(riskinfo.getExternalId()));
         String params = JSON.toJSONString(requestBody);
-        Optional<String> response = httpPoolClientDefault.postJson(qywxConfig.getDomain() + qywxConfig.getPath("userId2Vid"), params);
+        log.info("externalId2Vid, params: {}", params);
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("userId2Vid");
+        Optional<String> response = httpPoolClientDefault.postJson(url, params);
         log.info("externalId2Vid, response: {}", response);
         if (response.isPresent()) {
             QwCommonResModel<List<OpenUserInfo>> result = JSON.parseObject(

+ 29 - 3
risk-control-core/src/main/java/com/tzld/piaoquan/risk/control/service/impl/RiskUserOperateService.java

@@ -30,7 +30,14 @@ public class RiskUserOperateService {
     private static final Logger LOGGER = LoggerFactory.getLogger(RiskUserHandleService.class);
 
     public boolean checkAndKickExternalUser(UserBase staff,RiskUserInfo riskUserInfo,long vid,long roomId) {
+        LOGGER.info("checkAndKickExternalUser, staff: {}, riskUserInfo: {}, vid: {}, roomId: {}", staff, riskUserInfo, vid, roomId);
         boolean inRoom = isInRoom(staff, roomId, vid);
+        if (!inRoom) {
+            LOGGER.info("User {} is not in room {}", vid, roomId);
+            return false;
+        }
+        LOGGER.info("User {} is in room {}", vid, roomId);
+        kick(staff, roomId, vid);
 
         return true;
     }
@@ -41,13 +48,30 @@ public class RiskUserOperateService {
         requestBody.put("oprType", 1);
         requestBody.put("blacklist_vid",Arrays.asList(vid));
         String params = JSON.toJSONString(requestBody);
-        Optional<String> response = httpPoolClientDefault.postJson(qywxConfig.getDomain() + qywxConfig.getPath("get-chatList"), params);
+        LOGGER.info("kick, staff: {}, params: {}", staff, params);
+        Optional<String> response = httpPoolClientDefault.postJson(qywxConfig.getDomain() + qywxConfig.getPath(" kick-external"), params);
+        if (response.isPresent()) {
+            QwCommonResModel<RoomListResponse> roomInfo = QwCommonResModel.parseResponse(response.get(), RoomListResponse.class);
+            if (roomInfo.getErrcode() == 0) {
+                LOGGER.info("Kick external user {} from room {} successfully", vid, roomId);
+            } else {
+                LOGGER.error("Failed to kick external user {} from room {}: {}", vid, roomId, roomInfo.getErrmsg());
+            }
+        } else {
+            LOGGER.error("Failed to kick external user {} from room {}: No response", vid, roomId);
+        }
     }
 
     //增加校验,是否在群内
     public boolean isInRoom(UserBase staff, long roomId,long vid) {
         List<RoomMemberListInfo.Member> memberList = getRoomMemberList(staff, roomId);
+        if (memberList == null || memberList.isEmpty()) {
+            LOGGER.info("isInRoom, memberList is empty");
+            return false;
+        }
+        LOGGER.info("isInRoom, memberList: {}", memberList);
         for (RoomMemberListInfo.Member member : memberList) {
+            LOGGER.info("isInRoom, member: {}", member);
             if (member.getUin() == vid) {
                 return true;
             }
@@ -59,9 +83,11 @@ public class RiskUserOperateService {
         Map<String, Object> requestBody = new HashMap<>();
         requestBody.put("uuid", staff.getUuid());
         requestBody.put("roomId", roomId);
-        LOGGER.info("getRoomMemberList, staff: {}", staff);
+//        LOGGER.info("getRoomMemberList, staff: {}", staff);
         String params = JSON.toJSONString(requestBody);
-        Optional<String> response = httpPoolClientDefault.postJson(qywxConfig.getDomain() + qywxConfig.getPath("get-roomMembers"), params);
+        String url = qywxConfig.getDomain() + qywxConfig.getPath("get-roomMembers");
+        Optional<String> response = httpPoolClientDefault.postJson(url, params);
+        LOGGER.info("getRoomMemberList, params: {}, response: {},url: {}", params, response, url);
         List<RoomMemberListInfo.Member> memberList = new ArrayList<>();
         if (response.isPresent()) {
             QwCommonResModel<RoomMemberListInfo> memberInfo = QwCommonResModel.parseResponse(response.get(), RoomMemberListInfo.class);

+ 2 - 2
risk-control-server/src/main/resources/application.yml

@@ -26,8 +26,8 @@ pagehelper:
   helper-dialect: mysql
 qywx:
   domain: http://47.110.132.222:8083
-  corpid: 1970325203990889
-  scorpid: ww2c0a198821e1869f
+  corpid: 1970324940055725
+  scorpid: wwa4015dc7d652a21f
   paths:
     init-uuid: /wxwork/init
     login-qrcode: /wxwork/getQrCode

+ 11 - 1
risk-control-server/src/test/java/com/tzld/piaoquan/risk/control/service/DemoServiceTest.java

@@ -1,6 +1,9 @@
 package com.tzld.piaoquan.risk.control.service;
 
+import com.alibaba.fastjson.JSON;
 import com.tzld.piaoquan.risk.control.BaseTest;
+import com.tzld.piaoquan.risk.control.model.qywx.RiskUserInfo;
+import com.tzld.piaoquan.risk.control.service.impl.RiskUserHandleService;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.mongodb.core.MongoTemplate;
@@ -12,12 +15,19 @@ public class DemoServiceTest extends BaseTest {
 
     @Autowired
     private MongoTemplate mongoTemplate;
+    @Autowired
+    private RiskUserHandleService riskUserHandleService;
 
     @Test
     void test(){
+        String riskInfo = "{\"chat_id\":\"wrreQkBgAAqfC7PyfSzRwj2ailPbXImg\",\"group_name\":\"一起成行-测试c\",\"corp_id\":\"ww84bf86fbc1f29e79\",\"admin_list\":[{\"userid\":\"woreQkBgAA0TWJDl2bJ-M5NIZtk3xohg\",\"nickname\":\"刘立冬\"},{\"userid\":\"pony\",\"nickname\":\"我是张三\"}],\"external_id\":\"wmreQkBgAA5XY8GeuzW5OTxMz0TXxtTw\",\"external_nickname\":\"我也不吃了\",\"join_time\":1747881759,\"join_scene\":3,\"risk_level\":0}";
+        RiskUserInfo riskUser = JSON.parseObject(riskInfo, RiskUserInfo.class);
+        System.out.println(riskUser);
+        riskUserHandleService.handleRiskUser(riskUser);
 //        demoService
+//       demoService.sayHello("world");
         Map<String,Object> map = new HashMap<>();
         map.put("video_id",1);
-        mongoTemplate.insert(map, "content_understanding_info");
+//        mongoTemplate.insert(map, "content_understanding_info");
     }
 }