Commit 89710e80 authored by wuliangshun's avatar wuliangshun

添加多任务

parent 84fa22f7
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace iqiyiWin.Enums
{
public enum TaskTypeEnum
{
[Description("签到")]
SignIn = 0,
[Description("查询观影豆")]
MovieBean = 1,
[Description("查询优惠券")]
Coupon = 2
}
}
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
namespace iqiyiWin.Extension
{
public static class EnumExtension
{
/// <summary>
/// 扩展方法,获得枚举的Description
/// </summary>
/// <param name="value">枚举值</param>
/// <param name="nameInstead">当枚举值没有定义DescriptionAttribute,是否使用枚举名代替,默认是使用</param>
/// <returns>枚举的Description</returns>
public static string GetDescription(this Enum value, Boolean nameInstead = true)
{
Type type = value.GetType();
string name = Enum.GetName(type, value);
if (name == null)
{
return null;
}
FieldInfo field = type.GetField(name);
DescriptionAttribute attribute = System.Attribute.GetCustomAttribute(field, typeof(DescriptionAttribute)) as DescriptionAttribute;
if (attribute == null && nameInstead == true)
{
return name;
}
return attribute?.Description;
}
}
}
This diff is collapsed.
...@@ -16,6 +16,8 @@ using System.Threading; ...@@ -16,6 +16,8 @@ using System.Threading;
using System.Collections; using System.Collections;
using System.IO; using System.IO;
using DingDingSdk; using DingDingSdk;
using iqiyiWin.Enums;
using iqiyiWin.Extension;
namespace iqiyiWin namespace iqiyiWin
{ {
...@@ -85,6 +87,14 @@ namespace iqiyiWin ...@@ -85,6 +87,14 @@ namespace iqiyiWin
/// 默认定时任务的时间 /// 默认定时任务的时间
/// </summary> /// </summary>
public int IntervalTime = 12 * 60 * 60 ; public int IntervalTime = 12 * 60 * 60 ;
/// <summary>
/// 等待执行的任务列表
/// </summary>
public List<TaskTypeEnum> TaskList = new List<TaskTypeEnum>();
/// <summary>
/// 当前执行的任务下标
/// </summary>
public int TaskIndex = -1;
public Main() public Main()
...@@ -212,11 +222,35 @@ namespace iqiyiWin ...@@ -212,11 +222,35 @@ namespace iqiyiWin
var hour = Convert.ToInt32((EndTime - StartTime) / (1000 * 60 * 60)); var hour = Convert.ToInt32((EndTime - StartTime) / (1000 * 60 * 60));
var mominute = Convert.ToInt32(((EndTime - StartTime) % (1000 * 60 * 60)) / (1000 * 60)); var mominute = Convert.ToInt32(((EndTime - StartTime) % (1000 * 60 * 60)) / (1000 * 60));
var msecond = ((EndTime - StartTime) % (1000 * 60) / 1000); var msecond = ((EndTime - StartTime) % (1000 * 60) / 1000);
var logText = $"本次共计执行{SelectNum}个账号,成功{SuccessNum}个账号,失败{ErrorNum}个账号,所用时长{hour}小时{mominute}分钟{msecond}秒钟。";
UILogUtils.Info(logText); var logText = $"爱奇艺票务 本次{EnumExtension.GetDescription(TaskList[TaskIndex])}任务,共计执行{SelectNum}个账号,成功{SuccessNum}个账号,失败{ErrorNum}个账号,所用时长{hour}小时{mominute}分钟{msecond}秒钟。";
if (TimerTiming.Enabled) if (TimerTiming.Enabled)
{ {
SendDingdingMessagesAsync($"爱奇艺票务 每日任务执行完毕,{logText}", "18057708086"); SendDingdingMessagesAsync($"{logText}", "18057708086");
}
else
{
UILogUtils.Info($"{logText}");
}
if(TaskIndex < TaskList.Count - 1 && TaskIndex != -1)
{
Interlocked.Increment(ref TaskIndex);
runTask();
}
else
{
TaskIndex = -1;
if (TimerTiming.Enabled)
{
var taskNameList = new List<string>();
foreach(var item in TaskList)
{
taskNameList.Add(EnumExtension.GetDescription(item));
}
SendDingdingMessagesAsync($"爱奇艺票务 每日任务[{string.Join(" , ", taskNameList.ToArray())}]执行完毕。", "18057708086");
}
} }
} }
...@@ -351,6 +385,12 @@ namespace iqiyiWin ...@@ -351,6 +385,12 @@ namespace iqiyiWin
IsLoading = true; IsLoading = true;
TaskList = new List<TaskTypeEnum>{
TaskTypeEnum.SignIn
};
TaskIndex = 0;
AccountSignIn(iqiyiAccounts); AccountSignIn(iqiyiAccounts);
} }
...@@ -445,6 +485,12 @@ namespace iqiyiWin ...@@ -445,6 +485,12 @@ namespace iqiyiWin
IsLoading = true; IsLoading = true;
TaskList = new List<TaskTypeEnum>{
TaskTypeEnum.MovieBean
};
TaskIndex = 0;
queryMovieBean(iqiyiAccounts); queryMovieBean(iqiyiAccounts);
} }
catch (Exception ex) catch (Exception ex)
...@@ -539,6 +585,12 @@ namespace iqiyiWin ...@@ -539,6 +585,12 @@ namespace iqiyiWin
IsLoading = true; IsLoading = true;
TaskList = new List<TaskTypeEnum>{
TaskTypeEnum.Coupon
};
TaskIndex = 0;
queryCouponNum(iqiyiAccounts); queryCouponNum(iqiyiAccounts);
} }
catch (Exception ex) catch (Exception ex)
...@@ -631,25 +683,73 @@ namespace iqiyiWin ...@@ -631,25 +683,73 @@ namespace iqiyiWin
return; return;
} }
IsLoading = true; TaskList = new List<TaskTypeEnum>();
var taskNameList = new List<string>();
// 执行签到 // 执行签到
if (rb_signIn.Checked) if (cb_signIn.Checked)
{ {
AccountSignIn(IqiyiAccounts); TaskList.Add(TaskTypeEnum.SignIn);
taskNameList.Add($"{EnumExtension.GetDescription(TaskTypeEnum.SignIn)}");
} }
// 执行查询观影豆 // 执行查询观影豆
else if (rb_movieBean.Checked) if (cb_movieBean.Checked)
{ {
queryMovieBean(IqiyiAccounts); TaskList.Add(TaskTypeEnum.MovieBean);
taskNameList.Add($"{EnumExtension.GetDescription(TaskTypeEnum.MovieBean)}");
} }
// 执行查询优惠券 // 执行查询优惠券
else if (rb_coupon.Checked) if (cb_coupon.Checked)
{
TaskList.Add(TaskTypeEnum.Coupon);
taskNameList.Add($"{EnumExtension.GetDescription(TaskTypeEnum.Coupon)}");
}
if (TaskList.Count != 0)
{
UILogUtils.Info(TimerTiming.Enabled.ToString());
if (TimerTiming.Enabled)
{
SendDingdingMessagesAsync($"爱奇艺票务 即将开始执行{TaskList.Count}个任务 [{string.Join(" , ", taskNameList.ToArray())}]", "18057708086");
}
IsLoading = true;
TaskIndex = 0;
runTask();
}
else
{ {
queryCouponNum(IqiyiAccounts); IsLoading = false;
} }
} }
public void runTask(){
if(TaskIndex == -1)
{
return;
}
var currentTask = TaskList[TaskIndex];
if (TimerTiming.Enabled)
{
SendDingdingMessagesAsync($"爱奇艺票务 开始执行{EnumExtension.GetDescription(currentTask)}任务", "18057708086");
}
switch (currentTask)
{
case TaskTypeEnum.SignIn:
AccountSignIn(IqiyiAccounts);
break;
case TaskTypeEnum.MovieBean:
queryMovieBean(IqiyiAccounts);
break;
case TaskTypeEnum.Coupon:
queryCouponNum(IqiyiAccounts);
break;
default:
UILogUtils.Error($"未知任务类型");
break;
}
}
private void Button1_Click(object sender, EventArgs e) private void Button1_Click(object sender, EventArgs e)
{ {
IsLoading = false; IsLoading = false;
...@@ -724,6 +824,7 @@ namespace iqiyiWin ...@@ -724,6 +824,7 @@ namespace iqiyiWin
private void 清空账号ToolStripMenuItem_Click(object sender, EventArgs e) private void 清空账号ToolStripMenuItem_Click(object sender, EventArgs e)
{ {
dgv_user.DataSource = null; dgv_user.DataSource = null;
IqiyiAccounts = new List<IqiyiAccount>();
} }
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e) private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
...@@ -757,15 +858,15 @@ namespace iqiyiWin ...@@ -757,15 +858,15 @@ namespace iqiyiWin
try try
{ {
String fileDirectory = ""; String fileDirectory = "";
if (rb_signIn.Checked) if (cb_signIn.Checked)
{ {
fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志", "签到", DateTime.Now.ToString("yyyyMMdd")); fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志", "签到", DateTime.Now.ToString("yyyyMMdd"));
} }
else if (rb_movieBean.Checked) else if (cb_movieBean.Checked)
{ {
fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志", "查询观影豆", DateTime.Now.ToString("yyyyMMdd")); fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志", "查询观影豆", DateTime.Now.ToString("yyyyMMdd"));
} }
else if (rb_coupon.Checked) else if (cb_coupon.Checked)
{ {
fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志","查询优惠券", DateTime.Now.ToString("yyyyMMdd")); fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志","查询优惠券", DateTime.Now.ToString("yyyyMMdd"));
} }
...@@ -834,7 +935,6 @@ namespace iqiyiWin ...@@ -834,7 +935,6 @@ namespace iqiyiWin
UILogUtils.Info(logText); UILogUtils.Info(logText);
TimerSetOnTime.Interval = 1000 * (timeDifference); TimerSetOnTime.Interval = 1000 * (timeDifference);
TimerSetOnTime.Tick += new EventHandler((s, e) => TimerSetOnTime.Tick += new EventHandler((s, e) =>
...@@ -849,21 +949,23 @@ namespace iqiyiWin ...@@ -849,21 +949,23 @@ namespace iqiyiWin
} }
public void setTiming() public void setTiming()
{ {
SendDingdingMessagesAsync("爱奇艺票务 开始执行每日任务", "18057708086"); // TODO 缩短执行时间
Btn_start_Click(new object(), new EventArgs());
TimerTiming.Interval = 1000 * 60 * 60 * 24; TimerTiming.Interval = 1000 * 60 * 60 * 24;
// TimerTiming.Interval = 1000 * 10;
TimerTiming.Tick += new EventHandler((s, e) => TimerTiming.Tick += new EventHandler((s, e) =>
{ {
SendDingdingMessagesAsync("爱奇艺票务 开始执行每日任务","18057708086");
Btn_start_Click(new object(), new EventArgs()); Btn_start_Click(new object(), new EventArgs());
}); });
TimerTiming.Start(); TimerTiming.Start();
Btn_start_Click(new object(), new EventArgs());
} }
private static void SendDingdingMessagesAsync(string message, string mobile) private static void SendDingdingMessagesAsync(string message, string mobile)
{ {
UILogUtils.Info($"发送钉钉消息:{message}{mobile}");
if (message != null) if (message != null)
{ {
message = "[千猪]" + message; message = "[千猪]" + message;
......
...@@ -13,7 +13,7 @@ namespace iqiyiWin ...@@ -13,7 +13,7 @@ namespace iqiyiWin
/// </summary> /// </summary>
[STAThread] [STAThread]
static void Main() static void Main()
{ {
Application.EnableVisualStyles(); Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false); Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Main()); Application.Run(new Main());
......
...@@ -55,6 +55,8 @@ ...@@ -55,6 +55,8 @@
<Compile Include="Constant\ApiConstant.cs" /> <Compile Include="Constant\ApiConstant.cs" />
<Compile Include="Constant\DingDingConstant.cs" /> <Compile Include="Constant\DingDingConstant.cs" />
<Compile Include="Constant\IqiyiVersion.cs" /> <Compile Include="Constant\IqiyiVersion.cs" />
<Compile Include="Enums\TaskEnums.cs" />
<Compile Include="Extension\EnumExtension.cs" />
<Compile Include="Main.cs"> <Compile Include="Main.cs">
<SubType>Form</SubType> <SubType>Form</SubType>
</Compile> </Compile>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment