update 执行错误回调;交互通知;搜索房间修复
This commit is contained in:
@@ -2,10 +2,12 @@ package org.yameida.worktool
|
||||
|
||||
import android.app.Application
|
||||
import android.content.Intent
|
||||
import com.blankj.utilcode.util.GsonUtils
|
||||
import com.blankj.utilcode.util.LogUtils
|
||||
import com.blankj.utilcode.util.SPUtils
|
||||
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.tendcloud.tenddata.TalkingDataSDK
|
||||
import com.umeng.commonsdk.UMConfigure
|
||||
@@ -33,6 +35,7 @@ class MyApplication : Application() {
|
||||
super.onCreate()
|
||||
//初始化工具类
|
||||
Utils.init(this)
|
||||
GsonUtils.setGsonDelegate(Gson())
|
||||
//初始化 Toast 框架
|
||||
ToastUtils.init(this)
|
||||
//初始化友盟统计
|
||||
|
||||
@@ -1,18 +1,75 @@
|
||||
package org.yameida.worktool.model
|
||||
|
||||
import java.util.*
|
||||
|
||||
/**
|
||||
* 任务执行成功失败结果回传
|
||||
*/
|
||||
data class ExecCallbackBean(
|
||||
//原生消息指令
|
||||
var rawMsg: String? = null,
|
||||
|
||||
//1成功 0失败
|
||||
var rawSuccess: Int = 0,
|
||||
//0成功 其他是失败错误码
|
||||
var errorCode: Int = 0,
|
||||
|
||||
//失败原因
|
||||
var errorReason: String = "",
|
||||
|
||||
//执行时间
|
||||
var runTime: Date = Date()
|
||||
var runTime: Long = 0,
|
||||
|
||||
) : WeworkMessageBean()
|
||||
//执行耗时
|
||||
var timeCost: Double = 0.0
|
||||
|
||||
) : WeworkMessageBean() {
|
||||
companion object {
|
||||
/**
|
||||
* 错误码
|
||||
* 通用格式错误 10xxx
|
||||
* 执行任务错误 20xxx
|
||||
* 服务端返回错误 50xxx
|
||||
*/
|
||||
const val SUCCESS = 0
|
||||
//数据格式错误
|
||||
const val ERROR_ILLEGAL_DATA = 101011
|
||||
//非法操作
|
||||
const val ERROR_ILLEGAL_OPERATION = 101012
|
||||
|
||||
//创建群失败
|
||||
const val ERROR_CREATE_GROUP = 201011
|
||||
//群改名失败
|
||||
const val ERROR_GROUP_RENAME = 201012
|
||||
//群拉人失败
|
||||
const val ERROR_GROUP_ADD_MEMBER = 201013
|
||||
//群踢人失败
|
||||
const val ERROR_GROUP_REMOVE_MEMBER = 201014
|
||||
//改群公告失败
|
||||
const val ERROR_GROUP_CHANGE_ANNOUNCEMENT = 201015
|
||||
//改群备注失败
|
||||
const val ERROR_GROUP_CHANGE_REMARK = 201016
|
||||
//查找聊天窗失败
|
||||
const val ERROR_INTO_ROOM = 201101
|
||||
//发送消息失败
|
||||
const val ERROR_SEND_MESSAGE = 201102
|
||||
//按钮寻找失败
|
||||
const val ERROR_BUTTON = 201103
|
||||
//目标寻找失败
|
||||
const val ERROR_TARGET = 201104
|
||||
//转发失败
|
||||
const val ERROR_RELAY = 201105
|
||||
//重复添加
|
||||
const val ERROR_REPEAT = 201106
|
||||
//文件下载异常
|
||||
const val ERROR_FILE_DOWNLOAD = 201107
|
||||
//文件存储异常
|
||||
const val ERROR_FILE_STORAGE = 201108
|
||||
|
||||
//机器人id错误
|
||||
const val ERROR_INVALID_ROBOT_ID = 501011
|
||||
//机器人key错误
|
||||
const val ERROR_INVALID_ROBOT_KEY = 501012
|
||||
//机器人重复登录
|
||||
const val ERROR_ROBOT_MULTI_LOGIN = 501013
|
||||
//机器人其他未知错误
|
||||
const val ERROR_OTHER = 501000
|
||||
|
||||
}
|
||||
}
|
||||
@@ -14,6 +14,7 @@ public class WeworkMessageBean {
|
||||
* <p>
|
||||
* 消息类型 100
|
||||
* 上传消息列表 TYPE_RECEIVE_MESSAGE_LIST
|
||||
* 交互通知 TYPE_CONSOLE_TOAST
|
||||
* <p>
|
||||
* 全局操作类型 200
|
||||
* 停止所有任务并返回首页待命 STOP_AND_GO_HOME
|
||||
@@ -21,7 +22,7 @@ public class WeworkMessageBean {
|
||||
* 在房间内发送消息 SEND_MESSAGE
|
||||
* 在房间内指定回复消息 REPLY_MESSAGE
|
||||
* 在房间内转发消息 RELAY_MESSAGE
|
||||
* 创建群 CREATE_GROUP
|
||||
* 创建群 INIT_GROUP
|
||||
* 进入群聊并修改群配置 INTO_GROUP_AND_CONFIG
|
||||
* 推送微盘图片 PUSH_MICRO_DISK_IMAGE
|
||||
* 推送微盘文件 PUSH_MICRO_DISK_FILE
|
||||
@@ -44,6 +45,7 @@ public class WeworkMessageBean {
|
||||
*/
|
||||
public static final int HEART_BEAT = 11;
|
||||
public static final int TYPE_RECEIVE_MESSAGE_LIST = 101;
|
||||
public static final int TYPE_CONSOLE_TOAST = 102;
|
||||
|
||||
public static final int STOP_AND_GO_HOME = 201;
|
||||
public static final int LOOP_RECEIVE_NEW_MESSAGE = 202;
|
||||
|
||||
@@ -147,10 +147,10 @@ fun backPress() {
|
||||
/**
|
||||
* 上传执行指令结果
|
||||
*/
|
||||
fun uploadCommandResult(message: WeworkMessageBean, success: Boolean, reason: String) {
|
||||
fun uploadCommandResult(message: WeworkMessageBean, errorCode: Int, errorReason: String, startTime: Long) {
|
||||
WeworkController.weworkService.webSocketManager.send(
|
||||
WeworkMessageListBean(
|
||||
ExecCallbackBean(GsonUtils.toJson(message), if (success) 1 else 0, reason),
|
||||
ExecCallbackBean(GsonUtils.toJson(message), errorCode, errorReason, startTime, (System.currentTimeMillis() - startTime) / 1000.0),
|
||||
WeworkMessageListBean.SOCKET_TYPE_RAW_CONFIRM,
|
||||
messageId = message.messageId
|
||||
), true
|
||||
|
||||
@@ -9,6 +9,7 @@ import com.blankj.utilcode.util.LogUtils
|
||||
import com.google.gson.reflect.TypeToken
|
||||
import okhttp3.WebSocket
|
||||
import org.yameida.worktool.Constant
|
||||
import org.yameida.worktool.model.ExecCallbackBean
|
||||
import org.yameida.worktool.model.WeworkMessageBean
|
||||
import org.yameida.worktool.model.WeworkMessageListBean
|
||||
import java.nio.charset.StandardCharsets
|
||||
@@ -52,7 +53,7 @@ object MyLooper {
|
||||
|
||||
fun onMessage(webSocket: WebSocket?, text: String) {
|
||||
val messageList: WeworkMessageListBean<WeworkMessageBean> =
|
||||
GsonUtils.fromJson<WeworkMessageListBean<WeworkMessageBean>>(text, object : TypeToken<WeworkMessageListBean<WeworkMessageBean>>(){}.type)
|
||||
GsonUtils.fromJson<WeworkMessageListBean<WeworkMessageBean>>(text, object : TypeToken<WeworkMessageListBean<ExecCallbackBean>>(){}.type)
|
||||
if (messageList.socketType == WeworkMessageListBean.SOCKET_TYPE_HEARTBEAT) {
|
||||
return
|
||||
}
|
||||
@@ -97,6 +98,9 @@ object MyLooper {
|
||||
|
||||
private fun dealWithMessage(message: WeworkMessageBean) {
|
||||
when (message.type) {
|
||||
WeworkMessageBean.TYPE_CONSOLE_TOAST -> {
|
||||
WeworkController.consoleToast(message as ExecCallbackBean)
|
||||
}
|
||||
WeworkMessageBean.STOP_AND_GO_HOME -> {
|
||||
WeworkController.stopAndGoHome()
|
||||
}
|
||||
@@ -148,7 +152,7 @@ object MyLooper {
|
||||
WeworkController.getFriendInfo(message)
|
||||
}
|
||||
WeworkMessageBean.GET_MY_INFO -> {
|
||||
WeworkController.getMyInfo()
|
||||
WeworkController.getMyInfo(message)
|
||||
}
|
||||
WeworkMessageBean.ROBOT_CONTROLLER_TEST -> {
|
||||
WeworkController.test(message)
|
||||
|
||||
@@ -3,6 +3,7 @@ package org.yameida.worktool.service
|
||||
import com.blankj.utilcode.util.*
|
||||
import org.yameida.worktool.Demo
|
||||
import org.yameida.worktool.annotation.RequestMapping
|
||||
import org.yameida.worktool.model.ExecCallbackBean
|
||||
import org.yameida.worktool.model.WeworkMessageBean
|
||||
|
||||
/**
|
||||
@@ -15,6 +16,18 @@ object WeworkController {
|
||||
var enableLoopRunning = false
|
||||
var mainLoopRunning = false
|
||||
|
||||
/**
|
||||
* 交互通知
|
||||
* @see WeworkMessageBean.TYPE_CONSOLE_TOAST
|
||||
* @param message#errorCode 失败错误码
|
||||
* @param message#errorReason 失败原因
|
||||
*/
|
||||
@RequestMapping
|
||||
fun consoleToast(message: ExecCallbackBean): Boolean {
|
||||
LogUtils.d("consoleToast(): ${message.errorCode} ${message.errorReason}")
|
||||
return WeworkInteractionImpl.consoleToast(message, message.errorCode, message.errorReason)
|
||||
}
|
||||
|
||||
/**
|
||||
* 停止所有任务并返回首页待命
|
||||
* @see WeworkMessageBean.STOP_AND_GO_HOME
|
||||
@@ -48,7 +61,7 @@ object WeworkController {
|
||||
@RequestMapping
|
||||
fun sendMessage(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("sendMessage(): ${message.titleList} ${message.receivedContent} ${message.at} ${message.atList?.joinToString()}")
|
||||
return WeworkOperationImpl.sendMessage(message.titleList, message.receivedContent, message.at, message.atList)
|
||||
return WeworkOperationImpl.sendMessage(message, message.titleList, message.receivedContent, message.at, message.atList)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -65,6 +78,7 @@ object WeworkController {
|
||||
fun replyMessage(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("replyMessage(): ${message.receivedName} ${message.originalContent} ${message.receivedContent}")
|
||||
return WeworkOperationImpl.replyMessage(
|
||||
message,
|
||||
message.titleList,
|
||||
message.receivedName,
|
||||
message.originalContent,
|
||||
@@ -88,6 +102,7 @@ object WeworkController {
|
||||
fun relayMessage(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("relayMessage(): ${message.titleList} ${message.receivedName} ${message.originalContent} ${message.textType} ${message.nameList} ${message.extraText}")
|
||||
return WeworkOperationImpl.relayMessage(
|
||||
message,
|
||||
message.titleList,
|
||||
message.receivedName,
|
||||
message.originalContent,
|
||||
@@ -109,6 +124,7 @@ object WeworkController {
|
||||
fun initGroup(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("initGroup(): ${message.groupName} ${message.selectList} ${message.groupAnnouncement} ${message.groupRemark}")
|
||||
return WeworkOperationImpl.initGroup(
|
||||
message,
|
||||
message.groupName,
|
||||
message.selectList,
|
||||
message.groupAnnouncement,
|
||||
@@ -142,6 +158,7 @@ object WeworkController {
|
||||
fun intoGroupAndConfig(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("intoGroupAndConfig(): ${message.groupName} ${message.newGroupName} ${message.newGroupAnnouncement} ${message.selectList} ${message.showMessageHistory} ${message.removeList} ${message.groupRemark}")
|
||||
return WeworkOperationImpl.intoGroupAndConfig(
|
||||
message,
|
||||
message.groupName,
|
||||
message.newGroupName,
|
||||
message.newGroupAnnouncement,
|
||||
@@ -163,6 +180,7 @@ object WeworkController {
|
||||
fun pushMicroDiskImage(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("pushMicroDiskImage(): ${message.titleList} ${message.objectName} ${message.extraText}")
|
||||
return WeworkOperationImpl.pushMicroDiskImage(
|
||||
message,
|
||||
message.titleList,
|
||||
message.objectName,
|
||||
message.extraText
|
||||
@@ -180,6 +198,7 @@ object WeworkController {
|
||||
fun pushMicroDiskFile(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("pushMicroDiskFile(): ${message.titleList} ${message.objectName} ${message.extraText}")
|
||||
return WeworkOperationImpl.pushMicroDiskFile(
|
||||
message,
|
||||
message.titleList,
|
||||
message.objectName,
|
||||
message.extraText
|
||||
@@ -197,6 +216,7 @@ object WeworkController {
|
||||
fun pushMicroprogram(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("pushMicroprogram(): ${message.titleList} ${message.objectName} ${message.extraText}")
|
||||
return WeworkOperationImpl.pushMicroprogram(
|
||||
message,
|
||||
message.titleList,
|
||||
message.objectName,
|
||||
message.extraText
|
||||
@@ -215,6 +235,7 @@ object WeworkController {
|
||||
fun pushOffice(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("pushOffice(): ${message.titleList} ${message.objectName} ${message.extraText}")
|
||||
return WeworkOperationImpl.pushOffice(
|
||||
message,
|
||||
message.titleList,
|
||||
message.objectName,
|
||||
message.extraText
|
||||
@@ -234,6 +255,7 @@ object WeworkController {
|
||||
fun pushFile(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("pushFile(): ${message.titleList} ${message.objectName} ${message.fileUrl} ${message.fileType} ${message.extraText}")
|
||||
return WeworkOperationImpl.pushFile(
|
||||
message,
|
||||
message.titleList,
|
||||
message.objectName,
|
||||
message.fileUrl,
|
||||
@@ -250,7 +272,7 @@ object WeworkController {
|
||||
@RequestMapping
|
||||
fun addFriendByPhone(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("addFriendByPhone(): ${message.friend}")
|
||||
return WeworkOperationImpl.addFriendByPhone(message.friend)
|
||||
return WeworkOperationImpl.addFriendByPhone(message, message.friend)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -265,6 +287,7 @@ object WeworkController {
|
||||
fun showGroupInfo(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("showGroupInfo(): ${message.titleList} ${message.receivedName} ${message.originalContent} ${message.textType}")
|
||||
return WeworkOperationImpl.showGroupInfo(
|
||||
message,
|
||||
message.titleList,
|
||||
message.receivedName,
|
||||
message.originalContent,
|
||||
@@ -280,7 +303,7 @@ object WeworkController {
|
||||
@RequestMapping
|
||||
fun getGroupInfo(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("getGroupInfo(): ${message.selectList}")
|
||||
return WeworkGetImpl.getGroupInfo(message.selectList)
|
||||
return WeworkGetImpl.getGroupInfo(message, message.selectList)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -292,7 +315,7 @@ object WeworkController {
|
||||
@RequestMapping
|
||||
fun getFriendInfo(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("getFriendInfo(): ${message.selectList}")
|
||||
return WeworkGetImpl.getFriendInfo(message.selectList)
|
||||
return WeworkGetImpl.getFriendInfo(message, message.selectList)
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -300,9 +323,9 @@ object WeworkController {
|
||||
* @see WeworkMessageBean.GET_MY_INFO
|
||||
*/
|
||||
@RequestMapping
|
||||
fun getMyInfo(): Boolean {
|
||||
fun getMyInfo(message: WeworkMessageBean): Boolean {
|
||||
LogUtils.d("getMyInfo():")
|
||||
return WeworkGetImpl.getMyInfo()
|
||||
return WeworkGetImpl.getMyInfo(message)
|
||||
}
|
||||
|
||||
}
|
||||
@@ -18,7 +18,7 @@ object WeworkGetImpl {
|
||||
* 获取群信息
|
||||
* @param selectList 群名列表 为空时去群管理页查询并返回群聊页
|
||||
*/
|
||||
fun getGroupInfo(selectList: List<String>): Boolean {
|
||||
fun getGroupInfo(message: WeworkMessageBean, selectList: List<String>): Boolean {
|
||||
if (selectList.isNullOrEmpty()) {
|
||||
WeworkRoomUtil.intoGroupManager()
|
||||
val groupInfo = getGroupInfoDetail()
|
||||
@@ -39,14 +39,14 @@ object WeworkGetImpl {
|
||||
* 获取好友信息
|
||||
* @param selectList 好友名列表
|
||||
*/
|
||||
fun getFriendInfo(selectList: List<String>): Boolean {
|
||||
fun getFriendInfo(message: WeworkMessageBean, selectList: List<String>): Boolean {
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取我的信息
|
||||
*/
|
||||
fun getMyInfo(): Boolean {
|
||||
fun getMyInfo(message: WeworkMessageBean): Boolean {
|
||||
if (!goHomeTab("我")) {
|
||||
LogUtils.d("未找到我的信息")
|
||||
log("未找到我的信息")
|
||||
|
||||
@@ -0,0 +1,28 @@
|
||||
package org.yameida.worktool.service
|
||||
|
||||
import com.blankj.utilcode.util.*
|
||||
import com.hjq.toast.ToastUtils
|
||||
import org.yameida.worktool.model.ExecCallbackBean
|
||||
|
||||
|
||||
/**
|
||||
* 消息类型 100
|
||||
*/
|
||||
object WeworkInteractionImpl {
|
||||
|
||||
/**
|
||||
* 交互通知
|
||||
* @param errorCode 失败错误码
|
||||
* @param errorReason 失败原因
|
||||
*/
|
||||
fun consoleToast(
|
||||
message: ExecCallbackBean,
|
||||
errorCode: Int,
|
||||
errorReason: String
|
||||
): Boolean {
|
||||
LogUtils.e("错误提示 错误码: $errorCode 错误信息: $errorReason")
|
||||
ToastUtils.show("错误提示 错误码: $errorCode 错误信息: $errorReason")
|
||||
return true
|
||||
}
|
||||
|
||||
}
|
||||
@@ -6,6 +6,7 @@ import org.yameida.worktool.model.WeworkMessageBean
|
||||
import com.github.yoojia.qrcode.qrcode.QRCodeDecoder
|
||||
import com.blankj.utilcode.util.*
|
||||
import com.lzy.okgo.OkGo
|
||||
import org.yameida.worktool.model.ExecCallbackBean
|
||||
import org.yameida.worktool.utils.*
|
||||
import java.io.File
|
||||
import java.lang.Exception
|
||||
@@ -26,28 +27,41 @@ object WeworkOperationImpl {
|
||||
* @see WeworkMessageBean.TEXT_TYPE
|
||||
*/
|
||||
fun sendMessage(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
receivedContent: String?,
|
||||
at: String? = null,
|
||||
atList: List<String>? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
if (receivedContent.isNullOrEmpty()) {
|
||||
LogUtils.d("未发现发送内容")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_ILLEGAL_DATA, "发送内容为空", startTime)
|
||||
return false
|
||||
}
|
||||
val successList = arrayListOf<String>()
|
||||
val failList = arrayListOf<String>()
|
||||
for (title in titleList) {
|
||||
if (WeworkRoomUtil.intoRoom(title)) {
|
||||
if (sendChatMessage(receivedContent, at = at, atList = atList)) {
|
||||
successList.add(title)
|
||||
LogUtils.d("$title: 发送成功")
|
||||
} else {
|
||||
LogUtils.d("$title: 发送失败")
|
||||
failList.add(title)
|
||||
error("$title: 发送失败 $receivedContent")
|
||||
}
|
||||
} else {
|
||||
failList.add(title)
|
||||
LogUtils.d("$title: 发送失败 进入房间失败")
|
||||
error("$title: 发送失败 进入房间失败 $receivedContent")
|
||||
}
|
||||
}
|
||||
if (failList.isNotEmpty()) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_SEND_MESSAGE, "发送成功: ${successList.joinToString()} 发送失败: ${failList.joinToString()}", startTime)
|
||||
return false
|
||||
}
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -61,12 +75,14 @@ object WeworkOperationImpl {
|
||||
* @see WeworkMessageBean.TEXT_TYPE
|
||||
*/
|
||||
fun replyMessage(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
receivedName: String?,
|
||||
originalContent: String,
|
||||
textType: Int,
|
||||
receivedContent: String?
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
if (receivedContent.isNullOrEmpty()) {
|
||||
LogUtils.d("未发现回复内容")
|
||||
return false
|
||||
@@ -83,33 +99,40 @@ object WeworkOperationImpl {
|
||||
)
|
||||
) {
|
||||
LogUtils.v("开始回复")
|
||||
sendChatMessage(receivedContent, reply = true)
|
||||
LogUtils.d("$title: 回复成功")
|
||||
WeworkLoopImpl.getChatMessageList()
|
||||
return true
|
||||
if (sendChatMessage(receivedContent, reply = true)) {
|
||||
LogUtils.d("$title: 回复成功")
|
||||
WeworkLoopImpl.getChatMessageList()
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
} else {
|
||||
LogUtils.d("$title: 回复发送失败")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_SEND_MESSAGE, "回复发送失败", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.d("$title: 回复失败 直接发送答案")
|
||||
error("$title: 回复失败 直接发送答案 $receivedContent")
|
||||
if (originalContent.isNotEmpty()) {
|
||||
if (receivedName == null) {
|
||||
sendChatMessage("【$originalContent】\n$receivedContent")
|
||||
} else {
|
||||
sendChatMessage("【$originalContent】\n$receivedContent", receivedName)
|
||||
}
|
||||
val text = if (originalContent.isNotEmpty()) "【$originalContent】\n$receivedContent" else receivedContent
|
||||
if (sendChatMessage(text, receivedName)) {
|
||||
LogUtils.d("$title: 直接发送答案成功")
|
||||
WeworkLoopImpl.getChatMessageList()
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
} else {
|
||||
if (receivedName == null) {
|
||||
sendChatMessage(receivedContent)
|
||||
} else {
|
||||
sendChatMessage(receivedContent, receivedName)
|
||||
}
|
||||
LogUtils.d("$title: 直接发送答案失败")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_SEND_MESSAGE, "直接发送答案失败", startTime)
|
||||
return false
|
||||
}
|
||||
WeworkLoopImpl.getChatMessageList()
|
||||
}
|
||||
} else {
|
||||
LogUtils.d("$title: 回复失败")
|
||||
error("$title: 回复失败 $receivedContent")
|
||||
LogUtils.d("进入房间失败 $title")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_INTO_ROOM, "进入房间失败 $title", startTime)
|
||||
return false
|
||||
}
|
||||
}
|
||||
LogUtils.d("房间名为空")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_ILLEGAL_DATA, "房间名为空", startTime)
|
||||
return false
|
||||
}
|
||||
|
||||
@@ -124,6 +147,7 @@ object WeworkOperationImpl {
|
||||
* @see WeworkMessageBean.TEXT_TYPE
|
||||
*/
|
||||
fun relayMessage(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
receivedName: String,
|
||||
originalContent: String,
|
||||
@@ -131,6 +155,7 @@ object WeworkOperationImpl {
|
||||
nameList: List<String>,
|
||||
extraText: String? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
for (title in titleList) {
|
||||
if (WeworkRoomUtil.intoRoom(title)) {
|
||||
if (WeworkTextUtil.longClickMessageItem(
|
||||
@@ -182,24 +207,37 @@ object WeworkOperationImpl {
|
||||
* @param groupRemark 修改群备注 选填
|
||||
*/
|
||||
fun initGroup(
|
||||
message: WeworkMessageBean,
|
||||
groupName: String,
|
||||
selectList: List<String>?,
|
||||
groupAnnouncement: String?,
|
||||
groupRemark: String?
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
if (!WeworkRoomUtil.isGroupExists(groupName)) {
|
||||
if (!createGroup() || !groupRename(groupName) || !groupAddMember(selectList)
|
||||
|| !groupChangeAnnouncement(groupAnnouncement)
|
||||
) return false
|
||||
} else {
|
||||
if (!groupRename(groupName) || !groupAddMember(selectList)
|
||||
|| !groupChangeAnnouncement(groupAnnouncement)
|
||||
) return false
|
||||
if (!createGroup()) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_CREATE_GROUP, "创建群失败", startTime)
|
||||
return false
|
||||
}
|
||||
}
|
||||
if (groupRemark != null) {
|
||||
groupChangeRemark(groupRemark)
|
||||
if (!groupRename(groupName)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_RENAME, "创建群成功 群改名失败", startTime)
|
||||
return false
|
||||
}
|
||||
// getGroupQrcode(groupName, groupRemark)
|
||||
if (!groupAddMember(selectList)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_ADD_MEMBER, "创建群成功 群改名成功 群拉人失败 ${selectList?.joinToString()}", startTime)
|
||||
return false
|
||||
}
|
||||
if (!groupChangeAnnouncement(groupAnnouncement)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_CHANGE_ANNOUNCEMENT, "创建群成功 群改名成功 群拉人成功 群公告失败", startTime)
|
||||
return false
|
||||
}
|
||||
if (!groupChangeRemark(groupRemark)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_CHANGE_REMARK, "创建群成功 群改名成功 群拉人成功 群公告成功 群备注失败", startTime)
|
||||
return false
|
||||
}
|
||||
getGroupQrcode(groupName, groupRemark)
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
}
|
||||
|
||||
@@ -215,6 +253,7 @@ object WeworkOperationImpl {
|
||||
* @param removeList 移除群成员名称列表/踢人 选填
|
||||
*/
|
||||
fun intoGroupAndConfig(
|
||||
message: WeworkMessageBean,
|
||||
groupName: String,
|
||||
newGroupName: String?,
|
||||
newGroupAnnouncement: String?,
|
||||
@@ -223,39 +262,49 @@ object WeworkOperationImpl {
|
||||
showMessageHistory: Boolean = false,
|
||||
removeList: List<String>?
|
||||
): Boolean {
|
||||
if (WeworkRoomUtil.intoRoom(groupName)) {
|
||||
if (newGroupName != null) {
|
||||
groupRename(newGroupName)
|
||||
}
|
||||
if (!selectList.isNullOrEmpty()) {
|
||||
groupAddMember(selectList, showMessageHistory)
|
||||
}
|
||||
if (!removeList.isNullOrEmpty()) {
|
||||
groupRemoveMember(removeList)
|
||||
}
|
||||
if (newGroupAnnouncement != null) {
|
||||
groupChangeAnnouncement(newGroupAnnouncement)
|
||||
}
|
||||
if (groupRemark != null) {
|
||||
groupChangeRemark(groupRemark)
|
||||
}
|
||||
backPress()
|
||||
return true
|
||||
val startTime = System.currentTimeMillis()
|
||||
if (!WeworkRoomUtil.intoRoom(groupName)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_INTO_ROOM, "进入房间失败 $groupName", startTime)
|
||||
return false
|
||||
}
|
||||
return false
|
||||
if (!groupRename(newGroupName)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_RENAME, "进入房间成功 群改名失败", startTime)
|
||||
return false
|
||||
}
|
||||
if (!groupAddMember(selectList, showMessageHistory)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_ADD_MEMBER, "进入房间成功 群改名成功 群拉人失败 ${selectList?.joinToString()}", startTime)
|
||||
return false
|
||||
}
|
||||
if (!groupRemoveMember(removeList)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_REMOVE_MEMBER, "进入房间成功 群改名成功 群拉人成功 群踢人失败 ${removeList?.joinToString()}", startTime)
|
||||
return false
|
||||
}
|
||||
if (!groupChangeAnnouncement(newGroupAnnouncement)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_CHANGE_ANNOUNCEMENT, "进入房间成功 群改名成功 群拉人成功 群公告失败", startTime)
|
||||
return false
|
||||
}
|
||||
if (!groupChangeRemark(groupRemark)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_GROUP_CHANGE_REMARK, "进入房间成功 群改名成功 群拉人成功 群公告成功 群备注失败", startTime)
|
||||
return false
|
||||
}
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送微盘图片
|
||||
* 推送微盘图片(不推荐)
|
||||
* @see pushFile
|
||||
* @param titleList 待发送姓名列表
|
||||
* @param objectName 图片名称
|
||||
* @param extraText 附加留言 可选
|
||||
*/
|
||||
fun pushMicroDiskImage(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
objectName: String,
|
||||
extraText: String? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
goHomeTab("工作台")
|
||||
val node = AccessibilityUtil.scrollAndFindByText(WeworkController.weworkService, getRoot(), "微盘")
|
||||
if (node != null) {
|
||||
@@ -292,16 +341,19 @@ object WeworkOperationImpl {
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送微盘文件
|
||||
* 推送微盘文件(不推荐)
|
||||
* @see pushFile
|
||||
* @param titleList 待发送姓名列表
|
||||
* @param objectName 文件名称
|
||||
* @param extraText 附加留言 可选
|
||||
*/
|
||||
fun pushMicroDiskFile(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
objectName: String,
|
||||
extraText: String? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
goHomeTab("工作台")
|
||||
val node = AccessibilityUtil.scrollAndFindByText(WeworkController.weworkService, getRoot(), "微盘")
|
||||
if (node != null) {
|
||||
@@ -334,16 +386,18 @@ object WeworkOperationImpl {
|
||||
}
|
||||
|
||||
/**
|
||||
* 推送任意小程序
|
||||
* 推送任意小程序(不推荐)
|
||||
* @param titleList 待发送姓名列表
|
||||
* @param objectName 小程序名称
|
||||
* @param extraText 附加留言 可选
|
||||
*/
|
||||
fun pushMicroprogram(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
objectName: String,
|
||||
extraText: String? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
goHomeTab("工作台")
|
||||
val node = AccessibilityUtil.scrollAndFindByText(WeworkController.weworkService, getRoot(), "用过的小程序")
|
||||
if (node != null) {
|
||||
@@ -373,20 +427,24 @@ object WeworkOperationImpl {
|
||||
* @param extraText 附加留言 可选
|
||||
*/
|
||||
fun pushOffice(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
objectName: String,
|
||||
extraText: String? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
goHomeTab("文档")
|
||||
val allButton = AccessibilityUtil.findOneByText(getRoot(), "全部")
|
||||
if (allButton == null) {
|
||||
LogUtils.e("未找到全部按钮")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到全部按钮", startTime)
|
||||
return false
|
||||
}
|
||||
AccessibilityUtil.performClick(allButton)
|
||||
val myFileButton = AccessibilityUtil.findOneByText(getRoot(), "共享空间")
|
||||
if (myFileButton == null) {
|
||||
LogUtils.e("未找到共享空间按钮")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到共享空间按钮", startTime)
|
||||
return false
|
||||
}
|
||||
AccessibilityUtil.performClick(myFileButton)
|
||||
@@ -400,17 +458,23 @@ object WeworkOperationImpl {
|
||||
val shareFileButton = AccessibilityUtil.findOneByDesc(getRoot(), "转发")
|
||||
AccessibilityUtil.performClick(shareFileButton)
|
||||
if (relaySelectTarget(titleList, extraText)) {
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
} else {
|
||||
LogUtils.e("微盘文件转发失败: $objectName")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_RELAY, "微盘文件转发失败: $objectName", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("文档未搜索到相关文件: $objectName")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_TARGET, "文档未搜索到相关文件: $objectName", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到文档搜索按钮")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到文档搜索按钮", startTime)
|
||||
return false
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -423,15 +487,17 @@ object WeworkOperationImpl {
|
||||
* @param extraText 附加留言 可选
|
||||
*/
|
||||
fun pushFile(
|
||||
message: WeworkMessageBean,
|
||||
titleList: List<String>,
|
||||
objectName: String,
|
||||
fileUrl: String,
|
||||
fileType: String,
|
||||
extraText: String? = null
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
LogUtils.i("下载开始 $fileUrl")
|
||||
val execute = OkGo.get<File>(fileUrl).execute()
|
||||
LogUtils.i("下载成功 $fileUrl")
|
||||
LogUtils.i("下载完成 $fileUrl")
|
||||
val body = execute.body()
|
||||
if (body != null) {
|
||||
val df = SimpleDateFormat("yyyy-MM-dd")
|
||||
@@ -447,16 +513,23 @@ object WeworkOperationImpl {
|
||||
if (relaySelectTarget(titleList, extraText)) {
|
||||
val stayButton = AccessibilityUtil.findOneByText(getRoot(), "留在企业微信")
|
||||
AccessibilityUtil.performClick(stayButton)
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
} else {
|
||||
LogUtils.e("文件转发失败: $objectName")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_RELAY, "文件转发失败: $objectName", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("文件存储本地失败 $filePath")
|
||||
error("文件存储本地失败 $filePath")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_FILE_STORAGE, "文件存储本地失败 $filePath", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("文件下载失败")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_FILE_DOWNLOAD, "文件下载失败 $fileUrl", startTime)
|
||||
return false
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -465,8 +538,10 @@ object WeworkOperationImpl {
|
||||
* @param friend 待添加用户列表
|
||||
*/
|
||||
fun addFriendByPhone(
|
||||
message: WeworkMessageBean,
|
||||
friend: WeworkMessageBean.Friend
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
goHome()
|
||||
val list = AccessibilityUtil.findOneByClazz(getRoot(), Views.RecyclerView, Views.ListView, Views.ViewGroup)
|
||||
if (list != null) {
|
||||
@@ -552,33 +627,54 @@ object WeworkOperationImpl {
|
||||
}
|
||||
if (AccessibilityUtil.findTextAndClick(getRoot(), "发送添加邀请", "发送申请")) {
|
||||
LogUtils.d("发送添加邀请成功: " + friend.phone)
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
} else {
|
||||
LogUtils.e("未找到发送邀请按钮")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到发送邀请按钮", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
if (AccessibilityUtil.findOnceByText(getRoot(), "发消息", exact = true) != null) {
|
||||
LogUtils.e("已经添加联系人,请勿重复添加")
|
||||
LogUtils.e("已经添加联系人,请勿重复添加" + friend.phone)
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_REPEAT, "已经添加联系人,请勿重复添加" + friend.phone, startTime)
|
||||
return false
|
||||
} else {
|
||||
LogUtils.e("未找到添加为联系人")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到添加为联系人", startTime)
|
||||
return false
|
||||
}
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到标签")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到标签", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到查找手机选项")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到查找手机选项", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到添加客户按钮")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到添加客户按钮", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到添加客户列表")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到添加客户列表", startTime)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
} else {
|
||||
LogUtils.e("未找到搜索按钮")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到搜索按钮", startTime)
|
||||
return false
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到聊天列表")
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_BUTTON, "未找到聊天列表", startTime)
|
||||
return false
|
||||
}
|
||||
LogUtils.e("未找到聊天列表")
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -590,11 +686,13 @@ object WeworkOperationImpl {
|
||||
* @param textType 原始消息的消息类型
|
||||
*/
|
||||
fun showGroupInfo(
|
||||
message: WeworkMessageBean,
|
||||
titleList: MutableList<String>,
|
||||
receivedName: String,
|
||||
originalContent: String,
|
||||
textType: Int
|
||||
): Boolean {
|
||||
val startTime = System.currentTimeMillis()
|
||||
for (groupName in titleList) {
|
||||
if (WeworkRoomUtil.intoRoom(groupName) && WeworkRoomUtil.intoGroupManager()) {
|
||||
val groupInfo = WeworkGetImpl.getGroupInfoDetail()
|
||||
@@ -604,9 +702,12 @@ object WeworkOperationImpl {
|
||||
groupInfo.originalContent = originalContent
|
||||
groupInfo.textType = textType
|
||||
WeworkController.weworkService.webSocketManager.send(groupInfo)
|
||||
uploadCommandResult(message, ExecCallbackBean.SUCCESS, "", startTime)
|
||||
return true
|
||||
}
|
||||
}
|
||||
return true
|
||||
uploadCommandResult(message, ExecCallbackBean.ERROR_TARGET, "", startTime)
|
||||
return false
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -632,7 +733,7 @@ object WeworkOperationImpl {
|
||||
AccessibilityUtil.findTextInput(getRoot(), trimTitle)
|
||||
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||
val selectListView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView, Views.RecyclerView, Views.ViewGroup, minChildCount = 2)
|
||||
val regex = "^$trimTitle(-.*)?(…)?(\\(.*?\\))?" + if (needTrim) "" else "$"
|
||||
val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$"
|
||||
val matchSelect = AccessibilityUtil.findOneByTextRegex(
|
||||
selectListView,
|
||||
regex,
|
||||
@@ -709,7 +810,8 @@ object WeworkOperationImpl {
|
||||
/**
|
||||
* 修改群名称
|
||||
*/
|
||||
private fun groupRename(groupName: String): Boolean {
|
||||
private fun groupRename(groupName: String?): Boolean {
|
||||
if (groupName == null) return true
|
||||
if (WeworkRoomUtil.intoGroupManager()) {
|
||||
val textView = AccessibilityUtil.findOneByText(getRoot(), "全部群成员", "微信用户创建")
|
||||
?: return false
|
||||
@@ -747,7 +849,7 @@ object WeworkOperationImpl {
|
||||
* 默认不附带历史记录
|
||||
*/
|
||||
private fun groupAddMember(
|
||||
selectList: List<String>? = null,
|
||||
selectList: List<String>?,
|
||||
showMessageHistory: Boolean = false
|
||||
): Boolean {
|
||||
if (selectList.isNullOrEmpty()) return true
|
||||
@@ -759,10 +861,8 @@ object WeworkOperationImpl {
|
||||
LogUtils.v("tvEmptySize: $tvEmptySize")
|
||||
if (tvEmptySize == 0) {
|
||||
return true
|
||||
} else if (tvEmptySize == 1) {
|
||||
AccessibilityUtil.performClick(gridView.getChild(gridView.childCount - 1))
|
||||
} else if (tvEmptySize == 2) {
|
||||
AccessibilityUtil.performClick(gridView.getChild(gridView.childCount - 2))
|
||||
} else if (tvEmptySize == 1 || tvEmptySize == 2) {
|
||||
AccessibilityUtil.performClick(gridView.getChild(gridView.childCount - tvEmptySize))
|
||||
}
|
||||
} else {
|
||||
LogUtils.e("未找到添加成员按钮")
|
||||
@@ -782,7 +882,7 @@ object WeworkOperationImpl {
|
||||
AccessibilityUtil.findTextInput(getRoot(), trimTitle)
|
||||
sleep(Constant.POP_WINDOW_INTERVAL)
|
||||
val selectListView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView, Views.RecyclerView, Views.ViewGroup, minChildCount = 2, firstChildClazz = Views.TextView)
|
||||
val regex = "^$trimTitle(-.*)?(…)?(\\(.*?\\))?" + if (needTrim) "" else "$"
|
||||
val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$"
|
||||
val matchSelect = AccessibilityUtil.findOneByTextRegex(
|
||||
selectListView,
|
||||
regex,
|
||||
@@ -790,6 +890,7 @@ object WeworkOperationImpl {
|
||||
root = false
|
||||
)
|
||||
if (selectListView != null && matchSelect != null) {
|
||||
var flag = false
|
||||
for (i in 0 until selectListView.childCount) {
|
||||
val item = selectListView.getChild(i)
|
||||
val searchResult = AccessibilityUtil.findOnceByTextRegex(item, regex)
|
||||
@@ -797,9 +898,14 @@ object WeworkOperationImpl {
|
||||
item.refresh()
|
||||
val imageView =
|
||||
AccessibilityUtil.findOneByClazz(item, Views.ImageView, root = false)
|
||||
AccessibilityUtil.performClick(imageView)
|
||||
if (AccessibilityUtil.performClick(imageView)) {
|
||||
flag = true
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!flag) {
|
||||
LogUtils.e("拉人失败 找不到: $select")
|
||||
}
|
||||
}
|
||||
val textView = AccessibilityUtil.findOnceByClazz(getRoot(), Views.TextView)
|
||||
if (textView != null && textView.text.isNullOrBlank()) {
|
||||
@@ -810,6 +916,7 @@ object WeworkOperationImpl {
|
||||
LogUtils.d("找到搜索结果: $select")
|
||||
} else {
|
||||
LogUtils.e("未搜索到结果")
|
||||
return false
|
||||
}
|
||||
}
|
||||
if (showMessageHistory) {
|
||||
@@ -838,7 +945,7 @@ object WeworkOperationImpl {
|
||||
/**
|
||||
* 移除群成员/踢人
|
||||
*/
|
||||
private fun groupRemoveMember(removeList: List<String>): Boolean {
|
||||
private fun groupRemoveMember(removeList: List<String>?): Boolean {
|
||||
if (removeList.isNullOrEmpty()) return true
|
||||
if (WeworkRoomUtil.intoGroupManager()) {
|
||||
val gridView = AccessibilityUtil.findOneByClazz(getRoot(), Views.GridView)
|
||||
@@ -869,7 +976,7 @@ object WeworkOperationImpl {
|
||||
AccessibilityUtil.findTextInput(getRoot(), trimTitle)
|
||||
sleep(Constant.POP_WINDOW_INTERVAL)
|
||||
val selectListView = AccessibilityUtil.findOneByClazz(getRoot(), Views.ListView, Views.RecyclerView, Views.ViewGroup, minChildCount = 2, firstChildClazz = Views.RelativeLayout)
|
||||
val regex = "^$trimTitle(-.*)?(…)?(\\(.*?\\))?" + if (needTrim) "" else "$"
|
||||
val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$"
|
||||
val matchSelect = AccessibilityUtil.findOneByTextRegex(
|
||||
selectListView,
|
||||
regex,
|
||||
@@ -897,6 +1004,7 @@ object WeworkOperationImpl {
|
||||
LogUtils.d("找到搜索结果: $select")
|
||||
} else {
|
||||
LogUtils.e("未搜索到结果")
|
||||
return false
|
||||
}
|
||||
}
|
||||
val confirmButton =
|
||||
@@ -924,7 +1032,7 @@ object WeworkOperationImpl {
|
||||
* 注:首次为发布 后续为编辑
|
||||
* 注2:外部群为edittext 内部群为webview(只能追加文本)
|
||||
*/
|
||||
private fun groupChangeAnnouncement(groupAnnouncement: String? = null): Boolean {
|
||||
private fun groupChangeAnnouncement(groupAnnouncement: String?): Boolean {
|
||||
if (groupAnnouncement == null) return true
|
||||
if (WeworkRoomUtil.intoGroupManager()) {
|
||||
val textView = AccessibilityUtil.findOneByText(getRoot(), "群公告", exact = true)
|
||||
@@ -971,7 +1079,7 @@ object WeworkOperationImpl {
|
||||
* 注:首次为发布 后续为编辑
|
||||
* 注2:外部群为edittext 内部群为webview(只能追加文本)
|
||||
*/
|
||||
private fun groupChangeRemark(groupRemark: String? = null): Boolean {
|
||||
private fun groupChangeRemark(groupRemark: String?): Boolean {
|
||||
if (groupRemark == null) return true
|
||||
if (WeworkRoomUtil.intoGroupManager()) {
|
||||
val textView = AccessibilityUtil.findOneByText(getRoot(), "备注", exact = true)
|
||||
@@ -1165,7 +1273,7 @@ object WeworkOperationImpl {
|
||||
.replace(".jpg", "")
|
||||
LogUtils.v("fileTime: $fileTime")
|
||||
if (fileTime.isNotBlank()) {
|
||||
if (fileTime.toLong() > currentTime) {
|
||||
if (fileTime.toLongOrNull() ?: 0 > currentTime) {
|
||||
LogUtils.d("找到最新保存二维码图片: $fileTime")
|
||||
try {
|
||||
val bitmap = ImageUtils.bytes2Bitmap(file.readBytes())
|
||||
|
||||
@@ -8,6 +8,7 @@ import com.hjq.toast.ToastUtils;
|
||||
|
||||
import org.yameida.worktool.model.WeworkMessageBean;
|
||||
import org.yameida.worktool.model.WeworkMessageListBean;
|
||||
import org.yameida.worktool.service.WeworkController;
|
||||
|
||||
import java.text.SimpleDateFormat;
|
||||
import java.util.Date;
|
||||
@@ -140,6 +141,9 @@ public class WebSocketManager {
|
||||
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//设置日期格式
|
||||
Log.e(url, "心跳检测" + df.format(new Date()));// new Date()为获取当前系统时间
|
||||
if (!connecting && (socket == null || !socket.send(HEARTBEAT))) {
|
||||
//断开链接后关闭新消息接收
|
||||
WeworkController.INSTANCE.setEnableLoopRunning(false);
|
||||
//断开链接后进入重连
|
||||
reConnect();
|
||||
}
|
||||
ToastUtils.show("机器人运行中 请勿人工操作手机~");
|
||||
|
||||
@@ -104,7 +104,7 @@ object WeworkRoomUtil {
|
||||
sleep(Constant.CHANGE_PAGE_INTERVAL)
|
||||
//消息页搜索结果列表
|
||||
val selectListView = findOneByClazz(getRoot(), Views.ListView)
|
||||
val regex = "^$trimTitle(-.*)?(…)?(\\(.*?\\))?" + if (needTrim) "" else "$"
|
||||
val regex = "^$trimTitle" + if (needTrim) ".*?" else "(-.*)?(…)?(\\(.*?\\))?$"
|
||||
val searchResult = AccessibilityUtil.findOneByTextRegex(
|
||||
selectListView,
|
||||
regex,
|
||||
|
||||
@@ -293,7 +293,7 @@
|
||||
<TextView
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="开启自动回复"
|
||||
android:text="开启新消息接收"
|
||||
android:textColor="@color/color_333333"
|
||||
android:textSize="@dimen/setting_start_font_size" />
|
||||
|
||||
|
||||
Reference in New Issue
Block a user