using Edu.Cache.User; using Edu.Model.CacheModel; using Edu.Module.Course; using Edu.Module.Customer; using Edu.Module.User; using Microsoft.Extensions.Hosting; using System; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace Edu.WebApi.Timers { /// /// 定时任务 /// public class TimedTaskServices : IHostedService, IDisposable { //定义一个定时器 private Timer _timer; /// /// 课程顾问部和市场部数据统计 /// private static readonly MarketConsultantModule marketConsultantModule = new MarketConsultantModule(); /// /// 教师行为数据统计 /// private static readonly TeacherStaticModule teacherStaticModule = new TeacherStaticModule(); /// /// 学员数据统计处理类 /// private static readonly StudentStatModule studentStatModule = new StudentStatModule(); /// /// 教育合同处理类 /// private static readonly EducationContractModule educationContractModule = new EducationContractModule(); private static int marketconsultant_Timer = 0; public Task StartAsync(CancellationToken cancellationToken) { Common.Plugin.LogHelper.WriteInfo("定时任务被启动"); int Interval = 0; Interval = 60; //Interval = 1; //绑定定时任务 //设置延迟时间 _timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(60 * Interval)); return Task.CompletedTask; } public Task StopAsync(CancellationToken cancellationToken) { Common.Plugin.LogHelper.WriteInfo("定时任务被关闭"); _timer?.Change(Timeout.Infinite, 0); return Task.CompletedTask; } /// /// 定时生成市场部和课程顾问部数据统计 /// /// /// private void DoWork(object state) { Common.Plugin.LogHelper.WriteInfo("定时任务被触发"); try { if (Interlocked.Exchange(ref marketconsultant_Timer, 1) == 0) { Common.Plugin.LogHelper.WriteInfo("DealMarketConsultantData========Start"); var today = DateTime.Now; var currentDate = Common.ConvertHelper.FormatDate(today); var startDate = Common.ConvertHelper.FormatDate(today.AddDays(-1)); if (!marketConsultantModule.CheckConsultantDataModule(startDate)) { marketConsultantModule.CreateConsultantDataModule(today); Common.Plugin.LogHelper.WriteInfo("CreateConsultantDataModule:" + startDate); } if (!marketConsultantModule.CheckMarketDataModule(startDate)) { marketConsultantModule.CreateMarketDataModule(today); Common.Plugin.LogHelper.WriteInfo("CreateMarketDataModule:" + startDate); } //缓存信息 UserInfo user = UserReidsCache.GetUserLoginInfo("1"); if (!studentStatModule.CheckStudentStaticModule(startDate)) { studentStatModule.CreateStudentStaticModule(user, startDate, currentDate, isInit: false); Common.Plugin.LogHelper.WriteInfo("CreateStudentStaticModule:" + startDate); } if (!studentStatModule.CheckStudentMarketModule(startDate)) { studentStatModule.CreateStudentMarketModule(user, startDate, currentDate, isInit: false); Common.Plugin.LogHelper.WriteInfo("CreateStudentMarketModule:" + startDate); } if (!studentStatModule.CheckStudentCompanyModule(startDate)) { studentStatModule.CreateStudentCompanyModule(user, startDate, currentDate, isInit: false); Common.Plugin.LogHelper.WriteInfo("CreateStudentCompanyModule:" + startDate); } if (!teacherStaticModule.CheckTeacherStaticExistsModule(startDate)) { teacherStaticModule.CreateTeacherStaticModule(user, startDate, currentDate, isInit: false); Common.Plugin.LogHelper.WriteInfo("CreateTeacherStaticModule:" + startDate); } Common.Plugin.LogHelper.WriteInfo("DealMarketConsultantData========End"); educationContractModule.UpdateEducationAnomalyContractModule(); Common.Plugin.LogHelper.WriteInfo("更新合同金额========End"); Interlocked.Exchange(ref marketconsultant_Timer, 0); } } catch (Exception ex) { Common.Plugin.LogHelper.Write(ex,"定时任务异常"); } } public void Dispose() { Common.Plugin.LogHelper.WriteInfo("定时任务被释放闭"); _timer?.Dispose(); //iis会回收这个定时任务,这边在回收的时候触发一个请求,来再次唤醒该服务 Thread.Sleep(5000); string url = "https://eduapi.oytour.com/api/login/Heart"; Common.Plugin.HttpHelper.HttpGet(url); } } }