123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784 |
- using Microsoft.AspNetCore.Mvc;
- using System;
- using System.Collections.Generic;
- using System.Linq;
- using System.Threading.Tasks;
- using TEAMModelOS.Models;
- using TEAMModelOS.SDK.DI;
- using System.Text.Json;
- using TEAMModelOS.SDK.Models;
- using Microsoft.AspNetCore.Http;
- using TEAMModelOS.SDK.Extension;
- using Azure.Cosmos;
- using System.Text;
- using TEAMModelOS.SDK.DI.AzureCosmos.Inner;
- using Microsoft.Extensions.Options;
- using Azure.Messaging.ServiceBus;
- using Microsoft.Extensions.Configuration;
- using TEAMModelOS.Services.Common;
- using HTEXLib.COMM.Helpers;
- using TEAMModelOS.SDK;
- using System.IdentityModel.Tokens.Jwt;
- using TEAMModelOS.Services;
- using TEAMModelOS.SDK.Models.Service;
- using System.IO;
- using System.Dynamic;
- using Microsoft.AspNetCore.Authorization;
- using Azure.Storage.Blobs.Models;
- namespace TEAMModelOS.Controllers.Third
- {
- /// <summary>
- ///
- /// </summary>
- ///
- [ProducesResponseType(StatusCodes.Status200OK)]
- [ProducesResponseType(StatusCodes.Status400BadRequest)]
- //[Authorize(Roles = "IES5")]
- [Route("sc")]
- //[Route("api/[controller]")]
- [ApiController]
- public class ScController : ControllerBase
- {
- private readonly SnowflakeId _snowflakeId;
- private readonly AzureCosmosFactory _azureCosmos;
- private readonly DingDing _dingDing;
- private readonly Option _option;
- private readonly AzureStorageFactory _azureStorage;
- private readonly AzureServiceBusFactory _serviceBus;
- private readonly AzureRedisFactory _azureRedis;
- private readonly CoreAPIHttpService _accountHttpService;
- private readonly ScsApisService _scsApisService;
- public readonly string type = "scsyxpt";
- /// <summary>
- /// 机构安全码
- /// </summary>
- public string _sc_passKey;
- /// <summary>
- /// 机构ID
- /// </summary>
- public string _sc_trainComID;
- /// <summary>
- /// 机构 AES 密钥
- /// </summary>
- public string _sc_privateKey;
- /// <summary>
- /// 访问地址
- /// </summary>
- public string _sc_url;
- public IConfiguration _configuration { get; set; }
- public ScController(AzureCosmosFactory azureCosmos, SnowflakeId snowflakeId, DingDing dingDing, IOptionsSnapshot<Option> option, AzureStorageFactory azureStorage,
- AzureRedisFactory azureRedis, AzureServiceBusFactory serviceBus, IConfiguration configuration, CoreAPIHttpService accountHttpService, ScsApisService scsApisService)
- {
- _azureCosmos = azureCosmos;
- _snowflakeId = snowflakeId;
- _dingDing = dingDing;
- _option = option?.Value;
- _azureStorage = azureStorage;
- _serviceBus = serviceBus;
- _configuration = configuration;
- _azureRedis = azureRedis;
- _accountHttpService = accountHttpService;
- _scsApisService = scsApisService;
- _sc_passKey = _configuration.GetValue<string>("Third:scsyxpt:passKey");
- _sc_trainComID = _configuration.GetValue<string>("Third:scsyxpt:trainComID");
- _sc_privateKey = _configuration.GetValue<string>("Third:scsyxpt:privateKey");
- _sc_url = _configuration.GetValue<string>("Third:scsyxpt:url");
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="json"></param>
- /// <returns></returns>
- [ProducesDefaultResponseType]
- [HttpPost("get-list")]
- [AllowAnonymous]
- public async Task<IActionResult> GetProjectList(JsonElement json) {
- // 5.3.1.1获取项目列表
- string trainComID = _sc_trainComID;
- string Code = "GetProjectInfoByTrainComID";
- Dictionary<string, object> parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", _sc_trainComID);
- ScsResult GetProjectInfoByTrainComID = await _scsApisService.Post(_sc_url, Code, _sc_passKey,_sc_privateKey, parameterMap);
- GetProjectInfoByTrainComID.code = Code;
- GetProjectInfoByTrainComID.title = "5.3.1.1获取项目列表";
-
- // 5.3.1.2获取学员名单
- Code = "GetTeachersListByProject";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("ProjectID", "22");
- parameterMap.Add("ProjectItemID", "23");
- ScsResult GetTeachersListByProject = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetTeachersListByProject.code = Code;
- GetTeachersListByProject.title = "5.3.1.2获取学员名单";
- // 5.3.1.3通过项目编号获取学员测评能力项
- Code = "GetDiagnosisListByProject";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("ProjectID", "22");
- parameterMap.Add("ProjectItemID", "22");
- parameterMap.Add("PXID", "28496");
- ScsResult GetDiagnosisListByProject = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetDiagnosisListByProject.code = Code;
- GetDiagnosisListByProject.title = "5.3.1.3通过项目编号获取学员测评能力项";
- // 补充
- // 5.3.1.3通过项目编号获取学员测评能力项
- Code = "GetDiagnosisListByProject_V2";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- //parameterMap.Add("ProjectID", "22");
- //parameterMap.Add("ProjectItemID", "22");
- parameterMap.Add("PXID", "28496");
- ScsResult GetDiagnosisListByProject_V2 = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetDiagnosisListByProject_V2.code = Code;
- GetDiagnosisListByProject_V2.title = "5.3.1.3通过项目编号获取学员测评能力项V2";
- ScsResult UpdateTeacherSituation = null;
- // 5.3.1.4学员培训基本情况回写
- try {
- Code = "UpdateTeacherSituation";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("PXID", "23");
- parameterMap.Add("TID", "145504");
- parameterMap.Add("TeacherName", "柏成伟");
- parameterMap.Add("CourseHour", "50");
- parameterMap.Add("ResearchText", "学习成果描述,字符长度<=300");
- parameterMap.Add("ComPassed", "2");//0、未认定 1、合格 2、优秀 3、不合格 4、其他
- UpdateTeacherSituation = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- UpdateTeacherSituation.code = Code;
- UpdateTeacherSituation.title = "5.3.1.4学员培训基本情况回写";
- } catch (Exception ex) { }
- ScsResult UpdateTeacherDiagnosis = null;
- try
- {
- // 5.3.1.5学员能力点测评结果回写
- Code = "UpdateTeacherDiagnosis";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("PXID", "65314");
- parameterMap.Add("TID", "17542");
- parameterMap.Add("DiagnosisNum", "A3");
- //0"未认定", 1"合格", 2"优秀", 3"不合格"
- parameterMap.Add("zpresult", "1");
- parameterMap.Add("hpresult", "1");
- parameterMap.Add("xzpresult", "1");
- List<Dictionary<string, string>> pfilesA = new List<Dictionary<string, string>>();
- parameterMap.Add("pfiles", pfilesA);
- Dictionary<string, string> pfileMapA = new Dictionary<string, string>();
- pfileMapA.Add("url", "https://scnltsfiles.scedu.com.cn/upload/infofj/202104011628463774.pdf");
- pfileMapA.Add("fileName", "XXX.pdf");
- pfileMapA.Add("fileSize", "247767");
- pfileMapA.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- pfileMapA.Add("fileType", "pdf");
- pfilesA.Add(pfileMapA);
- UpdateTeacherDiagnosis = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- UpdateTeacherDiagnosis.code = Code;
- UpdateTeacherDiagnosis.title = "5.3.1.5学员能力点测评结果回写";
- }
- catch (Exception ex) {
- }
- // 5.3.1.6获取能力测评体系字典值数据
- Code = "GetDiagnosisDic";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- ScsResult GetDiagnosisDic = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetDiagnosisDic.code = Code;
- GetDiagnosisDic.title = "5.3.1.6获取能力测评体系字典值数据";
- // 5.3.1.7获取能力测评评价类型字典值数据
- Code = "GetDiagnosisItemDic";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("DiagnosisDicID", "3");
- ScsResult GetDiagnosisItemDic = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetDiagnosisItemDic.code = Code;
- GetDiagnosisItemDic.title = "5.3.1.7获取能力测评评价类型字典值数据";
- // 5.3.1.8获取能力测评评价类型细则字典值数据
- Code = "GetchoiceDic";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("DiagnosisItemID", "4");
- ScsResult GetchoiceDic = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetchoiceDic.code = Code;
- GetchoiceDic.title = "5.3.1.8获取能力测评评价类型细则字典值数据";
- // 5.3.1.9根据培训ID与机构ID获取老师信息
- Code = "GetTeacherInfoByPXID";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("PXID", "55024");
- ScsResult GetTeacherInfoByPXID = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetTeacherInfoByPXID.code = Code;
- GetTeacherInfoByPXID.title = "5.3.1.9根据培训ID与机构ID获取老师信息";
- // 5.3.1.10根据培训项目ID与学校ID获取学校方案
- Code = "GetSchoolPlanBySchoolID";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("ProjectItemID", "3");
- parameterMap.Add("SchoolID", "220913");
- parameterMap.Add("Type", "0");
- ScsResult GetSchoolPlanBySchoolID = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetSchoolPlanBySchoolID.code = Code;
- GetSchoolPlanBySchoolID.title = "5.3.1.10根据培训项目ID与学校ID获取学校方案";
- // 5.3.1.11获取跳转学员信息
- Code = "GetSingleTeacherByProject";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("Pxid", "55024");
- parameterMap.Add("Tid", "38616");
- ScsResult GetSingleTeacherByProject = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetSingleTeacherByProject.code = Code;
- GetSingleTeacherByProject.title = "5.3.1.11获取跳转学员信息";
- ScsResult UpdateTeacherListSituation = null;
- Dictionary<string, object> parameterContent = new Dictionary<string, object>();
- List<Dictionary<string, object>> list = new List<Dictionary<string, object>>();
- try
- { // 5.3.1.12学员培训基本情况批量回写
- Code = "UpdateTeacherListSituation";
-
-
- parameterContent.Add("TrainComID", trainComID);
- parameterContent.Add("List", list);
- // {"TrainComID":"39","List":[{"ResearchText":"","ComPassed":1,"PXID":"35455","CourseHour":"50.0","TID":"411105","TeacherName":"付绍令"}]}
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "23");
- parameterMapData.Add("TID", "145504");
- parameterMapData.Add("TeacherName", "柏成伟");
- parameterMapData.Add("CourseHour", "50");
- parameterMapData.Add("ResearchText", "学习成果描述,字符长度<=300");
- parameterMapData.Add("ComPassed", "2");//0、未认定 1、合格 2、优秀 3、不合格 4、其他
- list.Add(parameterMapData);
- parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "23");
- parameterMapData.Add("TID", "145504");
- parameterMapData.Add("TeacherName", "柏成伟");
- parameterMapData.Add("CourseHour", "50");
- parameterMapData.Add("ResearchText", "学习成果描述,字符长度<=300");
- parameterMapData.Add("ComPassed", "2");//0、未认定 1、合格 2、优秀 3、不合格 4、其他
- list.Add(parameterMapData);
- parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "22");
- parameterMapData.Add("TID", "21348");
- parameterMapData.Add("TeacherName", "邓泽燕");
- parameterMapData.Add("CourseHour", "50");
- parameterMapData.Add("ResearchText", "学习成果描述,字符长度<=300");
- parameterMapData.Add("ComPassed", "2");//0、未认定 1、合格 2、优秀 3、不合格 4、其他
- list.Add(parameterMapData);
- parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "35546");
- parameterMapData.Add("TID", "411182");
- parameterMapData.Add("TeacherName", "刘晓莉");
- parameterMapData.Add("CourseHour", "50");
- parameterMapData.Add("ResearchText", "");
- parameterMapData.Add("ComPassed", "1");//0、未认定 1、合格 2、优秀 3、不合格 4、其他
- list.Add(parameterMapData);
- }
- UpdateTeacherListSituation = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterContent);
- UpdateTeacherListSituation.code = Code;
- UpdateTeacherListSituation.title = "5.3.1.12学员培训基本情况批量回写";
- }
- catch (Exception ex) { }
- ScsResult UpdateTeacherListDiagnosis = null;
- try
- { // 5.3.1.13学员能力点测评结果批量回写
- Code = "UpdateTeacherListDiagnosis";
- parameterContent = new Dictionary<string, object>();
- list = new List<Dictionary<string, object>>();
- parameterContent.Add("TrainComID", trainComID);
- parameterContent.Add("List", list);
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "3079");
- parameterMapData.Add("TID", "14597");
- parameterMapData.Add("DiagnosisNum", "A6");
- //0"未认定", 1"合格", 2"优秀", 3"不合格"
- parameterMapData.Add("zpresult", "1");
- parameterMapData.Add("hpresult", "2");
- parameterMapData.Add("xzpresult", "2");
- List<Dictionary<string, object>> pfiles = new List<Dictionary<string, object>>();
- parameterMapData.Add("pfiles", pfiles);
- Dictionary<string, object> pfileMap = new Dictionary<string, object>();
- pfileMap.Add("url", "https://srt-read-online.3ren.cn/basebusiness/material/20210422/1619055398463iE97VWe36i001.mp4");
- pfileMap.Add("fileName", "697a58c2375f7a031456c893e1e1860c.mp4");
- pfileMap.Add("fileSize", "17036168");
- pfileMap.Add("md5", "");
- pfileMap.Add("fileType", "video");
- pfiles.Add(pfileMap);
- list.Add(parameterMapData);
- pfileMap = new Dictionary<string, object>();
- pfileMap.Add("url", "https://srt-read-online.3ren.cn/basebusiness/material/20210422/1619055446704gbKuNF8eas001.pdf");
- pfileMap.Add("fileName", "A6技术支持的课堂反思.pdf");
- pfileMap.Add("fileSize", "32192");
- pfileMap.Add("md5", "");
- pfileMap.Add("fileType", "pdf");
- pfiles.Add(pfileMap);
- list.Add(parameterMapData);
- }
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "3062");
- parameterMapData.Add("TID", "401268");
- parameterMapData.Add("DiagnosisNum", "A1");
- //0"未认定", 1"合格", 2"优秀", 3"不合格"
- parameterMapData.Add("zpresult", "1");
- parameterMapData.Add("hpresult", "2");
- parameterMapData.Add("xzpresult", "2");
- List<Dictionary<string, object>> pfiles = new List<Dictionary<string, object>>();
- parameterMapData.Add("pfiles", pfiles);
- Dictionary<string, object> pfileMap = new Dictionary<string, object>();
- pfileMap.Add("url", "https://srt-read-online.3ren.cn/basebusiness/material/20210422/1619058650000bphKFbDVSa001.pdf");
- pfileMap.Add("fileName", "学情分析.pdf");
- pfileMap.Add("fileSize", "94926");
- pfileMap.Add("md5", "");
- pfileMap.Add("fileType", "pdf");
- pfiles.Add(pfileMap);
- list.Add(parameterMapData);
- pfileMap = new Dictionary<string, object>();
- pfileMap.Add("url", "https://srt-read-online.3ren.cn/basebusiness/material/20210422/1619058698452gF19jmiuML001.mp4");
- pfileMap.Add("fileName", "种子萌发学情分析.mp4");
- pfileMap.Add("fileSize", "12692368");
- pfileMap.Add("md5", "");
- pfileMap.Add("fileType", "video");
- pfiles.Add(pfileMap);
- list.Add(parameterMapData);
- }
- UpdateTeacherListDiagnosis = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterContent);
- UpdateTeacherListDiagnosis.code = Code;
- UpdateTeacherListDiagnosis.title = "5.3.1.13学员能力点测评结果批量回写";
- }
- catch (Exception ex) {
- }
- ScsResult UploadSBTARPDF = null;
- try
- { // 5.3.1.14学员校本研修PDF回写
- Code = "UploadSBTARPDF";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("PXID", "16");
- parameterMap.Add("TID", "16");
- parameterMap.Add("url", "http://image1.cersp.com.cn/scpx/images/article/file/20190318/upload__51f98fc8_1697695ae73__7ffe_00001297.pdf");
- parameterMap.Add("fileName", "XXX.pdf");
- parameterMap.Add("fileSize", "247767");
- parameterMap.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- parameterMap.Add("fileType", "pdf");
- UploadSBTARPDF = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- UploadSBTARPDF.code = Code;
- UploadSBTARPDF.title = "5.3.1.14学员校本研修PDF回写";
- }
- catch (Exception ex) {
- }
- ScsResult UploadSBTARPDFList = null;
- try
- { // 5.3.1.15学员校本教研PDF批量回写
- Code = "UploadSBTARPDFList";
- parameterContent = new Dictionary<string, object>();
- list = new List<Dictionary<string, object>>();
- parameterContent.Add("TrainComID", trainComID);
- parameterContent.Add("List", list);
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "65309");
- parameterMapData.Add("TID", "253940");
- parameterMapData.Add("url", "https://scnltsfiles.scedu.com.cn/upload/infofj/202104011628463774.pdf");
- parameterMapData.Add("fileName", "XXX.pdf");
- parameterMapData.Add("fileSize", "247767");
- parameterMapData.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- parameterMapData.Add("fileType", "pdf");
- list.Add(parameterMapData);
- }
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "65306");
- parameterMapData.Add("TID", "32393");
- parameterMapData.Add("url", "https://scnltsfiles.scedu.com.cn/upload/infofj/202104011628463774.pdf");
- parameterMapData.Add("fileName", "XXX.pdf");
- parameterMapData.Add("fileSize", "247767");
- parameterMapData.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- parameterMapData.Add("fileType", "pdf");
- list.Add(parameterMapData);
- }
- UploadSBTARPDFList = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterContent);
- UploadSBTARPDFList.code = Code;
- UploadSBTARPDFList.title = "5.3.1.15学员校本教研PDF批量回写";
- }
- catch (Exception ex) { }
- ScsResult UploadKTSL = null;
- try
- {
- // 5.3.1.16学员课堂实录回写
- Code = "UploadKTSL";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("PXID", "16");
- parameterMap.Add("TID", "16");
- parameterMap.Add("url", "https://xxx.mp4");
- parameterMap.Add("url2", "https://xxx.mp4");
- parameterMap.Add("fileName", "XXX.mp4");
- parameterMap.Add("fileSize", "247767");
- parameterMap.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- parameterMap.Add("fileType", "mp4");
- UploadKTSL = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- UploadKTSL.code = Code;
- UploadKTSL.title = "5.3.1.16学员课堂实录回写";
- } catch (Exception ex) { }
- ScsResult UploadKTSLList = null;
- try
- {
- // 5.3.1.17学员课堂实录批量回写
- Code = "UploadKTSLList";
- parameterContent = new Dictionary<string, object>();
- list = new List<Dictionary<string, object>>();
- parameterContent.Add("TrainComID", trainComID);
- parameterContent.Add("List", list);
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "16");
- parameterMapData.Add("TID", "16");
- parameterMapData.Add("url", "https://xxx.mp4");
- parameterMapData.Add("url2", "https://xxx.mp4");
- parameterMapData.Add("fileName", "XXX.mp4");
- parameterMapData.Add("fileSize", "247767");
- parameterMapData.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- parameterMapData.Add("fileType", "mp4");
- list.Add(parameterMapData);
- }
- {
- Dictionary<string, object> parameterMapData = new Dictionary<string, object>();
- parameterMapData.Add("PXID", "16");
- parameterMapData.Add("TID", "16");
- parameterMapData.Add("url", "https://xxx.mp4");
- parameterMapData.Add("url2", "https://xxx.mp4");
- parameterMapData.Add("fileName", "XXX.mp4");
- parameterMapData.Add("fileSize", "247767");
- parameterMapData.Add("md5", "9c3da8c5c07c2c660cd73c01f56d7fca");
- parameterMapData.Add("fileType", "mp4");
- list.Add(parameterMapData);
- }
- UploadKTSLList = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterContent);
- UploadKTSLList.code = Code;
- UploadKTSLList.title = "5.3.1.17学员课堂实录批量回写";
- }
- catch (Exception ex) { }
- // 5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表
- Code = "GetSchoolList";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("ProjectID", "22");
- parameterMap.Add("ProjectItemID", "21");
- ScsResult GetSchoolList = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetSchoolList.code = Code;
- GetSchoolList.title = "5.3.1.18根据机构ID、项目ID、子项目ID返回学校列表";
- // 5.3.1.19获取项目设置的可选能力点
- Code = "GetProjectDiagnosis";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("ProjectID", "22");
- parameterMap.Add("ProjectItemID", "21");
- ScsResult GetProjectDiagnosis = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetProjectDiagnosis.code = Code;
- GetProjectDiagnosis.title = "5.3.1.19获取项目设置的可选能力点";
- // 5.3.1.20获取学校设置的可选能力点
- Code = "GetSchoolDiagnosis";
- parameterMap = new Dictionary<string, object>();
- parameterMap.Add("TrainComID", trainComID);
- parameterMap.Add("ProjectID", "22");
- parameterMap.Add("ProjectItemID", "22");
- parameterMap.Add("SchoolID", "200001");
- ScsResult GetSchoolDiagnosis = await _scsApisService.Post(_sc_url, Code, _sc_passKey, _sc_privateKey, parameterMap);
- GetSchoolDiagnosis.code = Code;
- GetSchoolDiagnosis.title = "5.3.1.20获取学校设置的可选能力点";
- return Ok(new
- {
- GetProjectInfoByTrainComID,
- GetTeachersListByProject,
- GetDiagnosisListByProject,
- GetDiagnosisListByProject_V2,
- UpdateTeacherSituation,
- UpdateTeacherDiagnosis,
- GetDiagnosisDic,
- GetDiagnosisItemDic,
- GetchoiceDic,
- GetTeacherInfoByPXID,
- GetSchoolPlanBySchoolID,
- GetSingleTeacherByProject,
- UpdateTeacherListSituation,
- UpdateTeacherListDiagnosis,
- UploadSBTARPDF,
- UploadSBTARPDFList,
- UploadKTSL,
- UploadKTSLList,
- GetSchoolList,
- GetProjectDiagnosis,
- GetSchoolDiagnosis
- });
-
- //return Ok(GetProjectInfoByTrainComID);
- }
- public class ScsResult {
- public bool result { get; set; }
- public string reason { get; set; }
- public string content { get; set; }
- public string code { get; set; }
- public string title { get; set; }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [ProducesDefaultResponseType]
- [HttpPost("bind")]
- [AllowAnonymous]
- public async Task<IActionResult> Bind(SSO sso) {
- try
- {
- Teacher teacher = null;
- if (string.IsNullOrEmpty(sso.id_token)) {
- return Ok(new
- {
- location = _option.Location,
- status = 2,
- });
- }
- var jwt = new JwtSecurityToken(sso.id_token);
- if (!jwt.Payload.Iss.Equals("account.teammodel", StringComparison.OrdinalIgnoreCase)) return BadRequest();
- var id = jwt.Payload.Sub;
- jwt.Payload.TryGetValue("name", out object name);
- jwt.Payload.TryGetValue("picture", out object picture);
- var client = _azureCosmos.GetCosmosClient();
- teacher = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<Teacher>(id, new PartitionKey("Base"));
- //先检查绑定的平台是否已经被绑定
- //四川研训平台跳转隐式登录/或者绑定IES平台接入规范
- ScSSO scsso= sso.param.ToObject<ScSSO>();
- string sql = $"SELECT distinct value(c) FROM c join A1 in c.binds where A1.webid='{scsso.Webid}' and A1.tid='{scsso.tid}'";
- await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Teacher>(queryText: sql,
- requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
- {
- teacher = item;
- break;
- }
- if (teacher != null)
- {
- if (teacher.id.Equals(id))
- {
- var bind = teacher.binds.Find(x => x.source.Equals($"{scsso.Webid}") && x.userid.Equals($"{scsso.tid}"));
- if (bind == null)
- {
- teacher.binds=new List<Teacher.ThirdBind> { new Teacher.ThirdBind { pxid = new HashSet<string> { $"{scsso.Pxid}" }, userid = $"{scsso.tid}", source = $"{scsso.Webid}", type = type } };
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
- }
- else
- {
- if (bind.pxid != null)
- {
- if (bind.pxid.Add(scsso.Pxid))
- {
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
- }
- }
- else {
- bind.pxid = new HashSet<string> { scsso.Pxid };
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
- }
-
- }
- }
- else {
- return Ok(new
- {
- location = _option.Location,
- //账号已被别的醍摩豆id绑定
- status = 3,
- tmdid = teacher.id,
- name=teacher.name,
- tid = scsso.tid
- }) ;
- }
- }
- else {
- teacher = new Teacher
- {
- id = id,
- pk = "Base",
- code = "Base",
- name = name?.ToString(),
- picture = picture?.ToString(),
- //创建账号并第一次登录IES5则默认赠送1G
- size = 1,
- defaultSchool = null,
- schools = new List<Teacher.TeacherSchool>(),
- binds= new List<Teacher.ThirdBind> { new Teacher.ThirdBind { pxid = new HashSet<string> { $"{scsso.Pxid}" }, userid = $"{scsso.tid}", source = $"{scsso.Webid}", type = type } }
- };
- var container = _azureStorage.GetBlobContainerClient(id);
- await container.CreateIfNotExistsAsync(PublicAccessType.None); //嘗試創建Teacher私有容器,如存在則不做任何事,保障容器一定存在
- teacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").CreateItemAsync<Teacher>(teacher, new PartitionKey("Base"));
- }
- return Ok(new
- {
- location = _option.Location,
- status = 200,
- });
-
- } catch (Exception ) {
- return Ok(new
- {
- location = _option.Location,
- status = 2,
- });
- }
- }
- /// <summary>
- ///
- /// </summary>
- /// <param name="request"></param>
- /// <returns></returns>
- [HttpGet("sso")]
- [AllowAnonymous]
- public async Task<IActionResult> Sso([FromQuery] ScSSO sso)
- {
- var rurl = new StringBuilder($"https://{_option.HostName}/sso");
- string parmas = $"Pxid={sso.Pxid}&Webid={sso.Webid}&tid={sso.tid}&time={sso.time}";
- if (Md5Hash.GetMd5String(parmas).Equals($"{sso.Encrypt}"))
- {
- //四川研训平台跳转隐式登录/或者绑定IES平台接入规范
-
- long ssotime = long.Parse($"{sso.time}");
- long nowtime = DateTimeOffset.UtcNow.ToUnixTimeSeconds();
- if (nowtime - ssotime > 60 * 10)//10分钟有效期
- {
- // return Ok(new { status = 2, msg = "登录超时!" });
- }
- }
- else
- {
- return Redirect(rurl.Append($"?status=1").ToString());
- }
- Teacher teacher = null;
- //四川研训平台跳转隐式登录/或者绑定IES平台接入规范
- //string sql = $"SELECT distinct value(c) FROM c join A1 in c.binds where A1.pxid='{sso.Pxid}' and A1.webid='{sso.Webid}' and A1.tid='{sso.tid}'";
- string sql = $"SELECT distinct value(c) FROM c join A1 in c.binds where A1.source='{sso.Webid}' and A1.userid='{sso.tid}'";
- await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<Teacher>(queryText: sql,
- requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
- {
- teacher = item;
- break;
- }
- if (teacher == null)
- {
- return Redirect(rurl.Append($"?status=4¶m={sso.ToJsonString()}&type={type}&bindurl=sc/bind").ToString());
- }
- else
- {
- var url = _configuration.GetValue<string>("HaBookAuth:CoreAPI");
- var clientID = _configuration.GetValue<string>("HaBookAuth:CoreService:clientID");
- var clientSecret = _configuration.GetValue<string>("HaBookAuth:CoreService:clientSecret");
- var location = _option.Location;
- (int code, string content) = await _accountHttpService.Implicit(clientID, clientSecret, location, $"{url}/oauth2/implicit",
- new Dictionary<string, string>()
- {
- { "grant_type", "implicit" },
- { "client_id",clientID },
- { "account",teacher.id },
- { "nonce",Guid.NewGuid().ToString()}
- });
- TmdidImplicit implicit_token = new TmdidImplicit();
- if (!string.IsNullOrEmpty(content) && code==200)
- {
- implicit_token = content.ToObject<TmdidImplicit>();
- var bind = teacher.binds.Find(x => x.userid.Equals(sso.tid) && x.source.Equals(sso.Webid));
- if (bind != null) {
- if (bind.pxid != null)
- {
- if (bind.pxid.Add(sso.Pxid))
- {
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
- }
- }
- else {
- bind.pxid = new HashSet<string> { sso.Pxid };
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
- }
- }
- return Redirect(rurl.Append($"?status=200&id_token={implicit_token.id_token}&access_token={implicit_token.access_token}&expires_in={implicit_token.expires_in}&token_type={implicit_token.token_type}").ToString());
- }
- else {
- //绑定失效
- if (teacher.binds.IsNotEmpty()) {
- teacher.binds.RemoveAll(x => x.userid.Equals(sso.tid) && x.source.Equals(sso.Webid));
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher,teacher.id,new PartitionKey(teacher.code));
- }
- return Redirect(rurl.Append($"?status=4¶m={sso.ToJsonString()}&type={type}&bindurl=sc/bind").ToString());
- }
- }
- }
- public record ScSSO{
- public string Webid { get; set; }
- public string Pxid { get; set; }
- public string tid { get; set; }
- public string time { get; set; }
- public string Encrypt { get; set; }
- }
- public record SSO
- {
- public string type { get; set; }
- public string param { get; set; }
- public string id_token { get; set; }
- }
- public record TmdidImplicit {
- public string id_token { get; set; }
- public string access_token { get; set; }
- public string expires_in { get; set; }
- public string token_type { get; set; }
- }
- }
- }
|