Browse Source

:bug:【企业微信】修复第三方应用的两个bug

杨迢 4 years ago
parent
commit
52c33e207c

+ 2 - 2
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/message/WxCpMessage.java

@@ -52,12 +52,12 @@ public class WxCpMessage implements Serializable {
    * enable_id_trans
    * 表示是否开启id转译,0表示否,1表示是,默认0
    */
-  private Boolean enableIdTrans;
+  private Boolean enableIdTrans = false;
   /**
    * enable_duplicate_check
    * 表示是否开启重复消息检查,0表示否,1表示是,默认0
    */
-  private Boolean enableDuplicateCheck;
+  private Boolean enableDuplicateCheck = false;
   /**
    * duplicate_check_interval
    * 表示是否重复消息检查的时间间隔,默认1800s,最大不超过4小时

+ 4 - 2
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpDefaultConfigImpl.java

@@ -244,13 +244,15 @@ public class WxCpTpDefaultConfigImpl implements WxCpTpConfigStorage, Serializabl
     Long expire = authCorpAccessTokenExpireTimeMap.getOrDefault(authCorpId, 0L);
     WxAccessToken accessTokenEntity = new WxAccessToken();
     accessTokenEntity.setAccessToken(accessToken);
-    accessTokenEntity.setExpiresIn(Math.toIntExact(expire));
+    accessTokenEntity.setExpiresIn((int)((expire - System.currentTimeMillis()) / 1000 + 200));
     return accessTokenEntity;
   }
 
   @Override
   public boolean isAccessTokenExpired(String authCorpId) {
-    return System.currentTimeMillis() > authCorpAccessTokenExpireTimeMap.get(authCorpId);
+    //不存在或者过期
+    return authCorpAccessTokenExpireTimeMap.get(authCorpId) == null
+        || System.currentTimeMillis() > authCorpAccessTokenExpireTimeMap.get(authCorpId);
   }
 
 	@Override

+ 1 - 1
weixin-java-cp/src/main/java/me/chanjar/weixin/cp/config/impl/WxCpTpRedissonConfigImpl.java

@@ -220,7 +220,7 @@ public class WxCpTpRedissonConfigImpl implements WxCpTpConfigStorage, Serializab
 
     WxAccessToken accessTokenEntity = new WxAccessToken();
     accessTokenEntity.setAccessToken(accessToken);
-    accessTokenEntity.setExpiresIn(Math.max(Math.toIntExact(expire), 0));
+    accessTokenEntity.setExpiresIn((int)((expire - System.currentTimeMillis()) / 1000 + 200));
     return accessTokenEntity;
   }