Ver Fonte

删除以前存在IES5中的AuthToken 部门字段,优化BI和IES 操作日志文件分离,并优化相关接口

Li há 3 anos atrás
pai
commit
819db29664

+ 3 - 3
TEAMModelBI/Controllers/BIAbility/AbilityMgmtController.cs

@@ -133,7 +133,7 @@ namespace TEAMModelBI.Controllers.BIAbility
                 if (response.Status == 200)
                 if (response.Status == 200)
                 {
                 {
                     //保存操作记录
                     //保存操作记录
-                    await _azureStorage.SaveLog("ability-del", $"{_tmdName}【{_tmdId}】删除册别,删除ID:{id}", _dingDing, httpContext: HttpContext);
+                    await _azureStorage.SaveBILog("ability-del", $"{_tmdName}【{_tmdId}】删除册别,删除ID:{id}", _dingDing, httpContext: HttpContext);
 
 
                     return Ok(new { state = 200 });
                     return Ok(new { state = 200 });
                 }
                 }
@@ -224,7 +224,7 @@ namespace TEAMModelBI.Controllers.BIAbility
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog(tempType?.ToString(), stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog(tempType?.ToString(), stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, Ability = tempAbility });
                 return Ok(new { state = 200, Ability = tempAbility });
             }
             }
@@ -261,7 +261,7 @@ namespace TEAMModelBI.Controllers.BIAbility
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("ability-update", $"{_tmdName}【{_tmdId}】设置是否必修状态。标准:{currencys[0].standard}", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("ability-update", $"{_tmdName}【{_tmdId}】设置是否必修状态。标准:{currencys[0].standard}", _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, currencys });
                 return Ok(new { state = 200, currencys });
             }
             }

+ 2 - 2
TEAMModelBI/Controllers/BIAbility/AbilityTaskMgmtController.cs

@@ -210,7 +210,7 @@ namespace TEAMModelBI.Controllers.BIAbility
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog(type, msgBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog(type, msgBuilder?.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, recordAbilityTask });
                 return Ok(new { state = 200, recordAbilityTask });
             }
             }
@@ -243,7 +243,7 @@ namespace TEAMModelBI.Controllers.BIAbility
                 string msg = $"{_tmdName}【{_tmdId}】删除册别,删除状态:{response.Status},删除ID:{id}";
                 string msg = $"{_tmdName}【{_tmdId}】删除册别,删除状态:{response.Status},删除ID:{id}";
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("abilitytask-del", msg, _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("abilitytask-del", msg, _dingDing, httpContext: HttpContext);
 
 
                 if (response.Status == 204)
                 if (response.Status == 204)
                     return Ok(new { state = 200 });
                     return Ok(new { state = 200 });

+ 2 - 3
TEAMModelBI/Controllers/BIHome/HomeStatisController.cs

@@ -582,7 +582,7 @@ namespace TEAMModelBI.Controllers.BIHome
                     if (tempCode != null)
                     if (tempCode != null)
                     {
                     {
                         //List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.standard='{itemStandrd.standard}'", "Base");
                         //List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.standard='{itemStandrd.standard}'", "Base");
-                        List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.areaId='{itemStandrd.id}'", "Base");
+                        List<string> schoolIds = await CommonFind.FindSchoolIds(cosmosClient, $"select c.id from c where c.areaId='{itemStandrd.id}' and c.standard='{itemStandrd.standard}'", "Base");
                         tempCode.schoolCount += schoolIds.Count;
                         tempCode.schoolCount += schoolIds.Count;
 
 
                         var tempModel = sticsCitys.Where(x => x.cityCode == tempCode.cityCode).FirstOrDefault();
                         var tempModel = sticsCitys.Where(x => x.cityCode == tempCode.cityCode).FirstOrDefault();
@@ -607,7 +607,6 @@ namespace TEAMModelBI.Controllers.BIHome
 
 
                                 //查询学校学生人数
                                 //查询学校学生人数
                                 districtStics.studentCount += await CommonFind.FindTotals(cosmosClient, "select count(c.id) totals from c", "Student", $"Base-{itemSchool}");
                                 districtStics.studentCount += await CommonFind.FindTotals(cosmosClient, "select count(c.id) totals from c", "Student", $"Base-{itemSchool}");
-
                             }
                             }
                         }
                         }
 
 
@@ -719,7 +718,7 @@ namespace TEAMModelBI.Controllers.BIHome
                 Dictionary<string, long> typeStics = new(); //所有类型
                 Dictionary<string, long> typeStics = new(); //所有类型
                 Dictionary<string, double?> typeStics1 = new(); //所有类型
                 Dictionary<string, double?> typeStics1 = new(); //所有类型
 
 
-                List<string> schoolId = new List<string>();
+                List<string> schoolId = new();
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 //查询学校空间和学校Id
                 //查询学校空间和学校Id
                 await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS,"School").GetItemQueryStreamIterator(queryText:$"select c.id,c.size from c",requestOptions:new QueryRequestOptions() { PartitionKey = new PartitionKey("Base")}))
                 await foreach (var item in cosmosClient.GetContainer(Constant.TEAMModelOS,"School").GetItemQueryStreamIterator(queryText:$"select c.id,c.size from c",requestOptions:new QueryRequestOptions() { PartitionKey = new PartitionKey("Base")}))

