using System; using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using System.Linq; using Microsoft.Extensions.Hosting; using MySystem; using MySystem.JobModels; using Library; using LitJson; public class TaskService { public readonly static TaskService Instance = new TaskService(); private TaskService() { } //要执行的方法 public void DoQueue(int taskid, string date, int kind) { TimedTasks task = RedisDbconn.Instance.Get("TimedTasks:" + taskid) ?? new TimedTasks(); WebCMSEntities db = new WebCMSEntities(); TaskFinish finish = db.TaskFinish.Add(new TaskFinish() { CreateDate = DateTime.Now, TaskId = task.Id, }).Entity; db.SaveChanges(); JobMqMsg job = new JobMqMsg(); job.OrderString = task.OrderJson; job.Id = task.Id; job.Note = task.Note; job.FinishId = finish.Id; string jobJson = PublicFunction.ObjectToJsonString(job); finish.TargetData = jobJson; db.SaveChanges(); db.Dispose(); if (task.OrderJson.StartsWith("Ap:") && task.OrderJson.EndsWith(":Sycn")) { } else if (task.OrderJson.StartsWith("Sp:")) { Brand brand = new Brand(); brand.Id = task.BrandId; TaskSpGetData data = RedisDbconn.Instance.Get("TaskSpGet:" + task.Id); List fields = RedisDbconn.Instance.GetList("TaskSpGet:Fields:" + task.Id, 1, 1000); brand.FieldRelation = fields; brand.TargetTableName = data.TargetTableName; brand.ReqType = data.ReqType; brand.Url = data.ReqUrl; brand.ReqParam = data.ReqParam; brand.FtpUserName = data.FtpUserName; brand.FtpPassword = data.FtpPassword; brand.CheckKey = data.CheckKey; brand.IsCheck = data.IsCheck == 1 ? true : false; job.BrandInfo = brand; job.FinishId = finish.Id; if (task.OrderJson.EndsWith(":Sycn")) { PublicImportDataService.Instance.Test(job, date, kind); } else if (task.OrderJson.EndsWith(":SpServer")) { } } else { if (task.OrderJson == "PosTradeStat" || task.OrderJson == "TimerStat" || task.OrderJson == "AlipayPayBack2") { } else { } } } public string SycnRedis() { WebCMSEntities db = new WebCMSEntities(); List tasks = db.TimedTasks.Where(m => m.Status == 1).ToList(); RedisDbconn.Instance.Clear("TimedTasks*"); foreach (TimedTasks task in tasks) { RedisDbconn.Instance.AddList("TimedTasks", task.Id); task.Status = 0; RedisDbconn.Instance.Set("TimedTasks:" + task.Id, task); } List sptasks = db.TimedTasks.Where(m => m.SeoTitle == "customize" && m.ServerName == "SpServer" && m.Status == 1).ToList(); RedisDbconn.Instance.Clear("TaskSpGet"); foreach (TimedTasks task in sptasks) { task.Status = 0; RedisDbconn.Instance.Set("TimedTasks:" + task.Id, task); RedisDbconn.Instance.AddList("TaskSpGet", task.Id); TaskSpGetData spget = db.TaskSpGetData.FirstOrDefault(m => m.TaskId == task.Id) ?? new TaskSpGetData(); RedisDbconn.Instance.Set("TaskSpGet:" + task.Id, spget); List fields = db.TaskSpFieldRelation.Where(m => m.TaskId == task.Id).ToList(); RedisDbconn.Instance.Clear("TaskSpGet:Fields:" + task.Id); foreach (TaskSpFieldRelation field in fields) { RedisDbconn.Instance.AddList("TaskSpGet:Fields:" + task.Id, new FieldRelationTable() { SourceFieldName = field.SourceFieldName, TargetFieldName = field.TargetFieldName, TargetFieldType = field.TargetFieldType, }); } } db.Dispose(); return "success"; } public JobMqMsg GetJob(int taskid) { TimedTasks task = RedisDbconn.Instance.Get("TimedTasks:" + taskid) ?? new TimedTasks(); WebCMSEntities db = new WebCMSEntities(); JobMqMsg job = new JobMqMsg(); job.OrderString = task.OrderJson; job.Id = task.Id; job.Note = task.Note; string jobJson = PublicFunction.ObjectToJsonString(job); db.SaveChanges(); db.Dispose(); Brand brand = new Brand(); brand.Id = task.BrandId; TaskSpGetData data = RedisDbconn.Instance.Get("TaskSpGet:" + task.Id); List fields = RedisDbconn.Instance.GetList("TaskSpGet:Fields:" + task.Id, 1, 1000); brand.FieldRelation = fields; brand.TargetTableName = data.TargetTableName; brand.ReqType = data.ReqType; brand.Url = data.ReqUrl; brand.ReqParam = data.ReqParam; brand.FtpUserName = data.FtpUserName; brand.FtpPassword = data.FtpPassword; brand.CheckKey = data.CheckKey; brand.IsCheck = data.IsCheck == 1 ? true : false; job.BrandInfo = brand; return job; } }