Просмотр исходного кода

1、调整员工增加回调处理

yys 3 месяцев назад
Родитель
Сommit
c2063d3f3d

+ 12 - 1
fs-qw-api/src/main/java/com/fs/app/service/QwDataCallbackService.java

@@ -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);