ScsYxptApis.cs 30 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562
  1. using Azure.Cosmos;
  2. using HTEXLib.COMM.Helpers;
  3. using Microsoft.Azure.Functions.Worker;
  4. using Microsoft.Azure.Functions.Worker.Http;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.IO;
  8. using System.Linq;
  9. using System.Net;
  10. using System.Text;
  11. using System.Text.Json;
  12. using System.Threading.Tasks;
  13. using TEAMModelOS.SDK;
  14. using TEAMModelOS.SDK.DI;
  15. using TEAMModelOS.SDK.Extension;
  16. using TEAMModelOS.SDK.Models;
  17. namespace TEAMModelOS.FunctionV4.HttpTrigger
  18. {
  19. public class ScsYxptApis
  20. {
  21. private readonly AzureCosmosFactory _azureCosmos;
  22. private readonly DingDing _dingDing;
  23. private readonly AzureStorageFactory _azureStorage;
  24. private readonly AzureRedisFactory _azureRedis;
  25. private readonly ThirdApisService _thirdApisService;
  26. public static string Code { get; set; }
  27. public static Dictionary<string, object> parameterMap = null;
  28. public ScsYxptApis(AzureCosmosFactory azureCosmos, DingDing dingDing, AzureStorageFactory azureStorage, ThirdApisService thirdApisService
  29. , AzureRedisFactory azureRedis)
  30. {
  31. _azureCosmos = azureCosmos;
  32. _dingDing = dingDing;
  33. _azureStorage = azureStorage;
  34. _azureRedis = azureRedis;
  35. _thirdApisService = thirdApisService;
  36. }
  37. /// <summary>
  38. /// 数据推送接口
  39. /// </summary>
  40. /// <param name="req"></param>
  41. /// <param name="log"></param>
  42. /// <returns></returns>
  43. [Function("SchoolDataPush")]
  44. public async Task<HttpResponseData> SchoolDataPush([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  45. {
  46. var response = req.CreateResponse(HttpStatusCode.OK);
  47. var client = _azureCosmos.GetCosmosClient();
  48. string data = await new StreamReader(req.Body).ReadToEndAsync();
  49. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  50. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  51. JsonElement school = data.ToObject<JsonElement>().GetProperty("school");
  52. StringBuilder queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain'");
  53. List<GroupList> yxtrain = new List<GroupList>();
  54. await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<GroupList>(queryText: queryText.ToString(),
  55. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"GroupList-{school}") }))
  56. {
  57. yxtrain.Add(item);
  58. }
  59. List<TeacherTrain> trains = new List<TeacherTrain>();
  60. var members = yxtrain.SelectMany(x => x.members).ToList();
  61. if (members.IsNotEmpty())
  62. {
  63. queryText = new StringBuilder($"SELECT distinct value(c) FROM c where c.type='yxtrain' " +
  64. $"and c.id in ({string.Join(",", members.Select(x => $"'{x.id}'"))}) ");
  65. await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<TeacherTrain>(queryText: queryText.ToString(),
  66. requestOptions: new QueryRequestOptions() { PartitionKey = new Azure.Cosmos.PartitionKey($"TeacherTrain-{school}") }))
  67. {
  68. trains.Add(item);
  69. }
  70. }
  71. string sql = $" SELECT value(c) FROM c join a in c.binds where ARRAY_LENGTH(c.binds)>0 and a.type='{config.config}' ";
  72. List<Teacher> teachers = new List<Teacher>();
  73. await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Teacher>(queryText: sql,
  74. requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
  75. {
  76. teachers.Add(item);
  77. }
  78. //5.3.1.12学员培训基本情况批量回写-UpdateTeacherListSituation
  79. List<TeacherTrain> trains53112OK = new List<TeacherTrain>();
  80. //5.3.1.13学员能力点测评结果批量回写-UpdateTeacherListDiagnosis
  81. List<TeacherTrain> trains53113OK = new List<TeacherTrain>();
  82. //5.3.1.17学员课堂实录批量回写-UploadKTSLList
  83. List<TeacherTrain> trains53117OK = new List<TeacherTrain>();
  84. //5.3.1.22学员校本教研PDF(每人可以返回多条)批量回写-UploadSBTARPDFListV2
  85. List<TeacherTrain> trains53122OK = new List<TeacherTrain>();
  86. List<KeyValuePair<TeacherTrain, string>> trainsNO = new List<KeyValuePair<TeacherTrain, string>>();
  87. List<PushFail> fails = new List<PushFail>();
  88. trains.ForEach(x => {
  89. var teacher = teachers.Find(t => t.id.Equals(x.id));
  90. if (teacher == null)
  91. {
  92. fails.Add(new PushFail { tmdid = x.id, msgs = new List<KeyValuePair<string, string>> { new KeyValuePair<string, string>("tmdid-unexistent", "账号不存在!") } });
  93. }
  94. else
  95. {
  96. List<KeyValuePair<string, string>> msgs = new List<KeyValuePair<string, string>>();
  97. var binddata = teachers.Where(t => t.id.Equals(x.id)).SelectMany(z => z.binds)
  98. .Where(d => d.data.IsNotEmpty()).SelectMany(d => d.data)
  99. .Where(d => string.IsNullOrEmpty(d) && d.Contains(config.config) && d.Contains(config.path));
  100. if (binddata != null && binddata.Count() > 0)
  101. {
  102. var bindData = binddata.First().ToObject<ScBindData>();
  103. if (binddata != null)
  104. {
  105. }
  106. else
  107. {
  108. //如果没有找到绑定信息,则去blob查找。
  109. }
  110. }
  111. else
  112. {
  113. //如果没有找到绑定信息,则去blob查找。
  114. }
  115. }
  116. });
  117. await response.WriteAsJsonAsync(new { });
  118. return response;
  119. }
  120. /// <summary>
  121. /// 5.3.1.1获取项目列表
  122. /// </summary>
  123. /// <param name="req"></param>
  124. /// <param name="log"></param>
  125. /// <returns></returns>
  126. [Function("GetProjectInfoByTrainComID")]
  127. public async Task<HttpResponseData> GetProjectInfoByTrainComID([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  128. {
  129. var response = req.CreateResponse(HttpStatusCode.OK);
  130. List<ScProject> projects = new List<ScProject>();
  131. string data = await new StreamReader(req.Body).ReadToEndAsync();
  132. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  133. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  134. Code = "GetProjectInfoByTrainComID";
  135. parameterMap = new Dictionary<string, object>();
  136. parameterMap.Add("TrainComID", config.trainComID);
  137. ScsResult result = new ScsResult { code = Code, title = "5.3.1.1获取项目列表" };
  138. try
  139. {
  140. result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap);
  141. if (result.result)
  142. {
  143. projects = result.content.ToObject<List<ScProject>>();
  144. }
  145. else
  146. {
  147. }
  148. await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  149. return response;
  150. }
  151. catch (Exception ex)
  152. {
  153. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectInfoByTrainComID\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  154. await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  155. return response;
  156. }
  157. }
  158. /// <summary>
  159. /// 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表
  160. /// </summary>
  161. /// <param name="req"></param>
  162. /// <param name="log"></param>
  163. /// <returns></returns>
  164. [Function("GetSchoolList")]
  165. public async Task<HttpResponseData> GetSchoolList([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  166. {
  167. var response = req.CreateResponse(HttpStatusCode.OK);
  168. List<ScSchool> scSchools = new List<ScSchool>();
  169. string data = await new StreamReader(req.Body).ReadToEndAsync();
  170. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  171. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  172. Code = "GetSchoolList";
  173. parameterMap = new Dictionary<string, object>();
  174. parameterMap.Add("TrainComID", config.trainComID);
  175. List<ScsResult> results = new List<ScsResult>();
  176. try
  177. {
  178. if (config.p.IsNotEmpty())
  179. {
  180. foreach (var ps in config.p)
  181. {
  182. parameterMap["ProjectID"] = ps.pd;
  183. parameterMap["ProjectItemID"] = ps.pid;
  184. ScsResult result = new ScsResult { code = Code, title = " 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表" };
  185. result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap);
  186. if (result.result)
  187. {
  188. List<ScSchool> schools = result.content.ToObject<List<ScSchool>>();
  189. if (schools.IsNotEmpty())
  190. {
  191. scSchools.AddRange(schools);
  192. }
  193. }
  194. results.Add(result);
  195. }
  196. }
  197. await response.WriteAsJsonAsync(new { data = scSchools.ToJsonString() });
  198. return response;
  199. }
  200. catch (Exception ex)
  201. {
  202. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolList\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  203. await response.WriteAsJsonAsync(new { data = scSchools.ToJsonString() });
  204. return response;
  205. }
  206. }
  207. /// <summary>
  208. /// 5.3.1.2获取学员名单
  209. /// </summary>
  210. /// <param name="req"></param>
  211. /// <param name="log"></param>
  212. /// <returns></returns>
  213. [Function("GetTeachersListByProject")]
  214. public async Task<HttpResponseData> GetTeachersListByProject([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  215. {
  216. var response = req.CreateResponse(HttpStatusCode.OK);
  217. List<ScTeacher> scTeachers = new List<ScTeacher>();
  218. string data = await new StreamReader(req.Body).ReadToEndAsync();
  219. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  220. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  221. Code = "GetTeachersListByProject";
  222. parameterMap = new Dictionary<string, object>();
  223. parameterMap.Add("TrainComID", config.trainComID);
  224. List<ScsResult> results = new List<ScsResult>();
  225. try
  226. {
  227. if (config.p.IsNotEmpty())
  228. {
  229. foreach (var ps in config.p)
  230. {
  231. parameterMap["ProjectID"] = ps.pd;
  232. parameterMap["ProjectItemID"] = ps.pid;
  233. ScsResult result = new ScsResult { code = Code, title = "5.3.1.2获取学员名单" };
  234. result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap);
  235. if (result.result)
  236. {
  237. List<ScTeacher> teachers = result.content.ToObject<List<ScTeacher>>();
  238. if (teachers.IsNotEmpty())
  239. {
  240. scTeachers.AddRange(teachers);
  241. }
  242. }
  243. results.Add(result);
  244. }
  245. }
  246. await response.WriteAsJsonAsync(new { data = scTeachers.ToJsonString() });
  247. return response;
  248. }
  249. catch (Exception ex)
  250. {
  251. await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetTeachersListByProject\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  252. await response.WriteAsJsonAsync(new { data = scTeachers.ToJsonString() });
  253. return response;
  254. }
  255. }
  256. /// <summary>
  257. /// 5.3.1.20获取学校设置的可选能力点
  258. /// </summary>
  259. /// <param name="req"></param>
  260. /// <param name="log"></param>
  261. /// <returns></returns>
  262. [Function("GetSchoolDiagnosis")]
  263. public async Task<HttpResponseData> GetSchoolDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  264. {
  265. var response = req.CreateResponse(HttpStatusCode.OK);
  266. List<ScsProjectDiagnosis> projects = new List<ScsProjectDiagnosis>();
  267. string data = await new StreamReader(req.Body).ReadToEndAsync();
  268. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  269. JsonElement schoolCode = data.ToObject<JsonElement>().GetProperty("schoolCode");
  270. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  271. Code = "GetSchoolDiagnosis";
  272. parameterMap = new Dictionary<string, object>();
  273. parameterMap.Add("TrainComID", config.trainComID);
  274. List<ScsResult> results = new List<ScsResult>();
  275. try
  276. {
  277. if (config.p.IsNotEmpty())
  278. {
  279. foreach (var ps in config.p)
  280. {
  281. parameterMap["ProjectID"] = ps.pd;
  282. parameterMap["ProjectItemID"] = ps.pid;
  283. parameterMap["SchoolID"] = $"{schoolCode}";
  284. parameterMap["School"] = $"{schoolCode}";
  285. ScsResult result = new ScsResult { code = Code, title = " 5.3.1.20获取学校设置的可选能力点" };
  286. result = await _thirdApisService.Post(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 _azureStorage.SaveOrUpdate<ScProjectDiagnosis>(new ScProjectDiagnosis { RowKey = $"{ps.pid}-{schoolCode}", PartitionKey = "ScSchoolDiagnosis", abilityNos = diagnoses.ToJsonString() });
  294. }
  295. }
  296. else
  297. {
  298. List<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.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. await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  308. return response;
  309. }
  310. catch (Exception ex)
  311. {
  312. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSchoolDiagnosis\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  313. if (config.p.IsNotEmpty())
  314. {
  315. foreach (var ps in config.p)
  316. {
  317. List<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScSchoolDiagnosis" }, { "RowKey", $"{ps.pid}-{schoolCode}" } });
  318. if (teacherDiagnoses.IsNotEmpty())
  319. {
  320. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
  321. }
  322. }
  323. }
  324. await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  325. return response;
  326. }
  327. }
  328. /// <summary>
  329. /// 5.3.1.19获取项目设置的可选能力点
  330. /// </summary>
  331. /// <param name="req"></param>
  332. /// <param name="log"></param>
  333. /// <returns></returns>
  334. [Function("GetProjectDiagnosis")]
  335. public async Task<HttpResponseData> GetProjectDiagnosis([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  336. {
  337. var response = req.CreateResponse(HttpStatusCode.OK);
  338. List<ScsProjectDiagnosis> projects = new List<ScsProjectDiagnosis>();
  339. string data = await new StreamReader(req.Body).ReadToEndAsync();
  340. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  341. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  342. Code = "GetProjectDiagnosis";
  343. parameterMap = new Dictionary<string, object>();
  344. parameterMap.Add("TrainComID", config.trainComID);
  345. List<ScsResult> results = new List<ScsResult>();
  346. try
  347. {
  348. if (config.p.IsNotEmpty())
  349. {
  350. foreach (var ps in config.p)
  351. {
  352. parameterMap["ProjectID"] = ps.pd;
  353. parameterMap["ProjectItemID"] = ps.pid;
  354. ScsResult result = new ScsResult { code = Code, title = "5.3.1.19获取项目设置的可选能力点" };
  355. result = await _thirdApisService.Post(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 _azureStorage.SaveOrUpdate<ScProjectDiagnosis>(new ScProjectDiagnosis { RowKey = $"{ps.pid}", PartitionKey = "ScProjectDiagnosis", abilityNos = diagnoses.ToJsonString() });
  363. }
  364. }
  365. else
  366. {
  367. List<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.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. await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  377. return response;
  378. }
  379. catch (Exception ex)
  380. {
  381. if (config.p.IsNotEmpty())
  382. {
  383. foreach (var ps in config.p)
  384. {
  385. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetProjectDiagnosis\n{ex.Message}{ex.StackTrace}\n{results.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  386. List<ScProjectDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScProjectDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScProjectDiagnosis" }, { "RowKey", $"{ps.pid}" } });
  387. if (teacherDiagnoses.IsNotEmpty())
  388. {
  389. projects.Add(new ScsProjectDiagnosis { project = ps, diagnoses = teacherDiagnoses[0].abilityNos.ToObject<List<ScPDiagnosis>>() });
  390. }
  391. }
  392. }
  393. await response.WriteAsJsonAsync(new { data = projects.ToJsonString() });
  394. return response;
  395. }
  396. }
  397. /// <summary>
  398. /// 5.3.1.3通过项目编号获取学员测评能力项V2
  399. /// </summary>
  400. /// <param name="req"></param>
  401. /// <param name="log"></param>
  402. /// <returns></returns>
  403. [Function("GetDiagnosisListByProject_V2")]
  404. public async Task<HttpResponseData> GetDiagnosisListByProject_V2([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  405. {
  406. var response = req.CreateResponse(HttpStatusCode.OK);
  407. List<string> abilityNos = new List<string>();
  408. string data = await new StreamReader(req.Body).ReadToEndAsync();
  409. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  410. JsonElement pxid = data.ToObject<JsonElement>().GetProperty("pxid");
  411. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  412. Code = "GetDiagnosisListByProject_V2";
  413. parameterMap = new Dictionary<string, object>();
  414. parameterMap.Add("TrainComID", config.trainComID);
  415. parameterMap.Add("PXID", pxid);
  416. ScsResult result = new ScsResult { code = Code, title = "5.3.1.3通过项目编号获取学员测评能力项V2" };
  417. try
  418. {
  419. result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap);
  420. if (result.result)
  421. {
  422. List<ScDiagnosis> diagnoses = result.content.ToObject<List<ScDiagnosis>>();
  423. if (diagnoses != null)
  424. {
  425. abilityNos = diagnoses.Select(x => x.DiagnosisDicNum).ToList();
  426. }
  427. if (abilityNos.IsNotEmpty())
  428. {
  429. await _azureStorage.SaveOrUpdate<ScTeacherDiagnosis>(new ScTeacherDiagnosis { RowKey = $"{pxid}", PartitionKey = "ScTeacherDiagnosis", abilityNos = abilityNos.ToJsonString() });
  430. }
  431. }
  432. else
  433. {
  434. List<ScTeacherDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
  435. if (teacherDiagnoses.IsNotEmpty())
  436. {
  437. abilityNos = teacherDiagnoses[0].abilityNos.ToObject<List<string>>();
  438. }
  439. }
  440. await response.WriteAsJsonAsync(new { data = abilityNos.ToJsonString() });
  441. return response;
  442. }
  443. catch (Exception ex)
  444. {
  445. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:getDiagnosisListByProject_V2\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  446. List<ScTeacherDiagnosis> teacherDiagnoses = await _azureStorage.FindListByDict<ScTeacherDiagnosis>(new Dictionary<string, object> { { "PartitionKey", "ScTeacherDiagnosis" }, { "RowKey", $"{pxid}" } });
  447. if (teacherDiagnoses.IsNotEmpty())
  448. {
  449. abilityNos = teacherDiagnoses[0].abilityNos.ToObject<List<string>>();
  450. }
  451. await response.WriteAsJsonAsync(new { data = abilityNos.ToJsonString() });
  452. return response;
  453. }
  454. }
  455. /// <summary>
  456. /// 5.3.1.11获取跳转学员信息,用于sso单点,后端验证。
  457. /// </summary>
  458. /// <param name="req"></param>
  459. /// <param name="log"></param>
  460. /// <returns></returns>
  461. [Function("GetSingleTeacherByProject")]
  462. public async Task<HttpResponseData> GetSingleTeacherByProject([HttpTrigger(AuthorizationLevel.Anonymous, "post", Route = null)] HttpRequestData req)
  463. {
  464. var response = req.CreateResponse(HttpStatusCode.OK);
  465. string teacher = null;
  466. string data = await new StreamReader(req.Body).ReadToEndAsync();
  467. JsonElement accessConfig = data.ToObject<JsonElement>().GetProperty("accessConfig");
  468. JsonElement pxid = data.ToObject<JsonElement>().GetProperty("pxid");
  469. JsonElement tid = data.ToObject<JsonElement>().GetProperty("tid");
  470. ScAccessConfig config = $"{accessConfig}".ToObject<ScAccessConfig>();
  471. Code = "GetSingleTeacherByProject";
  472. parameterMap = new Dictionary<string, object>();
  473. parameterMap.Add("TrainComID", config.trainComID);
  474. parameterMap.Add("Pxid", $"{pxid}");
  475. parameterMap.Add("Tid", $"{tid}");
  476. ScsResult result = new ScsResult { code = Code, title = "5.3.1.11获取跳转学员信息,用于sso单点,后端验证。" };
  477. try
  478. {
  479. ///{“result”:true,”reason”:null,”content”:”{“PXID”:””,”TID”:””,”TeacherName”:””,”ProjectTitle”:””,”ProjectItemTitle”:””,”CityName”:””,
  480. ///”DisName”:””,”SchoolName”:””,”Sex”:””,”PXXK”:””,”PXXD”:””,”TeacherXK”:””,”TeacherXD”:””,”Email”:””}”,”pagecount”:1}
  481. result = await _thirdApisService.Post(config.url, Code, config.passKey, config.privateKey, parameterMap);
  482. if (result.result)
  483. {
  484. teacher = result.content;
  485. }
  486. await response.WriteAsJsonAsync(new { data = teacher });
  487. return response;
  488. }
  489. catch (Exception ex)
  490. {
  491. //await _dingDing.SendBotMsg($"{Environment.GetEnvironmentVariable("Option:Location")},IES5.ScApisService:GetSingleTeacherByProject\n{ex.Message}{ex.StackTrace}\n{result.ToJsonString()}\n{data}", GroupNames.成都开发測試群組);
  492. await response.WriteAsJsonAsync(new { data = teacher });
  493. return response;
  494. }
  495. }
  496. public (int t53112OK, List<KeyValuePair<string, string>> msgs) check53112(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs)
  497. {
  498. //校验 基本情况是否满足
  499. int t53112OK = 1;
  500. if (teacherTrain.finalScore < 0)
  501. {
  502. msgs.Add(new KeyValuePair<string, string>("finalScore", $"最终评定结果参数:{teacherTrain.finalScore}"));
  503. t53112OK = 0;
  504. }
  505. if (string.IsNullOrEmpty(teacherTrain.summary) || teacherTrain.summary.Length > 300)
  506. {
  507. string msg = string.IsNullOrEmpty(teacherTrain.summary) ? "未填写" : teacherTrain.summary.Length > 300 ? "字数超过300." : "";
  508. msgs.Add(new KeyValuePair<string, string>("summary", $"教师培训总结:{msg}"));
  509. t53112OK = 0;
  510. }
  511. if (teacherTrain.totalTime <= 0)
  512. {
  513. msgs.Add(new KeyValuePair<string, string>("totalTime", $"未获得学时:{teacherTrain.totalTime}"));
  514. t53112OK = 0;
  515. }
  516. return (t53112OK, msgs);
  517. }
  518. public (int t53112OK, List<KeyValuePair<string, string>> msgs) check53113(TeacherTrain teacherTrain, List<KeyValuePair<string, string>> msgs)
  519. {
  520. //校验 基本情况是否满足
  521. int t53112OK = 1;
  522. if (teacherTrain.finalScore < 0)
  523. {
  524. msgs.Add(new KeyValuePair<string, string>("finalScore", $"最终评定结果参数:{teacherTrain.finalScore}"));
  525. t53112OK = 0;
  526. }
  527. if (string.IsNullOrEmpty(teacherTrain.summary) || teacherTrain.summary.Length > 300)
  528. {
  529. string msg = string.IsNullOrEmpty(teacherTrain.summary) ? "未填写" : teacherTrain.summary.Length > 300 ? "字数超过300." : "";
  530. msgs.Add(new KeyValuePair<string, string>("summary", $"教师培训总结:{msg}"));
  531. t53112OK = 0;
  532. }
  533. if (teacherTrain.totalTime <= 0)
  534. {
  535. msgs.Add(new KeyValuePair<string, string>("totalTime", $"未获得学时:{teacherTrain.totalTime}"));
  536. t53112OK = 0;
  537. }
  538. return (t53112OK, msgs);
  539. }
  540. }
  541. }