Commit 19afd2ae by 裴大威

fix timeoutgroup

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