wangyunpeng 1 week ago
parent
commit
e3e75b8117

+ 64 - 55
api-module/src/main/java/com/tzld/piaoquan/api/job/wecom/thirdpart/WeComCreateRoomJob.java

@@ -121,9 +121,7 @@ public class WeComCreateRoomJob {
                 iterator.remove();
                 addUserList.add(item);
             }
-            addRoomUser(staff, room, vids);
-            // 群成员添加存储
-            saveRoomUser(room, addUserList);
+            addRoomUser(staff, room, vids, room, addUserList);
         }
         // 获取当日新创建群 达到上限 不创建
         Long roomCount = weComThirdPartyService.getTodayCreateRoomCount(staff.getId());
@@ -137,17 +135,24 @@ public class WeComCreateRoomJob {
         userDetailJob.syncRoomList(staff.getThirdUuid(), staff);
     }
 
-    private void addRoomUser(ThirdPartWeComStaff staff,
-                             ThirdPartWeComRoom room,
-                             List<Long> vids) {
+    private CommonResponse<String> addRoomUser(ThirdPartWeComStaff staff,
+                                               ThirdPartWeComRoom room,
+                                               List<Long> vids,
+                                               ThirdPartWeComRoom roomDetail,
+                                               List<ThirdPartWeComStaffUser> addUserList) {
         if (room.getAddUserStatus() != 1 || room.getMemberCount() >= memberMaxNums) {
-            return;
+            return null;
         }
         InvitationToRoomRequest request = new InvitationToRoomRequest();
         request.setUuid(staff.getThirdUuid());
         request.setRoomid(Long.parseLong(room.getThirdRoomId()));
         request.setVids(vids);
-        weComThirdPartyService.invitationToRoom(request);
+        CommonResponse<String> commonResponse = weComThirdPartyService.invitationToRoom(request);
+        if (Objects.nonNull(commonResponse)) {
+            // 群成员添加存储
+            saveRoomUser(roomDetail, addUserList);
+        }
+        return commonResponse;
     }
 
     private void createNewRoom(ThirdPartWeComStaff staff,
@@ -156,61 +161,65 @@ public class WeComCreateRoomJob {
         Iterator<ThirdPartWeComStaffUser> iterator = staffUserList.iterator();
         // todo 暂时每次任务仅创建一个群
         //while (iterator.hasNext()) {
-            List<Long> vids = new ArrayList<>();
-            List<ThirdPartWeComStaffUser> addUserList = new ArrayList<>();
-            int size = staffUserList.size() > memberMaxNums ? memberMaxNums : staffUserList.size();
+        List<Long> vids = new ArrayList<>();
+        List<ThirdPartWeComStaffUser> addUserList = new ArrayList<>();
+        int size = staffUserList.size() > memberMaxNums ? memberMaxNums : staffUserList.size();
+        size--;
+        while (iterator.hasNext() && size > 0) {
+            ThirdPartWeComStaffUser item = iterator.next();
+            vids.add(item.getUserId());
             size--;
+            iterator.remove();
+            addUserList.add(item);
+        }
+        // 群创建
+        CreateRoomWxRequest request = new CreateRoomWxRequest();
+        request.setUuid(staff.getThirdUuid());
+        request.setRoomName("票圈快讯" + (++roomNum));
+        request.setVids(vids);
+        CreateRoomWxResponse createRoomWxResponse = weComThirdPartyService.createRoom(request);
+        if (Objects.isNull(createRoomWxResponse)) {
+            return;
+        }
+        // 群管理设置 防骚扰
+        updateRoomManagement(staff, createRoomWxResponse);
+        // add room save
+        ThirdPartWeComRoom roomDetail = new ThirdPartWeComRoom();
+        roomDetail.setCorpId(staff.getCorpId());
+        roomDetail.setStaffId(staff.getId());
+        roomDetail.setThirdRoomId(createRoomWxResponse.getRoomid());
+        roomDetail.setThirdCreateUserId(createRoomWxResponse.getCreateid());
+        roomDetail.setName(createRoomWxResponse.getRoomname());
+        roomDetail.setCreateTime(new Date());
+        roomDetail.setUpdateTime(new Date());
+        roomMapper.insertSelective(roomDetail);
+        // 群成员添加存储
+        saveRoomUser(roomDetail, addUserList);
+        // 循环添加群成员
+        while (true) {
+            GetRoomUserListRequest roomUserListRequest = new GetRoomUserListRequest(staff.getThirdUuid(),
+                    Long.valueOf(createRoomWxResponse.getRoomid()));
+            List<GetRoomUserListResponse.Member> userList = weComThirdPartyService.getRoomUserList(roomUserListRequest);
+            roomDetail.setMemberCount(userList.size());
+            roomDetail.setAddUserStatus(userList.size() == memberMaxNums ? 0 : 1);
+            roomDetail.setSendStatus(userList.size() > sendMsgStatusNums && autoSendMsg ? 1 : 0);
+            roomMapper.updateByPrimaryKeySelective(roomDetail);
+            if (!iterator.hasNext() || userList.size() == memberMaxNums) {
+                break;
+            }
+            vids = new ArrayList<>();
+            size = Math.min(staffUserList.size(), memberMaxNums - userList.size());
             while (iterator.hasNext() && size > 0) {
                 ThirdPartWeComStaffUser item = iterator.next();
                 vids.add(item.getUserId());
                 size--;
                 iterator.remove();
-                addUserList.add(item);
             }
-            // 群创建
-            CreateRoomWxRequest request = new CreateRoomWxRequest();
-            request.setUuid(staff.getThirdUuid());
-            request.setRoomName("票圈快讯" + (++roomNum));
-            request.setVids(vids);
-            CreateRoomWxResponse createRoomWxResponse = weComThirdPartyService.createRoom(request);
-            // 群管理设置 防骚扰
-            updateRoomManagement(staff, createRoomWxResponse);
-            // add room save
-            ThirdPartWeComRoom roomDetail = new ThirdPartWeComRoom();
-            roomDetail.setCorpId(staff.getCorpId());
-            roomDetail.setStaffId(staff.getId());
-            roomDetail.setThirdRoomId(createRoomWxResponse.getRoomid());
-            roomDetail.setThirdCreateUserId(createRoomWxResponse.getCreateid());
-            roomDetail.setName(createRoomWxResponse.getRoomname());
-            roomDetail.setCreateTime(new Date());
-            roomDetail.setUpdateTime(new Date());
-            roomMapper.insertSelective(roomDetail);
-            // 群成员添加存储
-            saveRoomUser(roomDetail, addUserList);
-            // 循环添加群成员
-            while (true) {
-                GetRoomUserListRequest roomUserListRequest = new GetRoomUserListRequest(staff.getThirdUuid(),
-                        Long.valueOf(createRoomWxResponse.getRoomid()));
-                List<GetRoomUserListResponse.Member> userList = weComThirdPartyService.getRoomUserList(roomUserListRequest);
-                roomDetail.setMemberCount(userList.size());
-                roomDetail.setAddUserStatus(userList.size() == memberMaxNums ? 0 : 1);
-                roomDetail.setSendStatus(userList.size() > sendMsgStatusNums && autoSendMsg ? 1 : 0);
-                roomMapper.updateByPrimaryKeySelective(roomDetail);
-                if (!iterator.hasNext() || userList.size() == memberMaxNums) {
-                    break;
-                }
-                vids = new ArrayList<>();
-                size = Math.min(staffUserList.size(), memberMaxNums - userList.size());
-                while (iterator.hasNext() && size > 0) {
-                    ThirdPartWeComStaffUser item = iterator.next();
-                    vids.add(item.getUserId());
-                    size--;
-                    iterator.remove();
-                }
-                addRoomUser(staff, roomDetail, vids);
-                // 群成员添加存储
-                saveRoomUser(roomDetail, addUserList);
+            CommonResponse<String> commonResponse = addRoomUser(staff, roomDetail, vids, roomDetail, addUserList);
+            if (Objects.isNull(commonResponse)) {
+                break;
             }
+        }
         //}
     }
 

+ 1 - 0
api-module/src/main/java/com/tzld/piaoquan/api/service/impl/WeComThirdPartyServiceImpl.java

@@ -414,6 +414,7 @@ public class WeComThirdPartyServiceImpl implements WeComThirdPartyService {
                             "群名称:" + (Objects.nonNull(room) ? room.getName() : "") + "\n" +
                             "邀请用户:" + request.getVids() + "\n" +
                             "错误信息:" + res);
+            return null;
         }
         return commonResponse;
     }