|
@@ -142,7 +142,95 @@ namespace TEAMModelOS.Controllers.Third
|
|
|
[HttpPost("sc/get-scs-teacher")]
|
|
|
[AllowAnonymous]
|
|
|
public async Task<IActionResult> getScsTeacher(JsonElement request) {
|
|
|
- return Ok();
|
|
|
+ if (!request.TryGetProperty("accessConfig", out JsonElement accessConfig)) return BadRequest();
|
|
|
+ if (!request.TryGetProperty("city", out JsonElement city)) return BadRequest();
|
|
|
+ if (!request.TryGetProperty("dist", out JsonElement dist)) return BadRequest();
|
|
|
+ if (!request.TryGetProperty("areaId", out JsonElement areaId)) return BadRequest();
|
|
|
+ if (!request.TryGetProperty("standard", out JsonElement standard)) return BadRequest();
|
|
|
+ //数据校验
|
|
|
+ var ScTeachers = await _azureStorage.FindListByDict<ScTeacher>(new Dictionary<string, object>() { { "PartitionKey", "ScTeacher" }, { "areaId", $"{areaId}" } });
|
|
|
+ var ScSchools = await _azureStorage.FindListByDict<ScSchool>(new Dictionary<string, object>() { { "PartitionKey", "ScSchool" }, { "areaId", $"{areaId}" } });
|
|
|
+
|
|
|
+ Dictionary<string, object> dict = new Dictionary<string, object> { { "accessConfig", $"{accessConfig}" } };
|
|
|
+ (int status, string json) = await _httpTrigger.RequestHttpTrigger(dict, _option.Location, "GetTeachersListByProject");
|
|
|
+ var teachers = json.ToObject<List<ScTeacher>>(new JsonSerializerOptions { PropertyNameCaseInsensitive = false });
|
|
|
+ //未保存在数据库的。
|
|
|
+ var a = teachers.Select(x => $"{x.TID}").ToList();
|
|
|
+ var s = ScTeachers.Select(y => $"{ y.TID}").ToList();
|
|
|
+ var asin = a.Except(s).ToList();
|
|
|
+ var updates= teachers.FindAll(x => asin.Contains($"{x.TID}"));
|
|
|
+ var updateTeachers = ScTeachers.FindAll(x => updates.Select(y => $"{ y.PXID}").Contains($"{x.RowKey}"));
|
|
|
+ if (updateTeachers.IsNotEmpty()) {
|
|
|
+ //省平台更新的
|
|
|
+ updateTeachers.ForEach(x => {
|
|
|
+ var tt = teachers.Find(z => x.RowKey.Equals($"{z.PXID}"));
|
|
|
+ if (tt != null) {
|
|
|
+ x.status = 1;
|
|
|
+ x.TID =tt.TID;
|
|
|
+ x.TeacherName=tt.TeacherName;
|
|
|
+ x.SchoolID= tt.SchoolID;
|
|
|
+ x.SchoolName=tt.SchoolName;
|
|
|
+ x.ProjectID= tt.ProjectID;
|
|
|
+ x.ProjectItemID= tt.ProjectItemID;
|
|
|
+ x.ProjectItemTitle= tt.ProjectItemTitle;
|
|
|
+ x.ProjectTitle= tt.ProjectTitle;
|
|
|
+ x.CityID= tt.CityID;
|
|
|
+ x.DistrictID = tt.DistrictID;
|
|
|
+ x.CityName= tt.CityName;
|
|
|
+ x.DisName = tt.DisName;
|
|
|
+ x.Account= tt.Account;
|
|
|
+ x.TeacherXK = tt.TeacherXK;
|
|
|
+ x.TeacherXD= tt.TeacherXD;
|
|
|
+ x.Mobile = x.Mobile;
|
|
|
+ x.Email= tt.Email;
|
|
|
+ x.tmdid = null;
|
|
|
+ var school = ScSchools.Find(x => x.schoolid == x.schoolid);
|
|
|
+ x.schoolCode = school?.schoolCode;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ updateTeachers = await _azureStorage.UpdateAll(updateTeachers);
|
|
|
+ }
|
|
|
+ var unbindtmdid = ScTeachers.FindAll(x => string.IsNullOrEmpty(x.tmdid));
|
|
|
+ var tids = unbindtmdid.Select(x => $"{x.TID}").ToHashSet();
|
|
|
+ if (tids.Count() > 0)
|
|
|
+ {
|
|
|
+ List<DbBind> binds = new List<DbBind>();
|
|
|
+ string sql = $"SELECT c.id,b.userid,b.data FROM c join b in c.binds where b.userid in ({string.Join(",", tids.Select(x => $"'{x}'"))})";
|
|
|
+ await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").GetItemQueryIterator<DbBind>
|
|
|
+ (queryText: sql, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
|
|
|
+ {
|
|
|
+ binds.Add(item);
|
|
|
+ }
|
|
|
+ if (binds.IsNotEmpty())
|
|
|
+ {
|
|
|
+ List<ScTeacher> update = new List<ScTeacher>();
|
|
|
+ binds.ForEach(x => {
|
|
|
+ var exs = unbindtmdid.FindAll(z => $"{z.TID}".Equals(x.userid));
|
|
|
+ if (exs.IsNotEmpty())
|
|
|
+ {
|
|
|
+ exs.ForEach(y => {
|
|
|
+ y.tmdid = x.id;
|
|
|
+ });
|
|
|
+ update.AddRange(exs);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ var group = update.GroupBy(x => x.RowKey).Select(z => new { z.Key, list = z.ToList() });
|
|
|
+ List<ScTeacher> scTeachers = new();
|
|
|
+ group.ToList().ForEach(x => {
|
|
|
+ if (x.list.Count() == 1)
|
|
|
+ {
|
|
|
+ scTeachers.Add(x.list[0]);
|
|
|
+ }
|
|
|
+ else if (x.list.Count > 1)
|
|
|
+ {
|
|
|
+ scTeachers.Add(x.list[0]);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ scTeachers = await _azureStorage.SaveOrUpdateAll(scTeachers);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ unbindtmdid = await _azureStorage.FindListByDict<ScTeacher>(new Dictionary<string, object> { { "PartitionKey", "ScTeacher" }, { "areaId", $"{areaId}" } });
|
|
|
+ return Ok(unbindtmdid.Select(x => new { x.areaId, x.PXID, x.TID, x.TeacherName, x.tmdid, x.SchoolName, x.DisName }));
|
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
@@ -406,7 +494,7 @@ namespace TEAMModelOS.Controllers.Third
|
|
|
{
|
|
|
List<ScTeacher> unbindtmdid = new List<ScTeacher>();
|
|
|
//未保存在数据库的。
|
|
|
- var saveTeachers= teachers.FindAll(x => !areaTeacher.Select(x => x.RowKey).Contains($"{x.PXID}"));
|
|
|
+ var saveTeachers= teachers.FindAll(x => !areaTeacher.Select(y => y.RowKey).Contains($"{x.PXID}"));
|
|
|
if (saveTeachers.IsNotEmpty()) {
|
|
|
saveTeachers = await _azureStorage.SaveAll(saveTeachers);
|
|
|
unbindtmdid.AddRange(saveTeachers);
|
|
@@ -418,7 +506,7 @@ namespace TEAMModelOS.Controllers.Third
|
|
|
}
|
|
|
|
|
|
//处理没有醍摩豆id
|
|
|
- var tids= unbindtmdid.Select(x => $"{x.TID}").ToHashSet();
|
|
|
+ var tids= unbindtmdid.Select(x => $"{x.TID}").ToHashSet();
|
|
|
if (tids.Count() > 0) {
|
|
|
List<DbBind> binds = new List<DbBind>();
|
|
|
string sql = $"SELECT c.id,b.userid,b.data FROM c join b in c.binds where b.userid in ({string.Join(",", tids.Select(x => $"'{x}'"))})";
|