|
@@ -37,6 +37,7 @@ using static TEAMModelOS.Controllers.CourseController;
|
|
|
using System.IdentityModel.Tokens.Jwt;
|
|
|
using TEAMModelOS.SDK.Models.Cosmos.OpenEntity;
|
|
|
using Microsoft.OData.UriParser;
|
|
|
+using FastJSON;
|
|
|
|
|
|
namespace TEAMModelOS.Controllers
|
|
|
{
|
|
@@ -824,54 +825,74 @@ namespace TEAMModelOS.Controllers
|
|
|
{
|
|
|
var client = _azureCosmos.GetCosmosClient();
|
|
|
json.TryGetProperty("searchKey", out JsonElement _searchKey);
|
|
|
- List<CoreUser> coreUsers = new();
|
|
|
+ List<CoreUser> coreUsers = new(); List<CoreUser> unjoined = new();
|
|
|
IEnumerable<string> unexist = null;
|
|
|
+ StringBuilder sql = new("select c.id,c.name ,c.picture,c.job ,c.subjectIds,c.roles from c");
|
|
|
+
|
|
|
if (_searchKey.ValueKind.Equals(JsonValueKind.Array))
|
|
|
{
|
|
|
List<string> searchKey = _searchKey.ToObject<List<string>>();
|
|
|
- var keys = searchKey.Where(x => !string.IsNullOrWhiteSpace(x));
|
|
|
- var content = new StringContent(keys.ToJsonString(), Encoding.UTF8, "application/json");
|
|
|
- string ujson = await _coreAPIHttpService.GetUserInfos(content);
|
|
|
- if (!string.IsNullOrWhiteSpace(ujson))
|
|
|
+ if (searchKey.Count > 0)
|
|
|
{
|
|
|
- coreUsers = ujson.ToObject<List<CoreUser>>();
|
|
|
+ var keys = searchKey.Where(x => !string.IsNullOrWhiteSpace(x));
|
|
|
+ var content = new StringContent(keys.ToJsonString(), Encoding.UTF8, "application/json");
|
|
|
+ string ujson = await _coreAPIHttpService.GetUserInfos(content);
|
|
|
+ if (!string.IsNullOrWhiteSpace(ujson))
|
|
|
+ {
|
|
|
+ coreUsers = ujson.ToObject<List<CoreUser>>();
|
|
|
+ }
|
|
|
+
|
|
|
+ if (coreUsers.Any())
|
|
|
+ unexist = searchKey.Except(coreUsers.Select(x => x.searchKey));
|
|
|
+ else
|
|
|
+ return new ResponseData<dynamic>() { code = RespondCode.NotFound, msg = "没有找到对应的教师信息", data = _searchKey };
|
|
|
}
|
|
|
- if (coreUsers.Any())
|
|
|
- unexist = searchKey.Except(coreUsers.Select(x => x.searchKey));
|
|
|
- else
|
|
|
- return new ResponseData<dynamic>() { code = RespondCode.NotFound, msg = "没有找到对应的教师信息", data = { null, null, unexist } };
|
|
|
}
|
|
|
|
|
|
List<SchoolTeacher> teachers = new();
|
|
|
- string insql = "";
|
|
|
- if (coreUsers.Any())
|
|
|
+ //string insql = "";
|
|
|
+ if (coreUsers.Count > 1)
|
|
|
{
|
|
|
- insql = $" where c.id in ({string.Join(",", coreUsers.Select(x => $"'{x.id}'"))}) ";
|
|
|
+ if (coreUsers.Any())
|
|
|
+ {
|
|
|
+ //insql = $" where c.id in ({string.Join(",", coreUsers.Select(x => $"'{x.id}'"))}) ";
|
|
|
+ sql.Append($" where c.id in ({string.Join(",", coreUsers.Select(x => $"'{x.id}'"))}) ");
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
- string sql = $"select c.id,c.name ,c.picture,c.job ,c.subjectIds,c.roles from c {insql}";
|
|
|
+ //string sql = $"select c.id,c.name ,c.picture,c.job ,c.subjectIds,c.roles from c {insql}";
|
|
|
await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").GetItemQueryIterator<SchoolTeacher>
|
|
|
- (queryText: sql, requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Teacher-{school}") }))
|
|
|
+ (queryText: sql.ToString(), requestOptions: new QueryRequestOptions { PartitionKey = new PartitionKey($"Teacher-{school}") }))
|
|
|
{
|
|
|
teachers.Add(item);
|
|
|
}
|
|
|
- var teacherIds = coreUsers.Select(x => x.id).Except(teachers.Select(x => x.id));
|
|
|
- List<CoreUser> unjoined = coreUsers.FindAll(x => teacherIds.Contains(x.id));
|
|
|
+
|
|
|
+ if (coreUsers.Count > 0)
|
|
|
+ {
|
|
|
+ var teacherIds = coreUsers.Select(x => x.id).Except(teachers.Select(x => x.id));
|
|
|
+ unjoined= coreUsers.FindAll(x => teacherIds.Contains(x.id));
|
|
|
+ }
|
|
|
+
|
|
|
List<dynamic> tchs = new List<dynamic>();
|
|
|
teachers.Select(x => new { x.id, x.name, x.picture, x.job, x.subjectIds, x.roles }).ToList().ForEach(x =>
|
|
|
{
|
|
|
- var coreUser = coreUsers.Find(c => c.id.Equals(x.id));
|
|
|
- if (coreUser != null)
|
|
|
+ if (coreUsers.Count > 0)
|
|
|
{
|
|
|
- tchs.Add(new { x.id, coreUser.name, coreUser.picture, x.job, x.subjectIds, x.roles, coreUser.searchKey, school });
|
|
|
+ var coreUser = coreUsers.Find(c => c.id.Equals(x.id));
|
|
|
+ if (coreUser != null)
|
|
|
+ {
|
|
|
+ tchs.Add(new { x.id, coreUser.name, coreUser.picture, x.job, x.subjectIds, x.roles, coreUser.searchKey, school });
|
|
|
+ }
|
|
|
}
|
|
|
+ else
|
|
|
+ tchs.Add(new { x.id, x.name, x.picture, x.job, x.subjectIds, x.roles, school });
|
|
|
});
|
|
|
|
|
|
- return new ResponseData<dynamic>() { code = RespondCode.Ok, msg = "成功", data = new { tchs, unjoined = unjoined.Select(x => new OCoreUer { id = x.id, name = x.name, picture = x.picture, searchKey = x.searchKey }).ToList(), unexist } };
|
|
|
+ return new ResponseData<dynamic>() { code = RespondCode.Ok, msg = "成功", data = new { tchs, unjoined = unjoined.Select(x => new { id = x.id, name = x.name, picture = x.picture, searchKey = x.searchKey }).ToList(), unexist } };
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
|
- await _dingDing.SendBotMsg($"OpenApi,{Environment.GetEnvironmentVariable("Option:Location")} OpenApiService/GetTeacherList() 参数:bizId:{bizId},school:{school},json:{json.ToJsonString()} \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
|
|
|
+ //await _dingDing.SendBotMsg($"OpenApi,{Environment.GetEnvironmentVariable("Option:Location")} OpenApiService/GetTeacherList() 参数:bizId:{bizId},school:{school},json:{json.ToJsonString()} \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
|
|
|
return new ResponseData<dynamic>() { code = RespondCode.Error, msg = "服务端异常" };
|
|
|
}
|
|
|
}
|
|
@@ -1831,5 +1852,43 @@ namespace TEAMModelOS.Controllers
|
|
|
|
|
|
}
|
|
|
|
|
|
+ /// <summary>
|
|
|
+ /// 获取学生详细信息
|
|
|
+ /// </summary>
|
|
|
+ /// <param name="_azureCosmos"></param>
|
|
|
+ /// <param name="_dingDing"></param>
|
|
|
+ /// <param name="bizId"></param>
|
|
|
+ /// <param name="school"></param>
|
|
|
+ /// <param name="json"></param>
|
|
|
+ /// <returns></returns>
|
|
|
+ public static async Task<ResponseData<dynamic>> GetStudentInfo(AzureCosmosFactory _azureCosmos, DingDing _dingDing, string bizId, string school, JsonElement json)
|
|
|
+ {
|
|
|
+
|
|
|
+ if (!json.TryGetProperty("ids", out JsonElement _ids)) return new ResponseData<dynamic>() { code = RespondCode.ParamsError, msg = "idToken参数错误", data = null };
|
|
|
+ try
|
|
|
+ {
|
|
|
+ List<string> ids = _ids.ToObject<List<string>>();
|
|
|
+ List<OStudent> student = new();
|
|
|
+ //List<OStudent> tmdId = new();
|
|
|
+
|
|
|
+ string sqlStu = $"select value(c) from c where c.id in ({string.Join(",", ids.Select(s => $"'{s}'"))})";
|
|
|
+ await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").GetItemQueryIterator<OStudent>(queryText: sqlStu, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base-{school}") }))
|
|
|
+ {
|
|
|
+ student.Add(item);
|
|
|
+ }
|
|
|
+ //string sqlTmd = $"select value(c) from c join s in c.schools where c.id in ({string.Join(",", ids.Select(s => $"'{s}'"))}) and s.schoolId='{school}'";
|
|
|
+ //await foreach (var item in _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Student").GetItemQueryIterator<OStudent>(queryText: sqlTmd, requestOptions: new QueryRequestOptions() { PartitionKey = new PartitionKey($"Base") }))
|
|
|
+ //{
|
|
|
+ // tmdId.Add(item);
|
|
|
+ //}
|
|
|
+
|
|
|
+ return new ResponseData<dynamic>() { code = RespondCode.Ok, msg = "成功", data = student };
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ await _dingDing.SendBotMsg($"OpenApi,{Environment.GetEnvironmentVariable("Option:Location")} OpenApiService/GetLoginStuInfo() 参数:学生id集合:{_ids},school:{school},json:{json.ToJsonString()} \n {ex.Message}\n{ex.StackTrace}", GroupNames.成都开发測試群組);
|
|
|
+ return new ResponseData<dynamic>() { code = RespondCode.Error, msg = "服务器错误" };
|
|
|
+ }
|
|
|
+ }
|
|
|
}
|
|
|
}
|