Skip to content

Commit 69df6f1

Browse files
authored
🎨 binarywang#3178【企业微信】修复会话存档反序列化接口中uint64相关字段定义,使用BigInteger类型
1 parent 1fe8fe4 commit 69df6f1

File tree

6 files changed

+71
-18
lines changed

6 files changed

+71
-18
lines changed

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/api/impl/WxCpMsgAuditServiceImpl.java

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -196,12 +196,11 @@ public void getMediaFile(@NonNull long sdk, @NonNull String sdkfileid, String pr
196196

197197
@Override
198198
public void getMediaFile(@NonNull long sdk, @NonNull String sdkfileid, String proxy, String passwd, @NonNull long timeout, @NonNull Consumer<byte[]> action) throws WxErrorException {
199-
/**
200-
* 1、媒体文件每次拉取的最大size为512k,因此超过512k的文件需要分片拉取。
201-
* 2、若该文件未拉取完整,sdk的IsMediaDataFinish接口会返回0,同时通过GetOutIndexBuf接口返回下次拉取需要传入GetMediaData的indexbuf。
202-
* 3、indexbuf一般格式如右侧所示,”Range:bytes=524288-1048575“:表示这次拉取的是从524288到1048575的分片。单个文件首次拉取填写的indexbuf
203-
* 为空字符串,拉取后续分片时直接填入上次返回的indexbuf即可。
204-
*/
199+
/**
200+
* 1、媒体文件每次拉取的最大size为512k,因此超过512k的文件需要分片拉取。
201+
* 2、若该文件未拉取完整,sdk的IsMediaDataFinish接口会返回0,同时通过GetOutIndexBuf接口返回下次拉取需要传入GetMediaData的indexbuf。
202+
* 3、indexbuf一般格式如右侧所示,”Range:bytes=524288-1048575“:表示这次拉取的是从524288到1048575的分片。单个文件首次拉取填写的indexbuf为空字符串,拉取后续分片时直接填入上次返回的indexbuf即可。
203+
*/
205204
String indexbuf = "";
206205
int ret, data_len = 0;
207206
log.debug("正在分片拉取媒体文件 sdkFileId为{}", sdkfileid);
@@ -215,8 +214,7 @@ public void getMediaFile(@NonNull long sdk, @NonNull String sdkfileid, String pr
215214
}
216215

217216
data_len += Finance.GetDataLen(mediaData);
218-
log.info("正在分片拉取媒体文件 len:{}, data_len:{}, is_finis:{} \n", Finance.GetIndexLen(mediaData), data_len,
219-
Finance.IsMediaDataFinish(mediaData));
217+
log.debug("正在分片拉取媒体文件 len:{}, data_len:{}, is_finish:{} \n", Finance.GetIndexLen(mediaData), data_len, Finance.IsMediaDataFinish(mediaData));
220218

221219
try {
222220
// 大于512k的文件会分片拉取,此处需要使用追加写,避免后面的分片覆盖之前的数据。

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatDatas.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ public class WxCpChatDatas implements Serializable {
2525
private String errMsg;
2626

2727
@SerializedName("sdk")
28-
private long sdk;
28+
private Long sdk;
2929

3030
@SerializedName("chatdata")
3131
private List<WxCpChatData> chatData;

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpChatModel.java

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
88

99
import java.io.Serializable;
10+
import java.math.BigInteger;
1011
import java.util.List;
1112

1213
/**
@@ -844,8 +845,11 @@ public String toJson() {
844845
public static class Details implements Serializable {
845846
private static final long serialVersionUID = -5028321625140879571L;
846847

848+
/**
849+
* 表项id Uint64类型
850+
*/
847851
@SerializedName("id")
848-
private Long id;
852+
private BigInteger id;
849853

850854
@SerializedName("ques")
851855
private String ques;
@@ -943,8 +947,11 @@ public static class Meeting implements Serializable {
943947
@SerializedName("meetingtype")
944948
private Integer meetingType;
945949

950+
/**
951+
* 会议id Uint64类型
952+
*/
946953
@SerializedName("meetingid")
947-
private Long meetingId;
954+
private BigInteger meetingId;
948955

949956
@SerializedName("status")
950957
private Integer status;

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/bean/msgaudit/WxCpFileItem.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import me.chanjar.weixin.cp.util.json.WxCpGsonBuilder;
66

77
import java.io.Serializable;
8+
import java.math.BigInteger;
89

910
/**
1011
* 会话存档 文档信息对象
@@ -25,8 +26,11 @@ public class WxCpFileItem implements Serializable {
2526
@SerializedName("sdkfileid")
2627
private String sdkFileId;
2728

29+
/**
30+
* 共享文件的大小 Uint64类型
31+
*/
2832
@SerializedName("filesize")
29-
private Long fileSize;
33+
private BigInteger fileSize;
3034

3135
/**
3236
* From json wx cp file item.

weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/crypto/WxCpCryptUtil.java

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,11 @@
1414
import java.security.spec.PKCS8EncodedKeySpec;
1515
import java.security.spec.RSAPrivateCrtKeySpec;
1616
import java.util.Base64;
17+
import java.util.Objects;
1718

1819
/**
1920
* The type Wx cp crypt util.
21+
*
2022
* @author qian
2123
*/
2224
public class WxCpCryptUtil extends WxCryptUtil {
@@ -50,11 +52,11 @@ public WxCpCryptUtil(WxCpConfigStorage wxCpConfigStorage) {
5052
* @throws Exception the exception
5153
*/
5254
public static String decryptPriKey(String encryptRandomKey, String msgAuditPriKey, Integer pkcs1) throws Exception {
53-
if (pkcs1 == null) {
55+
if (Objects.isNull(pkcs1)) {
5456
throw new WxErrorException("请配置会话存档解密方式");
5557
}
5658

57-
if (pkcs1 == 1) {
59+
if (Objects.equals(pkcs1, 1)) {
5860
return decryptPriKeyByPKCS1(encryptRandomKey, msgAuditPriKey);
5961
}
6062

weixin-java-cp/src/test/java/me/chanjar/weixin/cp/api/WxCpMsgAuditTest.java

Lines changed: 46 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,8 @@
1818
import java.io.File;
1919
import java.io.FileOutputStream;
2020
import java.io.InputStream;
21-
import java.util.ArrayList;
22-
import java.util.Arrays;
23-
import java.util.Iterator;
24-
import java.util.List;
21+
import java.math.BigInteger;
22+
import java.util.*;
2523

2624
/**
2725
* 企业微信会话内容存档测试类.
@@ -755,4 +753,48 @@ public void testGetMediaFile() throws Exception {
755753
}
756754
Finance.DestroySdk(chatDatas.getSdk());
757755
}
756+
757+
// 测试Uint64类型
758+
public static void main(String[] args){
759+
/*
760+
* 会议邀请信息
761+
*/
762+
String meeting = "{\"msgid\":\"5935786683775673543_1603877328\",\"action\":\"send\",\"from\":\"ken\"," +
763+
"\"tolist\":[\"icef\",\"test\"],\"roomid\":\"wr2vOpDgAAN4zVWKbS\",\"msgtime\":1603877328914," +
764+
"\"msgtype\":\"meeting\",\"meeting\":{\"topic\":\"夕会\",\"starttime\":1603877400,\"endtime\":1603881000," +
765+
"\"address\":\"\",\"remarks\":\"\",\"meetingtype\":102,\"meetingid\":11101571002822706744,\"status\":1}}";
766+
WxCpChatModel modelMeeting = WxCpChatModel.fromJson(meeting);
767+
modelMeeting.getMeeting().getMeetingId();
768+
System.out.println(modelMeeting.toJson());
769+
770+
/*
771+
* 音频共享文档消息
772+
*/
773+
String voipDocShare = "{\"msgid\":\"16527954622422422847_1594199256\",\"action\":\"send\"," +
774+
"\"from\":\"18002520162\",\"tolist\":[\"wo137MCgAAYW6pIiKKrDe5SlzEhSgwbA\"],\"msgtime\":1594199235014," +
775+
"\"msgtype\":\"voip_doc_share\",\"voipid\":\"gr2751c98b19300571f8afb3b74514bd32\"," +
776+
"\"voip_doc_share\":{\"filename\":\"欢迎使用微盘.pdf.pdf\",\"md5sum\":\"ff893900f24e55e216e617a40e5c4648\"," +
777+
"\"filesize\":11101571002822706744," +
778+
"\"sdkfileid" +
779+
"\":\"CpsBKjAqZUlLdWJMd2gvQ1JxMzd0ZjlpdW5mZzJOOE9JZm5kbndvRmRqdnBETjY0QlcvdGtHSFFTYm95dHM2VlllQXhkUUN5KzRmSy9KT3pudnA2aHhYZFlPemc2aVZ6YktzaVh3YkFPZHlqNnl2L2MvcGlqcVRjRTlhZEZsOGlGdHJpQ2RWSVNVUngrVFpuUmo3TGlPQ1BJemlRPT0SOE5EZGZNVFk0T0RnMU16YzVNVGt5T1RJMk9GODFNelUyTlRBd01qQmZNVFU1TkRFNU9USTFOZz09GiA3YTcwNmQ2Zjc5NjY3MDZjNjY2Zjc4NzI3NTZmN2E2YQ==\"}}";
780+
WxCpChatModel modelVoipDocShare = WxCpChatModel.fromJson(voipDocShare);
781+
System.out.println(modelVoipDocShare.toJson());
782+
783+
/*
784+
* 填表消息
785+
*/
786+
String collect = "{\"msgid\":\"2500536226619379797_1576034482\",\"action\":\"send\",\"from\":\"nick\"," +
787+
"\"tolist\":[\"XuJinSheng\",\"15108264797\"],\"roomid\":\"wrjc7bDwYAOAhf9quEwRRxyyoMm0QAAA\"," +
788+
"\"msgtime\":1576034482344,\"msgtype\":\"collect\",\"collect\":{\"room_name\":\"这是一个群\",\"creator\":\"nick\"," +
789+
"\"create_time\":\"2019-12-11 11:21:22\",\"title\":\"这是填表title\",\"details\":[{\"id\":11101571002822706744,\"ques\":\"表项1,文本\"," +
790+
"\"type\":\"Text\"},{\"id\":2,\"ques\":\"表项2,数字\",\"type\":\"Number\"},{\"id\":3,\"ques\":\"表项3,日期\"," +
791+
"\"type\":\"Date\"},{\"id\":4,\"ques\":\"表项4,时间\",\"type\":\"Time\"}]}}";
792+
WxCpChatModel modelCollect = WxCpChatModel.fromJson(collect);
793+
System.out.println(modelCollect.toJson());
794+
795+
BigInteger id = modelCollect.getCollect().getDetails().get(0).getId();
796+
System.out.println(id);
797+
798+
}
799+
758800
}

0 commit comments

Comments
 (0)