From 046ed0d0b2d8c74afaa33f97ea8eecb75d1d8b37 Mon Sep 17 00:00:00 2001 From: gallonyin Date: Tue, 7 Mar 2023 18:56:44 +0800 Subject: [PATCH] =?UTF-8?q?update=20=E8=8E=B7=E5=8F=96=E5=85=A8=E9=83=A8?= =?UTF-8?q?=E7=BE=A4=E6=88=90=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../worktool/model/WeworkMessageBean.java | 4 ++ .../org/yameida/worktool/service/MyLooper.kt | 6 ++ .../worktool/service/WeworkController.kt | 20 ++++++ .../yameida/worktool/service/WeworkGetImpl.kt | 63 +++++++++++++++++++ 4 files changed, 93 insertions(+) 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 8abc250..ca9df5f 100644 --- a/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java +++ b/app/src/main/java/org/yameida/worktool/model/WeworkMessageBean.java @@ -50,6 +50,8 @@ public class WeworkMessageBean { * 获取我的信息 GET_MY_INFO * 获取最近聊天列表 GET_RECENT_LIST * 获取企业列表 GET_CORP_LIST + * 获取全部好友信息 GET_ALL_FRIEND_INFO + * 获取全部群信息 GET_ALL_GROUP_INFO */ public static final int HEART_BEAT = 11; public static final int TYPE_RECEIVE_MESSAGE_LIST = 101; @@ -90,6 +92,8 @@ public class WeworkMessageBean { public static final int GET_GROUP_QRCODE = 504; public static final int GET_RECENT_LIST = 505; public static final int GET_CORP_LIST = 506; + public static final int GET_ALL_FRIEND_INFO = 507; + public static final int GET_ALL_GROUP_INFO = 508; /** * roomType 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 6a8de2a..72e9163 100644 --- a/app/src/main/java/org/yameida/worktool/service/MyLooper.kt +++ b/app/src/main/java/org/yameida/worktool/service/MyLooper.kt @@ -192,6 +192,12 @@ object MyLooper { WeworkMessageBean.GET_RECENT_LIST -> { WeworkController.getRecentList(message) } + WeworkMessageBean.GET_ALL_FRIEND_INFO -> { + WeworkController.getAllFriendInfo(message) + } + WeworkMessageBean.GET_ALL_GROUP_INFO -> { + WeworkController.getAllGroupInfo(message) + } WeworkMessageBean.GET_CORP_LIST -> { WeworkController.getCorpList(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 50fbedc..77b2cc6 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkController.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkController.kt @@ -417,6 +417,26 @@ object WeworkController { return WeworkGetImpl.getFriendInfo(message, message.selectList) } + /** + * 获取全部好友信息 + * @see WeworkMessageBean.GET_ALL_FRIEND_INFO + */ + @RequestMapping + fun getAllFriendInfo(message: WeworkMessageBean): Boolean { + LogUtils.d("getAllFriendInfo():") + return WeworkGetImpl.getAllFriendInfo(message) + } + + /** + * 获取全部群信息 + * @see WeworkMessageBean.GET_ALL_GROUP_INFO + */ + @RequestMapping + fun getAllGroupInfo(message: WeworkMessageBean): Boolean { + LogUtils.d("getAllGroupInfo():") + return WeworkGetImpl.getAllGroupInfo(message) + } + /** * 获取我的信息 * @see WeworkMessageBean.GET_MY_INFO diff --git a/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt b/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt index ac8dde4..90a3d29 100644 --- a/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt +++ b/app/src/main/java/org/yameida/worktool/service/WeworkGetImpl.kt @@ -3,7 +3,9 @@ package org.yameida.worktool.service import com.blankj.utilcode.util.GsonUtils import com.blankj.utilcode.util.LogUtils import org.yameida.worktool.Constant +import org.yameida.worktool.model.ExecCallbackBean import org.yameida.worktool.model.WeworkMessageBean +import org.yameida.worktool.utils.AccessibilityExtraUtil import org.yameida.worktool.utils.AccessibilityUtil import org.yameida.worktool.utils.Views import org.yameida.worktool.utils.WeworkRoomUtil @@ -36,6 +38,67 @@ object WeworkGetImpl { return true } + /** + * 获取全部好友信息 + * @see WeworkMessageBean.GET_ALL_FRIEND_INFO + */ + fun getAllFriendInfo(message: WeworkMessageBean): Boolean { + return true + } + + /** + * 获取全部群信息 + * @see WeworkMessageBean.GET_ALL_GROUP_INFO + */ + fun getAllGroupInfo(message: WeworkMessageBean): Boolean { + val startTime = System.currentTimeMillis() + goHomeTab("通讯录") + sleep(Constant.CHANGE_PAGE_INTERVAL) + AccessibilityUtil.scrollToTop(WeworkController.weworkService, getRoot()) + if (AccessibilityUtil.findTextAndClick(getRoot(), "群聊", exact = true)) { + AccessibilityExtraUtil.loadingPage("GroupSavedListActivity") + val list = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView) + if (list == null) { + LogUtils.e("未找到群聊列表") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到群聊列表", startTime) + return false + } + val set = linkedSetOf() + val onScrollListener = object : AccessibilityUtil.OnScrollListener() { + override fun onScroll(): Boolean { + if (!AccessibilityExtraUtil.loadingPage("GroupSavedListActivity")) { + return true + } + list.refresh() + AccessibilityUtil.findAllOnceByClazz(list, Views.TextView).map { + val groupName = it.text?.toString() + if (groupName != null && !groupName.matches("(.*个)?群聊".toRegex()) && set.add(groupName)) { + //无需处理 + } + false + } + return false + } + } + //滚动前先获取一次 + onScrollListener.onScroll() + AccessibilityUtil.scrollToBottom(WeworkController.weworkService, list, listener = onScrollListener, maxRetry = 100) + LogUtils.d("群数量: ${set.size} 群列表: ${set.joinToString()}") + for (groupName in set) { + if (WeworkRoomUtil.intoRoom(groupName) && WeworkRoomUtil.intoGroupManager()) { + val groupInfo = getGroupInfoDetail(saveAddress = false, saveMembers = true) + WeworkController.weworkService.webSocketManager.send(groupInfo) + } + } + uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime) + return true + } else { + LogUtils.e("未找到群聊入口") + uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到群聊入口", startTime) + return false + } + } + /** * 获取我的信息 */