Commit 19afd2ae by 裴大威

fix timeoutgroup

parent 571e40bd
......@@ -9,6 +9,7 @@
<groupId>com.pcloud.facade</groupId>
<artifactId>pcloud-facade-book</artifactId>
<version>2.1.0-RELEASE</version>
<packaging>jar</packaging>
<name>pcloud-facade-book</name>
......
......@@ -2,12 +2,15 @@ package com.pcloud.book.group.dto;
import java.io.Serializable;
import lombok.Data;
/**
* 微信群二维码DTO
* @author lili
* @date 创建时间:2017年12月13日 下午6:57:29
*/
@Data
public class BookWxQrcodeDTO implements Serializable {
/**
......@@ -30,43 +33,10 @@ public class BookWxQrcodeDTO implements Serializable {
private String wechatGroupIp;
public String getWeixinGroupId() {
return weixinGroupId;
}
public void setWeixinGroupId(String weixinGroupId) {
this.weixinGroupId = weixinGroupId;
}
public String getRobotWxId() {
return robotWxId;
}
public void setRobotWxId(String robotWxId) {
this.robotWxId = robotWxId;
}
public Integer getGeneration() {
return generation;
}
public void setGeneration(Integer generation) {
this.generation = generation;
}
public String getWechatGroupIp() {
return wechatGroupIp;
}
/**
* 二维码更新状态
*/
private Integer updateState;
public void setWechatGroupIp(String wechatGroupIp) {
this.wechatGroupIp = wechatGroupIp;
}
@Override
public String toString() {
return "BookWxQrcodeDTO{" +
"weixinGroupId='" + weixinGroupId + '\'' +
", robotWxId='" + robotWxId + '\'' +
'}';
}
}
......@@ -9,6 +9,7 @@
<groupId>com.pcloud.service</groupId>
<artifactId>pcloud-service-book</artifactId>
<version>2.1.0-RELEASE</version>
<packaging>jar</packaging>
<name>pcloud-service-book</name>
......
......@@ -32,6 +32,7 @@ import com.pcloud.book.group.dto.WeixinQrcodeDTO;
import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.group.enums.QrcodeStatusEnum;
import com.pcloud.book.group.enums.UpdateStatusEnum;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ClassifyQrcodeVO;
import com.pcloud.book.group.vo.ClassifyVO;
......@@ -69,6 +70,7 @@ import org.springframework.util.CollectionUtils;
import java.math.BigDecimal;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
......@@ -469,11 +471,13 @@ public class GroupQrcodeBizImpl implements GroupQrcodeBiz {
}
// 新用户进群时系统消息群人数不准,所以从系统中取然后+1,更新群人数操作会在群消息地方处理
memberCount = groupQrcodeDTO.getUserNumber() + 1;
if (memberCount >= ((JoinGroupTypeEnum.GROUP_QRCODE.getCode().equals(groupQrcodeDTO.getJoinGroupType()) ? 100 : 500)) && QrcodeStatusEnum.ON_USE.value.equals(groupQrcodeDTO.getUseState())) {
// 当群人数超过限制,或者群二维码更新状态为失败时更新群状态为满群
boolean overstaff = memberCount >= ((JoinGroupTypeEnum.GROUP_QRCODE.getCode().equals(groupQrcodeDTO.getJoinGroupType()) ? 100 : 500)) && QrcodeStatusEnum.ON_USE.value.equals(groupQrcodeDTO.getUseState());
Integer updatState = Optional.ofNullable(weixinQrcodeBiz.getGroupVersion(Collections.singletonList(weixinGroupId))).map(x -> x.get(weixinGroupId)).map(BookWxQrcodeDTO::getUpdateState).orElse(-1);
if (overstaff || UpdateStatusEnum.FIAL.value.equals(updatState)) {
//将二维码修改为已满群状态
changeToOverNumber(groupQrcodeDTO.getWeixinQrcodeId(), groupQrcodeDTO.getId());
}
Map<String, Integer> nickNames = JedisClusterUtils.getJson("BOOK:WEIXINGROUP:GUIDEUSER" + weixinGroupId, Map.class);
if (nickNames == null) {
nickNames = new HashMap<>();
......
......@@ -435,7 +435,8 @@ public class WeixinQrcodeBizImpl implements WeixinQrcodeBiz {
if (ListUtils.isEmpty(wxGroupIds)) {
return new HashMap<>();
}
return weixinQrcodeDao.listByWxGroupIds(wxGroupIds) == null ? new HashMap<>() : weixinQrcodeDao.listByWxGroupIds(wxGroupIds);
Map<String, BookWxQrcodeDTO> dtoMap = weixinQrcodeDao.listByWxGroupIds(wxGroupIds);
return dtoMap == null ? new HashMap<>() : dtoMap;
}
@Override
......
......@@ -34,6 +34,7 @@ import com.pcloud.book.group.entity.GroupQrcode;
import com.pcloud.book.group.enums.JoinGroupTypeEnum;
import com.pcloud.book.group.enums.QrcodeStatusEnum;
import com.pcloud.book.group.enums.TouchTypeEnum;
import com.pcloud.book.group.enums.UpdateStatusEnum;
import com.pcloud.book.group.tools.SendSelfMsgTools;
import com.pcloud.book.group.tools.SendWeixinRequestTools;
import com.pcloud.book.group.vo.ClassifyNameVO;
......@@ -958,14 +959,20 @@ public class BookKeywordBizImpl implements BookKeywordBiz {
if (update) {
JedisClusterUtils.hset(key, wxGroupId, memberCount + "");
// 将二维码改为已满群BookKeywordBizImpl
Integer updatState = Optional.ofNullable(weixinQrcodeBiz.getGroupVersion(Collections.singletonList(wxGroupId))).map(x -> x.get(wxGroupId)).map(BookWxQrcodeDTO::getUpdateState).orElse(-1);
if (memberCount >= changeNumber) {
groupQrcodeDao.changeQrcodeState(groupQrcodeId, QrcodeStatusEnum.OVER_NUMBER.value);
log.info("[更新群人数] 触发更新大于等于状态 wxGroupId:{} memberCount:{} changeNumber:{} weixinQrcodeId:{} groupQrcodeId:{}", wxGroupId, memberCount, changeNumber, weixinQrcodeId, groupQrcodeId);
} else {
groupQrcodeDao.changeQrcodeStateForNotOver(groupQrcodeId, QrcodeStatusEnum.ON_USE.value);
log.info("[更新群人数] 触发更新小于状态 wxGroupId:{} memberCount:{} changeNumber:{} weixinQrcodeId:{} groupQrcodeId:{}", wxGroupId, memberCount, changeNumber, weixinQrcodeId, groupQrcodeId);
// 二维码过期的数据不处理
if (!UpdateStatusEnum.FIAL.value.equals(updatState)) {
groupQrcodeDao.changeQrcodeStateForNotOver(groupQrcodeId, QrcodeStatusEnum.ON_USE.value);
log.info("[更新群人数] 触发更新小于状态 wxGroupId:{} memberCount:{} changeNumber:{} weixinQrcodeId:{} groupQrcodeId:{}", wxGroupId, memberCount, changeNumber, weixinQrcodeId, groupQrcodeId);
}
}
if (memberCount >= (JoinGroupTypeEnum.GROUP_QRCODE.getCode().equals(classifyQrcodeInfo.getJoinGroupType()) ? 100 : 500)) {
// 当群人数超过限制,或者群二维码更新状态为失败时更新群状态为满群
boolean overstaff = memberCount >= (JoinGroupTypeEnum.GROUP_QRCODE.getCode().equals(classifyQrcodeInfo.getJoinGroupType()) ? 100 : 500);
if (overstaff || UpdateStatusEnum.FIAL.value.equals(updatState)) {
groupQrcodeBiz.changeToOverNumber(weixinQrcodeId, groupQrcodeId);
log.info("[更新群人数] 触发更新满群状态 wxGroupId:{} memberCount:{} changeNumber:{} weixinQrcodeId:{} groupQrcodeId:{}", wxGroupId, memberCount, changeNumber, weixinQrcodeId, groupQrcodeId);
groupQrcodeDao.changeQrcodeState(groupQrcodeId, QrcodeStatusEnum.OVER_NUMBER.value);
......
......@@ -275,12 +275,13 @@
<select id="listByWxGroupIds" parameterType="map" resultType="com.pcloud.book.group.dto.BookWxQrcodeDTO">
SELECT
weixin_group_id weixinGroupId,
robot_wx_id robotWxId,
a.generation,
b.wechat_group_ip wechatGroupIp
weixin_group_id weixinGroupId,
robot_wx_id robotWxId,
a.generation,
b.wechat_group_ip wechatGroupIp,
a.update_state updateState
FROM
`weixin_qrcode` a left join weixin_qrcode_generation b
weixin_qrcode a left join weixin_qrcode_generation b
on a.generation = b.generation
WHERE
weixin_group_id IN
......
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