diff --git a/app/src/main/java/org/yameida/worktool/Constant.kt b/app/src/main/java/org/yameida/worktool/Constant.kt index 6b73cf5..e7741ff 100644 --- a/app/src/main/java/org/yameida/worktool/Constant.kt +++ b/app/src/main/java/org/yameida/worktool/Constant.kt @@ -18,6 +18,9 @@ object Constant { var key = "9876543210abcdef".toByteArray() var iv = "0123456789abcdef".toByteArray() val transformation = "AES/CBC/PKCS7Padding" + val weworkCorpId = "" + val weworkAgentId = "" + val weworkSchema = "" var encryptType = SPUtils.getInstance().getInt("encryptType", 1) var autoReply = SPUtils.getInstance().getInt("autoReply", 1) var groupStrict = false @@ -26,6 +29,7 @@ object Constant { var autoPublishComment = false var groupQrCode = false var enableMediaProject = false + var enableSdkShare = false var robotId: String get() = SPUtils.getInstance().getString("robotId", SPUtils.getInstance().getString("LISTEN_CHANNEL_ID", "")) set(value) { diff --git a/app/src/main/java/org/yameida/worktool/MyApplication.kt b/app/src/main/java/org/yameida/worktool/MyApplication.kt index 2d77cb9..e7ef186 100644 --- a/app/src/main/java/org/yameida/worktool/MyApplication.kt +++ b/app/src/main/java/org/yameida/worktool/MyApplication.kt @@ -9,6 +9,8 @@ import com.blankj.utilcode.util.Utils import com.efs.sdk.base.core.util.PackageUtil import com.google.gson.Gson import com.hjq.toast.ToastUtils +import com.tencent.wework.api.IWWAPI +import com.tencent.wework.api.WWAPIFactory import com.tendcloud.tenddata.TalkingDataSDK import com.umeng.commonsdk.UMConfigure import org.yameida.worktool.config.GlobalException @@ -20,6 +22,7 @@ class MyApplication : Application() { companion object { + var iwwapi: IWWAPI? = null /** * 回到WorkTool首页 需要先授权显示悬浮窗 */ @@ -57,6 +60,11 @@ class MyApplication : Application() { PlayNotifyManager.show() //设置全局异常捕获重启 Thread.setDefaultUncaughtExceptionHandler(GlobalException.getInstance()) + //注册企微分享 + if (Constant.enableSdkShare) { + iwwapi = WWAPIFactory.createWWAPI(this) + iwwapi?.registerApp(Constant.weworkSchema) + } } } \ No newline at end of file diff --git a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java index c2fddb0..8abc250 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -37,6 +37,7 @@ public class WeworkMessageBean { * 添加待办 ADD_NEED_DEAL * 打卡 CLOCK_IN * 切换企业 SWITCH_CORP + * 推送链接 PUSH_LINK *

* 非操作类型 300 * 机器人普通日志记录 ROBOT_LOG @@ -77,6 +78,7 @@ public class WeworkMessageBean { public static final int ADD_NEED_DEAL = 221; public static final int CLOCK_IN = 222; public static final int SWITCH_CORP = 223; + public static final int PUSH_LINK = 224; public static final int ROBOT_LOG = 301; public static final int ROBOT_ERROR_LOG = 302; diff --git a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt index eef8334..6a8de2a 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -159,6 +159,9 @@ object MyLooper { WeworkMessageBean.PUSH_FILE -> { WeworkController.pushFile(message) } + WeworkMessageBean.PUSH_LINK -> { + WeworkController.pushLink(message) + } WeworkMessageBean.DISMISS_GROUP -> { WeworkController.dismissGroup(message) } diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt index 160c258..50fbedc 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -339,6 +339,30 @@ object WeworkController { ) } + /** + * 推送链接 + * @see WeworkMessageBean.PUSH_LINK + * @param message#titleList 待发送姓名列表 + * @param message#objectName 文章标题 + * @param message#receivedContent 文章副标题 + * @param message#originalContent 文章链接地址 + * @param message#fileUrl 图片地址 + * @param message#extraText 附加留言 可选 + */ + @RequestMapping + fun pushLink(message: WeworkMessageBean): Boolean { + LogUtils.d("pushLink(): ${message.titleList} ${message.objectName} ${message.receivedContent} ${message.originalContent} ${message.fileUrl} ${message.extraText}") + return WeworkOperationImpl.pushLink( + message, + message.titleList, + message.objectName, + message.receivedContent, + message.originalContent, + message.fileUrl, + message.extraText + ) + } + /** * 按手机号添加好友 * @see WeworkMessageBean.ADD_FRIEND_BY_PHONE diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt index dd95d94..9fd8b13 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -718,6 +718,43 @@ object WeworkOperationImpl { } } + /** + * 推送链接 + * @see WeworkMessageBean.PUSH_LINK + * @param titleList 待发送姓名列表 + * @param objectName 文章标题 + * @param receivedContent 文章副标题 + * @param originalContent 文章链接地址 + * @param fileUrl 图片地址 + * @param extraText 附加留言 可选 + */ + fun pushLink( + message: WeworkMessageBean, + titleList: List, + objectName: String, + receivedContent: String, + originalContent: String, + fileUrl: String, + extraText: String? = null, + maxRetryCount: Int? = null + ): Boolean { + val startTime = System.currentTimeMillis() + if (IWWAPIUtil.sendLink(fileUrl, originalContent, objectName, receivedContent)) { + if (relaySelectTarget(titleList, extraText)) { + uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime) + return true + } else { + LogUtils.e("转发失败") + uploadCommandResult(message, ExecCallbackBean.ERROR_RELAY, "转发失败", startTime) + return false + } + } else { + LogUtils.e("非法操作") + uploadCommandResult(message, ExecCallbackBean.ERROR_ILLEGAL_OPERATION, "非法操作", startTime) + return false + } + } + /** * 手机号添加好友或修改好友信息 * @see WeworkMessageBean.ADD_FRIEND_BY_PHONE diff --git a/app/src/main/java/org/yameida/worktool/utils/IWWAPIUtil.kt b/app/src/main/java/org/yameida/worktool/utils/IWWAPIUtil.kt index 72490a0..f138573 100644 --- a/app/src/main/java/org/yameida/worktool/utils/IWWAPIUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/IWWAPIUtil.kt @@ -27,7 +27,7 @@ object IWWAPIUtil { iwwapi?.registerApp(schema) } - fun sendLink(thumbUrl: String?, webpageUrl: String?, title: String?, description: String?) { + fun sendLink(thumbUrl: String?, webpageUrl: String?, title: String?, description: String?): Boolean { val link = WWMediaLink() link.thumbUrl = thumbUrl link.webpageUrl = webpageUrl @@ -37,7 +37,7 @@ object IWWAPIUtil { link.appName = AppUtils.getAppName() link.appId = appid link.agentId = agentid - iwwapi?.sendMessage(link) + return iwwapi?.sendMessage(link) ?: false } fun sendMicroProgram() {