Browse Source

调整BI(Blob上传方式)

Li 3 years ago
parent
commit
849b48512f

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

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

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

@@ -224,7 +224,7 @@ namespace TEAMModelBI.Controllers.BIAbility
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog(type, msgBuilder?.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, msgBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, msgBuilder?.ToString(), _dingDing, httpContext: HttpContext);
 
                 return Ok(new { state = 200, recordAbilityTask });
             }
@@ -267,7 +267,7 @@ namespace TEAMModelBI.Controllers.BIAbility
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("abilitytask-del", msg, _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "abilitytask-del", msg, _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "abilitytask-del", msg, _dingDing, httpContext: HttpContext);
                 if (response.Status == 204)
                     return Ok(new { state = 200 });
                 else

+ 4 - 4
TEAMModelBI/Controllers/BINormal/AppCompanyController.cs

@@ -158,7 +158,7 @@ namespace TEAMModelBI.Controllers.BINormal
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog(type, stringBuilder.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, stringBuilder.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, stringBuilder.ToString(), _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, appCompany });
             }
             catch (Exception e)
@@ -294,7 +294,7 @@ namespace TEAMModelBI.Controllers.BINormal
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
 
                 if (haveIds.Count > 0)
                     return Ok(new { state = 201, msg = "部分应用审核失败!", haveIds });
@@ -431,7 +431,7 @@ namespace TEAMModelBI.Controllers.BINormal
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
                 if (haveApi.Count > 0 || noAudit.Count > 0)
                     return Ok(new { state = 201, msg = "部分成功", haveApi, noAudit });
                 else return Ok(new { state = 200 });
@@ -568,7 +568,7 @@ namespace TEAMModelBI.Controllers.BINormal
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "appCompany-update", strMsg.ToString(), _dingDing, httpContext: HttpContext);
                 if (haveSchool.Count > 0) return Ok(new { state = 201, msg = "已存在学校,无须申请!", haveSchool });
                 else return Ok(new { state = 200 });
             }

+ 1 - 1
TEAMModelBI/Controllers/BINormal/BIOpenApiController.cs

@@ -137,7 +137,7 @@ namespace TEAMModelBI.Controllers.BINormal
                 }
                 //保存操作记录
                 //await _azureStorage.SaveBILog(type, strMsg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, strMsg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, strMsg.ToString(), _dingDing, httpContext: HttpContext);
                 
                 return Ok(new { state = 200, openApi });
             }

+ 13 - 10
TEAMModelBI/Controllers/BINormal/CompanyController.cs

@@ -11,6 +11,7 @@ using System.Text.Json;
 using System.Threading.Tasks;
 using TEAMModelBI.DI.BIAzureStorage;
 using TEAMModelBI.Filter;
+using TEAMModelBI.Models.Extension;
 using TEAMModelBI.Tool.Context;
 using TEAMModelBI.Tool.Extension;
 using TEAMModelOS.Models;