+ 1 - 1
TEAMModelBI/Controllers/BISchool/AreaRelevantController.cs

@@ -109,7 +109,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 School school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(tempSchool, tempSchool.id, new PartitionKey("Base"));
                 School school = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(tempSchool, tempSchool.id, new PartitionKey("Base"));
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("area-update", $"{_tmdName}【{_tmdId}】已操作学校({schoolId})移除该区域", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("area-update", $"{_tmdName}【{_tmdId}】已操作学校({schoolId})移除该区域", _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, school });
                 return Ok(new { state = 200, school });
             }
             }

+ 2 - 2
TEAMModelBI/Controllers/BISchool/BatchAreaController.cs

@@ -449,7 +449,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 await _notificationService.SendNotification(clientID, clientSecret, location, url, notification); //站内发送消息
                 await _notificationService.SendNotification(clientID, clientSecret, location, url, notification); //站内发送消息
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("area-add", $"{_tmdName}【{_tmdId}】已操作创区功能模块:{name},当前标准【{standard}】,复制的微能力点:{tempStandard}", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("area-add", $"{_tmdName}【{_tmdId}】已操作创区功能模块:{name},当前标准【{standard}】,复制的微能力点:{tempStandard}", _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, area = addArea });
                 return Ok(new { state = 200, area = addArea });
             }
             }
@@ -665,7 +665,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 await _notificationService.SendNotification(clientID, clientSecret, location, url, notification); //发送站内发送消息
                 await _notificationService.SendNotification(clientID, clientSecret, location, url, notification); //发送站内发送消息
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("standard-cut", $"{_tmdName}【{_tmdId}】已操作【{_oldStandard}】切换至{_newStandard}微能力点,复制标准:{_newStandard}", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("standard-cut", $"{_tmdName}【{_tmdId}】已操作【{_oldStandard}】切换至{_newStandard}微能力点,复制标准:{_newStandard}", _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200 });
                 return Ok(new { state = 200 });
             }
             }

+ 3 - 3
TEAMModelBI/Controllers/BISchool/BatchSchoolController.cs

@@ -190,7 +190,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("school-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("school-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, havepower = havepower });
                 return Ok(new { state = 200, havepower = havepower });
             }
             }
@@ -362,7 +362,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 else return Ok(new { state = 1, message = "创校信息为空" });
                 else return Ok(new { state = 1, message = "创校信息为空" });
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("school-batchAdd", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("school-batchAdd", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 if (schools.Count > 0)
                 if (schools.Count > 0)
                     return Ok(new { state = 201, message = "已有部分学校批量创建成功;学校编号已经重复!请检查学校编号!", schools = schools });
                     return Ok(new { state = 201, message = "已有部分学校批量创建成功;学校编号已经重复!请检查学校编号!", schools = schools });
@@ -775,7 +775,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("TeacherRoles-update", $"{_tmdName}【{_tmdId}】修改学校功能,修改的学校:{_schoolId},{_type},{picture},{size},{string.Join("|", assistId.ToArray())}", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("TeacherRoles-update", $"{_tmdName}【{_tmdId}】修改学校功能,修改的学校:{_schoolId},{_type},{picture},{size},{string.Join("|", assistId.ToArray())}", _dingDing, httpContext: HttpContext);
 
 
 
 
                 return Ok(new { state = 200 });
                 return Ok(new { state = 200 });

+ 1 - 1
TEAMModelBI/Controllers/BISchool/RoomController.cs

@@ -67,7 +67,7 @@ namespace TEAMModelBI.Controllers.BISchool
                     if (!string.IsNullOrEmpty($"{serial}")) { stringBudeler.Append($"绑定。"); } else { stringBudeler.Append($"解绑。"); }
                     if (!string.IsNullOrEmpty($"{serial}")) { stringBudeler.Append($"绑定。"); } else { stringBudeler.Append($"解绑。"); }
 
 
                     //保存操作记录
                     //保存操作记录
-                    await _azureStorage.SaveLog("room-bindProduct", $"{_tmdName}【{_tmdId}】将{roomInfo.id}教师和{serial}产品绑定", _dingDing, httpContext: HttpContext);
+                    await _azureStorage.SaveBILog("room-bindProduct", $"{_tmdName}【{_tmdId}】将{roomInfo.id}教师和{serial}产品绑定", _dingDing, httpContext: HttpContext);
                 }
                 }
                 else
                 else
                 {
                 {

+ 6 - 6
TEAMModelBI/Controllers/BISchool/SchoolController.cs

@@ -128,7 +128,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("school-join", $"{_tmdName}【{_tmdId}】操作学校加入区域功能,加入的区域:{standard},学校ID:{string.Join("|", schoolCodes.ToArray())}", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("school-join", $"{_tmdName}【{_tmdId}】操作学校加入区域功能,加入的区域:{standard},学校ID:{string.Join("|", schoolCodes.ToArray())}", _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200 });
                 return Ok(new { state = 200 });
             }
             }
@@ -260,7 +260,7 @@ namespace TEAMModelBI.Controllers.BISchool
                     schoolInfo = await cosmosClient.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<School>(school,school.id, new PartitionKey($"Base"));
                     schoolInfo = await cosmosClient.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<School>(school,school.id, new PartitionKey($"Base"));
                     
                     
                     //保存操作记录
                     //保存操作记录
-                    await _azureStorage.SaveLog("school-update", $"{tmdName}【{tmdId}】修改学校信息,学校和ID:{school.name}【{school.id}】", _dingDing, httpContext: HttpContext);
+                    await _azureStorage.SaveBILog("school-update", $"{tmdName}【{tmdId}】修改学校信息,学校和ID:{school.name}【{school.id}】", _dingDing, httpContext: HttpContext);
                 }
                 }
                 else return Ok(new { state = 400, message = "请求错误!" });
                 else return Ok(new { state = 400, message = "请求错误!" });
 
 
@@ -291,7 +291,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 //    schoolInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(replaceSchool.school, replaceSchool.school.id, new PartitionKey("Base"));
                 //    schoolInfo = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").ReplaceItemAsync<School>(replaceSchool.school, replaceSchool.school.id, new PartitionKey("Base"));
 
 
                 //    //保存操作记录
                 //    //保存操作记录
-                //    await _azureStorage.SaveLog("school-update", $"{replaceSchool.tmdName}【{replaceSchool.tmdId}】修改学校信息,学校和ID:{replaceSchool.school.name}【{replaceSchool.school.id}】", _dingDing, httpContext: HttpContext);
+                //    await _azureStorage.SaveBILog("school-update", $"{replaceSchool.tmdName}【{replaceSchool.tmdId}】修改学校信息,学校和ID:{replaceSchool.school.name}【{replaceSchool.school.id}】", _dingDing, httpContext: HttpContext);
 
 
                 //    return Ok(new { state = 200, schoolInfo });
                 //    return Ok(new { state = 200, schoolInfo });
                 //}
                 //}
@@ -462,7 +462,7 @@ namespace TEAMModelBI.Controllers.BISchool
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("area-add", $"{_tmdName}【{_tmdId}】移交顾问给{newSchoolTeacher.name}【{newSchoolTeacher.id}】", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("area-add", $"{_tmdName}【{_tmdId}】移交顾问给{newSchoolTeacher.name}【{newSchoolTeacher.id}】", _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200 });
                 return Ok(new { state = 200 });
             }
             }
             else { return Ok(new { status = 201, msg = $"{_tmdName}【{_tmdId}】账号不是顾问" }); }
             else { return Ok(new { status = 201, msg = $"{_tmdName}【{_tmdId}】账号不是顾问" }); }
@@ -541,7 +541,7 @@ namespace TEAMModelBI.Controllers.BISchool
                         SchoolTeacher st = await cosmosClient.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<SchoolTeacher>(schoolTeacher, schoolTeacher.id, new PartitionKey(schoolTeacher.code));
                         SchoolTeacher st = await cosmosClient.GetContainer("TEAMModelOS", "School").ReplaceItemAsync<SchoolTeacher>(schoolTeacher, schoolTeacher.id, new PartitionKey(schoolTeacher.code));
 
 
                         //保存操作记录
                         //保存操作记录
-                        await _azureStorage.SaveLog("area-add", $"{_tmdName}【{_tmdId}】顾问把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
+                        await _azureStorage.SaveBILog("area-add", $"{_tmdName}【{_tmdId}】顾问把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
                         return Ok(new { state = 200, schoolTeacher = st });
                         return Ok(new { state = 200, schoolTeacher = st });
                     }
                     }
                     else
                     else
@@ -565,7 +565,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
 
                     schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(schoolTeacher, new PartitionKey(schoolTeacher.code));
                     schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(schoolTeacher, new PartitionKey(schoolTeacher.code));
                     //保存操作记录
                     //保存操作记录
-                    await _azureStorage.SaveLog("area-add", $"{_tmdName}【{_tmdId}】顾问把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
+                    await _azureStorage.SaveBILog("area-add", $"{_tmdName}【{_tmdId}】顾问把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
                     return Ok(new { status = 200, schoolTeacher });
                     return Ok(new { status = 200, schoolTeacher });
                 }
                 }
             }
             }

+ 23 - 20
TEAMModelBI/Controllers/BITest/TestController.cs

@@ -136,6 +136,23 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = 200, data, data.id });
             return Ok(new { state = 200, data, data.id });
         }
         }
 
 
+        /// <summary>
+        /// 保存日志文件
+        /// </summary>
+        /// <param name="jsonElement"></param>
+        /// <returns></returns>
+        [ProducesDefaultResponseType]
+        [AuthToken(Roles = "assist")]
+        [HttpPost("set-savebilog")]
+        public async Task<IActionResult> SetTestSaveBIlog(JsonElement jsonElement)
+        {
+            var (_tmdId, _tmdName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
+            await _azureStorage.SaveLog(type: "table-save", msg: "测试保存方法01", dingDing: _dingDing, httpContext: HttpContext); //IES5 日志记录
+            await _azureStorage.SaveBILog("A-Test", $"{_tmdName}【{_tmdId}】删除册别,删除ID:", _dingDing, httpContext: HttpContext);//BI 日志记录
+
+            return Ok(new { state = 200 });
+        }
+
         /// <summary>
         /// <summary>
         /// 查询table数据
         /// 查询table数据
         /// </summary>
         /// </summary>
@@ -159,9 +176,9 @@ namespace TEAMModelBI.Controllers.BITest
             if (!string.IsNullOrEmpty($"{platform}"))
             if (!string.IsNullOrEmpty($"{platform}"))
                 strlist.Add($"platform {QueryComparisons.Equal} {platform}");
                 strlist.Add($"platform {QueryComparisons.Equal} {platform}");
 
 
-            var table = _azureStorage.GetCloudTableClient().GetTableReference("OptLog");
+            var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
             string sql = string.Join(" and ", strlist);
             string sql = string.Join(" and ", strlist);
-            var temp = table.QueryWhereString<OptLog>(sql);
+            var temp = table.QueryWhereString<BIOptLog>(sql);
 
 
             return Ok(new { state = 200, temp });
             return Ok(new { state = 200, temp });
         }
         }
@@ -181,8 +198,8 @@ namespace TEAMModelBI.Controllers.BITest
                 jsonElement.TryGetProperty("endDate", out JsonElement endDate);
                 jsonElement.TryGetProperty("endDate", out JsonElement endDate);
                 jsonElement.TryGetProperty("platform", out JsonElement platform);
                 jsonElement.TryGetProperty("platform", out JsonElement platform);
 
 
-                List<OptLog> operateLogs = null;
-                StringBuilder tableSql = new StringBuilder();
+                List<BIOptLog> operateLogs = new();
+                StringBuilder tableSql = new();
 
 
                 if (!string.IsNullOrEmpty($"{single}"))
                 if (!string.IsNullOrEmpty($"{single}"))
                     tableSql.Append($"RowKey {QueryComparisons.Equal} '{single}' ");
                     tableSql.Append($"RowKey {QueryComparisons.Equal} '{single}' ");
@@ -193,8 +210,8 @@ namespace TEAMModelBI.Controllers.BITest
                 if (!string.IsNullOrEmpty($"{platform}"))
                 if (!string.IsNullOrEmpty($"{platform}"))
                     tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" {TableOperators.And} platform {QueryComparisons.Equal} '{platform}' " : $" platform {QueryComparisons.Equal} '{platform}' ");
                     tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" {TableOperators.And} platform {QueryComparisons.Equal} '{platform}' " : $" platform {QueryComparisons.Equal} '{platform}' ");
 
 
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("OptLog");
-                operateLogs = await table.QueryWhereString<OptLog>(tableSql.ToString());
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+                operateLogs = await table.QueryWhereString<BIOptLog>(tableSql.ToString());
                 return Ok(new { state = 200, operateLogs });
                 return Ok(new { state = 200, operateLogs });
             }
             }
             catch (Exception ex)
             catch (Exception ex)
@@ -339,19 +356,6 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = 200, response });
             return Ok(new { state = 200, response });
         }
         }
 
 
-        /// <summary>
-        /// 保存日志文件
-        /// </summary>
-        /// <returns></returns>
-        [AuthToken(Roles = "assist")]
-        [HttpPost("save-tablelog")]
-        public async Task<IActionResult> SaveTableLogTest() 
-        {
-            //await OperateLogHelper.SaveTableLog(_azureStorage, "BI", "1636016499", "彭礼", "测试保存方法", "table-save", "save-tablelog");
-            await _azureStorage.SaveLog(type:"table-save", msg:"测试保存方法01",dingDing: _dingDing,httpContext:HttpContext);
-            return Ok(123);
-        }
-
         /// <summary>
         /// <summary>
         /// 测试使用 CosmosDB中的COUNT 函数统计
         /// 测试使用 CosmosDB中的COUNT 函数统计
         /// </summary>
         /// </summary>
@@ -770,7 +774,6 @@ namespace TEAMModelBI.Controllers.BITest
             return Ok(new { state = 200, temps, byteCsp, csp, lo });
             return Ok(new { state = 200, temps, byteCsp, csp, lo });
         }
         }
 
 
-
         public class strend
         public class strend
         {
         {
             public int id { get; set; }
             public int id { get; set; }

+ 6 - 6
TEAMModelBI/Controllers/DingDingStruc/TableDingDingInfoController.cs

@@ -160,7 +160,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("tabledd-update", $"{_tmdName}【{_tmdId}】从钉钉组织结构更新至Azure Table表【DDUserInfo】中。", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("tabledd-update", $"{_tmdName}【{_tmdId}】从钉钉组织结构更新至Azure Table表【DDUserInfo】中。", _dingDing, httpContext: HttpContext);
 
 
                 var tempddUserInfos = ddUserInfos.GroupBy(c => c.RowKey).Select(c => c.First()).ToList();//去重
                 var tempddUserInfos = ddUserInfos.GroupBy(c => c.RowKey).Select(c => c.First()).ToList();//去重
                 //List<DingDingUserInfo> TempdingDingUserInfos = await _azureStorage.SaveOrUpdateAll(dingDingUserInfos);  //只是保存至Table
                 //List<DingDingUserInfo> TempdingDingUserInfos = await _azureStorage.SaveOrUpdateAll(dingDingUserInfos);  //只是保存至Table
@@ -277,7 +277,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                     List<DingDingUserInfo> tempddUserInfos = await table.SaveAll(ddUserInfos);
                     List<DingDingUserInfo> tempddUserInfos = await table.SaveAll(ddUserInfos);
 
 
                     //保存操作记录
                     //保存操作记录
-                    await _azureStorage.SaveLog("tabledd-add", $"{_tmdName}【{_tmdId}】添加待入职员工至table数据表中", _dingDing, httpContext: HttpContext);
+                    await _azureStorage.SaveBILog("tabledd-add", $"{_tmdName}【{_tmdId}】添加待入职员工至table数据表中", _dingDing, httpContext: HttpContext);
 
 
                     if (ddUserInfos.Count == tempddUserInfos.Count)
                     if (ddUserInfos.Count == tempddUserInfos.Count)
                     {
                     {
@@ -345,7 +345,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                     }
                     }
 
 
                     //保存操作记录
                     //保存操作记录
-                    await _azureStorage.SaveLog("tabledd-del", $"{_tmdName}【{_tmdId}】从table数据表中删除离职员工", _dingDing, httpContext: HttpContext);
+                    await _azureStorage.SaveBILog("tabledd-del", $"{_tmdName}【{_tmdId}】从table数据表中删除离职员工", _dingDing, httpContext: HttpContext);
 
 
                     return Ok(new { state = 200 });
                     return Ok(new { state = 200 });
                 }
                 }
@@ -410,7 +410,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 ddUserInfo = await table.UpdateAll<DingDingUserInfo>(ddUserInfo);
                 ddUserInfo = await table.UpdateAll<DingDingUserInfo>(ddUserInfo);
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("tabledd-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("tabledd-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, ddUserInfo, roles, permissions });
                 return Ok(new { state = 200, ddUserInfo, roles, permissions });
             }
             }
@@ -630,7 +630,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 if (ddUsers.Count > 0) ddUsers = await table.SaveOrUpdateAll(ddUsers);
                 if (ddUsers.Count > 0) ddUsers = await table.SaveOrUpdateAll(ddUsers);
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("tabledd-update", $"{_tmdName}【{_tmdId}】操作:绑定钉钉账户[{rowKey}]和醍摩豆账户[{tmdId}]", _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("tabledd-update", $"{_tmdName}【{_tmdId}】操作:绑定钉钉账户[{rowKey}]和醍摩豆账户[{tmdId}]", _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, ddUsers });
                 return Ok(new { state = 200, ddUsers });
             }
             }
@@ -712,7 +712,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
                 }
                 }
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 return Ok(new { state = 200, roles });
                 return Ok(new { state = 200, roles });
 
 

+ 3 - 5
TEAMModelBI/Controllers/LoginController.cs

@@ -245,9 +245,8 @@ namespace TEAMModelBI.Controllers
                                 depts.Add(temp.ToString());
                                 depts.Add(temp.ToString());
                             }
                             }
 
 
-                            var auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, teacher.id,teacher.name?.ToString(),teacher.picture?.ToString(),_option.JwtSecretKey, scope: Constant.ScopeTeacher, Website: "BI", schoolID: school_code?.ToString(), standard: school_base.standard, roles:roles.ToArray(),permissions:permissions.ToArray(),ddDepts: depts.ToArray(),ddsub:ddbind.userid);
 
 
-                            return Ok(new { state = 200, auth_token = auth_token, teacher = teacher, id_token = implicit_token.id_token, access_token = implicit_token.access_token, expires_in = implicit_token.expires_in, token_type = implicit_token.token_type });
+                            return Ok(new { state = 200, teacher = teacher, id_token = implicit_token.id_token, access_token = implicit_token.access_token, expires_in = implicit_token.expires_in, token_type = implicit_token.token_type });
                         }
                         }
                     }
                     }
                     return Ok(new { state = 1, dingdinginfo = dingDingBind });
                     return Ok(new { state = 1, dingdinginfo = dingDingBind });
@@ -383,7 +382,6 @@ namespace TEAMModelBI.Controllers
                     }
                     }
                     else return Ok(new { state = 1, message = "该账户未绑定钉钉信息!请扫码绑定信息!" });
                     else return Ok(new { state = 1, message = "该账户未绑定钉钉信息!请扫码绑定信息!" });
 
 
-                    auth_token = JwtAuthExtension.CreateAuthToken(_option.HostName, teacher.id, teacher.name?.ToString(), teacher.picture?.ToString(), _option.JwtSecretKey, scope: Constant.ScopeTeacher, Website: "BI", schoolID: school_code.ToString(), standard: school_base.standard, roles: roles.ToArray(), permissions: permissions.ToArray(), ddDepts: depts.ToArray(), ddsub: ddbind.userid);
                 }
                 }
 
 
                 var (osblob_uri, osblob_sas) = roles.Contains("area") ? _azureStorage.GetBlobContainerSAS("teammodelos", BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete) : _azureStorage.GetBlobContainerSAS("teammodelos", BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
                 var (osblob_uri, osblob_sas) = roles.Contains("area") ? _azureStorage.GetBlobContainerSAS("teammodelos", BlobContainerSasPermissions.Write | BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List | BlobContainerSasPermissions.Delete) : _azureStorage.GetBlobContainerSAS("teammodelos", BlobContainerSasPermissions.Read | BlobContainerSasPermissions.List);
@@ -579,7 +577,7 @@ namespace TEAMModelBI.Controllers
                                 itemUser.mail = item.GetProperty("mail").ToString();
                                 itemUser.mail = item.GetProperty("mail").ToString();
 
 
                                 //保存操作记录
                                 //保存操作记录
-                                await _azureStorage.SaveLog("tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext);
+                                await _azureStorage.SaveBILog("tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext);
 
 
                                 ddUserInfos.Add(itemUser);
                                 ddUserInfos.Add(itemUser);
                             }
                             }
@@ -664,7 +662,7 @@ namespace TEAMModelBI.Controllers
                                 ddUserInfos = await table.UpdateAll<DingDingUserInfo>(ddUserInfos);
                                 ddUserInfos = await table.UpdateAll<DingDingUserInfo>(ddUserInfos);
 
 
                                 //保存操作记录
                                 //保存操作记录
-                                await _azureStorage.SaveLog("tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext);
+                                await _azureStorage.SaveBILog("tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext);
                             }
                             }
                             else return Ok(new { state = 400, message = "该手机没有注册醍摩豆账号信息" });
                             else return Ok(new { state = 400, message = "该手机没有注册醍摩豆账号信息" });
                         }
                         }

+ 8 - 8
TEAMModelBI/Controllers/OperateRecord/OperateLogController.cs

@@ -48,7 +48,7 @@ namespace TEAMModelBI.Controllers.OperateRecord
                 jsonElement.TryGetProperty("endDate", out JsonElement endDate);
                 jsonElement.TryGetProperty("endDate", out JsonElement endDate);
                 jsonElement.TryGetProperty("platform", out JsonElement platform);
                 jsonElement.TryGetProperty("platform", out JsonElement platform);
 
 
-                List<OptLog> operateLogs = null;
+                List<BIOptLog> operateLogs = null;
                 StringBuilder tableSql = new StringBuilder();
                 StringBuilder tableSql = new StringBuilder();
 
 
                 if (!string.IsNullOrEmpty($"{single}"))
                 if (!string.IsNullOrEmpty($"{single}"))
@@ -60,8 +60,8 @@ namespace TEAMModelBI.Controllers.OperateRecord
                 if (!string.IsNullOrEmpty($"{platform}"))
                 if (!string.IsNullOrEmpty($"{platform}"))
                     tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" and platform eq '{platform}' " : $" platform eq '{platform}' ");
                     tableSql.Append(!string.IsNullOrEmpty(tableSql.ToString()) ? $" and platform eq '{platform}' " : $" platform eq '{platform}' ");
 
 
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("OptLog");
-                operateLogs = await table.QueryWhereString<OptLog>(tableSql.ToString());
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+                operateLogs = await table.QueryWhereString<BIOptLog>(tableSql.ToString());
                 return Ok(new { state = 200, operateLogs });
                 return Ok(new { state = 200, operateLogs });
             }
             }
             catch (Exception ex)
             catch (Exception ex)
@@ -101,11 +101,11 @@ namespace TEAMModelBI.Controllers.OperateRecord
                     tableStrWhere.Append($"time ge {startDate}L and time le {endDate}L ");
                     tableStrWhere.Append($"time ge {startDate}L and time le {endDate}L ");
                     operateStr.Append($"删除的时间戳,开始——结束时间戳:{startDate}-{endDate}");
                     operateStr.Append($"删除的时间戳,开始——结束时间戳:{startDate}-{endDate}");
                 }
                 }
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("OptLog");
-                var temp = await table.DeleteStringWhere<OptLog>(rowKey: tableStrWhere.ToString());
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+                var temp = await table.DeleteStringWhere<BIOptLog>(rowKey: tableStrWhere.ToString());
 
 
                 //保存操作记录
                 //保存操作记录
-                await _azureStorage.SaveLog("operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
+                await _azureStorage.SaveBILog("operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
 
 
                 if (temp.Count > 0)
                 if (temp.Count > 0)
                 {
                 {
@@ -139,8 +139,8 @@ namespace TEAMModelBI.Controllers.OperateRecord
                     storageSql = $"tmdId eq '{tmdId}' and platform eq '{platform}'";
                     storageSql = $"tmdId eq '{tmdId}' and platform eq '{platform}'";
                 else storageSql = $"tmdId eq '{tmdId}'";
                 else storageSql = $"tmdId eq '{tmdId}'";
 
 
-                var table = _azureStorage.GetCloudTableClient().GetTableReference("OptLog");
-                var optLogs = await table.QueryWhereString<OptLog>(storageSql);
+                var table = _azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+                var optLogs = await table.QueryWhereString<BIOptLog>(storageSql);
 
 
                 return Ok(new { state = 200, optLogs });
                 return Ok(new { state = 200, optLogs });
             }
             }

+ 8 - 2
TEAMModelBI/Filter/AuthTokenAttribute.cs

@@ -39,8 +39,8 @@ namespace TEAMModelBI.Filter
             public void OnResourceExecuting(ResourceExecutingContext context)
             public void OnResourceExecuting(ResourceExecutingContext context)
             {
             {
                 bool pass = false;
                 bool pass = false;
-                string id = string.Empty, name = string.Empty, picture = string.Empty, school = string.Empty, standard = string.Empty, scope = string.Empty, website = string.Empty;
-                List<string> _role = new List<string>();
+                string id = string.Empty, name = string.Empty, picture = string.Empty,ddid=string.Empty,ddname=string.Empty, ddpicture =string.Empty, school = string.Empty, standard = string.Empty, scope = string.Empty, website = string.Empty;
+                List<string> _role = new();
                 var authtoken = context.HttpContext.GetXAuth("AuthToken");
                 var authtoken = context.HttpContext.GetXAuth("AuthToken");
                 if (!string.IsNullOrWhiteSpace(authtoken) && JwtAuthExtension.ValidateAuthToken(authtoken, _option.JwtSecretKey))
                 if (!string.IsNullOrWhiteSpace(authtoken) && JwtAuthExtension.ValidateAuthToken(authtoken, _option.JwtSecretKey))
                 {
                 {
@@ -49,6 +49,9 @@ namespace TEAMModelBI.Filter
                     school = jwt.Payload.Azp;
                     school = jwt.Payload.Azp;
                     name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
                     name = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("name"))?.Value;
                     picture = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("picture"))?.Value;
                     picture = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("picture"))?.Value;
+                    ddid = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddsub"))?.Value;
+                    ddname = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddname"))?.Value;
+                    ddpicture = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("ddpicture"))?.Value;
                     website = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("website"))?.Value;
                     website = jwt.Claims.FirstOrDefault(claim => claim.Type.Equals("website"))?.Value;
                     if (!string.IsNullOrWhiteSpace(_roles))
                     if (!string.IsNullOrWhiteSpace(_roles))
                     {
                     {
@@ -82,6 +85,9 @@ namespace TEAMModelBI.Filter
                     context.HttpContext.Items.Add("ID", id);
                     context.HttpContext.Items.Add("ID", id);
                     context.HttpContext.Items.Add("Name", name);
                     context.HttpContext.Items.Add("Name", name);
                     context.HttpContext.Items.Add("Picture", picture);
                     context.HttpContext.Items.Add("Picture", picture);
+                    context.HttpContext.Items.Add("DDId", ddid);
+                    context.HttpContext.Items.Add("DDName", ddname);
+                    context.HttpContext.Items.Add("DDPicture", ddpicture);
                     context.HttpContext.Items.Add("School", school);
                     context.HttpContext.Items.Add("School", school);
                     context.HttpContext.Items.Add("Roles", _role);
                     context.HttpContext.Items.Add("Roles", _role);
                     context.HttpContext.Items.Add("Website", website);
                     context.HttpContext.Items.Add("Website", website);

+ 54 - 0
TEAMModelOS.SDK/DI/AzureStorage/AzureStorageBlobExtensions.cs

@@ -394,5 +394,59 @@ namespace TEAMModelOS.SDK.DI
             blockBlob.SetHttpHeaders(new BlobHttpHeaders { ContentType = content_type });
             blockBlob.SetHttpHeaders(new BlobHttpHeaders { ContentType = content_type });
             return blockBlob.Uri.ToString();
             return blockBlob.Uri.ToString();
         }
         }
+
+        /// <summary>
+        /// BI保存操作记录
+        /// </summary>
+        /// <param name="azureStorage"></param>
+        /// <param name="type"></param>
+        /// <param name="msg"></param>
+        /// <param name="dingDing"></param>
+        /// <param name="scope"></param>
+        /// <param name="bizId"></param>
+        /// <param name="option"></param>
+        /// <param name="httpContext"></param>
+        /// <returns></returns>
+        public static async Task SaveBILog(this AzureStorageFactory azureStorage, string type, string msg, DingDing dingDing, string scope = null, string bizId = null, Option option = null, HttpContext httpContext = null)
+        {
+            var table = azureStorage.GetCloudTableClient().GetTableReference("OptLog");
+            OptLog log = new() { RowKey = Guid.NewGuid().ToString() };
+            try
+            {
+                object id = null, school = null, name = null, website = null;
+                httpContext?.Items.TryGetValue("ID", out id);
+                httpContext?.Items.TryGetValue("School", out school);
+                httpContext?.Items.TryGetValue("Name", out name);
+                httpContext?.Items.TryGetValue("Website", out website);
+                log.tmdId = id != null ? $"{id}" : log.tmdId;
+                log.name = name != null ? $"{name}" : log.name;
+                string host = httpContext?.Request?.Host.Value;
+                log.school = school != null ? $"{school}" : log.school;
+                log.PartitionKey = type != null ? $"Log-{type}" : "Log-Default";
+                log.RowKey = bizId != null ? bizId : log.RowKey;
+                log.platform = website != null ? $"{website}" : "Default";
+                log.msg = msg;
+                log.type = type;
+                log.scope = scope;
+                host = !string.IsNullOrWhiteSpace($"{host}") ? $"{host}" : option?.Location != null ? $"{host}" : "Default";
+                log.url = $"{host}{httpContext?.Request.Path}";
+                if (!string.IsNullOrWhiteSpace(msg) && msg.Length > 255)
+                {
+                    log.saveMod = 1;
+                    log.jsonfile = $"/0-public/optlog/{log.RowKey}-{log.PartitionKey}.json";
+                    await azureStorage.UploadFileByContainer("0-public", log.ToJsonString(), "optlog", $"{log.RowKey}-{log.PartitionKey}.json");
+                    log.msg = null;
+                    await table.SaveOrUpdate<OptLog>(log);
+                }
+                else
+                {
+                    await table.SaveOrUpdate<OptLog>(log);
+                }
+            }
+            catch (Exception ex)
+            {
+                _ = dingDing.SendBotMsg($"日志保存失败:{ex.Message},{ex.StackTrace},{log.ToJsonString()}", GroupNames.成都开发測試群組);
+            }
+        }
     }
     }
 }
 }

