服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2024-10-27 8b7114c93a3a3a6c9356393ea695f881d0da8cbb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
using Rhea.Common;
using Sundial;
using System;
using Tiger.IBusiness;
using Tiger.Model;
 
namespace Tiger.Business
{
    /// <summary>
    /// 作业基类
    /// </summary>
    public class TigerJobBase
    {
        /// <summary>
        /// 开始时间
        /// </summary>
        public static DateTime StartTime { get; set; }
        /// <summary>
        /// 保存日志
        /// </summary>
        public static ApiAction SaveLog(JobExecutingContext context,string remark) {
            ApiAction action = new ApiAction();
            Type type = Type.GetType(context.JobDetail.JobType, throwOnError: true);
            var job = Biz.Db.Queryable<TSK_JOB>().Where(x=>x.JobName == context.JobId && x.JobType == type.Name).First();
            var logentity = new TSK_LOG { 
                JobId = job.ID,
                TriggerType =context.JobDetail.JobType,
                AssemblyName = context.JobDetail.AssemblyName,
                Args = context.Trigger.Args,
                Operation = context.Trigger.Status.ToString(),
                Status = "Successed",
                StartTime = StartTime,
                EndTime = context.Trigger.EndTime,
                ElapsedTime = context.Trigger.ElapsedTime,
                Remark = remark
            };
 
            var db = Business.Biz.Db;
            //保存到数据库
            var dbTran = db.UseTran(() =>
            {
                db.Insertable(logentity).ExecuteCommand();
            });
            if (!dbTran.IsSuccess)
            {
                action.GetResponse().CatchExceptionWithLog(dbTran.ErrorException, $"作业保存到数据库异常");
            }
            return action;
        }
 
        /// <summary>
        /// 保存日志
        /// </summary>
        /// <param name="JobName"></param>
        /// <param name="remark"></param>
        /// <returns></returns>
        public static ApiAction SaveFluentSchedulerLog(string JobName,string status, string remark)
        {
            ApiAction action = new ApiAction();
            var job = Biz.Db.Queryable<TSK_JOB>().Where(x => x.JobName == JobName).IncludesAllFirstLayer().First();
            var trig = job.Triggers?[0];
            if (trig != null)
            {
                trig.ElapsedTime = (long)Math.Ceiling((DateTime.Now-StartTime).TotalMilliseconds);
                trig.StartTime = StartTime;
                trig.EndTime = DateTime.Now;
            }
            else {
                action.IsSuccessed = false;
                action.LocaleMsg = new($"工作任务不存在");
                Logger.Scheduler.Error("工作任务不存在\r\n");
                return action;
            }
            var logentity = new TSK_LOG
            {
                JobId = job.ID,
                AssemblyName = job.AssemblyName,
                Args = trig.Args,
                //Operation = job.Triggers?[0].Status.ToString(),
                Status = status, //job.Triggers?[0].Status.ToString(),
                StartTime = trig.StartTime,
                EndTime = trig.EndTime,
                ElapsedTime = trig.ElapsedTime,
                Remark = remark
            };
 
            var db = Business.Biz.Db;
            //保存到数据库
            var dbTran = db.UseTran(() =>
            {
                db.Updateable(trig, "System_Job").UpdateColumns(q => new { q.StartTime, q.ElapsedTime,q.UpdatedTime,q.UPDATE_USER}).ExecuteCommand();
                db.Insertable(logentity).ExecuteCommand();
            });
            if (!dbTran.IsSuccess)
            {
                action.GetResponse().CatchExceptionWithLog(dbTran.ErrorException, $"作业日志保存到数据库异常");
            }
            Logger.Scheduler.Info($"计划调度(名称:{JobName})作业日志保存到数据库完成\r\n");
            return action;
        }
 
    }
}