@@ -21,7 +22,7 @@ using TEAMModelOS.SDK.Models.Service;
 
 namespace TEAMModelBI.Controllers.BINormal
 {
-    [Route("company")]
+    [Route("business")]
     [ApiController]
     public class CompanyController : ControllerBase
     {
@@ -93,15 +94,15 @@ namespace TEAMModelBI.Controllers.BINormal
         /// </summary>
         /// <param name="appCompany"></param>
         /// <returns></returns>
-        [ProducesDefaultResponseType]
-        [AuthToken(Roles = "admin,rdc,assist,sales,company")]
+        //[ProducesDefaultResponseType]
+        //[AuthToken(Roles = "admin,rdc,assist,sales,company")]
         [HttpPost("set-info")]
-        public async Task<IActionResult> SetCompany(Company company, [FromHeader] string site) 
+        public async Task<IActionResult> SetCompany([FromBody]Company company, [FromHeader] string site) 
         {
             try
             {
-                var (loginId, loginName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
-                StringBuilder strMsg = new($"{loginName}【{loginId}】");
+                //var (loginId, loginName, pic, did, dname, dpic) = HttpJwtAnalysis.JwtXAuthBI(HttpContext.GetXAuth("AuthToken"), _option);
+                StringBuilder strMsg = new();
                 var cosmosClient = _azureCosmos.GetCosmosClient();
                 var tableClient = _azureStorage.GetCloudTableClient();
                 var blobClient = _azureStorage.GetBlobContainerClient(containerName: "0-public");
@@ -144,8 +145,10 @@ namespace TEAMModelBI.Controllers.BINormal
                         company.salt = salt;
                         company.password = string.IsNullOrWhiteSpace(company.password) ? Utils.HashedPassword("123456", salt) : Utils.HashedPassword(company.password, salt);//Password,若梦没有则是默认密码:123456
                         company.createTime = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds();
+
+                        company.secretKey = JwtAuth.CreateBusinessJwtKeyBI(_option.Location, _option.JwtSecretKey, createCompanyCode.id);
                         await cosmosClient.GetContainer("TEAMModelOS", "Normal").CreateItemAsync<Company>(company, new PartitionKey(company.code));
-                        strMsg.Append($"新增企业基础信息:名称:{company.name}【{company.id}】");
+                        strMsg.Append($"{company.name}【{company.id}】新增企业基础信息。");
                         type = "company-add";
                     }
                 }
@@ -162,7 +165,7 @@ namespace TEAMModelBI.Controllers.BINormal
                         company.password = string.IsNullOrWhiteSpace(company.password) ? Utils.HashedPassword("123456", salt) : Utils.HashedPassword(company.password, salt);//Password,若梦没有则是默认密码:123456
 
                         company = await cosmosClient.GetContainer("TEAMModelOS", "Normal").ReplaceItemAsync<Company>(company, company.id, new PartitionKey(company.code));
-                        strMsg.Append($"修改企业基础信息:名称:{company.name}【{company.id}】");
+                        strMsg.Append($"{company.name}【{company.id}】修改企业基础信息。");
                         type = "company-update";
                     }
                     else return Ok(new { state = 404, msg = "未找到该id相关的企业信息" });
@@ -170,12 +173,12 @@ namespace TEAMModelBI.Controllers.BINormal
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog(type, strMsg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, strMsg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, type, strMsg.ToString(), _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, company });
             }
             catch (Exception e)
             {
-                await _dingDing.SendBotMsg($"BI,{_option.Location} , /company/set-info   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
+                //await _dingDing.SendBotMsg($"BI,{_option.Location} , /company/set-info   \n {e.Message}\n{e.StackTrace} \n ", GroupNames.成都开发測試群組);
                 return BadRequest();
             }
         }

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

@@ -181,7 +181,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("school-update", $"{_tmdName}【{_tmdId}】已操作学校({schoolId})移除该区域", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "school-update", $"{_tmdName}【{_tmdId}】已操作学校(ID:{schoolId})移除已区域(ID:{areaId})", _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "school-update", $"{_tmdName}【{_tmdId}】已操作学校(ID:{schoolId})移除已区域(ID:{areaId})", _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, school });
             }
             catch (Exception ex)

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

@@ -526,7 +526,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("area-add", $"{_tmdName}【{_tmdId}】已操作创区功能模块:{name},当前标准【{standard}】,复制的微能力点:{tempStandard}", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "area-add", $"{_tmdName}【{_tmdId}】已操作创区功能模块:{name},当前标准【{standard}】,复制的微能力点:{tempStandard}", _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "area-add", $"{_tmdName}【{_tmdId}】已操作创区功能模块:{name},当前标准【{standard}】,复制的微能力点:{tempStandard}", _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, area = addArea });
             }
             catch (Exception ex)
@@ -781,7 +781,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("area-cut", $"{_tmdName}【{_tmdId}】已操作【{_oldStandard}】切换至{_newStandard}微能力点,复制标准:{_newStandard}", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "area-cut", $"{_tmdName}【{_tmdId}】已操作【{_oldStandard}】切换至{_newStandard}微能力点,复制标准:{_newStandard}", _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "area-cut", $"{_tmdName}【{_tmdId}】已操作【{_oldStandard}】切换至{_newStandard}微能力点,复制标准:{_newStandard}", _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200 });
             }
             catch (Exception ex)

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

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

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

@@ -83,7 +83,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                     //保存操作记录
                     //await _azureStorage.SaveBILog("room-update", $"{_tmdName}【{_tmdId}】将{roomInfo.id}教师和{serial}产品绑定", _dingDing, httpContext: HttpContext);
-                    await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "room-update", $"{_tmdName}【{_tmdId}】将{roomInfo.id}教师和{serial}产品绑定", _dingDing, httpContext: HttpContext);
+                    await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "room-update", $"{_tmdName}【{_tmdId}】将{roomInfo.id}教师和{serial}产品绑定", _dingDing, httpContext: HttpContext);
                 }
                 else
                 {

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

@@ -235,7 +235,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("school-update", $"{_tmdName}【{_tmdId}】操作学校加入区域功能,加入的区域:{standard},学校ID:{string.Join("|", schoolCodes.ToArray())}", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "school-update", msg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "school-update", msg.ToString(), _dingDing, httpContext: HttpContext);
 
                 return Ok(new { state = 200 });
             }
@@ -407,7 +407,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                     //保存操作记录
                     //await _azureStorage.SaveBILog("school-update", $"{tmdName}【{tmdId}】修改学校信息,学校和ID:{school.name}【{school.id}】", _dingDing, httpContext: HttpContext);
-                    await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "school-update", $"{tmdName}【{tmdId}】修改学校信息,学校和ID:{school.name}【{school.id}】", _dingDing, httpContext: HttpContext);
+                    await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "school-update", $"{tmdName}【{tmdId}】修改学校信息,学校和ID:{school.name}【{school.id}】", _dingDing, httpContext: HttpContext);
                 }
                 else return Ok(new { state = 400, message = "请求错误!" });
 
@@ -624,7 +624,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("schoolTeacher-add", $"{_tmdName}【{_tmdId}】移交顾问给{newSchoolTeacher.name}【{newSchoolTeacher.id}】", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "schoolTeacher-add", $"{_tmdName}【{_tmdId}】移交顾问给{newSchoolTeacher.name}【{newSchoolTeacher.id}】", _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "schoolTeacher-add", $"{_tmdName}【{_tmdId}】移交顾问给{newSchoolTeacher.name}【{newSchoolTeacher.id}】", _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200 });
             }
             else { return Ok(new { status = 201, msg = $"{_tmdName}【{_tmdId}】账号不是顾问" }); }
@@ -816,7 +816,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                         //保存操作记录
                         //await _azureStorage.SaveBILog("schoolTeacher-update", $"{_tmdName}【{_tmdId}】账户把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
-                        await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "schoolTeacher-update", $"{_tmdName}【{_tmdId}】账户把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
+                        await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "schoolTeacher-update", $"{_tmdName}【{_tmdId}】账户把{_adminTmdName}【{_adminTmdId}】设置学校id为{_schoolId}管理员。", _dingDing, httpContext: HttpContext);
                         return Ok(new { state = 200, schoolTeacher = st });
                     }
                     else
@@ -841,7 +841,7 @@ namespace TEAMModelBI.Controllers.BISchool
                     schoolTeacher = await cosmosClient.GetContainer(Constant.TEAMModelOS, "School").CreateItemAsync<SchoolTeacher>(schoolTeacher, new PartitionKey(schoolTeacher.code));
                     //保存操作记录
                     //await _azureStorage.SaveBILog("schoolTeacher-add", $"{_tmdName}【{_tmdId}】账户创建{_adminTmdName}【{_adminTmdId}】账户,并设学校管理员。学校ID:{_schoolId}。", _dingDing, httpContext: HttpContext);
-                    await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "schoolTeacher-add", $"{_tmdName}【{_tmdId}】账户创建{_adminTmdName}【{_adminTmdId}】账户,并设学校管理员。学校ID:{_schoolId}。", _dingDing, httpContext: HttpContext);
+                    await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "schoolTeacher-add", $"{_tmdName}【{_tmdId}】账户创建{_adminTmdName}【{_adminTmdId}】账户,并设学校管理员。学校ID:{_schoolId}。", _dingDing, httpContext: HttpContext);
                     return Ok(new { status = 200, schoolTeacher });
                 }
             }
@@ -921,7 +921,7 @@ namespace TEAMModelBI.Controllers.BISchool
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("set-del", msg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "set-del", msg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "set-del", msg.ToString(), _dingDing, httpContext: HttpContext);
                 if (delSchoolRels.Count > 0)
                     return Ok(new { state = 201, delSchoolRels });
                 else

+ 1 - 1
TEAMModelBI/Controllers/BITest/TestController.cs

@@ -182,7 +182,7 @@ namespace TEAMModelBI.Controllers.BITest
             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 BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "Test-test", $"{msg}", _dingDing, httpContext: HttpContext);//BI 日志记录
+            await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "Test-test", $"{msg}", _dingDing, httpContext: HttpContext);//BI 日志记录
 
             return Ok(new { state = 200 });
         }

+ 3 - 3
TEAMModelBI/Controllers/Core/BlobController.cs

@@ -14,7 +14,6 @@ using TEAMModelOS.Models;
 using TEAMModelOS.SDK;
 using TEAMModelOS.SDK.DI;
 using TEAMModelOS.SDK.Extension;
