33import de .robv .android .xposed .XC_MethodHook ;
44import de .robv .android .xposed .XposedHelpers ;
55import org .json .JSONArray ;
6+ import org .json .JSONException ;
67import org .json .JSONObject ;
78import tkaxv7s .xposed .sesame .data .ModelFields ;
89import tkaxv7s .xposed .sesame .data .ModelGroup ;
1718import tkaxv7s .xposed .sesame .model .normal .base .BaseModel ;
1819import tkaxv7s .xposed .sesame .util .*;
1920
21+ import java .util .ArrayList ;
2022import java .util .Calendar ;
2123import java .util .LinkedHashSet ;
24+ import java .util .List ;
2225
2326public class AntSports extends ModelTask {
2427
2528 private static final String TAG = AntSports .class .getSimpleName ();
2629
2730 private int tmpStepCount = -1 ;
28-
29- @ Override
30- public String getName () {
31- return "运动" ;
32- }
33-
34- @ Override
35- public ModelGroup getGroup () {
36- return ModelGroup .SPORTS ;
37- }
38-
3931 private BooleanModelField openTreasureBox ;
4032 private BooleanModelField receiveCoinAsset ;
4133 private BooleanModelField donateCharityCoin ;
@@ -48,11 +40,23 @@ public ModelGroup getGroup() {
4840 private BooleanModelField battleForFriends ;
4941 private ChoiceModelField battleForFriendType ;
5042 private SelectModelField originBossIdList ;
43+ private BooleanModelField sportsTasks ;
44+
45+ @ Override
46+ public String getName () {
47+ return "运动" ;
48+ }
49+
50+ @ Override
51+ public ModelGroup getGroup () {
52+ return ModelGroup .SPORTS ;
53+ }
5154
5255 @ Override
5356 public ModelFields getFields () {
5457 ModelFields modelFields = new ModelFields ();
5558 modelFields .addField (openTreasureBox = new BooleanModelField ("openTreasureBox" , "开启宝箱" , false ));
59+ modelFields .addField (sportsTasks = new BooleanModelField ("sportsTasks" , "开启运动任务" , false ));
5660 modelFields .addField (receiveCoinAsset = new BooleanModelField ("receiveCoinAsset" , "收运动币" , false ));
5761 modelFields .addField (donateCharityCoin = new BooleanModelField ("donateCharityCoin" , "捐运动币 | 开启" , false ));
5862 modelFields .addField (donateCharityCoinType = new ChoiceModelField ("donateCharityCoinType" , "捐运动币 | 方式" , DonateCharityCoinType .ONE , DonateCharityCoinType .nickNames ));
@@ -113,13 +117,13 @@ public void run() {
113117 }
114118 }));
115119 }
120+ if (sportsTasks .getValue ())
121+ sportsTasks ();
122+
116123 ClassLoader loader = ApplicationHook .getClassLoader ();
117124 if (openTreasureBox .getValue ())
118125 queryMyHomePage (loader );
119126
120- if (receiveCoinAsset .getValue ())
121- receiveCoinAsset ();
122-
123127 if (donateCharityCoin .getValue () && Status .canDonateCharityCoin ())
124128 queryProjectList (loader );
125129
@@ -139,6 +143,9 @@ public void run() {
139143 queryTrainItem ();
140144 buyMember ();
141145 }
146+
147+ if (receiveCoinAsset .getValue ())
148+ receiveCoinAsset ();
142149 } catch (Throwable t ) {
143150 Log .i (TAG , "start.run err:" );
144151 Log .printStackTrace (TAG , t );
@@ -159,6 +166,57 @@ public int tmpStepCount() {
159166 return tmpStepCount ;
160167 }
161168
169+ // 运动
170+ private void sportsTasks () {
171+ try {
172+ Log .record ("运动任务开始" );
173+
174+ JSONObject jo = new JSONObject (AntSportsRpcCall .queryCoinTaskPanel ());
175+ if (jo .getBoolean ("success" )) {
176+ JSONObject data = jo .getJSONObject ("data" );
177+ JSONArray taskList = data .getJSONArray ("taskList" );
178+
179+ for (int i = 0 ; i < taskList .length (); i ++) {
180+ JSONObject taskDetail = taskList .getJSONObject (i );
181+
182+ String taskId = taskDetail .getString ("taskId" );
183+ String taskName = taskDetail .getString ("taskName" );
184+ String prizeAmount = taskDetail .getString ("prizeAmount" );
185+ String taskStatus = taskDetail .getString ("taskStatus" );
186+ int currentNum = taskDetail .getInt ("currentNum" );
187+ // 要完成的次数
188+ int limitConfigNum = taskDetail .getInt ("limitConfigNum" )-currentNum ;
189+
190+ if (taskStatus .equals ("HAS_RECEIVED" ))
191+ return ;
192+ for (int i1 = 0 ; i1 < limitConfigNum ; i1 ++) {
193+ jo = new JSONObject (AntSportsRpcCall .completeExerciseTasks (taskId ));
194+ if (jo .getBoolean ("success" )) {
195+ Log .record ("做任务得运动币👯[完成任务:" + taskName + ",得" + prizeAmount + "🪙]" );
196+ // Log.record(jo.toString());
197+ receiveCoinAsset ();
198+ }else {
199+ // Log.record(jo.toString());
200+ }
201+ if (limitConfigNum >1 )
202+ Thread .sleep (5000 );
203+ else
204+ Thread .sleep (1000 );
205+ }
206+
207+
208+ }
209+ }
210+ } catch (JSONException e ) {
211+ Log .i (TAG , "sportsTasks err:" );
212+ Log .printStackTrace (e );
213+ throw new RuntimeException (e );
214+ } catch (InterruptedException e ) {
215+ throw new RuntimeException (e );
216+ }
217+ }
218+
219+
162220 private void receiveCoinAsset () {
163221 try {
164222 String s = AntSportsRpcCall .queryCoinBubbleModule ();
0 commit comments