From 3662a25cceabc9f7c7c6bf6be42d63f3f5eab4a5 Mon Sep 17 00:00:00 2001 From: wangkai Date: Thu, 7 Dec 2023 16:06:44 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E3=80=90=E4=BC=81=E4=B8=9A=E5=BE=AE?= =?UTF-8?q?=E4=BF=A1=E3=80=91=20#3178=EF=BC=8C=E4=BF=AE=E5=A4=8D=E4=BC=9A?= =?UTF-8?q?=E8=AF=9D=E5=AD=98=E6=A1=A3=E5=8F=8D=E5=BA=8F=E5=88=97=E5=8C=96?= =?UTF-8?q?uint64=E7=B1=BB=E5=9E=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../cp/api/impl/WxCpMsgAuditServiceImpl.java | 14 +++--- .../cp/bean/msgaudit/WxCpChatDatas.java | 2 +- .../cp/bean/msgaudit/WxCpChatModel.java | 11 +++- .../weixin/cp/bean/msgaudit/WxCpFileItem.java | 6 ++- .../weixin/cp/util/crypto/WxCpCryptUtil.java | 6 ++- .../weixin/cp/api/WxCpMsgAuditTest.java | 50 +++++++++++++++++-- 6 files changed, 71 insertions(+), 18 deletions(-) diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpMsgAuditServiceImpl.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpMsgAuditServiceImpl.java index fc4f7cef64..5ede317fbb 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpMsgAuditServiceImpl.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpMsgAuditServiceImpl.java @@ -196,12 +196,11 @@ public void getMediaFile(@NonNull long sdk, @NonNull String sdkfileid, String pr @Override public void getMediaFile(@NonNull long sdk, @NonNull String sdkfileid, String proxy, String passwd, @NonNull long timeout, @NonNull Consumer action) throws WxErrorException { -/** - * 1、媒体文件每次拉取的最大size为512k,因此超过512k的文件需要分片拉取。 - * 2、若该文件未拉取完整,sdk的IsMediaDataFinish接口会返回0,同时通过GetOutIndexBuf接口返回下次拉取需要传入GetMediaData的indexbuf。 - * 3、indexbuf一般格式如右侧所示,”Range:bytes=524288-1048575“:表示这次拉取的是从524288到1048575的分片。单个文件首次拉取填写的indexbuf - * 为空字符串,拉取后续分片时直接填入上次返回的indexbuf即可。 - */ + /** + * 1、媒体文件每次拉取的最大size为512k,因此超过512k的文件需要分片拉取。 + * 2、若该文件未拉取完整,sdk的IsMediaDataFinish接口会返回0,同时通过GetOutIndexBuf接口返回下次拉取需要传入GetMediaData的indexbuf。 + * 3、indexbuf一般格式如右侧所示,”Range:bytes=524288-1048575“:表示这次拉取的是从524288到1048575的分片。单个文件首次拉取填写的indexbuf为空字符串,拉取后续分片时直接填入上次返回的indexbuf即可。 + */ String indexbuf = ""; int ret, data_len = 0; log.debug("正在分片拉取媒体文件 sdkFileId为{}", sdkfileid); @@ -215,8 +214,7 @@ public void getMediaFile(@NonNull long sdk, @NonNull String sdkfileid, String pr } data_len += Finance.GetDataLen(mediaData); - log.info("正在分片拉取媒体文件 len:{}, data_len:{}, is_finis:{} \n", Finance.GetIndexLen(mediaData), data_len, - Finance.IsMediaDataFinish(mediaData)); + log.debug("正在分片拉取媒体文件 len:{}, data_len:{}, is_finish:{} \n", Finance.GetIndexLen(mediaData), data_len, Finance.IsMediaDataFinish(mediaData)); try { // 大于512k的文件会分片拉取,此处需要使用追加写,避免后面的分片覆盖之前的数据。 diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatDatas.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatDatas.java index 89f0219395..732da06a53 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatDatas.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatDatas.java @@ -25,7 +25,7 @@ public class WxCpChatDatas implements Serializable { private String errMsg; @SerializedName("sdk") - private long sdk; + private Long sdk; @SerializedName("chatdata") private List chatData; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatModel.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatModel.java index 05098e5e02..d843cad6cf 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatModel.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatModel.java @@ -7,6 +7,7 @@ import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; import java.io.Serializable; +import java.math.BigInteger; import java.util.List; /** @@ -844,8 +845,11 @@ public String toJson() { public static class Details implements Serializable { private static final long serialVersionUID = -5028321625140879571L; + /** + * 表项id Uint64类型 + */ @SerializedName("id") - private Long id; + private BigInteger id; @SerializedName("ques") private String ques; @@ -943,8 +947,11 @@ public static class Meeting implements Serializable { @SerializedName("meetingtype") private Integer meetingType; + /** + * 会议id Uint64类型 + */ @SerializedName("meetingid") - private Long meetingId; + private BigInteger meetingId; @SerializedName("status") private Integer status; diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpFileItem.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpFileItem.java index 384f29f756..35bbe36a14 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpFileItem.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpFileItem.java @@ -5,6 +5,7 @@ import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder; import java.io.Serializable; +import java.math.BigInteger; /** * 会话存档 文档信息对象 @@ -25,8 +26,11 @@ public class WxCpFileItem implements Serializable { @SerializedName("sdkfileid") private String sdkFileId; + /** + * 共享文件的大小 Uint64类型 + */ @SerializedName("filesize") - private Long fileSize; + private BigInteger fileSize; /** * From json wx cp file item. diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/crypto/WxCpCryptUtil.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/crypto/WxCpCryptUtil.java index 835aa79797..08ea292b4f 100755 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/crypto/WxCpCryptUtil.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/crypto/WxCpCryptUtil.java @@ -14,9 +14,11 @@ import java.security.spec.PKCS8EncodedKeySpec; import java.security.spec.RSAPrivateCrtKeySpec; import java.util.Base64; +import java.util.Objects; /** * The type Wx cp crypt util. + * * @author qian */ public class WxCpCryptUtil extends WxCryptUtil { @@ -50,11 +52,11 @@ public WxCpCryptUtil(WxCpConfigStorage wxCpConfigStorage) { * @throws Exception the exception */ public static String decryptPriKey(String encryptRandomKey, String msgAuditPriKey, Integer pkcs1) throws Exception { - if (pkcs1 == null) { + if (Objects.isNull(pkcs1)) { throw new WxErrorException("请配置会话存档解密方式"); } - if (pkcs1 == 1) { + if (Objects.equals(pkcs1, 1)) { return decryptPriKeyByPKCS1(encryptRandomKey, msgAuditPriKey); } diff --git a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMsgAuditTest.java b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMsgAuditTest.java index 740725cb82..ec7362ed5d 100644 --- a/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMsgAuditTest.java +++ b/weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMsgAuditTest.java @@ -18,10 +18,8 @@ import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.List; +import java.math.BigInteger; +import java.util.*; /** * 企业微信会话内容存档测试类. @@ -755,4 +753,48 @@ public void testGetMediaFile() throws Exception { } Finance.DestroySdk(chatDatas.getSdk()); } + + // 测试Uint64类型 + public static void main(String[] args){ + /* + * 会议邀请信息 + */ + String meeting = "{\"msgid\":\"5935786683775673543_1603877328\",\"action\":\"send\",\"from\":\"ken\"," + + "\"tolist\":[\"icef\",\"test\"],\"roomid\":\"wr2vOpDgAAN4zVWKbS\",\"msgtime\":1603877328914," + + "\"msgtype\":\"meeting\",\"meeting\":{\"topic\":\"夕会\",\"starttime\":1603877400,\"endtime\":1603881000," + + "\"address\":\"\",\"remarks\":\"\",\"meetingtype\":102,\"meetingid\":11101571002822706744,\"status\":1}}"; + WxCpChatModel modelMeeting = WxCpChatModel.fromJson(meeting); + modelMeeting.getMeeting().getMeetingId(); + System.out.println(modelMeeting.toJson()); + + /* + * 音频共享文档消息 + */ + String voipDocShare = "{\"msgid\":\"16527954622422422847_1594199256\",\"action\":\"send\"," + + "\"from\":\"18002520162\",\"tolist\":[\"wo137MCgAAYW6pIiKKrDe5SlzEhSgwbA\"],\"msgtime\":1594199235014," + + "\"msgtype\":\"voip_doc_share\",\"voipid\":\"gr2751c98b19300571f8afb3b74514bd32\"," + + "\"voip_doc_share\":{\"filename\":\"欢迎使用微盘.pdf.pdf\",\"md5sum\":\"ff893900f24e55e216e617a40e5c4648\"," + + "\"filesize\":11101571002822706744," + + "\"sdkfileid" + + "\":\"CpsBKjAqZUlLdWJMd2gvQ1JxMzd0ZjlpdW5mZzJOOE9JZm5kbndvRmRqdnBETjY0QlcvdGtHSFFTYm95dHM2VlllQXhkUUN5KzRmSy9KT3pudnA2aHhYZFlPemc2aVZ6YktzaVh3YkFPZHlqNnl2L2MvcGlqcVRjRTlhZEZsOGlGdHJpQ2RWSVNVUngrVFpuUmo3TGlPQ1BJemlRPT0SOE5EZGZNVFk0T0RnMU16YzVNVGt5T1RJMk9GODFNelUyTlRBd01qQmZNVFU1TkRFNU9USTFOZz09GiA3YTcwNmQ2Zjc5NjY3MDZjNjY2Zjc4NzI3NTZmN2E2YQ==\"}}"; + WxCpChatModel modelVoipDocShare = WxCpChatModel.fromJson(voipDocShare); + System.out.println(modelVoipDocShare.toJson()); + + /* + * 填表消息 + */ + String collect = "{\"msgid\":\"2500536226619379797_1576034482\",\"action\":\"send\",\"from\":\"nick\"," + + "\"tolist\":[\"XuJinSheng\",\"15108264797\"],\"roomid\":\"wrjc7bDwYAOAhf9quEwRRxyyoMm0QAAA\"," + + "\"msgtime\":1576034482344,\"msgtype\":\"collect\",\"collect\":{\"room_name\":\"这是一个群\",\"creator\":\"nick\"," + + "\"create_time\":\"2019-12-11 11:21:22\",\"title\":\"这是填表title\",\"details\":[{\"id\":11101571002822706744,\"ques\":\"表项1,文本\"," + + "\"type\":\"Text\"},{\"id\":2,\"ques\":\"表项2,数字\",\"type\":\"Number\"},{\"id\":3,\"ques\":\"表项3,日期\"," + + "\"type\":\"Date\"},{\"id\":4,\"ques\":\"表项4,时间\",\"type\":\"Time\"}]}}"; + WxCpChatModel modelCollect = WxCpChatModel.fromJson(collect); + System.out.println(modelCollect.toJson()); + + BigInteger id = modelCollect.getCollect().getDetails().get(0).getId(); + System.out.println(id); + + } + } From e1dd962d306d6681dd1c5f1ddc93c45be7d73da9 Mon Sep 17 00:00:00 2001 From: wangkai Date: Fri, 8 Dec 2023 11:20:44 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E3=80=90=E5=BE=AE=E4=BF=A1=E6=94=AF?= =?UTF-8?q?=E4=BB=98=E3=80=91=20#3160=20=E4=BF=AE=E6=94=B9servlet=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=E4=B8=8D=E5=8F=AF=E4=BC=A0=E9=80=92=EF=BC=8C=E7=BC=96?= =?UTF-8?q?=E8=AF=91=E5=92=8C=E6=B5=8B=E8=AF=95=E6=97=B6=E4=BD=BF=E7=94=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- weixin-java-pay/pom.xml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/weixin-java-pay/pom.xml b/weixin-java-pay/pom.xml index 648f2836ad..c3b44806f4 100644 --- a/weixin-java-pay/pom.xml +++ b/weixin-java-pay/pom.xml @@ -77,6 +77,8 @@ javax.servlet javax.servlet-api 4.0.1 + true + provided