-using static TEAMModelOS.SDK.DI.AzureStorageBlobExtensions;
 
 namespace TEAMModelBI.Controllers.Core
 {
@@ -64,8 +63,9 @@ namespace TEAMModelBI.Controllers.Core
 
             if (ContentTypeDict.dict.ContainsKey($".{fileExt}"))
             {
-                //var url = await _azureStorage.UploadFileByContainer("0-public", file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}", false);
-                var url = await BIAzureStorageBlobExtensions.UploadFileByContainer(blobClient, file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}");
+                //var url = await _azureStorage.GetBlobContainerClient(containerName: "0-public", BIConst.GlobalSite).UploadFileByContainer("0-public", file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}", false);
+                //var url = await BIAzureStorageBlobExtensions.UploadFileByContainer(blobClient, file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}");
+                var url = await AzureStorageBlobExtensions.UploadFileByContainer(blobClient, file.OpenReadStream(), "school", $"{Guid.NewGuid()}.{fileExt}");
                 return Ok(new { url });
             }
             else

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

@@ -176,7 +176,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("tabledd-update", $"{_tmdName}【{_tmdId}】从钉钉组织结构更新至Azure Table表【DDUserInfo】中。", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{_tmdName}【{_tmdId}】从钉钉组织结构更新至Azure Table表【DDUserInfo】中。", _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{_tmdName}【{_tmdId}】从钉钉组织结构更新至Azure Table表【DDUserInfo】中。", _dingDing, httpContext: HttpContext);
                 var tempddUserInfos = ddUserInfos.GroupBy(c => c.userId).Select(c => c.First()).ToList();//去重
                 //List<DingDingUserInfo> TempdingDingUserInfos = await _azureStorage.SaveOrUpdateAll(dingDingUserInfos);  //只是保存至Table
                 //查询数据的数据 并和钉钉查询的数据对比,找出不同的数据,并删除  待后期测试
@@ -387,7 +387,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                     //保存操作记录
                     //await _azureStorage.SaveBILog("tabledd-add", $"{_tmdName}【{_tmdId}】添加待入职员工至table数据表中", _dingDing, httpContext: HttpContext);
-                    await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-add", $"{_tmdName}【{_tmdId}】添加待入职员工至table数据表中", _dingDing, httpContext: HttpContext);
+                    await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-add", $"{_tmdName}【{_tmdId}】添加待入职员工至table数据表中", _dingDing, httpContext: HttpContext);
                     if (ddUserInfos.Count == tempddUserInfos.Count)
                     {
                         return Ok(new { state = 200, UserInfo = tempddUserInfos });
@@ -464,7 +464,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                     //保存操作记录
                     //await _azureStorage.SaveBILog("tabledd-del", $"{_tmdName}【{_tmdId}】从table数据表中删除离职员工", _dingDing, httpContext: HttpContext);
-                    await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-del", $"{_tmdName}【{_tmdId}】从table数据表中删除离职员工", _dingDing, httpContext: HttpContext);
+                    await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-del", $"{_tmdName}【{_tmdId}】从table数据表中删除离职员工", _dingDing, httpContext: HttpContext);
                     return Ok(new { state = 200 });
                 }
                 else
@@ -550,7 +550,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("tabledd-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", stringBuilder?.ToString(), _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, ddUserInfo, roles, permissions });
             }
             catch (Exception ex)
@@ -801,7 +801,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("tabledd-update", $"{_tmdName}【{_tmdId}】操作:绑定钉钉账户[{rowKey}]和醍摩豆账户[{tmdId}]", _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{_tmdName}【{_tmdId}】操作:绑定钉钉账户[{rowKey}]和醍摩豆账户[{tmdId}]", _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{_tmdName}【{_tmdId}】操作:绑定钉钉账户[{rowKey}]和醍摩豆账户[{tmdId}]", _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, ddUsers });
             }
             catch (Exception ex)
@@ -910,7 +910,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                 //保存操作记录
                //await _azureStorage.SaveBILog("tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, roles });
 
             }
@@ -1066,7 +1066,7 @@ namespace TEAMModelBI.Controllers.DingDingStruc
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("tabledd-update",msg.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", msg.ToString(), _dingDing, httpContext: HttpContext);
                 return Ok(new { state = 200, ddUserInfos });
             }
             catch (Exception ex)

+ 6 - 6
TEAMModelBI/Controllers/LoginController.cs

@@ -209,7 +209,7 @@ namespace TEAMModelBI.Controllers
 
                             //保存操作记录
                             //await _azureStorage.SaveBILog("tabledd-update", strMsg?.ToString(), _dingDing, httpContext: HttpContext, twebsite: Website, tid: item.tmdId, tname: item.tmdName);
-                            await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", strMsg?.ToString(), _dingDing, httpContext: HttpContext, twebsite: Website, tid: item.tmdId, tname: item.tmdName);
+                            await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", strMsg?.ToString(), _dingDing, httpContext: HttpContext, twebsite: Website, tid: item.tmdId, tname: item.tmdName);
 
                             saveInfo.Add(item);                            
                         }
@@ -296,7 +296,7 @@ namespace TEAMModelBI.Controllers
 
                     //保存操作记录
                     //await _azureStorage.SaveBILog("tabledd-update", $"{ddUserInfo.tmdName}【{ddUserInfo.tmdId}】醍摩豆账号和{ddUserInfo.name}【{ddUserInfo.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext, tid: ddUserInfo.tmdId, tname: ddUserInfo.tmdName, twebsite: Website);
