|
@@ -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;
|
|
|
}
|
|
|
+ }
|
|
|
//}
|
|
|
}
|
|
|
|