123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- using Azure.Cosmos;
- using Azure.Storage.Blobs.Models;
- using HTEXLib.COMM.Helpers;
- using Microsoft.AspNetCore;
- using Microsoft.AspNetCore.Http;
- 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.Net.Http;
- using System.Net.Http.Json;
- using System.Reflection;
- using System.Security.Policy;
- 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.BI.BINormal;
- using TEAMModelOS.SDK.Models.Cosmos.Teacher;
- using TEAMModelOS.SDK.Models.Service;
- using TEAMModelOS.SDK.Models.Table;
- using static TEAMModelOS.SDK.Models.Teacher;
- namespace TEAMModelOS.SDK.DI
- {
- public class WebHookHttpTrigger
- {
- private readonly AzureCosmosFactory _azureCosmos;
- private readonly DingDing _dingDing;
- private readonly AzureStorageFactory _azureStorage;
- private readonly AzureRedisFactory _azureRedis;
- private readonly IHttpClientFactory _httpClient;
- public WebHookHttpTrigger(IHttpClientFactory httpClient, AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, AzureRedisFactory azureRedis)
- {
- _azureCosmos = azureCosmos;
- _dingDing = dingDing;
- _azureStorage = azureStorage;
- _azureRedis = azureRedis;
- _httpClient = httpClient;
- }
- /// <summary>
- /// 学校数据授权变更,学校基础信息 10开头
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [Function("school-auth-change")]
- [ApiToken(Auth = "1001", Name = "学校数据授权变更", TName = "變更學校數據授權", EName = "School Auth Changes", RWN = "N")]
- public async Task<HttpResponseData> NoticeSchoolAuthChange([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "webhook/school-auth-change")] HttpRequestData request)
- {
- var response = request.CreateResponse(HttpStatusCode.OK);
- string datastr = await new StreamReader(request.Body).ReadToEndAsync();
- var json = JsonDocument.Parse(datastr).RootElement;
- SchoolAuthChange data = null;
- if (json.TryGetProperty("data", out JsonElement _data))
- {
- data = _data.ToObject<SchoolAuthChange>();
- }
- (List<BizConfig> businessConfigs, List<(List<string> urls, string head, string token, BizConfig config)> webhooks) = await WebHookService.GetRequestData(_data, _azureCosmos, _azureRedis, _azureStorage);
- if (webhooks.IsNotEmpty())
- {
- foreach (var webhook in webhooks)
- {
- foreach (var url in webhook.urls)
- {
- await WebHookService.Send(new
- {
- data.addSchools,
- data.rmvSchools
- }, (url, webhook.head, webhook.token, webhook.config), "school-auth-change",_httpClient,_dingDing);
- }
- }
- }
- return response;
- }
-
- /// <summary>
- /// 名单变更通知,名单类12开头
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [Function("group-member-change")]
- [ApiToken(Auth = "1201", Name = "名单成员变更", TName = "變更名單成員資料", EName = "Name List Member Changes", RWN = "N")]
- public async Task<HttpResponseData> NoticeGroupChange([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = "webhook/group-member-change")] HttpRequestData request)
- {
- var response = request.CreateResponse(HttpStatusCode.OK);
- string datastr = await new StreamReader(request.Body).ReadToEndAsync();
- var json = JsonDocument.Parse(datastr).RootElement;
- GroupChange data = null;
- if (json.TryGetProperty("data", out JsonElement _data)){
- data= _data.ToObject<GroupChange>();
- data.client="web";
- }
- (List<BizConfig> businessConfigs, List<(List<string> urls, string head, string token, BizConfig config)> webhooks ) = await WebHookService.GetRequestData(_data, _azureCosmos,_azureRedis,_azureStorage);
- if (webhooks.IsNotEmpty() && !string.IsNullOrWhiteSpace(data.school))
- {
- foreach (var webhook in webhooks)
- {
- foreach (var url in webhook.urls)
- {
- await WebHookService.Send(new
- {
- data.name,
- data.client,
- data.status,
- data.type,
- data.listid,
- data.tmdjoin,
- data.tmdleave,
- data.stujoin,
- data.stuleave,
- data.tchjoin,
- data.tchleave,
- data.school
- }, (url, webhook.head, webhook.token, webhook.config), "group-member-change", _httpClient, _dingDing);
- }
- }
- }
- return response;
- }
-
- }
- }
|