-                    await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{ddUserInfo.tmdName}【{ddUserInfo.tmdId}】醍摩豆账号和{ddUserInfo.name}【{ddUserInfo.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext, tid: ddUserInfo.tmdId, tname: ddUserInfo.tmdName, twebsite: Website);
+                    await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{ddUserInfo.tmdName}【{ddUserInfo.tmdId}】醍摩豆账号和{ddUserInfo.name}【{ddUserInfo.RowKey}】钉钉账户绑定成功", _dingDing, httpContext: HttpContext, tid: ddUserInfo.tmdId, tname: ddUserInfo.tmdName, twebsite: Website);
 
                     roles = !string.IsNullOrEmpty($"{ddUserInfo.roles}") ? new List<string>(ddUserInfo.roles.Split(",")) : new List<string>();
                     permissions = !string.IsNullOrEmpty($"{ddUserInfo.permissions}") ? new List<string>(ddUserInfo.permissions.Split(",")) : new List<string>();
@@ -402,7 +402,7 @@ namespace TEAMModelBI.Controllers
 
                         //保存操作记录
                         //await _azureStorage.SaveBILog("tabledd-update", $"{itemUser.tmdName}【{itemUser.tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.userId}】钉钉账户绑定成功", _dingDing, tid: itemUser.tmdId, tname: itemUser.name, twebsite: Website, httpContext: HttpContext);
-                        await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{itemUser.tmdName}【{itemUser.tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.userId}】钉钉账户绑定成功", _dingDing, tid: itemUser.tmdId, tname: itemUser.name, twebsite: Website, httpContext: HttpContext);
+                        await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{itemUser.tmdName}【{itemUser.tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.userId}】钉钉账户绑定成功", _dingDing, tid: itemUser.tmdId, tname: itemUser.name, twebsite: Website, httpContext: HttpContext);
 
                         id_token = JwtAuth.CreateAuthTokenBI(_option.HostName, itemUser.tmdId?.ToString(), itemUser.tmdName?.ToString(), itemUser.picture?.ToString(), _option.JwtSecretKey, scope: "assist", webSite: Website, isex: false, itemUser.userId?.ToString(), itemUser.name?.ToString(), itemUser.avatar?.ToString(), roles: roles?.ToArray(), permissions: permissions?.ToArray(), expire: 3);
                     }
@@ -497,7 +497,7 @@ namespace TEAMModelBI.Controllers
 
                                 //保存操作记录
                                 //await _azureStorage.SaveBILog("tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.userId}】钉钉账户绑定成功", _dingDing, tid: itemUser.tmdId, tname: itemUser.name, twebsite: Website, httpContext: HttpContext);
-                                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.userId}】钉钉账户绑定成功", _dingDing, tid: itemUser.tmdId, tname: itemUser.name, twebsite: Website, httpContext: HttpContext);
+                                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{tmdName}【{tmdId}】醍摩豆账号和{itemUser.name}【{itemUser.userId}】钉钉账户绑定成功", _dingDing, tid: itemUser.tmdId, tname: itemUser.name, twebsite: Website, httpContext: HttpContext);
                             }
                             else return Ok(new { state = 400, message = "该手机没有注册醍摩豆账号信息" });
                         }
@@ -573,7 +573,7 @@ namespace TEAMModelBI.Controllers
 
             //保存操作记录
             //await _azureStorage.SaveBILog("tabledd-update", $"{company.name}【{company.id}】登录商务智能开放平台", _dingDing, tid: company.id, tname: company.name, twebsite: "BI", httpContext: HttpContext);
-            await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{company.name}【{company.id}】登录商务智能开放平台", _dingDing, tid: company.id, tname: company.name, twebsite: Website?.ToString(), httpContext: HttpContext);
+            await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{company.name}【{company.id}】登录商务智能开放平台", _dingDing, tid: company.id, tname: company.name, twebsite: Website?.ToString(), httpContext: HttpContext);
 
             return Ok(new { error = 200, id_token, company });
         }
@@ -642,7 +642,7 @@ namespace TEAMModelBI.Controllers
 
             //保存操作记录
             //await _azureStorage.SaveBILog("tabledd-update", $"{company.name}【{company.id}】注册商务智能开放平台", _dingDing, tid: company.id, tname: company.name, twebsite: "BI", httpContext: HttpContext);
-            await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{company.name}【{company.id}】注册商务智能开放平台", _dingDing, tid: company.id, tname: company.name, twebsite: Website?.ToString(), httpContext: HttpContext);
+            await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "tabledd-update", $"{company.name}【{company.id}】注册商务智能开放平台", _dingDing, tid: company.id, tname: company.name, twebsite: Website?.ToString(), httpContext: HttpContext);
 
 
             return Ok(new { state = 200, company });

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

