|
@@ -34,6 +34,9 @@ using Microsoft.Identity.Client;
|
|
|
using TEAMModelOS.SDK.Models.Dtos;
|
|
|
using DocumentFormat.OpenXml.Spreadsheet;
|
|
|
using DocumentFormat.OpenXml.Wordprocessing;
|
|
|
+using static TEAMModelBI.Controllers.BISchool.BatchSchoolController;
|
|
|
+using DocumentFormat.OpenXml.Bibliography;
|
|
|
+using HTEXLib;
|
|
|
|
|
|
namespace TEAMModelBI.Controllers.BISchool
|
|
|
{
|
|
@@ -1248,7 +1251,7 @@ namespace TEAMModelBI.Controllers.BISchool
|
|
|
tempTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(tempTeacher, msId, new PartitionKey("Base"));
|
|
|
}
|
|
|
|
|
|
- //添加学校学校顾问
|
|
|
+ //添加学校学校管理员
|
|
|
await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(addSchoolTeacher, new PartitionKey($"Teacher-{scId}"));
|
|
|
}
|
|
|
}
|
|
@@ -1279,7 +1282,7 @@ namespace TEAMModelBI.Controllers.BISchool
|
|
|
createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
|
|
|
};
|
|
|
|
|
|
- //添加学校学校顾问
|
|
|
+ //添加学校学校管理员
|
|
|
await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(addSchoolTeacher, new PartitionKey($"Teacher-{scId}"));
|
|
|
}
|
|
|
}
|
|
@@ -1298,13 +1301,126 @@ namespace TEAMModelBI.Controllers.BISchool
|
|
|
/// <param name="jsonElement"></param>
|
|
|
/// <returns></returns>
|
|
|
[ProducesDefaultResponseType]
|
|
|
+ [AuthToken(Roles = "admin")]
|
|
|
[HttpPost("batch-scmanage")]
|
|
|
public async Task<IActionResult> BatchScManage(JsonElement jsonElement)
|
|
|
{
|
|
|
+ if (!jsonElement.TryGetProperty("scManages", out JsonElement _scManages)) return BadRequest();
|
|
|
+ var cosmosClient = _azureCosmos.GetCosmosClient();
|
|
|
+ List<ScManages> scManages = _scManages.ToObject<List<ScManages>>();
|
|
|
|
|
|
+ List<ScManages> error = new(); //异常数据
|
|
|
|
|
|
+ foreach (var item in scManages)
|
|
|
+ {
|
|
|
+ School school = new();
|
|
|
+ var resSc = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{item.id}", new PartitionKey("Base"));
|
|
|
+ if (resSc.Status == 200)
|
|
|
+ {
|
|
|
+ using var sJson = await JsonDocument.ParseAsync(resSc.ContentStream);
|
|
|
+ school = sJson.ToObject<School>();
|
|
|
+ //CoreUser coreUser = await _coreAPIHttpService.GetUserInfo(new Dictionary<string, string> { { "key", $"19940828843" } }, _option.Location, _configuration);
|
|
|
+ var content = new StringContent(item.mobiles.ToArray().ToJsonString(), Encoding.UTF8, "application/json");
|
|
|
+ string json = await _coreAPIHttpService.GetUserInfos(content);
|
|
|
+ List<TmdUserinfo> tmdInfos = json.ToObject<List<TmdUserinfo>>();
|
|
|
+ Teacher teacher = new();
|
|
|
+ foreach (var tmd in tmdInfos)
|
|
|
+ {
|
|
|
+ var respone = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemStreamAsync($"{tmd.id}", new PartitionKey("Base"));
|
|
|
+ if (respone.Status == 200)
|
|
|
+ {
|
|
|
+ using var tchJson = await JsonDocument.ParseAsync(respone.ContentStream);
|
|
|
+ teacher = tchJson.ToObject<Teacher>();
|
|
|
+ var response = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync($"{tmd.id}", new PartitionKey($"Teacher-{item.id}"));
|
|
|
+ if (response.Status == 200)
|
|
|
+ {
|
|
|
+ using var scTchJson = await JsonDocument.ParseAsync(response.ContentStream);
|
|
|
+ SchoolTeacher tchSc = scTchJson.ToObject<SchoolTeacher>();
|
|
|
+ if (tchSc.roles.Contains("admin"))
|
|
|
+ {
|
|
|
+ tchSc.roles.Add("admin");
|
|
|
+ //添加顾问权限
|
|
|
+ await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<SchoolTeacher>(tchSc, tchSc.id, new PartitionKey($"Teacher-{item.id}"));
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ var exsitI = error.Find(f => f.id.Equals(item.id));
|
|
|
+ if (exsitI != null)
|
|
|
+ {
|
|
|
+ var replacts = error.Where(w => w.id.Equals(item.id)).FirstOrDefault();
|
|
|
+ replacts.mobiles.Add($"{item.id}");
|
|
|
+ }
|
|
|
+ else
|
|
|
+ error.Add(new ScManages { id = item.id, name = item.name, mobiles = new List<string>() { $"{tmd.id}" } });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ SchoolTeacher addSchoolTeacher = new()
|
|
|
+ {
|
|
|
+ id = tmd.id,
|
|
|
+ code = $"Teacher-{item.id}",
|
|
|
+ pk = "Teacher",
|
|
|
+ status = "join",
|
|
|
+ roles = new List<string>() { "admin" },
|
|
|
+ name = tmd.name,
|
|
|
+ job = $"管理员",
|
|
|
+ size = 0,
|
|
|
+ createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
|
|
|
+ };
|
|
|
|
|
|
- return Ok(new { state = RespondCode.Ok });
|
|
|
+ var haveTeacher = teacher.schools.Find(x => x.schoolId.Equals($"{item.id}"));
|
|
|
+ if (haveTeacher == null)
|
|
|
+ {
|
|
|
+ //教师存在,在该教师信息中添加要管理的学校信息
|
|
|
+ teacher.schools.Add(new Teacher.TeacherSchool { areaId = string.IsNullOrEmpty(school.areaId) ? "" : school.areaId, schoolId = school.id, name = school.name, status = "join", time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds() });
|
|
|
+
|
|
|
+ teacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey("Base"));
|
|
|
+ }
|
|
|
+
|
|
|
+ //添加学校学校顾问
|
|
|
+ await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(addSchoolTeacher, new PartitionKey($"Teacher-{item.id}"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ teacher = new()
|
|
|
+ {
|
|
|
+ id = $"{tmd.id}",
|
|
|
+ name = $"{tmd.name}",
|
|
|
+ picture = $"{tmd.picture}",
|
|
|
+ pk = "Base",
|
|
|
+ code = "Base",
|
|
|
+ size = 1,
|
|
|
+ createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
|
|
|
+ schools = new List<Teacher.TeacherSchool>() { new Teacher.TeacherSchool { schoolId = $"{school.id}", name = $"{school.name}", status = "join", time = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), picture = school.province, areaId = school.areaId } }
|
|
|
+ };
|
|
|
+
|
|
|
+ teacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "Teacher").CreateItemAsync<Teacher>(teacher, new PartitionKey("Base"));
|
|
|
+
|
|
|
+ SchoolTeacher addSchoolTeacher = new()
|
|
|
+ {
|
|
|
+ id = tmd.id,
|
|
|
+ code = $"Teacher-{item.id}",
|
|
|
+ pk = "Teacher",
|
|
|
+ status = "join",
|
|
|
+ roles = new List<string>() { "admin" },
|
|
|
+ name = tmd.name,
|
|
|
+ job = $"管理员",
|
|
|
+ size = 0,
|
|
|
+ createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds()
|
|
|
+ };
|
|
|
+
|
|
|
+ //添加学校学校管理员
|
|
|
+ await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(addSchoolTeacher, new PartitionKey($"Teacher-{item.id}"));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else
|
|
|
+ error.Add(new ScManages { id = item.id, name = item.name, mobiles = new List<string>() });
|
|
|
+ }
|
|
|
+
|
|
|
+ return Ok(new { state = RespondCode.Ok, error });
|
|
|
}
|
|
|
|
|
|
#region 预设学校基础信息 多语言
|
|
@@ -1527,5 +1643,15 @@ namespace TEAMModelBI.Controllers.BISchool
|
|
|
public string tmdId { get; set; }
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /// <summary>
|
|
|
+ /// 管理员
|
|
|
+ /// </summary>
|
|
|
+ public record ScManages
|
|
|
+ {
|
|
|
+ public string id { get; set; }
|
|
|
+ public string name { get; set; }
|
|
|
+ public List<string> mobiles { get; set; }
|
|
|
+ }
|
|
|
}
|
|
|
}
|