Skip to content

Commit 9c610ac

Browse files
committed
重构TaskErrorInfo获取
1 parent cf05c45 commit 9c610ac

File tree

7 files changed

+47
-82
lines changed

7 files changed

+47
-82
lines changed

app/src/main/java/me/teble/xposed/autodaily/hook/MainHook.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,17 @@ import me.teble.xposed.autodaily.hook.servlets.ServletPool
3333
import me.teble.xposed.autodaily.hook.utils.ToastUtil
3434
import me.teble.xposed.autodaily.task.model.Task
3535
import me.teble.xposed.autodaily.task.util.ConfigUtil
36+
import me.teble.xposed.autodaily.task.util.formatDate
3637
import me.teble.xposed.autodaily.ui.ConfUnit
37-
import me.teble.xposed.autodaily.ui.errCount
3838
import me.teble.xposed.autodaily.ui.reset
39+
import me.teble.xposed.autodaily.ui.errInfo
3940
import me.teble.xposed.autodaily.utils.LogUtil
4041
import me.teble.xposed.autodaily.utils.TaskExecutor
4142
import me.teble.xposed.autodaily.utils.TaskExecutor.CORE_SERVICE_FLAG
4243
import me.teble.xposed.autodaily.utils.TaskExecutor.CORE_SERVICE_TOAST_FLAG
44+
import me.teble.xposed.autodaily.utils.TimeUtil
4345
import me.teble.xposed.autodaily.utils.new
46+
import java.util.*
4447
import java.util.concurrent.CompletableFuture.runAsync
4548

