From 263db72b3552546fa98fbdc3617ec16113ab6471 Mon Sep 17 00:00:00 2001 From: dev02 Date: Fri, 4 Nov 2022 09:41:50 +0800 Subject: [PATCH] =?UTF-8?q?[webApi]=20=E4=BF=AE=E6=94=B9jwt=20authorize,?= =?UTF-8?q?=20=E4=BF=AE=E6=94=B9=E5=9C=96=E8=B3=87,=20=E6=92=B0=E5=AF=AB?= =?UTF-8?q?=E9=81=8B=E7=B6=AD=E5=BB=A0=E5=95=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ApiControllers/GraphManageController.cs | 33 +- .../ApiControllers/MyBaseApiController.cs | 4 +- .../ApiControllers/OperationController.cs | 406 ++++++++++++++++++ FrontendWebApi/Jwt/JwtHelpers.cs | 29 +- FrontendWebApi/Models/GraphManage.cs | 9 +- FrontendWebApi/Models/Operation.cs | 26 ++ FrontendWebApi/Startup.cs | 4 +- 7 files changed, 482 insertions(+), 29 deletions(-) create mode 100644 FrontendWebApi/ApiControllers/OperationController.cs diff --git a/FrontendWebApi/ApiControllers/GraphManageController.cs b/FrontendWebApi/ApiControllers/GraphManageController.cs index 6ad6d00..391c1cb 100644 --- a/FrontendWebApi/ApiControllers/GraphManageController.cs +++ b/FrontendWebApi/ApiControllers/GraphManageController.cs @@ -61,7 +61,7 @@ namespace FrontendWebApi.ApiControllers } [HttpPost] - public async Task>> SubSysList(int main_system_id) + public async Task>> SubSysList(int main_system_tag) { ApiResult> apiResult = new ApiResult>(); List sub_system_list = new List(); @@ -71,10 +71,10 @@ namespace FrontendWebApi.ApiControllers var sqlString = @$"SELECT v2.* FROM variable v2 JOIN variable v1 ON v2.system_parent_id = v1.id AND v1.system_type = @graph_manage_layer1 AND v1.deleted = 0 - WHERE v2.system_type = @graph_manage_layer2 AND v2.deleted = 0 AND v1.id = @main_system_id + WHERE v2.system_type = @graph_manage_layer2 AND v2.deleted = 0 AND v1.system_value = @main_system_tag ORDER BY v2.system_priority, v2.created_at desc"; - var param = new { @graph_manage_layer1 = graph_manage_layer1, @graph_manage_layer2 = graph_manage_layer2 }; + var param = new { @graph_manage_layer1 = graph_manage_layer1, @graph_manage_layer2 = graph_manage_layer2, @main_system_tag = main_system_tag }; sub_system_list = await backendRepository.GetAllAsync(sqlString, param); apiResult.Code = "0000"; @@ -99,18 +99,19 @@ namespace FrontendWebApi.ApiControllers { var sqlString = @$"SELECT * FROM graph_manage gm - JOIN variable v2 ON gm.sub_system_id = v2.id AND v2.system_type = @graph_manage_layer2 AND v2.deleted = 0 - WHERE v2.id in @sub_system_id AND gm.deleted = 0 + JOIN variable v1 ON v1.system_value = @main_system_tag and v1.system_type = @graph_manage_layer1 and v1.deleted = 0 + JOIN variable v2 ON v1.id = v2.system_parent_id AND v2.system_type = @graph_manage_layer2 AND v2.deleted = 0 + WHERE v2.system_value in @sub_system_tag AND gm.deleted = 0 ORDER BY gm.priority, gm.created_at desc"; - var param = new { @graph_manage_layer1 = graph_manage_layer1, graph_manage_layer2 = graph_manage_layer2, @sub_system_id = gi.sub_system_id }; + var param = new { @graph_manage_layer1 = graph_manage_layer1, graph_manage_layer2 = graph_manage_layer2, @sub_system_tag = gi.sub_system_tag, @main_system_tag = gi.main_system_tag }; graManList = await backendRepository.GetAllAsync(sqlString, param); if (gi.keyWord != null) { - var wParam = new { @graph_manage_layer1 = graph_manage_layer1, graph_manage_layer2 = graph_manage_layer2, @sub_system_id = gi.sub_system_id, @keyWord = gi.keyWord }; + var wParam = new { @graph_manage_layer1 = graph_manage_layer1, graph_manage_layer2 = graph_manage_layer2, @sub_system_tag = gi.sub_system_tag, @main_system_tag = gi.main_system_tag, @keyWord = gi.keyWord }; graManList = await backendRepository.GetAllAsync(@$"SELECT * FROM graph_manage gm JOIN variable v2 ON gm.sub_system_id = v2.id AND v2.system_type = @graph_manage_layer2 AND v2.deleted = 0 @@ -139,9 +140,9 @@ namespace FrontendWebApi.ApiControllers try { - var sqlString = @$"UPDATE graph_manage SET deleted = 0 WHERE code = @code AND sub_system_id = @sub_system_id"; + var sqlString = @$"UPDATE graph_manage SET deleted = 0 WHERE code = @code AND sub_system_tag = @sub_system_tag AND main_system_tag = @main_system_tag"; - var param = new { @code = gi.code, @sub_system_id = gi.sub_system_id }; + var param = new { @code = gi.code, @sub_system_tag = gi.sub_system_tag, @main_system_tag = gi.main_system_tag }; await backendRepository.ExecuteSql(sqlString, param); apiResult.Code = "0000"; @@ -164,8 +165,8 @@ namespace FrontendWebApi.ApiControllers try { - var sWhere = @$"deleted = 0 AND code = @code AND sub_system_id = @sub_system_id"; - var gm = await backendRepository.GetOneAsync("graph_manage", sWhere, new { @code = gii.code, @sub_system_id = gii.sub_system_id}); + var sWhere = @$"deleted = 0 AND code = @code AND sub_system_tag = @sub_system_tag AND main_system_tag = @main_system_tag"; + var gm = await backendRepository.GetOneAsync("graph_manage", sWhere, new { @code = gii.code, @sub_system_tag = gii.sub_system_tag, @main_system_tag = gii.main_system_tag}); if (gm == null) { @@ -226,9 +227,11 @@ namespace FrontendWebApi.ApiControllers } graph_manage.Add("@name", gii.name); + graph_manage.Add("@main_system_tag", gii.main_system_tag); + graph_manage.Add("@sub_system_tag", gii.sub_system_tag); //graph_manage.Add("@priority", gii.priority); - await backendRepository.UpdateOneByCustomTable(graph_manage, "graph_manage", "code='" + gii.code + "'" + "sub_system_id ='" + gii.sub_system_id + "'"); + await backendRepository.UpdateOneByCustomTable(graph_manage, "graph_manage", "code='" + gm.code + "'" + " and sub_system_tag ='" + gm.sub_system_tag + "' and main_system_tag = '" + gm.main_system_tag + "'"); apiResult.Code = "0000"; apiResult.Data = "修改成功"; } @@ -251,8 +254,8 @@ namespace FrontendWebApi.ApiControllers try { - var sWhere = @$"deleted = 0 AND code = @code AND sub_system_id = @sub_system_id"; - var gm = await backendRepository.GetOneAsync("graph_manage", sWhere, new { @code = gii.code, @sub_system_id = gii.sub_system_id }); + var sWhere = @$"deleted = 0 AND code = @code AND sub_system_tag = @sub_system_tag AND main_system_tag = @main_system_tag"; + var gm = await backendRepository.GetOneAsync("graph_manage", sWhere, new { @code = gii.code, @sub_system_tag = gii.sub_system_tag, @main_system_tag = gii.main_system_tag }); if (gm != null) { @@ -305,6 +308,8 @@ namespace FrontendWebApi.ApiControllers } var newPriority = await backendRepository.GetCurrentPriority("graph_manage"); + graph_manage.Add("@main_system_tag", gii.main_system_tag); + graph_manage.Add("@sub_system_tag", gii.sub_system_tag); graph_manage.Add("@name", gii.name); graph_manage.Add("@deleted", 0); graph_manage.Add("@priority", newPriority + 1); diff --git a/FrontendWebApi/ApiControllers/MyBaseApiController.cs b/FrontendWebApi/ApiControllers/MyBaseApiController.cs index 355e79d..1a6b7fc 100644 --- a/FrontendWebApi/ApiControllers/MyBaseApiController.cs +++ b/FrontendWebApi/ApiControllers/MyBaseApiController.cs @@ -15,6 +15,8 @@ using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.Logging; +using System.IdentityModel.Tokens.Jwt; +using System.Net; namespace FrontendWebApi.ApiControllers { @@ -44,7 +46,6 @@ namespace FrontendWebApi.ApiControllers ctx.Response.Headers.Add("Access-Control-Allow-Headers", "*"); ctx.Response.Headers.Add("Access-Control-Allow-Credentials", "true"); EDFunction edFunction = new EDFunction(); - var a = User.Claims.Select(p => new { Type = p.Type, Value = p.Value }).ToList(); myUser = new JwtGet() { account = User.Claims.Where(a => a.Type == "account").Select(e => e.Value).FirstOrDefault(), @@ -59,6 +60,7 @@ namespace FrontendWebApi.ApiControllers { jwt_str = "Jwt Token不合法"; jwtlife = false; + filterContext.Result = new JsonResult(new { HttpStatusCode.Unauthorized }); } else { diff --git a/FrontendWebApi/ApiControllers/OperationController.cs b/FrontendWebApi/ApiControllers/OperationController.cs new file mode 100644 index 0000000..4c4f218 --- /dev/null +++ b/FrontendWebApi/ApiControllers/OperationController.cs @@ -0,0 +1,406 @@ +using FrontendWebApi.Models; +using Microsoft.AspNetCore.Http; +using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Logging; +using Newtonsoft.Json; +using NPOI.SS.UserModel; +using NPOI.XSSF.UserModel; +using Repository.BackendRepository.Interface; +using Repository.FrontendRepository.Interface; +using System; +using System.Collections.Generic; +using System.IO; +using System.Threading.Tasks; + +namespace FrontendWebApi.ApiControllers +{ + [Route("api/[controller]")] + [ApiController] + public class OperationController : MyBaseApiController + { + private readonly IBackendRepository backendRepository; + private string operationFileSaveAsPath = ""; + + public OperationController(IBackendRepository backendRepository) + { + this.backendRepository = backendRepository; + operationFileSaveAsPath = Path.Combine(Directory.GetCurrentDirectory(), "wwwroot", "upload", "operation"); + } + + [HttpPost] + public async Task>> MaiSysList() + { + ApiResult> apiResult = new ApiResult>(); + List main_system_list = new List(); + + try + { + var sqlString = @$"SELECT * + FROM variable + WHERE system_type = @main_system_type AND deleted = 0 + ORDER BY system_priority, created_at desc"; + + var param = new { @main_system_type = main_system_type }; + main_system_list = await backendRepository.GetAllAsync(sqlString, param); + + apiResult.Code = "0000"; + apiResult.Data = main_system_list; + } + catch (Exception exception) + { + apiResult.Code = "9999"; + apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + } + + return apiResult; + } + + [HttpPost] + public async Task>> SubSysList(string main_system_tag) + { + ApiResult> apiResult = new ApiResult>(); + List sub_system_list = new List(); + + try + { + var sqlString = @$"SELECT v2.* + FROM variable v2 + JOIN variable v1 ON v2.system_parent_id = v1.id AND v1.system_type = @main_system_type AND v1.deleted = 0 + WHERE v2.system_type = @sub_system_type AND v2.deleted = 0 AND v1.system_type = @main_system_tag + ORDER BY v2.system_priority, v2.created_at desc"; + + var param = new { @main_system_type = main_system_type, @sub_system_type = sub_system_type, @main_system_tag = main_system_tag }; + sub_system_list = await backendRepository.GetAllAsync(sqlString, param); + + apiResult.Code = "0000"; + apiResult.Data = sub_system_list; + } + catch (Exception exception) + { + apiResult.Code = "9999"; + apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + } + + return apiResult; + + } + + /// + /// 廠商資料列表(搜寻) + /// + /// + /// + public async Task>> OpeFirList(OperationFindList ofl) + { + ApiResult> apiResult = new ApiResult>(); + List opList = new List(); + string sWhere = ""; + try + { + if (ofl.start_created_at != null || ofl.end_created_at != null) + { + sWhere += $@" and (of.created_at >= isnull(@start_created_at, of.created_at) AND of.created_at <= isnull(@end_created_at, of.created_at))"; + } + else if (ofl.today) + { + sWhere += $@" and convert(of.created_at, DATE) = convert(NOW(), DATE)"; + } + else if (ofl.yesterday) + { + sWhere += $@" and convert(of.created_at, DATE) = convert(ADDDATE(NOW(), -1), DATE)"; + } + + if (ofl.sub_system_tag != null || ofl.main_system_tag != null) + { + sWhere += $@" and (of.device_system_category_layer2 = isnull(@main_system_tag, device_system_category_layer2) AND of.device_system_category_layer3 = isnull(@sub_system_tag, device_system_category_layer3))"; + } + + var sqlString = @$"select of.*, v2.system_key + from operation_firm of + left join variable v1 on of.device_system_category_layer2 = v1.system_value and v1.system_type = @main_system_type and v1.delted = 0 + left join variable v2 on v1.id = v2.system_parent_id and of.device_system_category_layer3 = v2.system_value and v2.system_type = @sub_system_type and v2.deleted = 0 + where of.deleted = 0" + sWhere; + + + var param = new { @sub_system_type = sub_system_type, @start_created_at = ofl.start_created_at, @end_created_at = ofl.end_created_at, @today = ofl.today, @yesterday = ofl.yesterday, @sub_system_tag = ofl.sub_system_tag, @main_system_tag = ofl.main_system_tag }; + opList = await backendRepository.GetAllAsync(sqlString, param); + + apiResult.Code = "0000"; + apiResult.Data = opList; + } + catch (Exception exception) + { + apiResult.Code = "9999"; + apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + } + + return apiResult; + } + + /// + /// 新增一笔廠商資料 + /// + /// + /// + public async Task> SaveOpeFirm(Operation_Firm of) + { + ApiResult apiResult = new ApiResult(); + + try + { + if (of.tax_id_number != null) + { + var sWhere = "deleted = 0 AND tax_id_number = @tax_id_number"; + var ofo = await backendRepository.GetOneAsync("operation_firm", sWhere, new { @tax_id_number = of.tax_id_number }); + if (ofo != null) + { + apiResult.Code = "0002"; + apiResult.Data = "已有相同的统一编号"; + return apiResult; + } + } + + Dictionary operation_firm = new Dictionary() + { + { "@deleted", 0 }, + { "@device_system_category_layer2", of.device_system_category_layer2 }, + { "@device_system_category_layer3", of.device_system_category_layer3 }, + { "@name", of.name }, + { "@contact_person", of.contact_person }, + { "@phone", of.phone }, + { "@email", of.email }, + { "@tax_id_number", of.tax_id_number }, + { "@remark", of.remark }, + { "@created_by", myUser.userinfo_guid }, + { "@created_at", DateTime.Now } + }; + + await backendRepository.AddOneByCustomTable(operation_firm, "operation_firm"); + apiResult.Code = "0000"; + apiResult.Data = "新增成功"; + } + catch (Exception exception) + { + apiResult.Code = "9999"; + apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; + string json = System.Text.Json.JsonSerializer.Serialize(of); + Logger.LogError("【" + controllerName + "/" + actionName + "】" + json); + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + } + + return apiResult; + } + + /// + /// 编辑一笔廠商資料 + /// + /// + /// + public async Task> EdtOneOpeFirm(Operation_Firm of) + { + ApiResult apiResult = new ApiResult(); + + try + { + var sWhere = @$"deleted = 0 and id = @id"; + var gm = await backendRepository.GetOneAsync("operation_firm", sWhere, new { @id = of.id }); + + if (gm == null) + { + apiResult.Code = "0001"; + apiResult.Data = "無法找到厂商"; + return apiResult; + } + + if (of.tax_id_number != null) + { + sWhere = "deleted = 0 AND tax_id_number = @tax_id_number and id != @id"; + var ofo = await backendRepository.GetOneAsync("operation_firm", sWhere, new { @tax_id_number = of.tax_id_number, @id = of.id }); + if (ofo != null) + { + apiResult.Code = "0002"; + apiResult.Data = "已有相同的统一编号"; + return apiResult; + } + } + + Dictionary operation_firm = new Dictionary() + { + { "@deleted", of.deleted }, + { "@device_system_category_layer2", of.device_system_category_layer2 }, + { "@device_system_category_layer3", of.device_system_category_layer3 }, + { "@name", of.name }, + { "@contact_person", of.contact_person }, + { "@phone", of.phone }, + { "@email", of.email }, + { "@tax_id_number", of.tax_id_number }, + { "@remark", of.remark }, + { "updated_by", myUser.userinfo_guid }, + { "updated_at", DateTime.Now } + }; + + await backendRepository.UpdateOneByCustomTable(operation_firm, "operation_firm", "id = '" + of.id + "'"); + apiResult.Code = "0000"; + apiResult.Data = "修改成功"; + } + catch (Exception exception) + { + apiResult.Code = "9999"; + apiResult.Msg = "系統內部錯誤,請聯絡管理者。"; + string json = System.Text.Json.JsonSerializer.Serialize(of); + Logger.LogError("【" + controllerName + "/" + actionName + "】" + json); + Logger.LogError("【" + controllerName + "/" + actionName + "】" + exception.Message); + } + + return apiResult; + } + + /// + /// 汇出excel + /// + /// + public FileResult ExportExcel() + { + var workbook = new XSSFWorkbook(); + #region excel設定 + IFont font12 = workbook.CreateFont(); + font12.FontName = "新細明體"; + font12.FontHeightInPoints = 12; + ICellStyle style12 = workbook.CreateCellStyle(); + style12.SetFont(font12); + style12.Alignment = HorizontalAlignment.Center; + style12.VerticalAlignment = VerticalAlignment.Center; + IFont font12Times = workbook.CreateFont(); + font12Times.FontName = "Times New Roman"; + font12Times.FontHeightInPoints = 12; + IFont font18 = workbook.CreateFont(); + font18.FontName = "新細明體"; + font18.FontHeightInPoints = 18; + font18.IsBold = true; + ICellStyle styleTitle18 = workbook.CreateCellStyle(); + styleTitle18.SetFont(font18); + styleTitle18.Alignment = HorizontalAlignment.Center; + styleTitle18.VerticalAlignment = VerticalAlignment.Center; + ICellStyle styleLeft12 = workbook.CreateCellStyle(); + styleLeft12.SetFont(font12); + styleLeft12.Alignment = HorizontalAlignment.Left; + styleLeft12.VerticalAlignment = VerticalAlignment.Center; + ICellStyle styleLine12 = workbook.CreateCellStyle(); + styleLine12.SetFont(font12); + styleLine12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Center; + styleLine12.VerticalAlignment = VerticalAlignment.Center; + styleLine12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + styleLine12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + styleLine12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + styleLine12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + ICellStyle stylein12 = workbook.CreateCellStyle(); + stylein12.SetFont(font12Times); + stylein12.Alignment = NPOI.SS.UserModel.HorizontalAlignment.Left; + stylein12.VerticalAlignment = VerticalAlignment.Center; + stylein12.BorderTop = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.BorderBottom = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.BorderRight = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.BorderLeft = NPOI.SS.UserModel.BorderStyle.Thin; + stylein12.WrapText = true; + #endregion + + var sqlString = $@"select of.*, v2.system_key + from operation_firm of + left join variable v1 on of.device_system_category_layer2 = v1.system_value and v1.system_type = @main_system_type and v1.delted = 0 + left join variable v2 on v1.id = v2.system_parent_id and of.device_system_category_layer3 = v2.system_value and v2.system_type = @sub_system_type and v2.deleted = 0 + where of.deleted = 0"; + var sheet = workbook.CreateSheet("廠商資料"); + var operation_firm = backendRepository.GetAllAsync(sqlString, null); + int RowPosition = 0; + IRow row = sheet.CreateRow(RowPosition); + sheet.SetColumnWidth(0, 4 * 160 * 12); + sheet.SetColumnWidth(1, 4 * 160 * 12); + sheet.SetColumnWidth(3, 4 * 160 * 12); + sheet.SetColumnWidth(4, 4 * 160 * 12); + sheet.SetColumnWidth(5, 4 * 160 * 12); + sheet.SetColumnWidth(6, 4 * 160 * 12); + sheet.SetColumnWidth(7, 4 * 160 * 12); + ICell cell = row.CreateCell(0); + cell.SetCellValue("廠商類別"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(1); + cell.SetCellValue("廠商名稱"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(2); + cell.SetCellValue("聯絡人"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(3); + cell.SetCellValue("電話"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(4); + cell.SetCellValue("郵箱"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(5); + cell.SetCellValue("統一編號"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(6); + cell.SetCellValue("備注"); + cell.CellStyle = styleLine12; + cell = row.CreateCell(2); + cell.SetCellValue("建立時間"); + cell.CellStyle = styleLine12; + + foreach (var of in operation_firm.Result) + { + RowPosition += 1; + row = sheet.CreateRow(RowPosition); + for (var a = 0; a < 8; a++) + { + cell = row.CreateCell(a); + if (a == 0) + { + cell.SetCellValue(of.system_key); + } + if (a == 1) + { + cell.SetCellValue(of.name); + } + if (a == 2) + { + cell.SetCellValue(of.contact_person); + } + if (a == 3) + { + cell.SetCellValue(of.phone); + } + if (a == 4) + { + cell.SetCellValue(of.email); + } + if (a == 5) + { + cell.SetCellValue(of.tax_id_number); + } + if (a == 2) + { + cell.SetCellValue(of.remark); + } + if (a == 7) + { + cell.SetCellValue(of.Created_at); + } + + cell.CellStyle = style12; + } + } + + var ms = new NpoiMemoryStream + { + AllowClose = false + }; + workbook.Write(ms); + ms.Flush(); + ms.Seek(0, SeekOrigin.Begin); + + return File(ms, "application/vnd.ms-excel", "廠商資料.xlsx"); + } + } +} diff --git a/FrontendWebApi/Jwt/JwtHelpers.cs b/FrontendWebApi/Jwt/JwtHelpers.cs index a02c769..d288af0 100644 --- a/FrontendWebApi/Jwt/JwtHelpers.cs +++ b/FrontendWebApi/Jwt/JwtHelpers.cs @@ -35,8 +35,8 @@ namespace FrontendWebApi.Jwt //claims.Add(new Claim(JwtRegisteredClaimNames.NameId, login.CustomerNo.ToString())); //claims.Add(new Claim(JwtRegisteredClaimNames.Sub, login.Username)); // User.Identity.Name //claims.Add(new Claim(JwtRegisteredClaimNames.Aud, "The Audience")); - //claims.Add(new Claim(JwtRegisteredClaimNames.Exp, DateTimeOffset.UtcNow.AddSeconds(expireSeconds).ToUnixTimeSeconds().ToString())); - //claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString())); // 必須為數字 + claims.Add(new Claim(JwtRegisteredClaimNames.Exp, DateTimeOffset.UtcNow.AddSeconds(lifeseconds).ToUnixTimeSeconds().ToString())); + claims.Add(new Claim(JwtRegisteredClaimNames.Nbf, DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString())); // 必須為數字 //claims.Add(new Claim(JwtRegisteredClaimNames.Iat, DateTimeOffset.UtcNow.ToUnixTimeSeconds().ToString())); // 必須為數字 //claims.Add(new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString())); // JWT ID @@ -69,13 +69,24 @@ namespace FrontendWebApi.Jwt var tokenHandler = new JwtSecurityTokenHandler(); var jst = new JwtSecurityToken( - issuer: issuer,//Token釋出者 - //audience: _options.Value.Audience,//Token接受者 - claims: claims,//攜帶的負載 - notBefore: now,//當前時間token生成時間 - expires: expires,//過期時間 - signingCredentials: signingCredentials - ); + issuer: issuer,//Token釋出者 + //audience: _options.Value.Audience,//Token接受者 + claims: claims,//攜帶的負載 + notBefore: now,//當前時間token生成時間 + expires: expires,//過期時間 + signingCredentials: signingCredentials + ); + //var jst = new SecurityTokenDescriptor + //{ + // Issuer = issuer,//Token釋出者 + // //Claims = claims,//攜帶的負載 + // //audience: _options.Value.Audience,//Token接受者 + // NotBefore = now,//當前時間token生成時間 + // Expires = expires,//過期時間 + // SigningCredentials = signingCredentials, + // Subject = userClaimsIdentity + //}; + var serializeToken = tokenHandler.WriteToken(jst); var data = new TnToken(); diff --git a/FrontendWebApi/Models/GraphManage.cs b/FrontendWebApi/Models/GraphManage.cs index 9d5ad98..950bca0 100644 --- a/FrontendWebApi/Models/GraphManage.cs +++ b/FrontendWebApi/Models/GraphManage.cs @@ -9,7 +9,8 @@ namespace FrontendWebApi.Models public class GraphList { public string code { get; set; } - public int sub_system_id { get; set; } + public string main_system_tag { get; set; } + public int sub_system_tag { get; set; } public string name { get; set; } public string oriOrgName { get; set; } public string oriSavName { get; set; } @@ -20,7 +21,8 @@ namespace FrontendWebApi.Models public class GraphInsInfo { public string code { get; set; } - public int sub_system_id { get; set; } + public string main_system_tag { get; set; } + public string sub_system_tag { get; set; } public string name { get; set; } public string oriOrgName { get; set; } public string oriSavName { get; set; } @@ -34,7 +36,8 @@ namespace FrontendWebApi.Models public class GraphInfo { public string code { get; set; } - public List sub_system_id { get; set; } + public string main_system_tag { get; set; } + public List sub_system_tag { get; set; } public string keyWord { get; set; } } } diff --git a/FrontendWebApi/Models/Operation.cs b/FrontendWebApi/Models/Operation.cs index 6832294..df9c456 100644 --- a/FrontendWebApi/Models/Operation.cs +++ b/FrontendWebApi/Models/Operation.cs @@ -21,6 +21,32 @@ namespace FrontendWebApi.Models Fix = 2, //維修 } + public class Operation_Firm : Actor + { + public int id { get; set; } + public byte deleted { get; set; } + public string device_system_category_layer2 { get; set; }//系統類別(第2層) + public string device_system_category_layer3 { get; set; }//系統類別(第3層) + public string name { get; set; }//名称 + public string contact_person { get; set; }//联络人 + public string phone { get; set; }//电话 + public string email { get; set; }//Email + public string tax_id_number { get; set; }//统一编号 + public string remark { get; set; }//备注 + public string system_key { get; set; }//類別名稱 + } + + public class OperationFindList + { + public string serial_number { get; set; } //表单号 + public DateTime? start_created_at { get; set; }//开始建立时间 + public DateTime? end_created_at { get; set; }//结束建立时间 + public bool today { get; set; }//今天建立时间 + public bool yesterday { get; set; }//昨天建立时间 + public string main_system_tag { get; set; }//大类tag + public string sub_system_tag { get; set; }//小类tag + } + public class Operation : Actor { public int Id { get; set; }//流水號 diff --git a/FrontendWebApi/Startup.cs b/FrontendWebApi/Startup.cs index 9cb3f3d..0b4cf1f 100644 --- a/FrontendWebApi/Startup.cs +++ b/FrontendWebApi/Startup.cs @@ -58,6 +58,7 @@ namespace FrontendWebApi // This method gets called by the runtime. Use this method to add services to the container. public void ConfigureServices(IServiceCollection services) { + services.AddSingleton(); services.AddControllersWithViews(); //services.AddControllers(); @@ -102,7 +103,7 @@ namespace FrontendWebApi // ҥѮɡA^Y|]t WWW-Authenticate YAo̷|ܥѪԲӿ~] options.IncludeErrorDetails = true; // w]Ȭ trueAɷ|SO - options.TokenValidationParameters = new TokenValidationParameters() + options.TokenValidationParameters = new TokenValidationParameters { // zLoŧiANiHq "sub" Ȩó]w User.Identity.Name NameClaimType = "http://schemas.xmlsoap.org/ws/2005/05/identity/claims/nameidentifier", @@ -140,7 +141,6 @@ namespace FrontendWebApi // This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env, ILoggerFactory loggerFactory) { - loggerFactory.AddFile("Logs/log-{Date}.txt"); if (env.IsDevelopment())