123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- using System;
- using DinkToPdf.Contracts;
- using Microsoft.Azure.Functions.Worker;
- using Microsoft.Extensions.Configuration;
- using Microsoft.Extensions.Logging;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK;
- using TEAMModelOS.SDK.Extension;
- namespace TEAMModelOS.Function
- {
- public class IESTimerTrigger
- {
- private readonly ILogger _logger;
- /// <summary>
- /// 文档。https://docs.microsoft.com/zh-cn/azure/azure-functions/functions-bindings-timer?tabs=in-process&pivots=programming-language-csharp
- /// Timer 在线测试 https://ncrontab.swimburger.net/
- /// </summary>
- private readonly AzureCosmosFactory _azureCosmos;
- private readonly DingDing _dingDing;
- private readonly AzureStorageFactory _azureStorage;
- private readonly AzureRedisFactory _azureRedis;
- //private readonly IConverter _converter;
- private readonly SnowflakeId _snowflakeId;
- private readonly IHttpClientFactory _httpClient;
- private readonly CoreAPIHttpService _coreAPIHttpService;
- //private IPSearcher _ipSearcher;
- private readonly IConfiguration _configuration;
- public IESTimerTrigger(ILoggerFactory loggerFactory, IConfiguration configuration, CoreAPIHttpService coreAPIHttpService, IHttpClientFactory httpClient, SnowflakeId snowflakeId, AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, AzureRedisFactory azureRedis)
- {
- _logger = loggerFactory.CreateLogger<IESTimerTrigger>();
- _azureCosmos = azureCosmos;
- _dingDing = dingDing;
- _azureStorage = azureStorage;
- _azureRedis = azureRedis;
- // _converter = converter;
- _snowflakeId=snowflakeId;
- _httpClient = httpClient;
- // _ipSearcher = ipSearcher;
- _coreAPIHttpService = coreAPIHttpService;
- _configuration= configuration;
- }
- /// <summary>
- /// //0 1 * * * * 一天中每小时的第 1 分钟
- ///0 */10 * * * * 每五分钟一次
- /// </summary>
- /// <param name="myTimer"></param>
- /// <returns></returns>
- [Function("DailyReport")]
- public async Task DailyReport([TimerTrigger("0 1 * * * *")] TimerInfo myTimer)
- {
- _logger.LogInformation($"C# Timer trigger function executed at: {DateTime.Now}");
- try
- {
- await _dingDing.SendBotMsg($"{_coreAPIHttpService.options.location},定时任务{DateTimeOffset.Now.ToString("yyyy-MM-dd HH:mm:ss")}", GroupNames.成都开发測試群組);
- string? local = Environment.GetEnvironmentVariable("Option:Location");
- // if (local.Contains("Test")||local.Contains("Dep"))
- {
- int am = 9;
- int pm = 20;
- //int am = DateTimeOffset.Now.Hour;
- //int pm = DateTimeOffset.Now.Hour;
- var url = Environment.GetEnvironmentVariable("HaBookAuth:CoreAPI");
- var clientID = Environment.GetEnvironmentVariable("HaBookAuth:CoreService:clientID");
- var clientSecret = Environment.GetEnvironmentVariable("HaBookAuth:CoreService:clientSecret");
- string location = "";
- if (local!.Contains("China"))
- {
- location = "China";
- }
- else if (local.Contains("Global"))
- {
- location = "Global";
- }
- var client = _httpClient.CreateClient();
- var token = CoreTokenExtensions.CreateAccessToken(clientID, clientSecret, location).Result;
- if (client.DefaultRequestHeaders.Contains("Authorization"))
- {
- client.DefaultRequestHeaders.Remove("Authorization");
- client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
- }
- else
- {
- client.DefaultRequestHeaders.Add("Authorization", $"Bearer {token.AccessToken}");
- }
- var data = await TEAMModelOS.SDK.Models.Service.SystemService.AccumulateDaily(_configuration, _azureRedis, _azureCosmos, _coreAPIHttpService, _dingDing, client, _snowflakeId, url, am, pm);
- //await _dingDing.SendBotMsg($"返回数据{data.ToJsonString()}", GroupNames.成都开发測試群組);
- }
- }
- catch (Exception ex)
- {
- await _dingDing.SendBotMsg($"{DailyReport}\n{ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
- }
- if (myTimer.ScheduleStatus is not null)
- {
- _logger.LogInformation($"Next timer schedule at: {myTimer.ScheduleStatus.Next}");
- }
- }
- }
- }
|