TaskHandler.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334
  1. using FreeScheduler;
  2. using System.Collections.Generic;
  3. namespace ZhonTai.Admin.Tools.TaskScheduler;
  4. public class TaskHandler : ITaskHandler
  5. {
  6. readonly IFreeSql _fsql;
  7. public TaskHandler(IFreeSql fsql)
  8. {
  9. _fsql = fsql;
  10. }
  11. public IEnumerable<TaskInfo> LoadAll() => _fsql.Select<TaskInfo>().Where(a => a.Status == TaskStatus.Running && (a.Round < 0 || a.CurrentRound < a.Round)).ToList();
  12. public TaskInfo Load(string id) => _fsql.Select<TaskInfo>().Where(a => a.Id == id).First();
  13. public void OnAdd(TaskInfo task) => _fsql.Insert<TaskInfo>().NoneParameter().AppendData(task).ExecuteAffrows();
  14. public void OnRemove(TaskInfo task) => _fsql.Delete<TaskInfo>().Where(a => a.Id == task.Id).ExecuteAffrows();
  15. public void OnExecuted(Scheduler scheduler, TaskInfo task, TaskLog result)
  16. {
  17. _fsql.Transaction(() =>
  18. {
  19. _fsql.Update<TaskInfo>().NoneParameter().SetSource(task)
  20. .UpdateColumns(a => new { a.CurrentRound, a.ErrorTimes, a.LastRunTime, a.Status })
  21. .ExecuteAffrows();
  22. _fsql.Insert<TaskLog>().NoneParameter().AppendData(result).ExecuteAffrows();
  23. });
  24. }
  25. public virtual void OnExecuting(Scheduler scheduler, TaskInfo task)
  26. {
  27. }
  28. }