Files
kami_itunes_june/AppleBatch_June.ExecuteTasks/OvercheckTask.cs
2024-07-22 00:43:14 +08:00

150 lines
4.5 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using AppleBatch_June.Model;
using AppleBatch_June.StartTaskModel;
namespace AppleBatch_June.ExecuteTasks
{
public class OvercheckTask : BaseTask
{
public static OvercheckTask Instance { get; private set; }
static OvercheckTask()
{
Instance = new OvercheckTask("AppStore检查");
}
public OvercheckTask(string _taskName)
: base(_taskName)
{
}
public void ExecuteLeaveFamily(int TaskSize, bool openVpn, List<AppleAcount> lvItems, PaymentInfo payment, Action startAct, Action endTakAct, Action<string> sucessAct, Action<string, DisplyType, string> _action)
{
TaskSize = Tools.getTaskSize(openVpn, lvItems.Count);
if (!ShopBalanceTask.Instance.isRun)
{
AppleExecuteTask.TaskRunAppleIdCount = 0L;
AppleExecuteTask.TaskRunModels.Clear();
startAct?.Invoke();
Instance.isRun = true;
Instance.TaskIsRun = true;
base.baseEndTakAct = endTakAct;
Task.Run(delegate
{
ApiNetReq.startNowFun = 41;
Task[] array = new Task[TaskSize];
for (int i = 0; i < TaskSize; i++)
{
array[i] = Task.Run(delegate
{
string guid = Guid.NewGuid().ToString("n");
TaskRunModel taskRunModel = new TaskRunModel
{
guid = guid,
isRuning = false
};
AppleExecuteTask.TaskRunModels.Add(taskRunModel);
while (Instance.isRun)
{
AppleAcount appleAcount = null;
try
{
lock (lvItems)
{
appleAcount = lvItems.Where((AppleAcount c) => !c.isAct).FirstOrDefault();
if (appleAcount == null)
{
break;
}
appleAcount.isAct = true;
}
if (BaseTask.startRuning(taskRunModel, _action, appleAcount.appleId))
{
ItunesUtlis itunesUtlis = new ItunesUtlis(this, appleAcount.appleId, _action, openVpn);
if (itunesUtlis.getIsLogin(41, _action))
{
_action?.Invoke(appleAcount.appleId, DisplyType.chongzhi, "");
itunesUtlis.overcheckPayment = payment;
string msgReust = "Overcheck";
AppleItunesLogin appleItunesLogin = itunesUtlis.fullAppleLogin(appleAcount.appleId, appleAcount.applePwd, appleAcount.isDoubleModl ? appleAcount.DoublePwd : "", 1, ref msgReust, out var isAppleSuccess, appleAcount.appleId);
if (appleItunesLogin != null)
{
_action?.Invoke(appleAcount.appleId, DisplyType.area, appleItunesLogin.Area);
_action?.Invoke(appleAcount.appleId, DisplyType.forbidden, "已激活");
_action?.Invoke(appleAcount.appleId, DisplyType.xinxi, "无需过检,账号余额:" + appleItunesLogin.Balance);
ApiApplyAct(42, "无需过检");
}
else
{
if (msgReust != "0000")
{
_action?.Invoke(appleAcount.appleId, DisplyType.xinxi, msgReust);
}
if (msgReust.Contains("账号资料未补全"))
{
ApiApplyAct(43, "过检补资料");
}
if (msgReust.Contains("请联系 iTunes 支持"))
{
msgReust = "OvercheckAgent";
_action?.Invoke(appleAcount.appleId, DisplyType.error, "重试中");
appleItunesLogin = itunesUtlis.fullAppleLogin(appleAcount.appleId, appleAcount.applePwd, appleAcount.isDoubleModl ? appleAcount.DoublePwd : "", 1, ref msgReust, out isAppleSuccess, appleAcount.appleId);
}
if (msgReust == "0000")
{
ApiApplyAct(41, "过检完成");
}
}
sucessAct?.Invoke(appleAcount.appleId);
}
goto IL_0316;
}
}
catch (Exception ex2)
{
APIUtlis.ApiSeriveError(ex2);
if (appleAcount != null)
{
_action?.Invoke(appleAcount.appleId, DisplyType.xinxi, "请求失败:" + ex2.Message);
}
goto IL_0316;
}
continue;
IL_0316:
BaseTask.endRuning(taskRunModel);
}
});
}
Task.WaitAll(array);
try
{
Task[] array2 = array;
foreach (Task task in array2)
{
if (task.Status == TaskStatus.RanToCompletion)
{
task.Dispose();
}
}
array = null;
}
catch (Exception)
{
}
AppleExecuteTask.TaskRunModels.Clear();
Instance.TaskIsRun = false;
Instance.isRun = false;
endTakAct?.Invoke();
});
}
else
{
endTakAct?.Invoke();
}
}
}
}