|
|
@@ -277,7 +277,18 @@ public class QwDataCallbackService {
|
|
|
|
|
|
break;
|
|
|
case "change_contact" :
|
|
|
-
|
|
|
+ // 去重:企微可能通过通讯录回调和应用数据回调各推送一次同一事件
|
|
|
+ NodeList createTimeNode = root.getElementsByTagName("CreateTime");
|
|
|
+ String dedupCreateTime = createTimeNode.getLength() > 0
|
|
|
+ ? createTimeNode.item(0).getTextContent() : "";
|
|
|
+ String dedupKey = "qw:callback:dedup:" + corpId + ":" + changeType + ":" + dedupCreateTime;
|
|
|
+ if (redisCache.getCacheObject(dedupKey) != null) {
|
|
|
+ logger.info("[QwCallback] 重复回调已忽略,corpId={}, changeType={}, CreateTime={}",
|
|
|
+ corpId, changeType, dedupCreateTime);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ // 设置去重标记,5分钟过期
|
|
|
+ redisCache.setCacheObject(dedupKey, "1", 1, TimeUnit.MINUTES);
|
|
|
if (changeType.equals("create_user")){
|
|
|
String userID = root.getElementsByTagName("UserID").item(0).getTextContent();
|
|
|
QwUser qw = qwUserMapper.selectQwUserByCorpIdAndUserId(corpId, userID);
|