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;
using System.Collections;
using System.IO;
using DingDingSdk;
using iqiyiWin.Enums;
using iqiyiWin.Extension;
namespace iqiyiWin
{
......@@ -85,6 +87,14 @@ namespace iqiyiWin
/// 默认定时任务的时间
/// </summary>
public int IntervalTime = 12 * 60 * 60 ;
/// <summary>
/// 等待执行的任务列表
/// </summary>
public List<TaskTypeEnum> TaskList = new List<TaskTypeEnum>();
/// <summary>
/// 当前执行的任务下标
/// </summary>
public int TaskIndex = -1;
public Main()
......@@ -212,11 +222,35 @@ namespace iqiyiWin
var hour = Convert.ToInt32((EndTime - StartTime) / (1000 * 60 * 60));
var mominute = Convert.ToInt32(((EndTime - StartTime) % (1000 * 60 * 60)) / (1000 * 60));
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)
{
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)
{
SendDingdingMessagesAsync($"爱奇艺票务 每日任务执行完毕,{logText}", "18057708086");
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
IsLoading = true;
TaskList = new List<TaskTypeEnum>{
TaskTypeEnum.SignIn
};
TaskIndex = 0;
AccountSignIn(iqiyiAccounts);
}
......@@ -445,6 +485,12 @@ namespace iqiyiWin
IsLoading = true;
TaskList = new List<TaskTypeEnum>{
TaskTypeEnum.MovieBean
};
TaskIndex = 0;
queryMovieBean(iqiyiAccounts);
}
catch (Exception ex)
......@@ -539,6 +585,12 @@ namespace iqiyiWin
IsLoading = true;
TaskList = new List<TaskTypeEnum>{
TaskTypeEnum.Coupon
};
TaskIndex = 0;
queryCouponNum(iqiyiAccounts);
}
catch (Exception ex)
......@@ -631,22 +683,70 @@ namespace iqiyiWin
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
{
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;
}
}
......@@ -724,6 +824,7 @@ namespace iqiyiWin
private void 清空账号ToolStripMenuItem_Click(object sender, EventArgs e)
{
dgv_user.DataSource = null;
IqiyiAccounts = new List<IqiyiAccount>();
}
private void 删除ToolStripMenuItem_Click(object sender, EventArgs e)
......@@ -757,15 +858,15 @@ namespace iqiyiWin
try
{
String fileDirectory = "";
if (rb_signIn.Checked)
if (cb_signIn.Checked)
{
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"));
}
else if (rb_coupon.Checked)
else if (cb_coupon.Checked)
{
fileDirectory = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "日志","查询优惠券", DateTime.Now.ToString("yyyyMMdd"));
}
......@@ -834,7 +935,6 @@ namespace iqiyiWin
UILogUtils.Info(logText);
TimerSetOnTime.Interval = 1000 * (timeDifference);
TimerSetOnTime.Tick += new EventHandler((s, e) =>
......@@ -849,21 +949,23 @@ namespace iqiyiWin
}
public void setTiming()
{
SendDingdingMessagesAsync("爱奇艺票务 开始执行每日任务", "18057708086");
Btn_start_Click(new object(), new EventArgs());
// TODO 缩短执行时间
TimerTiming.Interval = 1000 * 60 * 60 * 24;
// TimerTiming.Interval = 1000 * 10;
TimerTiming.Tick += new EventHandler((s, e) =>
{
SendDingdingMessagesAsync("爱奇艺票务 开始执行每日任务","18057708086");
Btn_start_Click(new object(), new EventArgs());
});
TimerTiming.Start();
Btn_start_Click(new object(), new EventArgs());
}
private static void SendDingdingMessagesAsync(string message, string mobile)
{
UILogUtils.Info($"发送钉钉消息:{message}{mobile}");
if (message != null)
{
message = "[千猪]" + message;
......
......@@ -55,6 +55,8 @@
<Compile Include="Constant\ApiConstant.cs" />
<Compile Include="Constant\DingDingConstant.cs" />
<Compile Include="Constant\IqiyiVersion.cs" />
<Compile Include="Enums\TaskEnums.cs" />
<Compile Include="Extension\EnumExtension.cs" />
<Compile Include="Main.cs">
<SubType>Form</SubType>
</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