All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.tencent.wework.Finance Maven / Gradle / Ivy

There is a newer version: 4.6.7.B
Show newest version
package com.tencent.wework;

import lombok.extern.slf4j.Slf4j;

import java.util.List;

/**
 * 企业微信会话内容存档Finance类
 * 注意:
 * 此类必须配置在com.tencent.wework路径底下,否则会报错:java.lang.UnsatisfiedLinkError: com.xxx.Finance.NewSdk()
 * 

* Q:JAVA版本的sdk报错UnsatisfiedLinkError? * A:请检查是否修改了sdk的包名。 *

* 官方文档 * * @author Wang_Wong created on 2022-01-17 */ @Slf4j public class Finance { private static volatile long sdk = -1L; private static Finance finance = null; private static final String SO_FILE = "so"; private static final String DLL_FILE = "dll"; /** * New sdk long. * * @return the long */ public static native long NewSdk(); /** * 初始化函数 * Return值=0表示该API调用成功 * * @param sdk the sdk * @param corpid the corpid * @param secret the secret * @return 返回是否初始化成功 0 - 成功 !=0 - 失败 */ public static native int Init(long sdk, String corpid, String secret); /** * 拉取聊天记录函数 * Return值=0表示该API调用成功 * * @param sdk the sdk * @param seq the seq * @param limit the limit * @param proxy the proxy * @param passwd the passwd * @param timeout the timeout * @param chatData the chat data * @return 返回是否调用成功 0 - 成功 !=0 - 失败 */ public static native int GetChatData(long sdk, long seq, long limit, String proxy, String passwd, long timeout, long chatData); /** * 拉取媒体消息函数 * Return值=0表示该API调用成功 * * @param sdk the sdk * @param indexbuf the indexbuf * @param sdkField the sdk field * @param proxy the proxy * @param passwd the passwd * @param timeout the timeout * @param mediaData the media data * @return 返回是否调用成功 0 - 成功 !=0 - 失败 */ public static native int GetMediaData(long sdk, String indexbuf, String sdkField, String proxy, String passwd, long timeout, long mediaData); /** * 解析密文 * * @param sdk the sdk * @param encrypt_key the encrypt key * @param encrypt_msg the encrypt msg * @param msg the msg * @return 返回是否调用成功 0 - 成功 !=0 - 失败 */ public static native int DecryptData(long sdk, String encrypt_key, String encrypt_msg, long msg); /** * Destroy sdk. * * @param sdk the sdk */ public static native void DestroySdk(long sdk); /** * New slice long. * * @return the long */ public static native long NewSlice(); /** * 释放slice ,和NewSlice成对使用 * * @param slice the slice */ public static native void FreeSlice(long slice); /** * 获取slice内容 * * @param slice the slice * @return 内容 string */ public static native String GetContentFromSlice(long slice); /** * 获取slice内容长度 * * @param slice the slice * @return 内容 int */ public static native int GetSliceLen(long slice); /** * New media data long. * * @return the long */ public static native long NewMediaData(); /** * Free media data. * * @param mediaData the media data */ public static native void FreeMediaData(long mediaData); /** * 获取 mediadata outindex * * @param mediaData the media data * @return outindex string */ public static native String GetOutIndexBuf(long mediaData); /** * 获取 mediadata data数据 * * @param mediaData the media data * @return data byte [ ] */ public static native byte[] GetData(long mediaData); /** * Get index len int. * * @param mediaData the media data * @return the int */ public static native int GetIndexLen(long mediaData); /** * Get data len int. * * @param mediaData the media data * @return the int */ public static native int GetDataLen(long mediaData); /** * Is media data finish int. * * @param mediaData the media data * @return 1完成 、0未完成 * 判断mediadata是否结束 */ public static native int IsMediaDataFinish(long mediaData); /** * 判断Windows环境 * * @return boolean boolean */ public static boolean isWindows() { String osName = System.getProperties().getProperty("os.name"); log.info("Loading System Libraries, Current OS Version Is: {}", osName); return osName.toUpperCase().contains("WINDOWS"); } /** * 加载系统类库 * * @param libFiles 类库配置文件 * @param prefixPath 类库文件的前缀路径 */ public Finance(List libFiles, String prefixPath) { boolean isWindows = Finance.isWindows(); for (String file : libFiles) { String suffix = file.substring(file.lastIndexOf(".") + 1); if (isWindows) { // 加载dll文件 if (suffix.equalsIgnoreCase(DLL_FILE)) { System.load(prefixPath + file); } } else { // 加载so文件 if (suffix.equalsIgnoreCase(SO_FILE)) { System.load(prefixPath + file); } } } } /** * 初始化类库文件 * * @param libFiles the lib files * @param prefixPath the prefix path * @return finance finance */ public static synchronized Finance loadingLibraries(List libFiles, String prefixPath) { if (finance != null) { return finance; } finance = new Finance(libFiles, prefixPath); return finance; } /** * 单例sdk * * @return long */ public static synchronized long SingletonSDK() { if (sdk > 0) { return sdk; } sdk = Finance.NewSdk(); return sdk; } /** * 销毁sdk,保证线程可见性 * * @param destroySDK the destroy sdk */ public static synchronized void DestroySingletonSDK(long destroySDK) { sdk = 0L; Finance.DestroySdk(destroySDK); } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy