From f43b7df8400f4fcffc9f19dca0888d61e2b33d5f Mon Sep 17 00:00:00 2001
From: dengjunjie <dengjunjie@hnkhzn.com>
Date: 星期三, 12 三月 2025 18:41:52 +0800
Subject: [PATCH] WMS系统添加PDA权限,PDA程序

---
 项目代码/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs |  147 +++++++++++++++++++++++++++++-------------------
 1 files changed, 89 insertions(+), 58 deletions(-)

diff --git "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs" "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
index ee5aea4..fdc62ac 100644
--- "a/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
+++ "b/\351\241\271\347\233\256\344\273\243\347\240\201/WMS/WIDESEA_WMSServer/WIDESEA_Core/Middlewares/ApiLogMiddleware.cs"
@@ -1,10 +1,13 @@
 锘縰sing Microsoft.AspNetCore.Http;
 using Microsoft.Extensions.Logging;
 using Newtonsoft.Json;
+using Org.BouncyCastle.Asn1.Ocsp;
 using System;
 using System.Collections.Generic;
 using System.Linq;
+using System.Net;
 using System.Text;
+using System.Text.RegularExpressions;
 using System.Threading.Tasks;
 using WIDESEA_Core.Helper;
 using WIDESEA_Core.LogHelper;
@@ -20,94 +23,122 @@
         /// 
         /// </summary>
         private readonly RequestDelegate _next;
-        private readonly ILogger<ApiLogMiddleware> _logger;
 
         public ApiLogMiddleware(RequestDelegate next, ILogger<ApiLogMiddleware> logger)
         {
             _next = next;
-            _logger = logger;
         }
 
         //todo
         public async Task InvokeAsync(HttpContext context)
         {
-            //if (AppSettings.app("Middleware", "RequestResponseLog", "Enabled").ObjToBool())
+            if (App.ExpDateTime != null && (DateTime.Now - App.ExpDateTime.GetValueOrDefault()).TotalSeconds > 0)
             {
-                // 杩囨护锛屽彧鏈夋帴鍙�
-                if (context.Request.Path.Value.Contains("api"))
-                {
-                    context.Request.EnableBuffering();
-                    //Stream originalBody = context.Response.Body;
+                context.Response.StatusCode = HttpStatusCode.InternalServerError.ObjToInt();
+                context.Response.ContentType = "application/json";
 
+                var json = new WebResponseContent();
+
+                json.Message = HttpStatusCode.InternalServerError.ToString();//閿欒淇℃伅
+                json.Code = 500;//500寮傚父 
+
+                StreamWriter streamWriter = new StreamWriter(context.Response.Body);
+                await streamWriter.WriteAsync(json.Serialize());
+                return;
+            }
+
+            // 杩囨护锛屽彧鏈夋帴鍙�
+            if (context.Request.Path.Value?.Contains("api") ?? false)
+            {
+                context.Request.EnableBuffering();
+                Stream originalBody = context.Response.Body;
+                string requestParam = string.Empty;
+                string responseParam = string.Empty;
+                try
+                {
+                    (context.RequestServices.GetService(typeof(RequestLogModel)) as RequestLogModel).RequestDate = DateTime.Now;
                     try
                     {
                         // 瀛樺偍璇锋眰鏁版嵁
-                        //string requestParam = GetRequestData(context);
-                        //DateTime beginDate = DateTime.Now;
+                        requestParam = RequestDataLog(context);
+                        context.Request.Body.Position = 0;
+                    }
+                    catch { }
+                    using MemoryStream ms = new();
+                    context.Response.Body = ms;
 
-                        //using var ms = new MemoryStream();
-                        //context.Response.Body = ms;
+                    await _next(context);
 
-                        await _next(context);
-
+                    try
+                    {
                         // 瀛樺偍鍝嶅簲鏁版嵁
-                        //DateTime endDate = DateTime.Now;
-                        //string responseParam = GetResponsetData(context);
+                        responseParam = ResponseDataLog(context.Response);
+                    }
+                    catch { }
 
-                        //context.Response.Body.Position = 0;
-                        //await context.Response.Body.CopyToAsync(originalBody);
-
-                        //Logger.WriteApiLog2DB(context,requestParam, beginDate, responseParam, endDate, context.Response.StatusCode == 200 ? LoggerStatus.Success : LoggerStatus.Error);
-                    }
-                    catch (Exception ex)
-                    {
-                        // 璁板綍寮傚父                        
-                        _logger.LogError(ex.Message + "" + ex.InnerException);
-                    }
-                    finally
-                    {
-                        //context.Response.Body = originalBody;
-                    }
+                    ms.Position = 0;
+                    await ms.CopyToAsync(originalBody);
+                    if (!((context.Request.Path.Value?.Contains("get")) ?? true) && !((context.Request.Path.Value?.Contains("Get")) ?? true) && !((context.Request.Path.Value?.Contains("query")) ?? true) && !((context.Request.Path.Value?.Contains("Query")) ?? true) && !((context.Request.Path.Value?.Contains("DownLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("downLoadApp")) ?? true) && !((context.Request.Path.Value?.Contains("UploadApp")) ?? true) && !((context.Request.Path.Value?.Contains("uploadApp")) ?? true))
+                        Logger.Add(requestParam, responseParam);
                 }
-                //else
-                //{
-                //    await _next(context);
-                //}
-            }
-            //else
-            //{
-            //    await _next(context);
-            //}
-        }
+                catch (Exception ex)
+                {
+                    // 璁板綍寮傚父
 
-        private string GetRequestData(HttpContext context)
-        {
-            try
-            {
-                using StreamReader sr = new StreamReader(context.Request.Body);
-                string request = JsonConvert.SerializeObject(sr.ReadToEnd()); ;
-                context.Request.Body.Position = 0;
-                return request;
+                }
+                finally
+                {
+                    context.Response.Body = originalBody;
+                }
             }
-            catch (Exception ex)
+            else
             {
-                return $"璇锋眰鍙傛暟鑾峰彇閿欒,{ex.Message}";
+                await _next(context);
             }
         }
 
-        private string GetResponsetData(HttpContext context)
+        private string RequestDataLog(HttpContext context)
         {
-            try
+            var request = context.Request;
+
+            var sr = new StreamReader(request.Body);
+
+            object obj;
+            string bodyData = sr.ReadToEndAsync().Result;
+            if (request.ContentLength <= 100000)
             {
-                using StreamReader sr = new StreamReader(context.Response.Body);
-                string response = JsonConvert.SerializeObject(sr.ReadToEnd()); ;
-                context.Response.Body.Position = 0;
-                return response;
+                obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = bodyData
+                };
             }
-            catch (Exception ex)
+            else
             {
-                return $"鍝嶅簲鍙傛暟鑾峰彇閿欒,{ex.Message}";
+                obj = new
+                {
+                    QueryString = request.QueryString.ToString(),
+                    BodyData = ""
+                };
             }
+            string data = JsonConvert.SerializeObject(obj);
+
+            request.Body.Position = 0;
+
+            return data;
+        }
+
+        private string ResponseDataLog(HttpResponse response)
+        {
+            if (response.ContentLength <= 100000)
+            {
+                response.Body.Position = 0;
+                using StreamReader stream = new StreamReader(response.Body, leaveOpen: true);
+                string body = stream.ReadToEnd();
+                response.Body.Position = 0;
+                return body;
+            }
+            return "";
         }
     }
 }

--
Gitblit v1.9.3