🎨 格式化规范化部分测试代码

This commit is contained in:
Binary Wang 2022-10-30 14:31:34 +08:00
parent 30264bfaae
commit bf9c0571f8
2 changed files with 126 additions and 128 deletions

View File

@ -25,9 +25,10 @@ import java.util.List;
/**
* 企业微信会话内容存档测试类.
* 官方文档https://developer.work.weixin.qq.com/document/path/91360
* <a href="https://developer.work.weixin.qq.com/document/path/91360">官方文档</a>
*
* @author <a href="https://github.com/0katekate0">Wang_Wong</a> created on 2022-01-17
* @author <a href="https://github.com/0katekate0">Wang_Wong</a>
* created on 2022-01-17
*/
@Slf4j
public class WxCpMsgAuditTest {
@ -37,27 +38,22 @@ public class WxCpMsgAuditTest {
/**
* Test.
*
* @throws Exception the exception
*/
// com.binarywang.spring.starter.wxjava.cp.config.WxCpServiceAutoConfiguration
// WxCpServiceImpl.getAccessToken()
@BeforeTest
private void initCpservice() {
if(cpService == null) {
private void initCpService() {
if (cpService == null) {
InputStream inputStream = ClassLoader.getSystemResourceAsStream("test-config.xml");
WxCpDemoInMemoryConfigStorage config = WxCpDemoInMemoryConfigStorage.fromXml(inputStream);
config.setMsgAuditLibPath("/E:/IDEA_WORKSPACE/saisc/crs-member-java/target/classes/wework/libcrypto-1_1-x64.dll,libssl-1_1-x64.dll,libcurl-x64.dll,WeWorkFinanceSdk.dll");
wxCpConfigStorage = config;
wxCpConfigStorage = WxCpDemoInMemoryConfigStorage.fromXml(inputStream);
cpService = new WxCpServiceImpl();
cpService.setWxCpConfigStorage(config);
cpService.setWxCpConfigStorage(this.wxCpConfigStorage);
}
}
@Test
public void test() throws Exception {
/**
/*
* 客户同意进行聊天内容存档事件回调
* 配置了客户联系功能的成员添加外部联系人同意进行聊天内容存档时回调该事件
*
@ -79,7 +75,7 @@ public class WxCpMsgAuditTest {
msgAuditApprovedXmlMsg.setAllFieldsMap(XmlUtils.xml2Map(msgAuditApprovedXml));
log.info("msgAuditApprovedXmlMsg:{}", JSON.toString(msgAuditApprovedXmlMsg));
/**
/*
* 产生会话回调事件
* 为了提升企业会话存档的使用性能降低无效的轮询次数
* 当企业收到或发送新消息时企业微信可以以事件的形式推送到企业指定的url回调间隔为15秒在15秒内若有消息则触发回调若无消息则不会触发回调
@ -99,13 +95,13 @@ public class WxCpMsgAuditTest {
msgAuditNotifyXmlMsg.setAllFieldsMap(XmlUtils.xml2Map(msgAuditNotifyXml));
log.info("msgAuditNotifyXmlMsg:{}", JSON.toString(msgAuditNotifyXmlMsg));
/**
/*
* 增加变更事件类型产生会话回调事件
*/
String msgauditNotify = WxCpConsts.EventType.MSGAUDIT_NOTIFY;
/**
/*
* 仔细配置
* <xml>
* <corpId>ww45xxx88865xxx</corpId>
@ -161,12 +157,12 @@ public class WxCpMsgAuditTest {
* openssl rsa -in private_key.pem -pubout -out public_key.pem
* /
/**
/*
* 建议放到redis本次请求获取消息记录开始的seq值首次访问填写0非首次使用上次企业微信返回的最大seq允许从任意seq重入拉取
*/
long seq = 0L;
/**
/*
* 图片语音视频表情文件音频存档消息,音频共享文档消息调用 获取媒体消息
*/
List<String> mediaType = Arrays.asList("image", "voice", "video", "emotion", "file",
@ -201,7 +197,7 @@ public class WxCpMsgAuditTest {
chatData, 2);
log.info("获取消息数据为:{}", decryptData.toJson());
/**
/*
* 注意
* 根据上面返回的文件类型来获取媒体文件
* 不同的文件类型拼接好存放文件的绝对路径写入文件流获取媒体文件拼接绝对文件路径的原因以便上传到腾讯云或阿里云对象存储
@ -278,7 +274,7 @@ public class WxCpMsgAuditTest {
return;
}
/**
/*
* 拉取媒体文件
*
* 注意
@ -300,7 +296,7 @@ public class WxCpMsgAuditTest {
}
/**
/*
* 文本
*/
// String text = "{\"msgid\":\"CAQQluDa4QUY0On2rYSAgAMgzPrShAE=\",\"action\":\"send\",\"from\":\"XuJinSheng\",
@ -313,7 +309,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelText.toJson());
/**
/*
* 图片
*/
String image = "{\"msgid\":\"CAQQvPnc4QUY0On2rYSAgAMgooLa0Q8=\",\"action\":\"send\",\"from\":\"XuJinSheng\"," +
@ -325,7 +321,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelImage.toJson());
/**
/*
* 撤回消息
*/
String revoke = "{\"msgid\":\"15775510700152506326_1603875615\",\"action\":\"recall\",\"from\":\"kenshin\"," +
@ -335,7 +331,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelRevoke.toJson());
/**
/*
* 同意会话聊天内容
*/
String agree = "{\"msgid\":\"8891446340739254950_1603875826\",\"action\":\"send\"," +
@ -352,7 +348,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelDisagree.toJson());
/**
/*
* 语音
*/
String voice = "{\"msgid\":\"10958372969718811103_1603875609\",\"action\":\"send\"," +
@ -365,7 +361,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelVoice.toJson());
/**
/*
* 视频
*/
String video = "{\"msgid\":\"17955920891003447432_1603875627\",\"action\":\"send\",\"from\":\"kenshin\"," +
@ -378,7 +374,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelVideo.toJson());
/**
/*
* 名片
*/
String card = "{\"msgid\":\"13714216591700685558_1603875680\",\"action\":\"send\",\"from\":\"kenshin\"," +
@ -388,7 +384,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelCard.toJson());
/**
/*
* 位置
*/
String location = "{\"msgid\":\"2641513858500683770_1603876152\",\"action\":\"send\",\"from\":\"icefog\"," +
@ -399,7 +395,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelLocation.toJson());
/**
/*
* 表情
*/
String emotion = "{\"msgid\":\"6623217619416669654_1603875612\",\"action\":\"send\",\"from\":\"icef\"," +
@ -411,7 +407,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelEmotion.toJson());
/**
/*
* 文件
*/
String file = "{\"msgid\":\"18039699423706571225_1603875608\",\"action\":\"send\",\"from\":\"kens\"," +
@ -424,7 +420,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelFile.toJson());
/**
/*
* 链接
*/
String link = "{\"msgid\":\"11788441727514772650_1603875624\",\"action\":\"send\",\"from\":\"kenshin\"," +
@ -435,7 +431,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelLink.toJson());
/**
/*
* 小程序消息
*/
String weapp = "{\"msgid\":\"11930598857592605935_1603875608\",\"action\":\"send\",\"from\":\"kens\"," +
@ -446,7 +442,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelWeapp.toJson());
/**
/*
* 会话记录消息
*/
String chatrecord = "{\"msgid\":\"11354299838102555191_1603875658\",\"action\":\"send\",\"from\":\"ken\"," +
@ -458,7 +454,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelChatRecord.toJson());
/**
/*
* 填表消息
*/
String collect = "{\"msgid\":\"2500536226619379797_1576034482\",\"action\":\"send\",\"from\":\"nick\"," +
@ -471,7 +467,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelCollect.toJson());
/**
/*
* 红包消息
*/
String redpacket = "{\"msgid\":\"333590477316965370_1603877439\",\"action\":\"send\",\"from\":\"kens\"," +
@ -481,7 +477,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelRedpacket.toJson());
/**
/*
* 会议邀请信息
*/
String meeting = "{\"msgid\":\"5935786683775673543_1603877328\",\"action\":\"send\",\"from\":\"ken\"," +
@ -492,7 +488,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelMeeting.toJson());
/**
/*
* 切换企业日志
*/
String switchlog = "{\"msgid\":\"125289002219525886280\",\"action\":\"switch\",\"time\":1554119421840," +
@ -501,7 +497,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelSwitchLog.toJson());
/**
/*
* 在线文档消息
*/
String docMsg = "{\"msgid\":\"9732089160923053207_1603877765\",\"action\":\"send\",\"from\":\"ken\"," +
@ -512,7 +508,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelDocMsg.toJson());
/**
/*
* MarkDown格式消息
*/
String markDown = "{\"msgid\":\"7546287934688259248_1603875715\",\"action\":\"send\",\"from\":\"ken\"," +
@ -522,7 +518,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelMarkDown.toJson());
/**
/*
* 图文消息
*/
String news = "{\"msgid\":\"118732825779547782215\",\"action\":\"send\",\"from\":\"kens\",\"tolist\":[\"icef\"," +
@ -533,7 +529,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelNews.toJson());
/**
/*
* 日程消息
*/
String calendar = "{\"msgid\":\"2345881211604379705_1603877680\",\"action\":\"send\",\"from\":\"ken\"," +
@ -545,7 +541,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelCalendar.toJson());
/**
/*
* 混合消息
*/
String mixed = "{\"msgid\":\"DAQQluDa4QUY0On4kYSABAMgzPrShAE=\",\"action\":\"send\",\"from\":\"HeMiao\"," +
@ -564,7 +560,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelMixed.toJson());
/**
/*
* 音频存档消息
*/
String meetingVoiceCall = "{\"msgid\":\"17952229780246929345_1594197637\",\"action\":\"send\"," +
@ -577,7 +573,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelMeetingVoiceCall.toJson());
/**
/*
* 音频共享文档消息
*/
String voipDocShare = "{\"msgid\":\"16527954622422422847_1594199256\",\"action\":\"send\"," +
@ -591,7 +587,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelVoipDocShare.toJson());
/**
/*
* 互通红包消息
*/
String externalRedpacket = "{\"msgid\":\"8632214264349267353_1603786184\",\"action\":\"send\"," +
@ -603,7 +599,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelExternalRedpacket.toJson());
/**
/*
* 视频号消息
*/
String sphfeed = "{\"msgid\":\"5702551662099334532_1619511584_external\",\"action\":\"send\"," +
@ -614,7 +610,7 @@ public class WxCpMsgAuditTest {
log.info("数据为:" + modelSphFeed.toJson());
/**
/*
* 获取会话内容存档开启成员列表
*/
List<String> permitUserList = cpService.getMsgAuditService().getPermitUserList(null);
@ -623,7 +619,7 @@ public class WxCpMsgAuditTest {
ArrayList<WxCpCheckAgreeRequest.Info> userList = Lists.newArrayList();
WxCpCheckAgreeRequest checkAgreeRequest = new WxCpCheckAgreeRequest();
/**
/*
* 获取会话同意情况
*/
WxCpCheckAgreeRequest.Info info = new WxCpCheckAgreeRequest.Info();
@ -638,20 +634,21 @@ public class WxCpMsgAuditTest {
log.info(wxCpAgreeInfo.toJson());
/**
/*
* 获取会话内容存档内部群信息
*/
WxCpGroupChat room = cpService.getMsgAuditService().getGroupChat("wrOQpTDwAAyPl84GBJ40W5eWxWtixSCA");
log.info(room.toJson());
/**
/*
* 获取access_token
* https://developer.work.weixin.qq.com/document/path/91039
* https://www.jianshu.com/p/dde171887d63
*/
String getUrl = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=%s&corpsecret=%s";
String data = cpService.get(String.format(getUrl, wxCpConfigStorage.getCorpId(), wxCpConfigStorage.getCorpSecret()), null);
String data = cpService.get(String.format(getUrl, wxCpConfigStorage.getCorpId(),
wxCpConfigStorage.getCorpSecret()), null);
}
@ -662,97 +659,97 @@ public class WxCpMsgAuditTest {
WxCpChatDatas chatDatas = msgAuditService.getChatDatas(0L, 100L, null, null, 10);
for (WxCpChatDatas.WxCpChatData chatDatum : chatDatas.getChatData()) {
WxCpChatModel decryptData = msgAuditService.getDecryptData(chatDatas.getSdk(), chatDatum, 2);
// 文件后缀
String suffix = "";
// 文件名md5
String md5Sum = "";
// sdkFileId
String sdkFileId = "";
// 文件后缀
String suffix = "";
// 文件名md5
String md5Sum = "";
// sdkFileId
String sdkFileId = "";
String msgType = decryptData.getMsgType();
if(msgType == null ) msgType = "";
if (msgType == null) msgType = "";
switch (msgType) {
case "image":
suffix = ".jpg";
md5Sum = decryptData.getImage().getMd5Sum();
sdkFileId = decryptData.getImage().getSdkFileId();
break;
case "voice":
suffix = ".amr";
md5Sum = decryptData.getVoice().getMd5Sum();
sdkFileId = decryptData.getVoice().getSdkFileId();
break;
case "video":
suffix = ".mp4";
md5Sum = decryptData.getVideo().getMd5Sum();
sdkFileId = decryptData.getVideo().getSdkFileId();
break;
case "emotion":
md5Sum = decryptData.getEmotion().getMd5Sum();
sdkFileId = decryptData.getEmotion().getSdkFileId();
int type = decryptData.getEmotion().getType();
switch (type) {
case 1:
suffix = ".gif";
break;
case 2:
suffix = ".png";
break;
default:
return;
}
break;
case "file":
md5Sum = decryptData.getFile().getMd5Sum();
suffix = "." + decryptData.getFile().getFileExt();
sdkFileId = decryptData.getFile().getSdkFileId();
break;
// 音频存档消息
case "meeting_voice_call":
case "image":
suffix = ".jpg";
md5Sum = decryptData.getImage().getMd5Sum();
sdkFileId = decryptData.getImage().getSdkFileId();
break;
case "voice":
suffix = ".amr";
md5Sum = decryptData.getVoice().getMd5Sum();
sdkFileId = decryptData.getVoice().getSdkFileId();
break;
case "video":
suffix = ".mp4";
md5Sum = decryptData.getVideo().getMd5Sum();
sdkFileId = decryptData.getVideo().getSdkFileId();
break;
case "emotion":
md5Sum = decryptData.getEmotion().getMd5Sum();
sdkFileId = decryptData.getEmotion().getSdkFileId();
int type = decryptData.getEmotion().getType();
switch (type) {
case 1:
suffix = ".gif";
break;
case 2:
suffix = ".png";
break;
default:
return;
}
break;
case "file":
md5Sum = decryptData.getFile().getMd5Sum();
suffix = "." + decryptData.getFile().getFileExt();
sdkFileId = decryptData.getFile().getSdkFileId();
break;
// 音频存档消息
case "meeting_voice_call":
md5Sum = decryptData.getVoiceId();
sdkFileId = decryptData.getMeetingVoiceCall().getSdkFileId();
for (WxCpChatModel.MeetingVoiceCall.DemoFileData demofiledata :
decryptData.getMeetingVoiceCall().getDemoFileData()) {
String demoFileDataFileName = demofiledata.getFileName();
suffix = demoFileDataFileName.substring(demoFileDataFileName.lastIndexOf(".") + 1);
}
md5Sum = decryptData.getVoiceId();
sdkFileId = decryptData.getMeetingVoiceCall().getSdkFileId();
for (WxCpChatModel.MeetingVoiceCall.DemoFileData demofiledata :
decryptData.getMeetingVoiceCall().getDemoFileData()) {
String demoFileDataFileName = demofiledata.getFileName();
suffix = demoFileDataFileName.substring(demoFileDataFileName.lastIndexOf(".") + 1);
}
break;
// 音频共享文档消息
case "voip_doc_share":
break;
// 音频共享文档消息
case "voip_doc_share":
md5Sum = decryptData.getVoipId();
WxCpFileItem docShare = decryptData.getVoipDocShare();
String fileName = docShare.getFileName();
suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
break;
default:
continue;
}
md5Sum = decryptData.getVoipId();
WxCpFileItem docShare = decryptData.getVoipDocShare();
String fileName = docShare.getFileName();
suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
break;
default:
continue;
}
/**
* 拉取媒体文件
*
* 传入一个each函数用于遍历每个分片的数据
*/
/*
* 拉取媒体文件
*
* 传入一个each函数用于遍历每个分片的数据
*/
String path = Thread.currentThread().getContextClassLoader().getResource("").getPath();
String targetPath = path + "testfile/" + md5Sum + suffix;
File file = new File(targetPath);
if (!file.getParentFile().exists()) {
file.getParentFile().mkdirs();
}else{
} else {
file.delete();
}
cpService.getMsgAuditService().getMediaFile(chatDatas.getSdk(), sdkFileId, null, null, 1000L, data -> {
try {
// 大于512k的文件会分片拉取此处需要使用追加写避免后面的分片覆盖之前的数据
FileOutputStream outputStream = new FileOutputStream(targetPath, true);
outputStream.write(data);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
});
cpService.getMsgAuditService().getMediaFile(chatDatas.getSdk(), sdkFileId, null, null, 1000L, data -> {
try {
// 大于512k的文件会分片拉取此处需要使用追加写避免后面的分片覆盖之前的数据
FileOutputStream outputStream = new FileOutputStream(targetPath, true);
outputStream.write(data);
outputStream.close();
} catch (Exception e) {
e.printStackTrace();
}
});
}
Finance.DestroySdk(chatDatas.getSdk());
}

View File

@ -13,6 +13,7 @@
<webhookKey>webhook链接地址的key值</webhookKey>
<!-- 企业微信会话存档私钥windows以及linux环境sdk路径 -->
<msgAuditSecret>会话存档的secret</msgAuditSecret>
<msgAuditLibPath>会话存档的lib path</msgAuditLibPath>
<msgAuditPriKey>-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQCTfm5cxqfglfOV7b/Z7OtTZZoZpk2EPTvVhn/ngsfKR899xRdR
25s4h8HkK0XhxqYdOGoAdG3Gms+DvCSY/vu3UtImf0eZSNXpKZJBUnvUVjX4ivnr