From 4d06dc0b342be6b58932e57337aa57bd4c7acb9a Mon Sep 17 00:00:00 2001 From: gallonyin Date: Sun, 2 Apr 2023 23:16:24 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E5=90=88=E5=B9=B6=E8=BD=AC=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worktool/model/WeworkMessageBean.java | 2 + .../org/yameida/worktool/service/MyLooper.kt | 3 + .../worktool/service/WeworkController.kt | 21 ++++++ .../worktool/service/WeworkOperationImpl.kt | 64 +++++++++++++++++-- .../yameida/worktool/utils/WeworkTextUtil.kt | 5 +- 5 files changed, 89 insertions(+), 6 deletions(-) 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 96fa77b..10e8deb 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -41,6 +41,7 @@ public class WeworkMessageBean { * 修改群成员信息 MODIFY_GROUP_MEMBER_INFO * 撤回消息 RECALL_MESSAGE * 批量转发 RELAY_MULTI_MESSAGE + * 合并转发 RELAY_MERGE_MESSAGE *

* 非操作类型 300 * 机器人普通日志记录 ROBOT_LOG @@ -87,6 +88,7 @@ public class WeworkMessageBean { public static final int MODIFY_GROUP_MEMBER_INFO = 225; public static final int RECALL_MESSAGE = 226; public static final int RELAY_MULTI_MESSAGE = 227; + public static final int RELAY_MERGE_MESSAGE = 228; 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 f6fb78a..0cb616c 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -180,6 +180,9 @@ object MyLooper { WeworkMessageBean.RELAY_MULTI_MESSAGE -> { WeworkController.relayMultiMessage(message) } + WeworkMessageBean.RELAY_MERGE_MESSAGE -> { + WeworkController.relayMergeMessage(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 f260f53..81e41f5 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -419,6 +419,27 @@ object WeworkController { ) } + /** + * 合并转发 + * @see WeworkMessageBean.RELAY_MERGE_MESSAGE + * @param message#titleList 房间名称 + * @param message#messageList 消息列表 + * @param message#nameList 待转发姓名列表 + * @param message#extraText 附加留言 选填 + * @see WeworkMessageBean.TEXT_TYPE + */ + @RequestMapping + fun relayMergeMessage(message: WeworkMessageBean): Boolean { + LogUtils.d("relayMergeMessage(): ${message.titleList} ${message.messageList} ${message.nameList} ${message.extraText}") + return WeworkOperationImpl.relayMergeMessage( + message, + message.titleList, + message.messageList, + message.nameList, + 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 a26efd2..7c502c5 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkOperationImpl.kt @@ -844,6 +844,39 @@ object WeworkOperationImpl { messageList: List, nameList: List, extraText: String? = null + ): Boolean { + return relayMultiMessage(message, titleList, messageList, nameList, extraText, "逐条转发") + } + + /** + * 合并转发 + * @see WeworkMessageBean.RELAY_MERGE_MESSAGE + * @param titleList 房间名称 + * @param messageList 消息列表 + * @param nameList 待转发姓名列表 + * @param extraText 附加留言 选填 + * @see WeworkMessageBean.TEXT_TYPE + */ + fun relayMergeMessage( + message: WeworkMessageBean, + titleList: List, + messageList: List, + nameList: List, + extraText: String? = null + ): Boolean { + return relayMultiMessage(message, titleList, messageList, nameList, extraText, "合并转发") + } + + /** + * 批量转发 合并转发 + */ + private fun relayMultiMessage( + message: WeworkMessageBean, + titleList: List, + messageList: List, + nameList: List, + extraText: String? = null, + key: String ): Boolean { val startTime = System.currentTimeMillis() if (messageList.isEmpty()) { @@ -883,7 +916,8 @@ object WeworkOperationImpl { hasOpenMulti = true } else { LogUtils.e("$title: 多选失败") - error("$title: 多选失败 $originalContent") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "多选失败 $$originalContent", startTime, listOf(), titleList) + return false } } else { if (WeworkTextUtil.longClickMyMessageItem( @@ -898,7 +932,8 @@ object WeworkOperationImpl { hasOpenMulti = true } else { LogUtils.e("$title: 多选失败") - error("$title: 多选失败 $originalContent") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "多选失败 $$originalContent", startTime, listOf(), titleList) + return false } } } else { @@ -912,7 +947,8 @@ object WeworkOperationImpl { "单击" ) ) { - LogUtils.d("单击成功") + LogUtils.d("单击成功 $originalContent") + sleep(3000) hasOpenMulti = true } else { LogUtils.e("$title: 单击失败") @@ -927,7 +963,8 @@ object WeworkOperationImpl { "单击" ) ) { - LogUtils.d("单击成功") + LogUtils.d("单击成功 $originalContent") + sleep(3000) hasOpenMulti = true } else { LogUtils.e("$title: 单击失败") @@ -936,6 +973,25 @@ object WeworkOperationImpl { } } } + if (hasOpenMulti) { + val list = AccessibilityUtil.findOnceByClazz(getRoot(), Views.ViewGroup, minChildCount = 4) + if (AccessibilityUtil.performClickWithSon(list)) { + if (AccessibilityUtil.findTextAndClick(getRoot(), key)) { + if (relaySelectTarget(nameList, extraText)) { + LogUtils.d("$title: 转发成功") + } else { + LogUtils.e("$title: 转发失败") + error("$title: 转发失败") + } + } else { + LogUtils.e("未找到逐条转发按钮") + error("未找到逐条转发按钮") + } + } else { + LogUtils.e("未找到转发按钮") + error("未找到转发按钮") + } + } } else { LogUtils.d("$title: 转发失败 未找到房间") error("$title: 转发失败 未找到房间") diff --git a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt index 12d3b45..b9e20d3 100644 --- a/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt +++ b/app/src/main/java/org/yameida/worktool/utils/WeworkTextUtil.kt @@ -4,6 +4,7 @@ import android.view.accessibility.AccessibilityNodeInfo import com.blankj.utilcode.util.LogUtils import org.yameida.worktool.Constant import org.yameida.worktool.model.WeworkMessageBean +import org.yameida.worktool.service.WeworkController import org.yameida.worktool.service.getRoot import org.yameida.worktool.service.sleep import org.yameida.worktool.utils.AccessibilityUtil.findAllByClazz @@ -457,7 +458,7 @@ object WeworkTextUtil { private fun longClickMessageItem(item: AccessibilityNodeInfo, roomType: Int, key: String): Boolean { val backNode = getMessageListNode(item, roomType) if (key == "单击") { - return AccessibilityUtil.performClickWithSon(backNode) + return AccessibilityUtil.clickByNode(WeworkController.weworkService, backNode) } AccessibilityUtil.performLongClickWithSon(backNode) sleep(Constant.POP_WINDOW_INTERVAL) @@ -475,7 +476,7 @@ object WeworkTextUtil { private fun longClickMyMessageItem(item: AccessibilityNodeInfo, roomType: Int, key: String): Boolean { val frontNode = getMyMessageListNode(item) if (key == "单击") { - return AccessibilityUtil.performClickWithSon(frontNode) + return AccessibilityUtil.clickByNode(WeworkController.weworkService, frontNode) } AccessibilityUtil.performLongClickWithSon(frontNode) sleep(Constant.POP_WINDOW_INTERVAL)