using ARW.Common;
using ARW.Model.System;
using ARW.Service.System.IService;
using Infrastructure;
using Infrastructure.Attribute;
using Infrastructure.WeChat.SubScribe;
using Quartz;
using Senparc.CO2NET.Extensions;
using Senparc.Weixin.Entities.TemplateMessage;
using Senparc.Weixin.WxOpen.AdvancedAPIs.WxApp.WxAppJson;
using SqlSugar;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using SystemTime = System.SystemTime;
namespace ARW.Tasks.TaskScheduler.Business
{
///
/// 订阅推送任务
///
[AppService(ServiceType = typeof(SubscribeTask_Job), ServiceLifetime = LifeTime.Scoped)]
public class SubscribeTask_Job : JobBase, IJob
{
//private readonly NLog.Logger logger = NLog.LogManager.GetCurrentClassLogger();
//private readonly ISysTasksLogService SysTasksLogService;
//private readonly ISysTasksQzService SysTasksQzService;
//private readonly ISubscribeTaskService _SubscribeTaskService;
//public SubscribeTask_Job(ISysTasksLogService sysTasksLogService, ISysTasksQzService sysTasksQzService, ISubscribeTaskService subscribeTaskService)
//{
// SysTasksLogService = sysTasksLogService;
// SysTasksQzService = sysTasksQzService;
// _SubscribeTaskService = subscribeTaskService;
//}
//public async Task Execute(IJobExecutionContext context)
//{
// var message = await Run();
// var logModel = await ExecuteJob(context, async () => await Run(), message);
// await RecordTaskLog(context, logModel);
//}
//public async Task Run()
//{
// await Task.Delay(1);
// //TODO 业务逻辑
// var waitPushList = _SubscribeTaskService.GetSubscribeTaskList();
// if (waitPushList.Count > 0)
// {
// var pagePath = "pages/myMessage/myMessage";
// var templateMessageData = new TemplateMessageData();
// templateMessageData["thing1"] = new TemplateMessageDataValue("测试门店");
// templateMessageData["thing2"] = new TemplateMessageDataValue("佛山市顺德区xxx健身");
// templateMessageData["time3"] = new TemplateMessageDataValue(SystemTime.Now.ToString("yyyy年MM月dd日 HH:mm"));
// templateMessageData["short_thing4"] = new TemplateMessageDataValue("1小时");
// templateMessageData["thing5"] = new TemplateMessageDataValue("还有1个小时开始健身,请熟知!");
// var taskList = new List();
// foreach (var item in waitPushList)
// {
// try
// {
// if (item.EndTime < DateTime.Now)
// {
// logger.Info("执行到了这里" + item.OpenId);
// logger.Info("一共有" + waitPushList.Count + "个");
// var res = await Subscribe.SubscribeMessage(item.TemplateId, item.OpenId, templateMessageData);
// logger.Info("推送结果:" + res);
// if (res == "消息已发送,请注意查收")
// {
// // 修改推送状态
// await _SubscribeTaskService.UpdateAsync(f => new SubscribeTask
// {
// SubscribeTaskStatus = 1
// }, s => s.SubscribeTaskGuid == item.SubscribeTaskGuid);
// taskList.Add(item.OpenId + "用户的订阅已推送");
// }
// }
// }
// catch (Exception ex)
// {
// return ex.ToString();
// }
// }
// return taskList.ToJson().ToString();
// }
// else
// {
// logger.Info("空的");
// return "没有需要执行的任务";
// }
// //return "执行成功!";
// #region 公众号模板消息信息 -- DPBMARK MP
// //可选参数(需要和公众号模板消息匹配):
// //var templateData = new
// //{
// // first = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("预约健身开始提醒"),
// // keyword1 = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("测试门店"),
// // keyword2 = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("佛山市顺德区xxx健身"),
// // keyword3 = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem(SystemTime.Now.ToString("yyyy年MM月dd日 HH:mm")),
// // keyword4 = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("1小时"),
// // keyword5 = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("还有1个小时开始健身,请熟知!"),
// // remark = new Senparc.Weixin.MP.AdvancedAPIs.TemplateMessage.TemplateDataItem("您的 OpenId:" + openId),
// //};
// #endregion DPBMARK_END
// //System.Console.WriteLine("job test");
//}
/////
///// 记录到日志
/////
/////
/////
//public async Task RecordTaskLog(IJobExecutionContext context, SysTasksLog logModel)
//{
// //可以直接获取 JobDetail 的值
// IJobDetail job = context.JobDetail;
// logModel.InvokeTarget = job.JobType.FullName;
// logModel = await SysTasksLogService.AddTaskLog(job.Key.Name, logModel);
// //成功后执行次数+1
// if (logModel.Status == "0")
// {
// await SysTasksQzService.UpdateAsync(f => new SysTasksQz()
// {
// RunTimes = f.RunTimes + 1,
// LastRunTime = DateTime.Now
// }, f => f.ID.ToString() == job.Key.Name);
// }
// logger.Info($"执行任务【{job.Key.Name}|{logModel.JobName}】结果={logModel.JobMessage}");
//}
public Task Execute(IJobExecutionContext context)
{
throw new NotImplementedException();
}
}
}