123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687 |
- using Azure.Cosmos;
- using Azure.Storage.Blobs.Models;
- using HTEXLib.COMM.Helpers;
- using Microsoft.Azure.Cosmos.Table;
- using Microsoft.Azure.Functions.Worker;
- using Microsoft.Azure.Functions.Worker.Http;
- using System;
- using System.Collections.Generic;
- using System.IO;
- using System.Linq;
- using System.Net;
- using System.Reflection;
- using System.Text;
- using System.Text.Json;
- using System.Threading.Tasks;
- using TEAMModelOS.Filter;
- using TEAMModelOS.SDK;
- using TEAMModelOS.SDK.DI;
- using TEAMModelOS.SDK.Extension;
- using TEAMModelOS.SDK.Models;
- using TEAMModelOS.SDK.Models.Cosmos.Teacher;
- using TEAMModelOS.SDK.Models.Table;
- using static TEAMModelOS.SDK.Models.Teacher;
- namespace TEAMModelOS.FunctionV4.HttpTrigger
- {
- public class WebhookHttpTrigger
- {
- private readonly AzureCosmosFactory _azureCosmos;
- private readonly DingDing _dingDing;
- private readonly AzureStorageFactory _azureStorage;
- private readonly AzureRedisFactory _azureRedis;
- public WebhookHttpTrigger(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage , AzureRedisFactory azureRedis)
- {
- _azureCosmos = azureCosmos;
- _dingDing = dingDing;
- _azureStorage = azureStorage;
- _azureRedis = azureRedis;
- }
- [Function("group-change")]
- [ApiToken(Auth = "1302", Name = "课程详细信息", RWN = "N")]
- public async Task<HttpResponseData> NoticeGroupChange([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "webhook/group-change")] HttpRequestData request) {
- var response = request.CreateResponse(HttpStatusCode.OK);
- (string school, List < BusinessConfig > businessConfigs ,GroupChange data) = await GetRequestData<GroupChange>(request);
- if (string.IsNullOrWhiteSpace(school)) {
-
- }
- return response;
- }
- public async Task<(string school, List<BusinessConfig> businessConfigs, T data)> GetRequestData<T>(HttpRequestData request)
- {
- var response = request.CreateResponse(HttpStatusCode.OK);
- string data = await new StreamReader(request.Body).ReadToEndAsync();
- var json = JsonDocument.Parse(data).RootElement;
- string school = null;
- List<BusinessConfig> businessConfigs = null ;
- if (json.TryGetProperty("school", out JsonElement _school))
- {
- school = _school.GetString();
- var table = _azureStorage.GetCloudTableClient().GetTableReference("IESOpenApi");
- List<BusinessSchool> schools = table.FindListByDictSync<BusinessSchool>(new Dictionary<string, object> { { "PartitionKey", $"BusinessSchool" }, { "school", school } });
- var bizid = schools.Select(x => x.bizid).ToList();
- List<string> Codes = new List<string>();
- bizid.ForEach(x => {
- Codes.Add($" RowKey {QueryComparisons.Equal} '{x}' ");
- });
- string tbqurey = $"PartitionKey {QueryComparisons.Equal} 'BusinessConfig' and ( {string.Join(" or ", Codes)} ) ";
- var result = await table.ExecuteQuerySegmentedAsync(new TableQuery<BusinessConfig>().Where(tbqurey), null);
- if (result != null) {
- businessConfigs= result.Results;
- }
- }
- if (json.TryGetProperty("data", out JsonElement _data))
- {
- return (school, businessConfigs, _data.ToObject<T>());
- }
- else { return (school, businessConfigs, default(T)); }
- }
- }
-
- public class WebhookSchoolData {
- public string school { get; set; }
- public string data { get; set; }
- }
- }
|