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);
}
}
}