@@ -135,7 +135,7 @@ namespace TEAMModelBI.Controllers.OperateRecord
 
                 //保存操作记录
                 //await _azureStorage.SaveBILog("operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
-                await BIAzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
+                await AzureStorageBlobExtensions.SaveBILog(blobClient, tableClient, "operatelog-del", operateStr?.ToString(), _dingDing, httpContext: HttpContext);
 
                 if (temp.Count > 0)
                 {

+ 0 - 165
TEAMModelBI/DI/BIAzureStorage/BIAzureStorageBlobExtensions.cs

@@ -1,165 +0,0 @@
-using Azure.Storage.Blobs;
-using Azure.Storage.Blobs.Models;
-using HTEXLib.COMM.Helpers;
-using Microsoft.AspNetCore.Http;
-using Microsoft.Azure.Cosmos.Table;
-using System;
-using System.IO;
-using System.Threading.Tasks;
-using TEAMModelOS.Models;
-using TEAMModelOS.SDK.DI;
-using TEAMModelOS.SDK.Extension;
-using TEAMModelOS.SDK.Models.Table;
-
-namespace TEAMModelBI.DI.BIAzureStorage
-{
-    public static class BIAzureStorageBlobExtensions
-    {
-        /// <summary>
-        /// 系统管理员 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
-        /// "system": [ "res", "item", "htex", "task", "info", "room", "exam" ],
-        /// 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
-        /// "school": [ "res", "item", "htex", "task", "info", "room", "exam" ],
-        /// 资源,题目关联,htex关联,学习活动关联,教师基本信息关联
-        /// "teacher": [ "res", "item", "htex", "task", "info" ],
-        /// 答案及学习活动上传的文件,学生基本信息关联
-        ///"student": [ "stu/{studentId}/ans", "stu/{studentId}/task" ]
-        /// </summary>
-        /// <param name="name">容器名称</param>
-        /// <param name="json">文件内容的流</param>
-        /// <param name="folder">业务文件夹</param>
-        /// <param name="fileName">文件名</param>
-        /// <param name="contentTypeDefault">是否存放文件后缀对应的contentType</param>
-        /// <returns></returns>
-        public static async Task<string> UploadFileByContainer(BlobContainerClient blobContainer, string json, string root, string blobpath, bool contentTypeDefault = true)
-        {
-            // string groupName =folder;
-            //BlobContainerClient blobContainer1 = azureStorage.GetBlobContainerClient(name.ToLower().Replace("#", "")); //blobClient.GetContainerReference(groupName);            
-
-            var blockBlob = blobContainer.GetBlobClient($"{root}/{blobpath}");
-            string content_type = "application/octet-stream";
-            if (!contentTypeDefault)
-            {
-                string fileext = blobpath.Substring(blobpath.LastIndexOf(".") > 0 ? blobpath.LastIndexOf(".") : 0);
-                ContentTypeDict.dict.TryGetValue(fileext, out string contenttype);
-                if (!string.IsNullOrEmpty(contenttype))
-                {
-                    content_type = contenttype;
-                }
-            }
-            byte[] bytes = System.Text.Encoding.Default.GetBytes(json);
-            Stream streamBlob = new MemoryStream(bytes);
-            await blockBlob.UploadAsync(streamBlob, true);
-            blockBlob.SetHttpHeaders(new BlobHttpHeaders { ContentType = content_type });
-
-            return blockBlob.Uri.ToString();
-        }
-
-
-        /// <summary>
-        /// 系统管理员 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
-        /// "system": [ "res", "item", "htex", "task", "info", "room", "exam" ],
-        /// 资源,题目关联,htex关联,学习活动学生上传文件关联,基本信息关联,教室平面图关联,评测冷数据关联
-        /// "school": [ "res", "item", "htex", "task", "info", "room", "exam" ],
-        /// 资源,题目关联,htex关联,学习活动关联,教师基本信息关联
-        /// "teacher": [ "res", "item", "htex", "task", "info" ],
-        /// 答案及学习活动上传的文件,学生基本信息关联
-        ///"student": [ "stu/{studentId}/ans", "stu/{studentId}/task" ]
-        /// </summary>
-        /// <param name="blobContainer">Blob连接信息</param>
-        /// <param name="stream">文件内容的流</param>
-        /// <param name="root">跟目录</param>
-        /// <param name="blobpath">路径</param>
-        /// <param name="contentTypeDefault">是否存放文件后缀对应的contentType</param>
-        /// <returns></returns>
-        public static async Task<string> UploadFileByContainer(BlobContainerClient blobContainer, Stream stream, string root, string blobpath, bool contentTypeDefault = true)
-        {
-            //BlobContainerClient blobContainer = azureStorage.GetBlobContainerClient(name.ToLower().Replace("#", "")); //blobClient.GetContainerReference(groupName); 
-            //if (clientName != null) 
-            //{
-            //    blobContainer = azureStorage.GetBlobContainerClient(name.ToLower().Replace("#", ""),name:clientName); //blobClient.GetContainerReference(groupName); 
-            //}
-            Uri url = blobContainer.Uri;
-            var blockBlob = blobContainer.GetBlobClient($"{root}/{blobpath}");
-            string content_type = "application/octet-stream";
-            if (!contentTypeDefault)
-            {
-                string fileext = blobpath.Substring(blobpath.LastIndexOf(".") > 0 ? blobpath.LastIndexOf(".") : 0);
-                ContentTypeDict.dict.TryGetValue(fileext, out string contenttype);
-                if (!string.IsNullOrEmpty(contenttype))
-                {
-                    content_type = contenttype;
-                }
-            }
-            await blockBlob.UploadAsync(stream, true);
-            blockBlob.SetHttpHeaders(new BlobHttpHeaders { ContentType = content_type });
-            return blockBlob.Uri.ToString();
-        }
-
-        /// <summary>
-        /// 
-        /// </summary>
-        /// <param name="azureStorage"></param>
-        /// <param name="type"></param>
-        /// <param name="msg"></param>
-        /// <param name="dingDing"></param>
-        /// <param name="scope"></param>
-        /// <param name="option"></param>
-        /// <param name="httpContext"></param>
-        /// <returns></returns>
-
-        /// <summary>
-        /// BI保存操作记录
-        /// </summary>
-        /// <param name="blobContainer">Blob连接信息</param>
-        /// <param name="tableClient">table连接信息</param>
-        /// <param name="type">日志类型</param>
-        /// <param name="msg">日志内容</param>
-        /// <param name="dingDing"></param>
-        /// <param name="tid">账户ID</param>
-        /// <param name="tname">账户名称</param>
-        /// <param name="twebsite">站点</param>
-        /// <param name="scope">范围</param>
-        /// <param name="option"></param>
-        /// <param name="httpContext"></param>
-        /// <returns></returns>
-        public static async Task SaveBILog(BlobContainerClient blobContainer, CloudTableClient tableClient, string type, string msg, DingDing dingDing,  string tid = null, string tname = null, string twebsite = null, string scope = null, Option option = null, HttpContext httpContext = null)
-        {
-            var table = tableClient.GetTableReference("BIOptLog");
-            BIOptLog biLog = new() { RowKey = Guid.NewGuid().ToString() };
-            try
-            {
-                object id = null, name = null, ddid = null, ddname = null, website = null;
-                httpContext?.Items.TryGetValue("ID", out id);
-                httpContext?.Items.TryGetValue("Name", out name);
-                httpContext?.Items.TryGetValue("DDId", out ddid);
-                httpContext?.Items.TryGetValue("DDName", out ddname);
-                httpContext?.Items.TryGetValue("Website", out website);
-                string site = twebsite != null ? twebsite : $"{website}";
-                biLog.tmdId = id != null ? $"{id}" : tid;
-                biLog.name = name != null ? $"{name}" : tname;
-                biLog.PartitionKey = type != null ? $"{site}-Log-{type}" : $"{site}-Log-Default";
-                biLog.platform = site != null ? site : "Default";
-                biLog.msg = msg;
-                biLog.type = type;
-                biLog.scope = scope;
-                string host = httpContext?.Request?.Host.Value;
-                host = !string.IsNullOrWhiteSpace($"{host}") ? $"{host}" : option?.Location != null ? $"{host}" : "Default";
-                biLog.url = $"{host}{httpContext?.Request.Path}";
-                if (!string.IsNullOrWhiteSpace(msg) && msg.Length > 255)
-                {
-                    biLog.saveMod = 1;
-                    biLog.jsonfile = $"/0-public/BIOptLog/{biLog.PartitionKey}-{biLog.RowKey}.json";
-                    await UploadFileByContainer(blobContainer,biLog.ToJsonString(), "BIOptLog", $"{biLog.PartitionKey}-{biLog.RowKey}.json");
-                    biLog.msg = null;
-                    await table.SaveOrUpdate<BIOptLog>(biLog);
-                }
-                else await table.SaveOrUpdate<BIOptLog>(biLog);
-            }
-            catch (Exception ex)
-            {
-                _ = dingDing.SendBotMsg($"BI日志保存失败:{ex.Message}\n{ex.StackTrace},,{biLog.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
-            }
-        }
-    }
-}

+ 31 - 0
TEAMModelBI/Tool/Extension/JwtAuth.cs

@@ -60,6 +60,37 @@ namespace TEAMModelBI.Models.Extension
             return serializeToken;
         }
 
+        /// <summary>
+        /// 企业应用Key
+        /// </summary>
+        /// <param name="issuser"></param>
+        /// <param name="salt"></param>
+        /// <param name="commpanyId"></param>
+        /// <returns></returns>
+        public static string CreateBusinessJwtKeyBI(string issuser, string salt,string commpanyId)
+        {
+            var payload = new JwtPayload
+            {
+                { JwtRegisteredClaimNames.Iss,issuser}, //发布站点
+                { JwtRegisteredClaimNames.Sub,commpanyId},      //企业ID
+                { JwtRegisteredClaimNames.Iat,DateTimeOffset.UtcNow.ToUnixTimeMilliseconds().ToString()},    //秘钥发布时间
+            };
+
+            // 建立加密的秘钥
+            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(salt));
+            // HmacSha256 有要求必须要大于 128 bits,所以 salt 不能太短,至少要 16 字元以上
+            // https://stackoverflow.com/questions/47279947/idx10603-the-algorithm-hs256-requires-the-securitykey-keysize-to-be-greater
+            var signingCredentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha256Signature);
+            var header = new JwtHeader(signingCredentials);
+            var secToken = new JwtSecurityToken(header, payload);
+            // 产出所需要的 JWT securityToken 物件,并取得序列化后的 Token 结果(字串格式)
+            var tokenHandler = new JwtSecurityTokenHandler();
+            //var securityToken = tokenHandler.CreateToken(tokenDescriptor);
+            var serializeToken = tokenHandler.WriteToken(secToken);
+
+            return serializeToken;
+        }
+
         /// <summary>
         /// 应用审核后生成的JwtKey秘钥
         /// </summary>

