ScsStudyApisService.cs 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529
  1. using Azure.Cosmos;
  2. using HTEXLib.COMM.Helpers;
  3. using HTEXLib.Helpers.ShapeHelpers;
  4. using Microsoft.Extensions.Configuration;
  5. using Microsoft.Extensions.DependencyInjection;
  6. using Microsoft.Extensions.Options;
  7. using System;
  8. using System.Collections.Generic;
  9. using System.IO;
  10. using System.Linq;
  11. using System.Net;
  12. using System.Net.Http;
  13. using System.Text;
  14. using System.Text.Json;
  15. using System.Threading.Tasks;
  16. using TEAMModelOS.SDK.Extension;
  17. using TEAMModelOS.SDK.Models;
  18. using TEAMModelOS.SDK.Models.Dtos;
  19. namespace TEAMModelOS.SDK.DI
  20. {
  21. public static class ScsStudyApisService
  22. {
  23. public static string Code { get; set; }
  24. // public static Dictionary<string, object> parameterMap = null;
  25. //private readonly IWebHostEnvironment _environment;
  26. //public bool check = true;
  27. //private readonly IConfiguration _configuration;
  28. // private readonly DI.DingDing _dingDing;
  29. //public readonly Option _option;
  30. //public ScsStudyApisService( DingDing dingDing, AzureStorageFactory azureStorage, AzureRedisFactory azureRedis, HttpClient httpClient, SnowflakeId snowflakeId)
  31. //{
  32. // _dingDing = dingDing;
  33. // _azureStorage = azureStorage;
  34. // _azureRedis = azureRedis;
  35. // _httpClient = httpClient;
  36. // //_environment = environment;
  37. // _snowflakeId = snowflakeId;
  38. // //_option = option?.Value;
  39. // //_configuration = configuration;
  40. // //_dingDing = dingDing;
  41. //}
  42. /// <summary>
  43. /// 5.3.1.1获取项目列表
  44. /// </summary>
  45. /// <param name="areaId"></param>
  46. /// <param name="_accessConfig"></param>
  47. /// <returns></returns>
  48. public static async Task<(int state,string json)> GetProjectInfoByTrainComIDV2(HttpClient _httpClient, DingDing _dingDing ,AzureStorageFactory _azureStorage ,string areaId, string accessConfig)
  49. {
  50. List<ScProject> projects = new();
  51. //var response = req.CreateResponse(HttpStatusCode.OK);
  52. //List<ScProject> projects = new List<ScProject>();
  53. //string data = await new StreamReader(req.Body).ReadToEndAsync();
  54. //JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  55. //ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  56. //string areaId = null;
  57. //if (data.ToObject<JsonElement>().TryGetProperty("areaId", out JsonElement _areaId))
  58. //{
  59. // areaId = $"{_areaId}";
  60. //}
  61. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  62. Code = "GetProjectInfoByTrainComID";
  63. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  64. parameterMap.Add("TrainComID", config.trainComID);
  65. ScsResult result = new() { bizcode = Code, title = "5.3.1.1获取项目列表" };
  66. try
  67. {
  68. result = await ThirdApisService.Post(_httpClient,config.url, Code, config.passKey, config.privateKey, parameterMap);
  69. if (result.result)
  70. {
  71. projects = result.content.ToObject<List<ScProject>>();
  72. }
  73. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  74. return (200, projects.ToJsonString());
  75. }
  76. catch (Exception ex)
  77. {
  78. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{areaId}\n{accessConfig} \n", GroupNames.醍摩豆服務運維群組);
  79. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  80. return (500, projects.ToJsonString());
  81. }
  82. }
  83. /// <summary>
  84. /// 5.3.1.1获取项目列表
  85. /// </summary>
  86. /// <param name="areaId"></param>
  87. /// <param name="_accessConfig"></param>
  88. /// <returns></returns>
  89. public static async Task<(int state, string json)> GetProjectInfoByTrainComID(HttpClient _httpClient, DingDing _dingDing, AzureStorageFactory _azureStorage, string areaId, string accessConfig)
  90. {
  91. List<ScProject> projects = new();
  92. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  93. Code = "GetProjectInfoByTrainComID";
  94. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  95. parameterMap.Add("TrainComID", config.trainComID);
  96. ScsResult result = new() { bizcode = Code, title = "5.3.1.1获取项目列表" };
  97. try
  98. {
  99. result = await ThirdApisService.Post(_httpClient,config.url, Code, config.passKey, config.privateKey, parameterMap);
  100. if (result.result)
  101. {
  102. projects = result.content.ToObject<List<ScProject>>();
  103. }
  104. else
  105. {
  106. }
  107. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  108. return (200, projects.ToJsonString());
  109. }
  110. catch (Exception ex)
  111. {
  112. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{areaId}\n{accessConfig}\n", GroupNames.醍摩豆服務運維群組);
  113. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  114. return (500, projects.ToJsonString());
  115. }
  116. }
  117. /// <summary>
  118. /// 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表
  119. /// </summary>
  120. /// <param name="areaId"></param>
  121. /// <param name="_accessConfig"></param>
  122. /// <returns></returns>
  123. public static async Task<(int state, string json)> GetSchoolList(HttpClient _httpClient, DingDing _dingDing,AzureStorageFactory _azureStorage, string areaId, string accessConfig)
  124. {
  125. List<ScSchool> scSchools = new();
  126. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  127. Code = "GetSchoolList";
  128. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  129. parameterMap.Add("TrainComID", config.trainComID);
  130. List<ScsResult> results = new();
  131. try
  132. {
  133. if (config.p.IsNotEmpty())
  134. {
  135. foreach (var ps in config.p)
  136. {
  137. if (ps.status == 1)
  138. {
  139. parameterMap["ProjectID"] = ps.pd;
  140. parameterMap["ProjectItemID"] = ps.pid;
  141. ScsResult result = new ScsResult { bizcode = Code, title = " 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表" };
  142. result = await ThirdApisService.Post(_httpClient,config.url, Code, config.passKey, config.privateKey, parameterMap);
  143. if (result.result)
  144. {
  145. List<ScSchool> schools = result.content.ToObject<List<ScSchool>>();
  146. if (schools.IsNotEmpty())
  147. {
  148. //schools.ForEach(x => { x.ProjectID = int.Parse(ps.pd); x.ProjectItemID = int.Parse(ps.pid); });
  149. scSchools.AddRange(schools);
  150. }
  151. }
  152. results.Add(result);
  153. }
  154. }
  155. }
  156. //await response.WriteAsJsonAsync(new { data = scSchools.ToJsonString() });
  157. return (200, scSchools.ToJsonString());
  158. }
  159. catch (Exception ex)
  160. {
  161. ScsProject project = null;
  162. var ps = config.p.FindAll(z => z.status == 1);
  163. if (ps.IsNotEmpty())
  164. {
  165. project = ps[0];
  166. }
  167. if (project != null)
  168. {
  169. var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
  170. scSchools = await table.FindListByDict<ScSchool>(new Dictionary<string, object> { { "PartitionKey", "ScSchool" }, { "ProjectID", int.Parse(project.pd) }, { "ProjectItemID", int.Parse(project.pid) } });
  171. if (scSchools.IsNotEmpty())
  172. {
  173. return (200, scSchools.ToJsonString());
  174. }
  175. else
  176. {
  177. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolList\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{areaId}\n{accessConfig}\n", GroupNames.醍摩豆服務運維群組);
  178. return (500, scSchools.ToJsonString());
  179. }
  180. }
  181. else
  182. {
  183. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolList\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{areaId}\n{accessConfig}\n", GroupNames.醍摩豆服務運維群組);
  184. return (500, scSchools.ToJsonString());
  185. }
  186. }
  187. }
  188. /// <summary>
  189. /// 5.3.1.2获取学员名单
  190. /// </summary>
  191. /// <param name="areaId"></param>
  192. /// <param name="accessConfig"></param>
  193. /// <returns></returns>
  194. public static async Task<(int state, string json)> GetTeachersListByProject(HttpClient _httpClient, DingDing _dingDing, AzureStorageFactory _azureStorage, string areaId, string accessConfig)
  195. {
  196. List<ScTeacher> scTeachers = new();
  197. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  198. Code = "GetTeachersListByProject";
  199. var parameterMap = new Dictionary<string, object>();
  200. parameterMap.Add("TrainComID", config.trainComID);
  201. List<ScsResult> results = new List<ScsResult>();
  202. try
  203. {
  204. if (config.p.IsNotEmpty())
  205. {
  206. foreach (var ps in config.p)
  207. {
  208. if (ps.status == 1)
  209. {
  210. parameterMap["ProjectID"] = ps.pd;
  211. parameterMap["ProjectItemID"] = ps.pid;
  212. ScsResult result = new ScsResult { bizcode = Code, title = "5.3.1.2获取学员名单" };
  213. result = await ThirdApisService.Post(_httpClient,config.url, Code, config.passKey, config.privateKey, parameterMap);
  214. if (result.result)
  215. {
  216. List<ScTeacher> teachers = result.content.ToObject<List<ScTeacher>>();
  217. if (teachers.IsNotEmpty())
  218. {
  219. scTeachers.AddRange(teachers);
  220. }
  221. }
  222. results.Add(result);
  223. }
  224. }
  225. }
  226. return (200, scTeachers.ToJsonString());
  227. }
  228. catch (Exception ex)
  229. {
  230. ScsProject project = null;
  231. var ps = config.p.FindAll(z => z.status == 1);
  232. if (ps .IsNotEmpty())
  233. {
  234. project = ps[0];
  235. }
  236. if (project != null)
  237. {
  238. var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
  239. scTeachers = await table.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" }, { "ProjectID", int.Parse(project.pd) }, { "ProjectItemID", int.Parse(project.pid) } });
  240. if (scTeachers.IsNotEmpty())
  241. {
  242. return (200, scTeachers.ToJsonString());
  243. }
  244. else
  245. {
  246. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetTeachersListByProject\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n", GroupNames.醍摩豆服務運維群組);
  247. return (500, scTeachers.ToJsonString());
  248. }
  249. }
  250. else
  251. {
  252. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetTeachersListByProject\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n", GroupNames.醍摩豆服務運維群組);
  253. return (500, scTeachers.ToJsonString());
  254. }
  255. }
  256. }
  257. /// <summary>
  258. /// 5.3.1.20获取学校设置的可选能力点
  259. /// </summary>
  260. /// <param name="areaId"></param>
  261. /// <param name="accessConfig"></param>
  262. /// <param name="schoolCode"></param>
  263. /// <returns></returns>
  264. public static async Task<(int state, string json)> GetSchoolDiagnosis(HttpClient _httpClient, DingDing _dingDing, AzureStorageFactory _azureStorage, string areaId, string accessConfig, string schoolCode)
  265. {
  266. List<ScsProjectDiagnosis> projects = new();
  267. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  268. Code = "GetSchoolDiagnosis";
  269. var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
  270. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  271. parameterMap.Add("TrainComID", config.trainComID);
  272. List<ScsResult> results = new List<ScsResult>();
  273. try
  274. {
  275. if (config.p.IsNotEmpty())
  276. {
  277. foreach (var ps in config.p)
  278. {
  279. if (ps.status == 1)
  280. {
  281. parameterMap["ProjectID"] = ps.pd;
  282. parameterMap["ProjectItemID"] = ps.pid;
  283. parameterMap["SchoolID"] = $"{schoolCode}";
  284. parameterMap["School"] = $"{schoolCode}";
  285. ScsResult result = new ScsResult { bizcode = Code, title = " 5.3.1.20获取学校设置的可选能力点" };
  286. result = await ThirdApisService.Post(_httpClient,config.url, Code, config.passKey, config.privateKey, parameterMap);
  287. if (result.result)
  288. {
  289. List<ScPDiagnosis> diagnoses = result.content.ToObject<List<ScPDiagnosis>>();
  290. if (diagnoses.IsNotEmpty())
  291. {
  292. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses, });
  293. await table.SaveOrUpdate<ScProjectDiagnosis>(new ScProjectDiagnosis
  294. {
  295. schoolCode = $"{schoolCode}",
  296. areaId = areaId,
  297. ProjectID = int.Parse(ps.pd),
  298. ProjectItemID = int.Parse(ps.pid),
  299. RowKey = $"{ps.pid}-{schoolCode}",
  300. PartitionKey = "ScSchoolDiagnosis",
  301. abilityNos = diagnoses.ToJsonString()
  302. });
  303. }
  304. }
  305. else
  306. {
  307. List<ScProjectDiagnosis> teacherDiagnoses = await table.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } });
  308. if (teacherDiagnoses.IsNotEmpty())
  309. {
  310. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
  311. }
  312. }
  313. results.Add(result);
  314. }
  315. }
  316. }
  317. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  318. return (200,projects.ToJsonString());
  319. }
  320. catch (Exception ex)
  321. {
  322. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolDiagnosis\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
  323. if (config.p.IsNotEmpty())
  324. {
  325. foreach (var ps in config.p)
  326. {
  327. List<ScProjectDiagnosis> teacherDiagnoses = await table.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } });
  328. if (teacherDiagnoses.IsNotEmpty())
  329. {
  330. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
  331. }
  332. }
  333. }
  334. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  335. return (200,projects.ToJsonString());
  336. }
  337. }
  338. /// <summary>
  339. /// 5.3.1.19获取项目设置的可选能力点
  340. /// </summary>
  341. /// <param name="areaId"></param>
  342. /// <param name="accessConfig"></param>
  343. /// <returns></returns>
  344. public static async Task<(int state, string json)> GetProjectDiagnosis(HttpClient _httpClient, DingDing _dingDing, AzureStorageFactory _azureStorage, string areaId, string accessConfig)
  345. {
  346. List<ScsProjectDiagnosis> projects = new();
  347. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  348. Code = "GetProjectDiagnosis";
  349. var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
  350. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  351. parameterMap.Add("TrainComID", config.trainComID);
  352. List<ScsResult> results = new();
  353. try
  354. {
  355. if (config.p.IsNotEmpty())
  356. {
  357. foreach (var ps in config.p)
  358. {
  359. if (ps.status == 1)
  360. {
  361. parameterMap["ProjectID"] = ps.pd;
  362. parameterMap["ProjectItemID"] = ps.pid;
  363. ScsResult result = new ScsResult { bizcode = Code, title = "5.3.1.19获取项目设置的可选能力点" };
  364. result = await ThirdApisService.Post(_httpClient,config.url, Code, config.passKey, config.privateKey, parameterMap);
  365. if (result.result)
  366. {
  367. List<ScPDiagnosis> diagnoses = result.content.ToObject<List<ScPDiagnosis>>();
  368. if (diagnoses.IsNotEmpty())
  369. {
  370. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = diagnoses });
  371. await table.SaveOrUpdate<ScProjectDiagnosis>(new ScProjectDiagnosis { areaId = areaId, RowKey = $"{ps.pid}", PartitionKey = "ScProjectDiagnosis", abilityNos = diagnoses.ToJsonString() });
  372. }
  373. }
  374. else
  375. {
  376. List<ScProjectDiagnosis> teacherDiagnoses = await table.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } });
  377. if (teacherDiagnoses.IsNotEmpty())
  378. {
  379. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
  380. }
  381. }
  382. results.Add(result);
  383. }
  384. }
  385. }
  386. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  387. return (200, projects.ToJsonString());
  388. }
  389. catch (Exception ex)
  390. {
  391. if (config.p.IsNotEmpty())
  392. {
  393. foreach (var ps in config.p)
  394. {
  395. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectDiagnosis\n{ex.Message}\n{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
  396. List<ScProjectDiagnosis> teacherDiagnoses = await table.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } });
  397. if (teacherDiagnoses.IsNotEmpty())
  398. {
  399. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
  400. }
  401. }
  402. }
  403. //await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  404. return (200, projects.ToJsonString());
  405. }
  406. }
  407. /// <summary>
  408. /// 5.3.1.3通过项目编号获取学员测评能力项V2
  409. /// </summary>
  410. /// <param name="areaId"></param>
  411. /// <param name="accessConfig"></param>
  412. /// <param name="pxid"></param>
  413. /// <param name="schoolCode"></param>
  414. /// <returns></returns>
  415. public static async Task<(int state, string json)> GetDiagnosisListByProject_V2(HttpClient _httpClient, DingDing _dingDing, AzureStorageFactory _azureStorage, string areaId, string accessConfig, string pxid, string schoolCode)
  416. {
  417. List<string> abilityNos = new();
  418. var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
  419. try
  420. {
  421. List<ScTeacherDiagnosis> teacherDiagnoses = await table.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
  422. if (teacherDiagnoses.IsNotEmpty())
  423. {
  424. abilityNos = teacherDiagnoses[0].abilityNos.ToObject<List<string>>();
  425. }
  426. else {
  427. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  428. Code = "GetDiagnosisListByProject_V2";
  429. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  430. parameterMap.Add("TrainComID", config.trainComID);
  431. parameterMap.Add("PXID", pxid);
  432. ScsResult result = new() { bizcode = Code, title = "5.3.1.3通过项目编号获取学员测评能力项V2" };
  433. result = await ThirdApisService.Post(_httpClient, config.url, Code, config.passKey, config.privateKey, parameterMap);
  434. if (result.result)
  435. {
  436. List<ScDiagnosis> diagnoses = result.content.ToObject<List<ScDiagnosis>>();
  437. if (diagnoses != null)
  438. {
  439. abilityNos = diagnoses.Select(x => x.DiagnosisDicNum).ToList();
  440. }
  441. if (abilityNos.IsNotEmpty())
  442. {
  443. await table.SaveOrUpdate<ScTeacherDiagnosis>(new ScTeacherDiagnosis { areaId = areaId, schoolCode = $"{schoolCode}", RowKey = $"{pxid}", PartitionKey = "ScTeacherDiagnosis", abilityNos = abilityNos.ToJsonString() });
  444. }
  445. }
  446. }
  447. return (200, abilityNos.ToJsonString());
  448. }
  449. catch (Exception ex)
  450. {
  451. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:getDiagnosisListByProject_V2\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.醍摩豆服務運維群組);
  452. List<ScTeacherDiagnosis> teacherDiagnoses = await table.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
  453. if (teacherDiagnoses.IsNotEmpty())
  454. {
  455. abilityNos = teacherDiagnoses[0].abilityNos.ToObject<List<string>>();
  456. }
  457. //await response.WriteAsJsonAsync(new { data = abilityNos.ToJsonString() });
  458. return (200, abilityNos.ToJsonString());
  459. }
  460. }
  461. /// <summary>
  462. /// 5.3.1.11获取跳转学员信息,用于sso单点,后端验证。
  463. /// </summary>
  464. /// <param name="areaId"></param>
  465. /// <param name="accessConfig"></param>
  466. /// <param name="pxid"></param>
  467. /// <param name="tid"></param>
  468. /// <returns></returns>
  469. public static async Task<(int state, string json)> GetSingleTeacherByProject(HttpClient _httpClient, DingDing _dingDing, AzureStorageFactory _azureStorage, string accessConfig, string pxid, string tid )
  470. {
  471. string teacher = null;
  472. ScAccessConfig config = accessConfig.ToObject<JsonElement>().ToObject<ScAccessConfig>();
  473. Code = "GetSingleTeacherByProject";
  474. Dictionary<string, object> parameterMap = new Dictionary<string, object>();
  475. parameterMap.Add("TrainComID", config.trainComID);
  476. parameterMap.Add("Pxid", $"{pxid}");
  477. parameterMap.Add("Tid", $"{tid}");
  478. ScsResult result = new ScsResult { bizcode = Code, title = "5.3.1.11获取跳转学员信息,用于sso单点,后端验证。" };
  479. try
  480. {
  481. var table = _azureStorage.GetCloudTableClient().GetTableReference("ScYxpt");
  482. List<ScTeacher> teachers = await table.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" }, { "RowKey", $"{pxid}" } });
  483. if (teachers.IsNotEmpty())
  484. {
  485. teacher = teachers[0].ToJsonString();
  486. return (200, teacher);
  487. }
  488. else {
  489. result = await ThirdApisService.Post(_httpClient, config.url, Code, config.passKey, config.privateKey, parameterMap);
  490. if (result.result)
  491. {
  492. teacher = result.content;
  493. }
  494. return (200, teacher);
  495. }
  496. }
  497. catch (Exception ex)
  498. {
  499. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSingleTeacherByProject\n{ex.Message}\n{ex.StackTrace}\n{result.ToJsonString()}\n", GroupNames.醍摩豆服務運維群組);
  500. return (500, teacher);
  501. }
  502. }
  503. }
  504. }