Commit 768f1fb3 by 徐高华

活码

parent 3422fe6e
...@@ -13,6 +13,15 @@ public class ChatHmSearchQDTO implements Serializable { ...@@ -13,6 +13,15 @@ public class ChatHmSearchQDTO implements Serializable {
private String enterpriseId; private String enterpriseId;
private String searchParams; private String searchParams;
private Integer status; private Integer status;
private Long linkId ;
public Long getLinkId() {
return linkId;
}
public void setLinkId(Long linkId) {
this.linkId = linkId;
}
public Date getStartDate() { public Date getStartDate() {
return startDate; return startDate;
......
package com.gic.haoban.manage.service.service.chat.impl; package com.gic.haoban.manage.service.service.chat.impl;
import java.util.ArrayList;
import java.util.Date; import java.util.Date;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
...@@ -19,6 +20,7 @@ import com.gic.api.base.commons.ServiceResponse; ...@@ -19,6 +20,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.util.EntityUtil; import com.gic.commons.util.EntityUtil;
import com.gic.commons.util.PageHelperUtils; import com.gic.commons.util.PageHelperUtils;
import com.gic.commons.util.UniqueIdUtils; import com.gic.commons.util.UniqueIdUtils;
import com.gic.haoban.common.utils.RolesListUtils;
import com.gic.haoban.manage.api.constants.Manage3Constants; import com.gic.haoban.manage.api.constants.Manage3Constants;
import com.gic.haoban.manage.api.dto.SecretSettingDTO; import com.gic.haoban.manage.api.dto.SecretSettingDTO;
import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO; import com.gic.haoban.manage.api.dto.WxEnterpriseQwDTO;
...@@ -91,40 +93,82 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -91,40 +93,82 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
logger.info("群活码不存在,chatHmId={}", chatHmId); logger.info("群活码不存在,chatHmId={}", chatHmId);
return; return;
} }
if (hm.getAutoCreateRoom() == 0) {
logger.info("无开启自动建群,不处理自动踢群hmid={}", hm.getChatHmId());
return;
}
List<TabGroupChatHmRelation> chatRelation = this.groupChatHmRelationMapper.listByChatHmId(chatHmId); List<TabGroupChatHmRelation> chatRelation = this.groupChatHmRelationMapper.listByChatHmId(chatHmId);
if (CollectionUtils.isEmpty(chatRelation)) { if (CollectionUtils.isEmpty(chatRelation)) {
logger.info("群活码无关联群,chatHmId={}", chatHmId); logger.info("群活码无关联群,chatHmId={}", chatHmId);
break; break;
} }
String wxEnterpriseId = hm.getWxEnterpriseId(); String wxEnterpriseId = hm.getWxEnterpriseId();
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId, SecretSettingDTO secretSetting = secretSettingService.getSecretSetting(wxEnterpriseId,
SecretTypeEnum.CUSTOMIZED_APP.getVal()); SecretTypeEnum.CUSTOMIZED_APP.getVal());
if (null == secretSetting) { if (null == secretSetting) {
logger.info("没有配置代开应用"); logger.info("没有配置代开应用");
return;
} }
String configId = hm.getWxConfigId(); this.handleAutoCreateRoom(wxEnterpriseId, secretSetting.getSecretVal(), hm, chatRelation);
ServiceResponse<AddJoinWayDTO> joinResp = this.qywxChatApiService.getJoinWay(qwDTO.getDkCorpid(),
secretSetting.getSecretVal(), configId);
logger.info("查询群活码={}", JSON.toJSON(joinResp));
if (joinResp.isSuccess()) {
AddJoinWayDTO join = joinResp.getResult();
List<String> qwChatIdList = join.getChat_id_list();
if (CollectionUtils.isNotEmpty(qwChatIdList)) {
List<Long> chatIdList = chatRelation.stream().map(dto -> dto.getGroupChatId())
.collect(Collectors.toList());
List<TabGroupChat> chatList = this.groupChatMapper.listByIdSet(new HashSet<>(chatIdList));
List<String> hbIdList = chatList.stream().map(dto -> dto.getWxChatId())
.collect(Collectors.toList());
this.t(qwChatIdList, hbIdList, chatHmId);
}
}
} }
}
private void t(List<String> qwIdList, List<String> hbIdList, Long chatHmId) { }
if (CollectionUtils.isEmpty(hbIdList)) {
/**
* 处理开启自动建群的,如果群满自动下线后,需要从活码中提出
*/
private void handleAutoCreateRoom(String wxEnterpriseId, String secret, TabGroupChatHm hm,
List<TabGroupChatHmRelation> chatRelation) {
WxEnterpriseQwDTO qwDTO = this.wxEnterpriseService.getQwInfo(wxEnterpriseId);
String configId = hm.getWxConfigId();
ServiceResponse<AddJoinWayDTO> joinResp = this.qywxChatApiService.getJoinWay(qwDTO.getDkCorpid(), secret,
configId);
logger.info("查询群活码={}", JSON.toJSON(joinResp));
if (joinResp.isSuccess()) {
AddJoinWayDTO join = joinResp.getResult();
List<String> qwChatIdList = join.getChat_id_list();
if (CollectionUtils.isNotEmpty(qwChatIdList)) {
if (qwChatIdList.size() == 1) {
logger.info("只有1个群");
return;
}
List<Long> chatIdList = chatRelation.stream().map(dto -> dto.getGroupChatId())
.collect(Collectors.toList());
List<TabGroupChat> chatList = this.groupChatMapper.listByIdSet(new HashSet<>(chatIdList));
List<String> hbIdList = chatList.stream().map(dto -> dto.getWxChatId()).collect(Collectors.toList());
logger.info("企微群列表={},haoban列表={}", qwChatIdList, hbIdList);
// 差异列表
List<String> qwList = RolesListUtils.differenceList(qwChatIdList, hbIdList);
if (qwChatIdList.size() == hbIdList.size() && CollectionUtils.isEmpty(qwList)) {
logger.info("群未变化");
return;
}
if (CollectionUtils.isNotEmpty(qwList)) {
// 处理要踢的
for (String wxChatId : qwList) {
TabGroupChat chat = this.groupChatMapper.selectByWxChatId(wxEnterpriseId, wxChatId);
TabGroupChat cid = null;
String staffId = chat.getStaffId();
for (TabGroupChat obj : chatList) {
if (obj.getStaffId().equals(staffId)) {
if (null == cid) {
cid = obj;
} else {
if (obj.getTotalCount() > cid.getTotalCount()) {
cid = obj;
}
}
}
}
if (null != cid) {
logger.info("hm={},群={},要删={}", wxChatId, qwChatIdList, cid.getWxChatId());
qwChatIdList.remove(cid.getWxChatId());
// 保存活码
}
}
}
}
} }
} }
...@@ -136,6 +180,7 @@ public class GroupChatHmServiceImpl implements GroupChatHmService { ...@@ -136,6 +180,7 @@ public class GroupChatHmServiceImpl implements GroupChatHmService {
SecretTypeEnum.CUSTOMIZED_APP.getVal()); SecretTypeEnum.CUSTOMIZED_APP.getVal());
if (null == secretSetting) { if (null == secretSetting) {
logger.info("没有配置代开应用"); logger.info("没有配置代开应用");
return;
} }
boolean updateFlag = false; boolean updateFlag = false;
Long hmid = UniqueIdUtils.uniqueLong(); Long hmid = UniqueIdUtils.uniqueLong();
......
...@@ -36,9 +36,11 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO; ...@@ -36,9 +36,11 @@ import com.gic.haoban.manage.api.dto.chat.GroupChatPlanOwnerLogDTO;
import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO; import com.gic.haoban.manage.api.dto.qdto.chat.GroupChatPlanSearchQDTO;
import com.gic.haoban.manage.service.config.Config; import com.gic.haoban.manage.service.config.Config;
import com.gic.haoban.manage.service.dao.mapper.StaffMapper; import com.gic.haoban.manage.service.dao.mapper.StaffMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatOwnerMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanLogMapper; import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanLogMapper;
import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanMapper; import com.gic.haoban.manage.service.dao.mapper.chat.GroupChatPlanMapper;
import com.gic.haoban.manage.service.entity.TabHaobanStaff; import com.gic.haoban.manage.service.entity.TabHaobanStaff;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatOwner;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlan;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanLog;
import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog; import com.gic.haoban.manage.service.entity.chat.TabGroupChatPlanOwnerLog;
...@@ -85,6 +87,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -85,6 +87,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
private StoreService storeService; private StoreService storeService;
@Autowired @Autowired
private QuartzService quartzService; private QuartzService quartzService;
@Autowired
private GroupChatOwnerMapper groupChatOwnerMapper;
private static GicMQClient mqClient = GICMQClientUtil.getClientInstance(); private static GicMQClient mqClient = GICMQClientUtil.getClientInstance();
...@@ -153,8 +157,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -153,8 +157,8 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
logger.info("计划已执行过,planid={}", planId); logger.info("计划已执行过,planid={}", planId);
return; return;
} }
this.groupChatPlanMapper.updateSendFlag(planId);
// 控制重复发送 // 控制重复发送
this.groupChatPlanMapper.updateSendFlag(planId);
String[] staffIdList = plan.getStaffIdList().split(","); String[] staffIdList = plan.getStaffIdList().split(",");
String wxEnterpriseId = plan.getWxEnterpriseId(); String wxEnterpriseId = plan.getWxEnterpriseId();
String enterpriseId = plan.getEnterpriseId(); String enterpriseId = plan.getEnterpriseId();
...@@ -178,8 +182,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService { ...@@ -178,8 +182,9 @@ public class GroupChatPlanServiceImpl implements GroupChatPlanService {
ownerDTO.setSendStatus(0); ownerDTO.setSendStatus(0);
} }
// 群主群数量 // 群主群数量
TabGroupChatOwner owner = this.groupChatOwnerMapper.selectByStaffId(staffId);
ownerDTO.setExpireDate(DateUtil.addDay(new Date(), plan.getExpireDays())); ownerDTO.setExpireDate(DateUtil.addDay(new Date(), plan.getExpireDays()));
ownerDTO.setTotalCount(0); ownerDTO.setTotalCount(owner.getChatCount());
ownerDTO.setWxEnterpriseId(wxEnterpriseId); ownerDTO.setWxEnterpriseId(wxEnterpriseId);
ownerDTO.setEnterpriseId(enterpriseId); ownerDTO.setEnterpriseId(enterpriseId);
ownerDTO.setStaffId(staffId); ownerDTO.setStaffId(staffId);
......
...@@ -142,8 +142,8 @@ ...@@ -142,8 +142,8 @@
<if test="null != startDate"> <if test="null != startDate">
and create_time >= #{startDate} and create_time <![CDATA[<=]]> #{endDate} and create_time >= #{startDate} and create_time <![CDATA[<=]]> #{endDate}
</if> </if>
<if test="null != searchParams"> <if test="null != searchParams and '' !=searchParams ">
and plan like '%${searchParams}%' and name like '%${searchParams}%'
</if> </if>
</select> </select>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment