|
@@ -29,6 +29,7 @@ using Newtonsoft.Json.Linq;
|
|
|
using TEAMModelOS.SDK.Models.Cosmos.BI;
|
|
|
using Azure.Storage.Sas;
|
|
|
using System.Net.Http.Json;
|
|
|
+using TEAMModelOS.SDK.Helper.Common.TableHelper;
|
|
|
//using static DingTalk.Api.Response.OapiV2UserGetResponse;
|
|
|
|
|
|
namespace TEAMModeBI.Controllers
|
|
@@ -255,410 +256,6 @@ namespace TEAMModeBI.Controllers
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- /// <summary>
|
|
|
- /// 钉钉绑定醍摩豆信息
|
|
|
- /// </summary>
|
|
|
- /// <param name="ddbindparam"></param>
|
|
|
- /// <returns></returns>
|
|
|
- [ProducesDefaultResponseType]
|
|
|
- [HttpPost("bind")]
|
|
|
- [AllowAnonymous]
|
|
|
- public async Task<IActionResult> Bind(JsonElement jsonElement)
|
|
|
- {
|
|
|
- try
|
|
|
- {
|
|
|
- jsonElement.TryGetProperty("mobile", out JsonElement mobile);
|
|
|
- jsonElement.TryGetProperty("idToken", out JsonElement idToken);
|
|
|
- if (!jsonElement.TryGetProperty("param", out JsonElement param)) return BadRequest();
|
|
|
-
|
|
|
- HttpClient httpClient = _http.CreateClient();
|
|
|
- Teacher teacher = new Teacher();
|
|
|
- DingDingbinds ddbinds = param.ToObject<DingDingbinds>(); //将json数据转换为实体类
|
|
|
- TmdidImplicit implicit_token = new TmdidImplicit();
|
|
|
-
|
|
|
- Dictionary<string, object> dic = new Dictionary<string, object> { { "PartitionKey", "authority-bi" } };//设置只访问BI的权限
|
|
|
- List<Authority> authorityBIList = await _azureStorage.FindListByDict<Authority>(dic); //获取权限列表
|
|
|
- List<string> roles = new List<string>();//角色列表
|
|
|
- List<string> permissions = new List<string>();//权限列表
|
|
|
- List<string> depts = new List<string>(); //部门id
|
|
|
- School school_base = new School();
|
|
|
- string school_code = null;
|
|
|
- var auth_token = "";
|
|
|
-
|
|
|
- string blobOrTable = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
|
|
- OperateLog operateLog = new OperateLog();//操作记录
|
|
|
- operateLog.PartitionKey = "OperateLog-BI";
|
|
|
- operateLog.RowKey = blobOrTable;
|
|
|
- operateLog.recordID = blobOrTable;
|
|
|
- operateLog.platformSource = "BI";
|
|
|
- operateLog.tmdId = $"{teacher.id}";
|
|
|
- operateLog.tmdName = $"{teacher.name}";
|
|
|
- operateLog.visitApi = "common/login/bind";
|
|
|
- operateLog.operateTime = DateTime.Now;
|
|
|
-
|
|
|
- StringBuilder strBuilder = new StringBuilder();
|
|
|
-
|
|
|
- if (!string.IsNullOrEmpty($"{mobile}"))
|
|
|
- {
|
|
|
- List<JsonElement> mbs = new List<JsonElement>() { mobile };
|
|
|
- string url = _configuration.GetValue<string>("HaBookAuth:CoreId:userinfo");
|
|
|
-
|
|
|
- HttpResponseMessage responseMessage = await httpClient.PostAsJsonAsync(url, mbs);
|
|
|
- if (responseMessage.StatusCode == HttpStatusCode.OK)
|
|
|
- {
|
|
|
- string responseBody = await responseMessage.Content.ReadAsStringAsync();
|
|
|
- List<JsonElement> json_id = responseBody.ToObject<List<JsonElement>>();
|
|
|
- string temp_id = null;
|
|
|
- if (json_id.IsNotEmpty())
|
|
|
- {
|
|
|
- temp_id = json_id[0].GetProperty("id").ToString();
|
|
|
- }
|
|
|
-
|
|
|
- var client = _azureCosmos.GetCosmosClient();
|
|
|
- teacher = await client.GetContainer(Constant.TEAMModelOS, "Teacher").ReadItemAsync<Teacher>(temp_id, new PartitionKey("Base"));
|
|
|
-
|
|
|
- string sql = $"SELECT distinct value(c) FROM c join A1 in c.ddbinds where A1.userid='{ddbinds.userid}' and A1.unionid='{ddbinds.unionid}'";
|
|
|
- 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(temp_id))
|
|
|
- {
|
|
|
- var clientID = _configuration.GetValue<string>("HaBookAuth:CoreService:clientID");
|
|
|
- var location = _option.Location;
|
|
|
- implicit_token = await _aoreAPIHttpService.Implicit(
|
|
|
- new Dictionary<string, string>()
|
|
|
- {
|
|
|
- { "grant_type", "implicit" },
|
|
|
- { "client_id",clientID },
|
|
|
- { "account",teacher.id },
|
|
|
- { "nonce",Guid.NewGuid().ToString()}
|
|
|
- }, location, _configuration);
|
|
|
-
|
|
|
- if (implicit_token!=null)
|
|
|
- {
|
|
|
- var ddbind = teacher.ddbinds.Find(x => x.userid.Equals($"{ddbinds.userid}") && x.unionid.Equals($"{ddbinds.unionid}"));
|
|
|
- if (ddbind == null)
|
|
|
- {
|
|
|
- teacher.ddbinds = new List<Teacher.DingDingBind> { new Teacher.DingDingBind { type = $"{type}", deptIdList = ddbinds.deptIdList, title = ddbinds.title, name = ddbinds.name, unionid = ddbinds.unionid, userid = ddbinds.userid } };
|
|
|
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
|
|
|
-
|
|
|
- if (teacher.defaultSchool != null)
|
|
|
- {
|
|
|
- var schoolRoles = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(teacher.id, new PartitionKey($"Teacher-{teacher.defaultSchool}"));
|
|
|
- if (schoolRoles.Status == 200)
|
|
|
- {
|
|
|
- using var json = await JsonDocument.ParseAsync(schoolRoles.ContentStream);
|
|
|
- if (json.RootElement.TryGetProperty("roles", out JsonElement _roles) && _roles.ValueKind != JsonValueKind.Null)
|
|
|
- {
|
|
|
- foreach (var obj in _roles.EnumerateArray())
|
|
|
- {
|
|
|
- //初始定义顾问的assistant 更改为assist
|
|
|
- if (obj.GetString().Equals($"assist"))
|
|
|
- {
|
|
|
- roles.Add(obj.GetString());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (json.RootElement.TryGetProperty("permissions", out JsonElement _permissions) && _permissions.ValueKind != JsonValueKind.Null)
|
|
|
- {
|
|
|
- foreach (var obj in _permissions.EnumerateArray())
|
|
|
- {
|
|
|
- //限制只显示BI权限
|
|
|
- foreach (var aut in authorityBIList)
|
|
|
- {
|
|
|
- if (aut.RowKey.Equals(obj.GetString()))
|
|
|
- {
|
|
|
- permissions.Add(obj.GetString());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- school_base = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{teacher.defaultSchool}", new PartitionKey("Base"));
|
|
|
- //foreach (var period in school_base.period)
|
|
|
- //{
|
|
|
- // try
|
|
|
- // {
|
|
|
- // await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<ItemCond>($"{period.id}", new PartitionKey($"ItemCond-{teacher.defaultSchool}"));
|
|
|
- // }
|
|
|
- // catch (CosmosException)
|
|
|
- // {
|
|
|
- // ItemCond itemCond = new ItemCond
|
|
|
- // {
|
|
|
- // id = period.id,
|
|
|
- // pk = "ItemCond",
|
|
|
- // code = $"ItemCond-{teacher.defaultSchool}",
|
|
|
- // ttl = -1,
|
|
|
- // };
|
|
|
- // await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<ItemCond>(itemCond, new PartitionKey($"ItemCond-{teacher.defaultSchool}"));
|
|
|
- // }
|
|
|
- //}
|
|
|
- school_code = teacher.defaultSchool;
|
|
|
- }
|
|
|
-
|
|
|
- foreach (var tempdept in ddbinds.deptIdList)
|
|
|
- {
|
|
|
- depts.Add(tempdept.ToString());
|
|
|
- }
|
|
|
- strBuilder.Append($"醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,绑定成功");
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- if (teacher.ddbinds.IsNotEmpty())
|
|
|
- {
|
|
|
- teacher.ddbinds.RemoveAll(x => x.userid.Equals(ddbinds.userid) && x.unionid.Equals(ddbinds.unionid));
|
|
|
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
|
|
|
- }
|
|
|
-
|
|
|
- strBuilder.Append($"醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,绑定失败");
|
|
|
- operateLog.operateDescribe = strBuilder.ToString();
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog);
|
|
|
- return Ok(new { state = 1, message = "绑定失败" });
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- operateLog.operateDescribe = $"醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,账号已被别的醍摩豆id绑定";
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog);
|
|
|
-
|
|
|
- return Ok(new
|
|
|
- {
|
|
|
- location = _option.Location,
|
|
|
- //账号已被别的醍摩豆id绑定
|
|
|
- state = 2,
|
|
|
- tmdid = teacher.id,
|
|
|
- name = teacher.name,
|
|
|
- ddid = ddbinds.userid,
|
|
|
- ddname = ddbinds.name
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- teacher = new Teacher
|
|
|
- {
|
|
|
- id = temp_id,
|
|
|
- pk = "Base",
|
|
|
- code = "Base",
|
|
|
- name = temp_id,
|
|
|
- //创建账号并第一次登录IES5则默认赠送1G
|
|
|
- size = 1,
|
|
|
- defaultSchool = null,
|
|
|
- schools = new List<Teacher.TeacherSchool>(),
|
|
|
- ddbinds = new List<Teacher.DingDingBind> { new Teacher.DingDingBind { type = $"{type}", deptIdList = ddbinds.deptIdList, title = ddbinds.title, name = ddbinds.name, unionid = ddbinds.unionid, userid = ddbinds.userid } },
|
|
|
- };
|
|
|
- var container = _azureStorage.GetBlobContainerClient(temp_id);
|
|
|
- await container.CreateIfNotExistsAsync(PublicAccessType.None); //尝试创建Teacher私有容器,如存在则不做任何事,保障容器一定存在
|
|
|
- teacher = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").CreateItemAsync<Teacher>(teacher, new PartitionKey("Base"));
|
|
|
-
|
|
|
- foreach (var tempdept in ddbinds.deptIdList)
|
|
|
- {
|
|
|
- depts.Add(tempdept.ToString());
|
|
|
- }
|
|
|
-
|
|
|
- auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, teacher.id, teacher.name?.ToString(), teacher.picture?.ToString(), _option.JwtSecretKey, scope: Constant.ScopeTeacher, schoolID: school_code?.ToString(), standard: school_base.standard, roles: roles.ToArray(), permissions: permissions.ToArray(), ddDepts: depts.ToArray(), ddsub: ddbinds.userid);
|
|
|
-
|
|
|
- strBuilder.Append($"醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,新建的账户绑定成功");
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return Ok(new { state = 3, message = "通过手机号查询用户信息异常" });
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- if (!string.IsNullOrEmpty($"{idToken}"))
|
|
|
- {
|
|
|
- var jwt = new JwtSecurityToken($"{idToken}");
|
|
|
- //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"));
|
|
|
- string sql = $"select distinct value(c) from c join A1 in c.ddbinds where A1.userid='{ddbinds.userid}' AND A1.unionid ='{ddbinds.unionid}'";
|
|
|
- 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 ddbind = teacher.ddbinds.Find(x => x.userid.Equals($"{ddbinds.userid}") && x.unionid.Equals($"{ddbinds.unionid}"));
|
|
|
- if (ddbind == null)
|
|
|
- {
|
|
|
- teacher.ddbinds = new List<Teacher.DingDingBind> { new Teacher.DingDingBind { type = $"{type}", deptIdList = ddbinds.deptIdList, title = ddbinds.title, name = ddbinds.name, unionid = ddbinds.unionid, userid = ddbinds.userid } };
|
|
|
- await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "Teacher").ReplaceItemAsync<Teacher>(teacher, teacher.id, new PartitionKey(teacher.code));
|
|
|
-
|
|
|
- //添加
|
|
|
- if (teacher.defaultSchool != null)
|
|
|
- {
|
|
|
- var schoolRoles = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemStreamAsync(teacher.id, new PartitionKey($"Teacher-{teacher.defaultSchool}"));
|
|
|
- if (schoolRoles.Status == 200)
|
|
|
- {
|
|
|
- using var json = await JsonDocument.ParseAsync(schoolRoles.ContentStream);
|
|
|
- if (json.RootElement.TryGetProperty("roles", out JsonElement _roles) && _roles.ValueKind != JsonValueKind.Null)
|
|
|
- {
|
|
|
- foreach (var obj in _roles.EnumerateArray())
|
|
|
- {
|
|
|
- //初始定义顾问的assistant 更改为assist
|
|
|
- if (obj.GetString().Equals($"assist"))
|
|
|
- {
|
|
|
- roles.Add(obj.GetString());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (json.RootElement.TryGetProperty("permissions", out JsonElement _permissions) && _permissions.ValueKind != JsonValueKind.Null)
|
|
|
- {
|
|
|
- foreach (var obj in _permissions.EnumerateArray())
|
|
|
- {
|
|
|
- //限制只显示BI权限
|
|
|
- foreach (var aut in authorityBIList)
|
|
|
- {
|
|
|
- if (aut.RowKey.Equals(obj.GetString()))
|
|
|
- {
|
|
|
- permissions.Add(obj.GetString());
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- school_base = await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<School>($"{teacher.defaultSchool}", new PartitionKey("Base"));
|
|
|
- //foreach (var period in school_base.period)
|
|
|
- //{
|
|
|
- // try
|
|
|
- // {
|
|
|
- // await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").ReadItemAsync<ItemCond>($"{period.id}", new PartitionKey($"ItemCond-{teacher.defaultSchool}"));
|
|
|
- // }
|
|
|
- // catch (CosmosException)
|
|
|
- // {
|
|
|
- // ItemCond itemCond = new ItemCond
|
|
|
- // {
|
|
|
- // id = period.id,
|
|
|
- // pk = "ItemCond",
|
|
|
- // code = $"ItemCond-{teacher.defaultSchool}",
|
|
|
- // ttl = -1,
|
|
|
- // };
|
|
|
- // await _azureCosmos.GetCosmosClient().GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<ItemCond>(itemCond, new PartitionKey($"ItemCond-{teacher.defaultSchool}"));
|
|
|
- // }
|
|
|
- //}
|
|
|
- school_code = teacher.defaultSchool;
|
|
|
- }
|
|
|
-
|
|
|
- foreach (var tempdept in ddbinds.deptIdList)
|
|
|
- {
|
|
|
- depts.Add(tempdept.ToString());
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, teacher.id, teacher.name?.ToString(), teacher.picture?.ToString(), _option.JwtSecretKey, scope: Constant.ScopeTeacher, schoolID: school_code?.ToString(), standard: school_base.standard, roles: roles.ToArray(), permissions: permissions.ToArray(), ddDepts: depts.ToArray(), ddsub: ddbinds.userid);
|
|
|
-
|
|
|
- operateLog.operateDescribe = $"新建的账户的醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,绑定成功";
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog);
|
|
|
-
|
|
|
- return Ok(new
|
|
|
- {
|
|
|
- state = 200,
|
|
|
- auth_token = auth_token,
|
|
|
- idToken = idToken,
|
|
|
- teacher = teacher,
|
|
|
- location = _option.Location,
|
|
|
- });
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- operateLog.operateDescribe = $"醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,账号已被别的醍摩豆id绑定";
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog);
|
|
|
-
|
|
|
- return Ok(new
|
|
|
- {
|
|
|
- location = _option.Location,
|
|
|
- //账号已被别的醍摩豆id绑定
|
|
|
- state = 2,
|
|
|
- tmdid = teacher.id,
|
|
|
- name = teacher.name,
|
|
|
- userid = ddbinds.userid,
|
|
|
- ddname = ddbinds.name
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
- 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>(),
|
|
|
- ddbinds = new List<Teacher.DingDingBind> { new Teacher.DingDingBind { type = $"{type}", deptIdList = ddbinds.deptIdList, title = ddbinds.title, name = ddbinds.name, unionid = ddbinds.unionid, userid = ddbinds.userid } }
|
|
|
- };
|
|
|
-
|
|
|
- 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"));
|
|
|
-
|
|
|
- foreach (var tempdept in ddbinds.deptIdList)
|
|
|
- {
|
|
|
- depts.Add(tempdept.ToString());
|
|
|
- }
|
|
|
-
|
|
|
- auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, teacher.id, teacher.name?.ToString(), teacher.picture?.ToString(), _option.JwtSecretKey, scope: Constant.ScopeTeacher, schoolID: school_code?.ToString(), standard: school_base.standard, roles: roles.ToArray(), permissions: permissions.ToArray(), ddDepts: depts.ToArray(), ddsub: ddbinds.userid);
|
|
|
-
|
|
|
- strBuilder.Append($"醍摩豆账户{teacher.id}【{teacher.name}】和钉钉账户{ddbinds.userid}【{ddbinds.name}】进行绑定,新建的账户绑定成功");
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog);
|
|
|
- return Ok(new
|
|
|
- {
|
|
|
- state = 200,
|
|
|
- auth_token = auth_token,
|
|
|
- idToken = id,
|
|
|
- //teacher = teacher,
|
|
|
- location = _option.Location,
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, teacher.id, teacher.name?.ToString(), teacher.picture?.ToString(), _option.JwtSecretKey, scope: Constant.ScopeTeacher, schoolID: school_code.ToString(), standard: school_base.standard, roles: roles.ToArray(), permissions: permissions.ToArray(), ddDepts: depts.ToArray(), ddsub: ddbinds.userid);
|
|
|
- string temp_idToken = string.IsNullOrEmpty($"{idToken}") ? implicit_token.id_token : idToken.ToString();
|
|
|
- operateLog.operateDescribe = strBuilder.ToString();
|
|
|
- return Ok(new
|
|
|
- {
|
|
|
- state = 200,
|
|
|
- auth_token = auth_token,
|
|
|
- idToken = temp_idToken,
|
|
|
- teacher = teacher,
|
|
|
- location = _option.Location,
|
|
|
- });
|
|
|
- }
|
|
|
- catch (Exception ex)
|
|
|
- {
|
|
|
- await _dingDing.SendBotMsg($"BI,{_option.Location} common/login/bind \n {ex.Message}{ex.StackTrace} ", GroupNames.成都开发測試群組);
|
|
|
- return Ok(new
|
|
|
- {
|
|
|
- state = 1,
|
|
|
- location = _option.Location
|
|
|
- });
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
/// <summary>
|
|
|
/// 依据id_Ttoken获取教师信息
|
|
|
/// </summary>
|
|
@@ -927,16 +524,6 @@ namespace TEAMModeBI.Controllers
|
|
|
if (!jsonElement.TryGetProperty("partitionKey", out JsonElement partitionKey)) return BadRequest();
|
|
|
if (!jsonElement.TryGetProperty("rowKey", out JsonElement userId)) return BadRequest();
|
|
|
|
|
|
- //操作记录
|
|
|
- OperateLog operateLog = new OperateLog();
|
|
|
- string blobOrTable = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
|
|
- operateLog.PartitionKey = "OperateLog-BI";
|
|
|
- operateLog.RowKey = blobOrTable;
|
|
|
- operateLog.recordID = blobOrTable;
|
|
|
- operateLog.platformSource = "BI";
|
|
|
- operateLog.visitApi = "/common/login/set-ddinductionuser";
|
|
|
- operateLog.operateTime = DateTime.Now;
|
|
|
-
|
|
|
HttpClient httpClient = _http.CreateClient();
|
|
|
string url = _configuration.GetValue<string>("HaBookAuth:CoreId:userinfo");
|
|
|
HttpResponseMessage responseMessage = await httpClient.PostAsJsonAsync(url, moile);
|
|
@@ -961,25 +548,20 @@ namespace TEAMModeBI.Controllers
|
|
|
itemUser.picture = item.GetProperty("picture").ToString();
|
|
|
itemUser.mail = item.GetProperty("mail").ToString();
|
|
|
|
|
|
- operateLog.operateType = "修改";
|
|
|
- operateLog.funModule = "钉钉绑定";
|
|
|
- operateLog.tmdId = item.GetProperty("id").ToString();
|
|
|
- operateLog.tmdName = item.GetProperty("name").ToString();
|
|
|
- operateLog.operateDescribe = $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功";
|
|
|
-
|
|
|
+ //保存操作记录
|
|
|
+ await OperateLogHelper.SaveTableLog(_azureStorage, platform: "BI", tmdId: $"{tmdId}", tmdName: $"{tmdName}", msg: $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功", type: "tabledd-update", visitApi: "/common/login/binguser", funModel: "绑定");
|
|
|
ddUserInfos.Add(itemUser);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
var dingDingUserInfos = await _azureStorage.UpdateAll<DingDingUserInfo>(ddUserInfos);
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog); //保存操作记录
|
|
|
+
|
|
|
|
|
|
return Ok(new { state = 200, ddUsers = dingDingUserInfos });
|
|
|
}
|
|
|
else return Ok(new { state = 400, message = "该手机没有注册提莫信息" });
|
|
|
}
|
|
|
else return Ok(new { state = responseMessage.StatusCode });
|
|
|
-
|
|
|
}
|
|
|
catch (Exception ex)
|
|
|
{
|
|
@@ -1020,16 +602,6 @@ namespace TEAMModeBI.Controllers
|
|
|
}
|
|
|
else
|
|
|
{
|
|
|
- //操作记录
|
|
|
- OperateLog operateLog = new OperateLog();
|
|
|
- string blobOrTable = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString();
|
|
|
- operateLog.PartitionKey = "OperateLog-BI";
|
|
|
- operateLog.RowKey = blobOrTable;
|
|
|
- operateLog.recordID = blobOrTable;
|
|
|
- operateLog.platformSource = "BI";
|
|
|
- operateLog.visitApi = "/common/login/get-ddinfo";
|
|
|
- operateLog.operateTime = DateTime.Now;
|
|
|
-
|
|
|
HttpClient httpClient = _http.CreateClient();
|
|
|
string url = _configuration.GetValue<string>("HaBookAuth:CoreId:userinfo");
|
|
|
HttpResponseMessage responseMessage = await httpClient.PostAsJsonAsync(url, moile);
|
|
@@ -1040,29 +612,27 @@ namespace TEAMModeBI.Controllers
|
|
|
if (temp.Length > 0)
|
|
|
{
|
|
|
List<JsonElement> itemjson = temp.ToObject<List<JsonElement>>();
|
|
|
+ string tmdId = null;
|
|
|
+ string tmdName = null;
|
|
|
foreach (var item in itemjson)
|
|
|
{
|
|
|
- var tmdId = item.GetProperty("id").ToString();
|
|
|
- var tmdName = item.GetProperty("name").ToString();
|
|
|
- itemUser.tmdId = tmdId;
|
|
|
- itemUser.tmdName = tmdName;
|
|
|
+ tmdId = item.GetProperty("id").ToString();
|
|
|
+ tmdName = item.GetProperty("name").ToString();
|
|
|
+ itemUser.tmdId = tmdId?.ToString();
|
|
|
+ itemUser.tmdName = tmdName?.ToString();
|
|
|
itemUser.tmdMobile = item.GetProperty("mobile").ToString();
|
|
|
itemUser.picture = item.GetProperty("picture").ToString();
|
|
|
itemUser.mail = item.GetProperty("mail").ToString();
|
|
|
roles = !string.IsNullOrEmpty($"{itemUser.roles}") ? new List<string>(itemUser.roles.Split(",")) : new List<string>();
|
|
|
permissions = !string.IsNullOrEmpty($"{itemUser.permissions}") ? new List<string>(itemUser.permissions.Split(",")) : new List<string>();
|
|
|
|
|
|
- operateLog.operateType = "修改";
|
|
|
- operateLog.funModule = "钉钉绑定";
|
|
|
- operateLog.tmdId = item.GetProperty("id").ToString();
|
|
|
- operateLog.tmdName = item.GetProperty("name").ToString();
|
|
|
- operateLog.operateDescribe = $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功";
|
|
|
-
|
|
|
ddUserInfos.Add(itemUser);
|
|
|
}
|
|
|
|
|
|
ddUserInfos = await _azureStorage.UpdateAll<DingDingUserInfo>(ddUserInfos);
|
|
|
- await _azureStorage.Save<OperateLog>(operateLog); //保存操作记录
|
|
|
+
|
|
|
+ //保存操作记录
|
|
|
+ await OperateLogHelper.SaveTableLog(_azureStorage, platform: "BI", tmdId: tmdId?.ToString(), tmdName: tmdName?.ToString(), msg: $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功", type: "tabledd-update", visitApi: "/common/login/get-ddinfo", funModel: "绑定");
|
|
|
}
|
|
|
else return Ok(new { state = 400, message = "该手机没有注册醍摩豆账号信息" });
|
|
|
}
|