4649
class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
@@ -186,11 +189,14 @@ class MainHook : IXposedHookLoadPackage, IXposedHookZygoteInit {
186189

187190
private fun onStart() {
188191
if (ConfUnit.lastModuleVersion < 22082510) {
189-
if (Task("好友点赞").errCount > 2) {
192+
val currentDate = Date(TimeUtil.localTimeMillis()).formatDate()
193+
val ex1 = Task("好友点赞").errInfo
194+
if (ex1.dateStr == currentDate && ex1.count > 2) {
190195
LogUtil.i("版本更新,自动重置好友点赞任务")
191196
Task("好友点赞").reset()
192197
}
193-
if (Task("资料卡回赞").errCount > 2) {
198+
val ex2 = Task("资料卡回赞").errInfo
199+
if (ex2.dateStr == currentDate && ex2.count > 2) {
194200
LogUtil.i("版本更新,自动重置资料卡回赞任务")
195201
Task("资料卡回赞").reset()
196202
}

app/src/main/java/me/teble/xposed/autodaily/hook/QQSettingSettingActivityHook.kt

Lines changed: 0 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -58,48 +58,6 @@ class QQSettingSettingActivityHook : BaseHook() {
5858
}
5959
}
6060
entity.setOnLongClickListener {
61-
// val cBaseService = load("com.tencent.mobileqq.service.MobileQQServiceBase")!!
62-
// lateinit var mRealHandleReq: Method
63-
// cBaseService.getMethods(false).forEach {
64-
// if (it.returnType == Void.TYPE && it.isPublic) {
65-
// val paramTypes = it.parameterTypes
66-
// if (paramTypes.size >= 2
67-
// && paramTypes.first() == ToServiceMsg::class.java
68-
// && paramTypes.last() == Class::class.java) {
69-
// mRealHandleReq = it
70-
// LogUtil.d(it.toString())
71-
// }
72-
// }
73-
// }
74-
// val toServiceMsg: ToServiceMsg = ToServiceMsg(
75-
// "mobileqq.service",
76-
// "${QApplicationUtil.currentUin}", "VisitorSvc.ReqFavorite"
77-
// ).apply {
78-
// appSeq = 1234
79-
// timeout = 10000L
80-
// extraData.putLong("selfUin", QApplicationUtil.currentUin)
81-
// extraData.putLong("targetUin", qq)
82-
// extraData.putByteArray("vCookies", null)
83-
// // 好友1,陌生人66 陌生人能突破非会员10次上限
84-
// extraData.putInt("favoriteSource", 66)
85-
// extraData.putInt("iCount", 1)
86-
// extraData.putInt("from", 0)
87-
// }
88-
// kotlin.runCatching {
89-
//
90-
// appInterface.getFields(false).forEach {
91-
// if (cBaseService.isAssignableFrom(it.type)) {
92-
// LogUtil.d(it.name)
93-
// it.isAccessible = true
94-
// val mqqService = it.get(appInterface)!!
95-
// if (mRealHandleReq.parameterTypes.size == 2) {
96-
// MethodHandleUtil.invokeSpecial<Unit>(mqqService, mRealHandleReq, toServiceMsg, FavoriteServlet::class.java)
97-
// } else {
98-
// MethodHandleUtil.invokeSpecial<Unit>(mqqService, mRealHandleReq, toServiceMsg, null, FavoriteServlet::class.java)
99-
// }
100-
// }
101-
// }
102-
// }.onFailure { LogUtil.e(it) }
10361
true
10462
}
10563
val id: Int = context.resources

app/src/main/java/me/teble/xposed/autodaily/task/filter/GroupTaskFilterChain.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,7 @@ import me.teble.xposed.autodaily.task.model.TaskGroup
1010
import me.teble.xposed.autodaily.task.request.enum.ReqType
1111
import me.teble.xposed.autodaily.task.util.TaskUtil
1212
import me.teble.xposed.autodaily.task.util.formatDate
13-
import me.teble.xposed.autodaily.ui.errCount
14-
import me.teble.xposed.autodaily.ui.taskExceptionFlag
13+
import me.teble.xposed.autodaily.ui.errInfo
1514
import me.teble.xposed.autodaily.utils.LogUtil
1615
import me.teble.xposed.autodaily.utils.TimeUtil
1716
import java.net.SocketTimeoutException
@@ -51,8 +50,8 @@ class GroupTaskFilterChain(
5150
} else {
5251
val reqType = ReqType.getType(taskGroup.type.split("|").first())
5352
for (task in taskList) {
54-
var errCount = task.errCount
55-
if (errCount >= 3) {
53+
var taskException = task.errInfo
54+
if (taskException.count >= 3) {
5655
LogUtil.i("任务${task.id}今日执行错误次数超过3次,跳过执行")
5756
continue
5857
}
@@ -63,8 +62,9 @@ class GroupTaskFilterChain(
6362
LogUtil.e(e, "执行任务${task.id}异常: ")
6463
} catch (e: Throwable) {
6564
LogUtil.e(e, "执行任务${task.id}异常: ")
66-
val currentDate = Date(TimeUtil.localTimeMillis()).formatDate()
67-
task.taskExceptionFlag = "$currentDate|${++errCount}"
65+
taskException.count++
66+
taskException.dateStr = Date(TimeUtil.localTimeMillis()).formatDate()
67+
task.errInfo = taskException
6868
}
6969
}
7070
}

app/src/main/java/me/teble/xposed/autodaily/task/filter/chain/GroupTaskCheckExecuteFilter.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import me.teble.xposed.autodaily.task.filter.GroupTaskFilter
55
import me.teble.xposed.autodaily.task.filter.GroupTaskFilterChain
66
import me.teble.xposed.autodaily.task.model.Task
77
import me.teble.xposed.autodaily.task.util.ConfigUtil
8-
import me.teble.xposed.autodaily.ui.errCount
8+
import me.teble.xposed.autodaily.ui.errInfo
99
import me.teble.xposed.autodaily.utils.LogUtil
1010

1111
class GroupTaskCheckExecuteFilter : GroupTaskFilter(
@@ -20,7 +20,7 @@ class GroupTaskCheckExecuteFilter : GroupTaskFilter(
2020
) {
2121
val taskGroup = (chain as GroupTaskFilterChain).taskGroup
2222
taskGroup.tasks.forEach {
23-
if (ConfigUtil.checkExecuteTask(it) && it.errCount < 3) {
23+
if (ConfigUtil.checkExecuteTask(it) && it.errInfo.count < 3) {
2424
LogUtil.d("task -> ${it.id} 将被执行")
2525
taskList.add(it)
2626
}

app/src/main/java/me/teble/xposed/autodaily/ui/ConfUnit.kt

Lines changed: 27 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package me.teble.xposed.autodaily.ui
22

33
import kotlinx.serialization.Serializable
4-
import me.teble.xposed.autodaily.BuildConfig
54
import me.teble.xposed.autodaily.hook.config.Config.accountConfig
65
import me.teble.xposed.autodaily.hook.config.Config.xaConfig
76
import me.teble.xposed.autodaily.task.model.Task
@@ -27,11 +26,8 @@ import me.teble.xposed.autodaily.task.util.Const.TASK_EXCEPTION_COUNT
2726
import me.teble.xposed.autodaily.task.util.Const.TASK_EXEC_STATUS
2827
import me.teble.xposed.autodaily.task.util.Const.USED_THREAD_POOL
2928
import me.teble.xposed.autodaily.task.util.Const.VERSION_INFO_CACHE
30-
import me.teble.xposed.autodaily.task.util.formatDate
31-
import me.teble.xposed.autodaily.utils.TimeUtil
3229
import me.teble.xposed.autodaily.utils.parse
3330
import me.teble.xposed.autodaily.utils.toJsonString
34-
import java.util.*
3531

3632
object ConfUnit {
3733
var needUpdate: Boolean = false
@@ -110,42 +106,28 @@ var Task.lastExecMsg: String?
110106
get() = accountConfig.getString("${this.id}#${LAST_EXEC_MSG}")
111107
set(value) = accountConfig.putString("${this.id}#${LAST_EXEC_MSG}", value)
112108

113-
var Task.taskExceptionFlag: String?
114-
get() = accountConfig.getString("${this.id}#${TASK_EXCEPTION_COUNT}")
115-
set(value) = accountConfig.putString("${this.id}#${TASK_EXCEPTION_COUNT}", value)
109+
var Task.errInfo: TaskErrorInfo
110+
get() {
111+
val str = accountConfig.getString("${this.id}#${TASK_EXCEPTION_COUNT}") ?: ""
112+
return TaskErrorInfo.valueOf(str)
113+
}
114+
set(value) = accountConfig.putString("${this.id}#${TASK_EXCEPTION_COUNT}", value.toString())
116115

117116
var Task.taskExecStatus: TaskStatus
118117
get() {
119118
val str = accountConfig.getString("${this.id}#${TASK_EXEC_STATUS}") ?: ""
120119
return TaskStatus.valueOf(str)
121120
}
122-
set(value) {
123-
accountConfig.putString("${this.id}#${TASK_EXEC_STATUS}", value.toString())
124-
}
121+
set(value) = accountConfig.putString("${this.id}#${TASK_EXEC_STATUS}", value.toString())
125122

126123
fun Task.reset() {
127124
this.lastExecTime = null
128125
this.lastExecMsg = null
129126
this.nextShouldExecTime = null
130-
this.taskExceptionFlag = null
127+
this.errInfo = TaskErrorInfo()
131128
this.taskExecStatus = TaskStatus()
132129
}
133130

134-
val Task.errCount: Int
135-
get() {
136-
this.taskExceptionFlag.let {
137-
it?.let {
138-
runCatching {
139-
val arr = it.split("|")
140-
if (arr[0] == Date(TimeUtil.localTimeMillis()).formatDate()) {
141-
return arr[1].toInt()
142-
}
143-
}
144-
}
145-
}
146-
return 0
147-
}
148-
149131
fun Task.getVariable(
150132
name: String, default: String
151133
): String = accountConfig.getString("${this.id}#${ENV_VARIABLE}#${name}", default)
@@ -174,4 +156,23 @@ data class TaskStatus(
174156
}.getOrElse { return TaskStatus(0, 0, "") }
175157
}
176158
}
159+
}
160+
161+
@Serializable
162+
data class TaskErrorInfo(
163+
var dateStr: String = "",
164+
var count: Int = 0
165+
) {
166+
167+
override fun toString(): String {
168+
return "${dateStr}|${count}"
169+
}
170+
companion object {
171+
fun valueOf(str: String): TaskErrorInfo {
172+
runCatching {
173+
val split = str.split("|")
174+
return TaskErrorInfo(split[0], split[1].toInt())
175+
}.getOrElse { return TaskErrorInfo() }
176+
}
177+
}
177178
}

app/src/main/java/me/teble/xposed/autodaily/ui/SignLayout.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ fun SignLayout(navController: NavHostController) {
3131
conf.taskGroups.forEach { taskGroup ->
3232
taskGroup.tasks.forEach {
3333
// TODO 后续优化成 本次登陆||当天暂停 执行
34-
if (it.errCount >= 3) {
34+
if (it.errInfo.count >= 3) {
3535
errorMap[it.id] = "任务执行失败次数超过3次,今日暂停执行,可长按重置执行记录"
3636
}
3737
}

app/src/main/java/me/teble/xposed/autodaily/utils/TaskExecutor.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ import me.teble.xposed.autodaily.task.model.TaskGroup
1515
import me.teble.xposed.autodaily.task.model.TaskProperties
1616
import me.teble.xposed.autodaily.task.util.ConfigUtil
1717
import me.teble.xposed.autodaily.ui.ConfUnit
18-
import me.teble.xposed.autodaily.ui.errCount
18+
import me.teble.xposed.autodaily.ui.errInfo
1919
import java.time.LocalDateTime
2020
import java.util.*
2121
import java.util.concurrent.TimeUnit
@@ -82,7 +82,7 @@ object TaskExecutor {
8282
lock.withLock {
8383
for (group in conf.taskGroups) {
8484
for (task in group.tasks) {
85-
if (ConfigUtil.checkExecuteTask(task) && task.errCount < 3) {
85+
if (ConfigUtil.checkExecuteTask(task) && task.errInfo.count < 3) {
8686
if (!runtimeTasks.contains(group)) {
8787
needExecGroups.add(group)
8888
}

0 commit comments

Comments
 (0)