服务端的TigerApi 框架,基于.NET6 2024 版本
Ben Lin
2025-01-10 7896af53e190bcecea516b1203d5020a0103f155
Tiger.Business/Services/Base/TigerJobBase.cs
@@ -21,11 +21,11 @@
        /// <summary>
        /// 开始时间
        /// </summary>
        public static DateTime StartTime { get; set; }
        public DateTime StartTime { get; set; }
        /// <summary>
        /// 保存日志
        /// </summary>
        public static ApiAction SaveLog(JobExecutingContext context, string remark)
        public ApiAction SaveLog(JobExecutingContext context, string remark)
        {
            ApiAction action = new ApiAction();
            Type type = Type.GetType(context.JobDetail.JobType, throwOnError: true);
@@ -121,97 +121,86 @@
        /// 判断时间,返回是否可以继续工作任务
        /// </summary>
        /// <returns></returns>
        public TskJobInput CheckIFCanGo()
        public TskJobInput CheckHowToDo()
        {
            TskJobInput tskJobInput = new TskJobInput();
            var dateTime = DateTime.Now;
            if (Args.Interval > 0)
            //按时间类型来运行
            switch (Args.Type)
            {
                tskJobInput.result = true;
                tskJobInput.input = new()
                {
                    startTime = dateTime.AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss"),
                    endTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
                };
            }
            else
            {
                //按时间类型来运行
                switch (Args.Type)
                {
                    case TrigArgs.EveryType.Milliseconds:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddMilliseconds(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddMilliseconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Seconds:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddSeconds(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddSeconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Minutes:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddMinutes(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddMinutes(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Hours:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddHours(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddHours(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Days:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Weeks:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-7);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Weekdays:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                    case TrigArgs.EveryType.Months:
                        dateTime = Trig.LastRunTime ?? DateTime.Now.AddMonths(-Args.ToRunEvery);
                        tskJobInput.result = (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
                        tskJobInput.input = new()
                        {
                            startTime = dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                            endTime = dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                        };
                        break;
                }
                case TrigArgs.EveryType.Milliseconds:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddMilliseconds(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalMilliseconds > Args.ToRunEvery;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y"? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddMilliseconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Seconds:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddSeconds(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalSeconds > Args.ToRunEvery;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddSeconds(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Minutes:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddMinutes(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalMinutes > Args.ToRunEvery;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddMinutes(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Hours:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddHours(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalHours > Args.ToRunEvery;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddHours(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Days:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Weeks:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-7);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * 7;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Weekdays:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddDays(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery;
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddDays(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
                case TrigArgs.EveryType.Months:
                    dateTime = Trig.LastRunTime ?? DateTime.Now.AddMonths(-Args.ToRunEvery);
                    tskJobInput.result = Args.Interval > 0 ? true : (DateTime.Now - dateTime).TotalDays > Args.ToRunEvery * DateTime.DaysInMonth(DateTime.Now.Year, DateTime.Now.Month);
                    tskJobInput.input = new()
                    {
                        startTime = Args.Interval > 0 ? ((DateTime)Trig.LastRunTime).AddHours(-Args.Interval).ToString("yyyy-MM-dd HH:mm:ss") : dateTime.ToString("yyyy-MM-dd HH:mm:ss"),
                        endTime = Args.ByInterval == "Y" ? dateTime.ToString("yyyy-MM-dd HH:mm:ss") : dateTime.AddMonths(Args.ToRunEvery).ToString("yyyy-MM-dd HH:mm:ss"),
                    };
                    break;
            }
            return tskJobInput;
        }