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)