+ 5 - 4
TEAMModelOS.SDK/DI/AzureStorage/AzureStorageBlobExtensions.cs

@@ -20,6 +20,7 @@ using System.Text.Encodings.Web;
 using TEAMModelOS.SDK.Models.Table;
 using Microsoft.AspNetCore.Http;
 using TEAMModelOS.Models;
+using Microsoft.Azure.Cosmos.Table;
 
 namespace TEAMModelOS.SDK.DI
 {
@@ -408,9 +409,9 @@ namespace TEAMModelOS.SDK.DI
         /// <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 tid = null, string tname = null, string twebsite = null, string scope = null, Option option = null, HttpContext httpContext = null)
+        public static async Task SaveBILog(BlobContainerClient blobContainer, CloudTableClient tableClient, string type, string msg, DingDing dingDing, string tid = null, string tname = null, string twebsite = null, string scope = null, Option option = null, HttpContext httpContext = null)
         {
-            var table = azureStorage.GetCloudTableClient().GetTableReference("BIOptLog");
+            var table = tableClient.GetTableReference("BIOptLog");
             BIOptLog biLog = new() { RowKey = Guid.NewGuid().ToString() };
             try
             {
@@ -435,7 +436,7 @@ namespace TEAMModelOS.SDK.DI
                 {
                     biLog.saveMod = 1;
                     biLog.jsonfile = $"/0-public/BIOptLog/{biLog.PartitionKey}-{biLog.RowKey}.json";
-                    await azureStorage.GetBlobContainerClient("0-public").UploadFileByContainer(biLog.ToJsonString(), "BIOptLog", $"{biLog.PartitionKey}-{biLog.RowKey}.json");
+                    await UploadFileByContainer(blobContainer, biLog.ToJsonString(), "BIOptLog", $"{biLog.PartitionKey}-{biLog.RowKey}.json");
                     biLog.msg = null;
                     await table.SaveOrUpdate<BIOptLog>(biLog);
                 }
@@ -443,7 +444,7 @@ namespace TEAMModelOS.SDK.DI
             }
             catch (Exception ex)
             {
-                _ = dingDing.SendBotMsg($"BI日志保存失败:{ex.Message}\n{ex.StackTrace},,{biLog.ToJsonString()}", GroupNames.醍摩豆服務運維群組);
+                _ = dingDing.SendBotMsg($"BI日志保存失败:{ex.Message}\n{ex.StackTrace},,{biLog.ToJsonString()}", GroupNames.成都开发測試群組);
             }
         }
     }

+ 5 - 0
TEAMModelOS.SDK/Models/Cosmos/BI/Company.cs

@@ -31,6 +31,11 @@ namespace TEAMModelOS.SDK.Models.Cosmos.BI
         /// </summary>
         public string picture { get; set; }
 
+        /// <summary>
+        /// 秘钥
+        /// </summary>
+        public string secretKey { get; set; }
+
         /// <summary>
         /// 企业邮箱
         /// </summary>