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 fc4f7cef6..5ede317fb 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 class WxCpMsgAuditServiceImpl implements WxCpMsgAuditService { @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 class WxCpMsgAuditServiceImpl implements WxCpMsgAuditService { } 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 89f021939..732da06a5 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 05098e5e0..d843cad6c 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 lombok.Setter; 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 class WxCpChatModel implements Serializable { 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 class WxCpChatModel 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 384f29f75..35bbe36a1 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 lombok.Data; 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 835aa7979..08ea292b4 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.PrivateKey; 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 class WxCpCryptUtil extends WxCryptUtil { * @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 740725cb8..ec7362ed5 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 org.testng.annotations.Test; 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 class WxCpMsgAuditTest { } 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); + + } + }