|
@@ -0,0 +1,117 @@
|
|
|
|
|
+package com.kede.wechat.service.impl;
|
|
|
|
|
+
|
|
|
|
|
+import com.kede.common.utils.RSAEncrypt;
|
|
|
|
|
+import com.kede.wechat.service.ConversationContentService;
|
|
|
|
|
+import com.tencent.wework.Finance;
|
|
|
|
|
+import org.json.JSONArray;
|
|
|
|
|
+import org.json.JSONObject;
|
|
|
|
|
+import org.springframework.beans.factory.annotation.Value;
|
|
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
|
|
+
|
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
+
|
|
|
|
|
+@Service("ConversationContentService")
|
|
|
|
|
+public class ConversationContentServiceImpl implements ConversationContentService {
|
|
|
|
|
+
|
|
|
|
|
+ @Value(value = "${conversationContent.corpid}")
|
|
|
|
|
+ private String corpid;
|
|
|
|
|
+ @Value(value = "${conversationContent.secret}")
|
|
|
|
|
+ private String secret;
|
|
|
|
|
+
|
|
|
|
|
+ static String priKey ="-----BEGIN PRIVATE KEY-----\n" +
|
|
|
|
|
+ "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKYwggSiAgEAAoIBAQCnh5N/kiyeNx/y\n" +
|
|
|
|
|
+ "dDKe3FO8HWj8tuQQUCkCc8ol1Sqmcs9ey7S2189UDbZOPeY2xiiMD6AdFVUK5Y0P\n" +
|
|
|
|
|
+ "gbX/XZFVizhwXseE+1IV1k0w3C++5Y4Zll7nZoJ05ANMbj+dlamAlNYOutmc0lZf\n" +
|
|
|
|
|
+ "CGXM5oeu+U0XDWE1+uY7TRAGV3OcA7GBraXiothncbkNf0ZwfBEGVyLNHcNODgwz\n" +
|
|
|
|
|
+ "ECc0KJuEF2V+UAt11HloT60atSmdiktwbJ6KOJ62TM/eU+F/5d3UJLdw0Xb8kEFn\n" +
|
|
|
|
|
+ "PYK/1mD8PGKFA6F0wSajNLc6iPg5mgiOS5j02N2+nEN8m7vIdL7Hd0yrigf5kEdl\n" +
|
|
|
|
|
+ "x9PC7OYpAgMBAAECggEAIUhSCVok+xnAgw6Kr/zdtdWx8eLz1DnYq+ANHQ8IdiEB\n" +
|
|
|
|
|
+ "Cbg2osylJ/HBcjHh9qfPjmPcT2rZhlysdZQzcBRKt0/9WnW59bVoTWZR148m/Snl\n" +
|
|
|
|
|
+ "3Td+i0JWUJqr/Rc6FDiTgDQRgsOkT/+JoT+t2dNCyYRFyHqkAXFjJAzfTiM5mJjg\n" +
|
|
|
|
|
+ "h8q7bU/LXoc49kuaNYmt5rV1nACoIh7MmKZpmR4OKXDWrl52Xt5qCEonp3bAH/S3\n" +
|
|
|
|
|
+ "HaTqsoqot7fF5aZWEuDWUeYQPzgVSsdw2k9Lq1c8aoE15IRfQCxtBOYpk8LEDJty\n" +
|
|
|
|
|
+ "JIGHrzBEHP7cok4UdBWbfuI1YjqmjefQovQumKqfcQKBgQDlXDrFFvx+k9pUI2bo\n" +
|
|
|
|
|
+ "KXcqroOcpdsssO5uJOG1PwuM02wIR0hP1d89fItFwLLuzjb+jeyN3qwFgoh21fkk\n" +
|
|
|
|
|
+ "Z3HkxubMY4fpXk1mAsTPUZxll8YYgGE7tXk1Rk5xsBMzlFRW88N7Ww/rQMBOlpJA\n" +
|
|
|
|
|
+ "6UfZGFYMezb1vXf7u3M4w/N22wKBgQC6/OF5DsCHAOui8CPXS2z2YTKuoOJmHKIe\n" +
|
|
|
|
|
+ "vBeXy+ic+YRuTBXgA0Z1wL4xDW/LeCqoTmetbTuvGSyahMV4QSK0pxH9gk80sH4+\n" +
|
|
|
|
|
+ "YEza3DLASxr4gSsr2fL6siuXN/OHyMClQb6JVa0yuPG1zLzShaIXYVAyz1m9rU1B\n" +
|
|
|
|
|
+ "JpQfbEV8SwKBgGnBDvAVWzLZ5Y9qC2b8x4+Mi+7MorSGmEl9A/1YJnE2gteGVpdJ\n" +
|
|
|
|
|
+ "G/fz1xvAcECgIMdalToM8/BOcbGpk4jvkZpVA9I2ClLWQoXIvQqCrMRDKPnfJ/Yq\n" +
|
|
|
|
|
+ "BMtFsaHF9/SObhzxpK7aHAry/ji+QI1hgtlc2UBEB+FjDVGq6sO/xiCFAoGAV/3Y\n" +
|
|
|
|
|
+ "PJdskhskx7AprY6Y3/gtWW/sGhEvWTc6Avy5oeTpJN45DQl9hrwExCCGk0EhEcKT\n" +
|
|
|
|
|
+ "l1Dn3SYDj1MbedNs+YYFOT6w9yJ2xfObNwKX/1VYg8iFAEW3ybE+QhLaTvNxdFLT\n" +
|
|
|
|
|
+ "zty6fDv7wolt8cNg24+3pbFdkZyT1izJV2Aj8rECgYBZQMObUgJ57n8FrXCdcdSa\n" +
|
|
|
|
|
+ "MGsFYl8KUZa1zvzhoi3h7YtbVNNtSHcEK7VDyIheBt9pFCN7nuDX3jW2XYW2USEC\n" +
|
|
|
|
|
+ "T7Pab2DAXPkRmXspWNID21G+AqqGSLD4pk9+ZmqevTfAtI+ajiu5NH1guH73rVOM\n" +
|
|
|
|
|
+ "xGjQ5dCmWpUGt4fmO+zWIw==\n" +
|
|
|
|
|
+ "-----END PRIVATE KEY-----";
|
|
|
|
|
+ static String pubKey ="-----BEGIN PUBLIC KEY-----\n" +
|
|
|
|
|
+ "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAp4eTf5Isnjcf8nQyntxT\n" +
|
|
|
|
|
+ "vB1o/LbkEFApAnPKJdUqpnLPXsu0ttfPVA22Tj3mNsYojA+gHRVVCuWND4G1/12R\n" +
|
|
|
|
|
+ "VYs4cF7HhPtSFdZNMNwvvuWOGZZe52aCdOQDTG4/nZWpgJTWDrrZnNJWXwhlzOaH\n" +
|
|
|
|
|
+ "rvlNFw1hNfrmO00QBldznAOxga2l4qLYZ3G5DX9GcHwRBlcizR3DTg4MMxAnNCib\n" +
|
|
|
|
|
+ "hBdlflALddR5aE+tGrUpnYpLcGyeijietkzP3lPhf+Xd1CS3cNF2/JBBZz2Cv9Zg\n" +
|
|
|
|
|
+ "/DxihQOhdMEmozS3Ooj4OZoIjkuY9NjdvpxDfJu7yHS+x3dMq4oH+ZBHZcfTwuzm\n" +
|
|
|
|
|
+ "KQIDAQAB\n" +
|
|
|
|
|
+ "-----END PUBLIC KEY-----";
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public List<String> getChatData() {
|
|
|
|
|
+ String message = null;
|
|
|
|
|
+ List<String> list = new ArrayList<>();
|
|
|
|
|
+ long sdk = Finance.NewSdk();
|
|
|
|
|
+ System.out.println(Finance.Init(sdk, corpid, secret));
|
|
|
|
|
+ long ret = 0;
|
|
|
|
|
+ int seq = 0;
|
|
|
|
|
+ int limit = 20;
|
|
|
|
|
+ long slice = Finance.NewSlice();
|
|
|
|
|
+ ret = Finance.GetChatData(sdk, seq, limit, null, null, 3, slice);
|
|
|
|
|
+ if (ret != 0) {
|
|
|
|
|
+ System.out.println("getchatdata ret " + ret);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ String getchatdata = Finance.GetContentFromSlice(slice);
|
|
|
|
|
+ JSONObject jo = new JSONObject(getchatdata);
|
|
|
|
|
+ JSONArray chatdata = jo.getJSONArray("chatdata");
|
|
|
|
|
+
|
|
|
|
|
+ System.out.println("消息数:" + chatdata.length());
|
|
|
|
|
+ for (int i = 0; i < chatdata.length(); i++) {
|
|
|
|
|
+ String item = chatdata.get(i).toString();
|
|
|
|
|
+// item:{
|
|
|
|
|
+// "publickey_ver":1,
|
|
|
|
|
+// "encrypt_chat_msg":"XSeHr+qM0YfX/q5WWvmnVEuL2E4U0RclkIbK9JnWQq7Y/0Ynir3srKh+9DH6BqRj/NYXKmUC65+0WRo
|
|
|
|
|
+ // QboW3dC200XTqVNj+z0kljl11HdNmjuS3p7g0L+DYG5Bdz6Lo8FuHf/5WkOVi/R5VxOO6FvU+PediEOSCBN2dVHCeyIvExCk5mh
|
|
|
|
|
+ // o+ME9QV/Q19HujmHpxzl3cu1XvBAZ7YvIpd2d/BCCI9JwmBc5bXr2FQ0r/PFkZadKGjw0cxqPyNIBkNc+ic0wHhWSZFTvY3qDW2
|
|
|
|
|
+ // FFAdkYW68w8PA5f+8gD9VUuxKzz/j3Fu/6547Ayyuo93lPtbud5lAWXyeLexyHujFmdr300MA44BoYZsuTqdVsHbtEGLw967kO1
|
|
|
|
|
+// oHcImidD416ZuQh2VZiOYTJMtDZALdB1tXramb7kFj0AsKloFLKeg3ks3TYRKwEmM9wJ/y2hGDJzq5xncBFFShbLao5u",
|
|
|
|
|
+// "msgid":"1634016854685227651_1749628622146_external",
|
|
|
|
|
+// "encrypt_random_key":"kJ3XJM7CB7DGZqFxSfT8+EDWfr8vZmVVKzKLl5FM47Sd7iUSlgZF/a4dm5sTpCMW3uzk/m1LZV4odH
|
|
|
|
|
+// RyVO2+AaVJsidMoLV2LmmWiCAuXkzdK4yDbGItkvpZGrilgAlJjR8EhsUuqXOjvxkUemGvKMhrUqKdCaO4p3GYT/cxMRJDUmrP0v
|
|
|
|
|
+// TQqdgwznQOSubbBFDdMTSAfEtZnGp5tOQdCNFCbIqks4/Y8Isd/nd/Kq3QNsXjE+GdZkqVuOqRujOeCeqFRJF022i2KFuJQ+R+7X
|
|
|
|
|
+// 1es92NKBbaNT1AlRNfjtACH1KrPRLlEnmAS0EUIWWmn45/kOpH3T4ovOuNDnrafw==",
|
|
|
|
|
+// "seq":1}
|
|
|
|
|
+ JSONObject data = new JSONObject(item);
|
|
|
|
|
+ String encrypt_random_key = data.getString("encrypt_random_key");
|
|
|
|
|
+ String encrypt_chat_msg = data.getString("encrypt_chat_msg");
|
|
|
|
|
+ long msg = Finance.NewSlice();
|
|
|
|
|
+ try {
|
|
|
|
|
+ message = RSAEncrypt.decryptRSA(encrypt_random_key, priKey);
|
|
|
|
|
+ ret = Finance.DecryptData(sdk, message, encrypt_chat_msg, msg);
|
|
|
|
|
+ if (ret != 0) {
|
|
|
|
|
+ System.out.println("getchatdata ret " + ret);
|
|
|
|
|
+// return;
|
|
|
|
|
+ }
|
|
|
|
|
+ String str = String.valueOf(Finance.GetContentFromSlice(msg));
|
|
|
|
|
+ System.out.println("decrypt ret:" + ret + " msg:" + str);
|
|
|
|
|
+ Finance.FreeSlice(msg);
|
|
|
|
|
+ list.add(str);
|
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
|
+ e.printStackTrace();
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ Finance.FreeSlice(slice);
|
|
|
|
|
+ return list;
|
|
|
|
|
+ }
|
|
|
|
|
+}
|