+ 1 - 3
TEAMModelOS.SDK/Extension/JwtAuthExtension.cs

@@ -27,9 +27,7 @@ namespace TEAMModelOS.SDK.Extension
                 { "roles",roles}, // 登入者的角色,角色類型 (Admin、Teacher、Student) 
                 { "roles",roles}, // 登入者的角色,角色類型 (Admin、Teacher、Student) 
                 { "permissions",permissions}, //登入者的權限請求
                 { "permissions",permissions}, //登入者的權限請求
                 { "standard",standard} ,//登入者的能力点标准
                 { "standard",standard} ,//登入者的能力点标准
-                { "scope",scope},  //登入者的入口类型。 (teacher 教师端登录的醍摩豆ID、tmduser学生端登录的醍摩豆ID、student学生端登录校内账号的学生ID) 
-                { "dddepts",ddDepts},  //登陆者的钉钉部门id
-                { "ddsub",ddsub } ,  //登陆者的钉钉用户id
+                { "scope",scope},  //登入者的入口类型。 (teacher 教师端登录的醍摩豆ID、tmduser学生端登录的醍摩豆ID、student学生端登录校内账号的学生ID)
                 { JwtRegisteredClaimNames.Website,Website}, // 學校簡碼,如果有的話
                 { JwtRegisteredClaimNames.Website,Website}, // 學校簡碼,如果有的話
             };
             };
 
 

+ 64 - 0
TEAMModelOS.SDK/Models/Table/BIOptLog.cs

@@ -0,0 +1,64 @@
+using Microsoft.Azure.Cosmos.Table;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+using TEAMModelOS.SDK.Context.Attributes.Azure;
+
+namespace TEAMModelOS.SDK.Models.Table
+{
+    [TableName(Name = "BIOptLog")]
+    public class BIOptLog: TableEntity
+    {
+        /// <summary>
+        /// 日志平台:BI 、 IES5
+        /// </summary>
+        public string platform { get; set; }
+
+        /// <summary>
+        /// 醍摩豆ID
+        /// </summary>
+        public string tmdId { get; set; }
+
+        /// <summary>
+        /// 账号名称
+        /// </summary>
+        public string name { get; set; }
+
+        /// <summary>
+        /// 操作描述
+        /// </summary>
+        public string msg { get; set; }
+
+        /// <summary>
+        /// json文件地址
+        /// </summary>
+        public string jsonfile { get; set; }
+
+        /// <summary>
+        /// 日志类型: school-update school-del    名词-动词组合方式
+        /// </summary>
+        public string type { get; set; }
+
+        /// <summary>
+        /// 访问接口
+        /// </summary>
+        public string url { get; set; }
+
+        /// <summary>
+        /// 使用范围  private school
+        /// </summary>
+        public string scope { get; set; }
+
+        /// <summary>
+        /// 学校编码
+        /// </summary>
+        public string school { get; set; }
+        /// <summary>
+        /// 保存模式。0 Table ,1 增加保存在Blob 
+        /// </summary>
+        public int saveMod { get; set; } = 0;
+        public long time { get; set; } = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
+    }
+}