ScsStudyApisService.cs 28 KB

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