Roc 4 місяців тому
батько
коміт
5fa055cf3d
5 змінених файлів з 121 додано та 33 видалено
  1. 5 16
      controller/resp/base.go
  2. 3 0
      init_serve/router.go
  3. 74 17
      middleware/common.go
  4. 3 0
      middleware/token.go
  5. 36 0
      utils/gin.go

+ 5 - 16
controller/resp/base.go

@@ -27,16 +27,7 @@ type ResultData struct {
 
 func result(code int, resultData ResultData, c *gin.Context) {
 	jsonByte, _ := json.Marshal(resultData)
-	token := c.Request.Header.Get("Authorization")
-	if token == "" {
-		token = c.DefaultQuery("authorization", "")
-		if token == "" {
-			token = c.DefaultQuery("Authorization", "")
-		}
-	}
-	logSlice := make([]string, 0)
-	logSlice = append(logSlice, fmt.Sprint("Url:", c.Request.RequestURI))
-	logSlice = append(logSlice, fmt.Sprint("Token:", token))
+	logSlice := utils.GetBridgeLogListByClaims(c)
 	//logSlice = append(logSlice, fmt.Sprint("resultData:", string(jsonByte)))
 
 	//记录错误日志
@@ -47,10 +38,10 @@ func result(code int, resultData ResultData, c *gin.Context) {
 
 	// 测试环境不加密
 	if global.CONFIG.Serve.RunMode == "debug" {
-		global.LOG.Info(strings.Join(logSlice, ""))
+		global.LOG.Info(strings.Join(logSlice, "\n"))
 		c.JSON(code, resultData)
 	} else {
-		global.LOG.Info(strings.Join(logSlice, ""))
+		global.LOG.Info(strings.Join(logSlice, "\n"))
 		encryptResult := utils.DesBase64Encrypt(jsonByte, global.CONFIG.Serve.DesKey)
 		c.JSON(code, string(encryptResult))
 	}
@@ -177,14 +168,12 @@ func Gn4AResultData(code int, msg, errMsg string, c *gin.Context) {
 }
 
 func gnResult(code int, resultData Gn4AOperationResult, c *gin.Context) {
-	logSlice := make([]string, 0)
-	logSlice = append(logSlice, fmt.Sprint("Url:", c.Request.RequestURI))
-
+	logSlice := utils.GetBridgeLogListByClaims(c)
 	// 记录错误日志
 	if resultData.ErrMsg != "" {
 		logSlice = append(logSlice, fmt.Sprintf("ErrCode: %d, Msg: %s, ErrMsg: %s", resultData.Code, resultData.Msg, resultData.ErrMsg))
 	}
-	global.LOG.Info(strings.Join(logSlice, ""))
+	global.LOG.Info(strings.Join(logSlice, "\n"))
 
 	c.JSON(code, resultData)
 	c.Abort()

+ 3 - 0
init_serve/router.go

@@ -16,6 +16,9 @@ func InitRouter() (r *gin.Engine) {
 	r.Use(middleware.Cors())
 	r.Use(middleware.Recover())
 
+	common := middleware.Common{}
+	r.Use(common.RequestLog)
+
 	rBase := r.Group("api/")
 	routers.InitAuth(rBase)
 	routers.InitIndexData(rBase)

+ 74 - 17
middleware/common.go

@@ -1,27 +1,84 @@
 package middleware
 
 import (
+	"bytes"
+	"eta_gn/eta_bridge/utils"
+	"fmt"
 	"github.com/gin-gonic/gin"
+	"io"
+	"net/http"
 	"strconv"
 )
 
 // Common 公共中间件
-func Common() gin.HandlerFunc {
-	return func(c *gin.Context) {
-		var currPage, pageSize int
-		reqPage := c.DefaultQuery("curr_page", "0")
-		currPage, _ = strconv.Atoi(reqPage)
-		if currPage <= 0 {
-			currPage = 1
-		}
-
-		reqPageSize := c.DefaultQuery("page_size", "0")
-		pageSize, _ = strconv.Atoi(reqPageSize)
-		if pageSize <= 0 {
-			pageSize = 20
-		}
-		c.Set("curr_page", currPage)
-		c.Set("page_size", pageSize)
-		c.Next()
+//func Common() gin.HandlerFunc {
+//	return func(c *gin.Context) {
+//		var currPage, pageSize int
+//		reqPage := c.DefaultQuery("curr_page", "0")
+//		currPage, _ = strconv.Atoi(reqPage)
+//		if currPage <= 0 {
+//			currPage = 1
+//		}
+//
+//		reqPageSize := c.DefaultQuery("page_size", "0")
+//		pageSize, _ = strconv.Atoi(reqPageSize)
+//		if pageSize <= 0 {
+//			pageSize = 20
+//		}
+//		c.Set("curr_page", currPage)
+//		c.Set("page_size", pageSize)
+//		c.Next()
+//	}
+//}
+
+type Common struct{}
+
+// Page
+// @Description: 分页参数
+// @author: Roc
+// @receiver common
+// @datetime 2024-10-31 10:19:36
+// @param c *gin.Context
+func (common *Common) Page(c *gin.Context) {
+	var currPage, pageSize int
+	reqPage := c.DefaultQuery("curr_page", "0")
+	currPage, _ = strconv.Atoi(reqPage)
+	if currPage <= 0 {
+		currPage = 1
+	}
+
+	reqPageSize := c.DefaultQuery("page_size", "0")
+	pageSize, _ = strconv.Atoi(reqPageSize)
+	if pageSize <= 0 {
+		pageSize = 20
+	}
+	c.Set("curr_page", currPage)
+	c.Set("page_size", pageSize)
+	c.Next()
+}
+
+// RequestLog
+// @Description: 请求参数日志
+// @author: Roc
+// @receiver common
+// @datetime 2024-10-31 10:19:36
+// @param c *gin.Context
+func (common *Common) RequestLog(c *gin.Context) {
+	// 读取请求体
+	body, err := io.ReadAll(c.Request.Body)
+	if err != nil {
+		//log.Printf("Error reading request body: %v", err)
+		c.AbortWithStatus(http.StatusInternalServerError)
+		return
 	}
+
+	// 将请求地址添加到上下文的日志中
+	utils.SetBridgeLogListByClaims(c, fmt.Sprint("Url:", c.Request.RequestURI))
+	// 将请求参数添加到上下文的日志中
+	utils.SetBridgeLogListByClaims(c, fmt.Sprint("RequestBody:", string(body)))
+
+	// 将请求体恢复到原始状态
+	c.Request.Body = io.NopCloser(bytes.NewBuffer(body))
+
+	c.Next()
 }

+ 3 - 0
middleware/token.go

@@ -4,6 +4,7 @@ import (
 	"eta_gn/eta_bridge/controller/resp"
 	"eta_gn/eta_bridge/global"
 	"eta_gn/eta_bridge/utils"
+	"fmt"
 	"github.com/gin-gonic/gin"
 )
 
@@ -50,6 +51,8 @@ func InternalToken() gin.HandlerFunc {
 			c.Abort()
 			return
 		}
+		utils.SetBridgeLogListByClaims(c, fmt.Sprint("Token:", token))
+
 		c.Next()
 	}
 }

+ 36 - 0
utils/gin.go

@@ -0,0 +1,36 @@
+package utils
+
+import "github.com/gin-gonic/gin"
+
+// SetBridgeLogListByClaims
+// @Description: 设置上下文中bridge日志
+// @author: Roc
+// @datetime 2024-10-31 10:55:15
+// @param c *gin.Context
+// @param logStr string
+func SetBridgeLogListByClaims(c *gin.Context, logStr string) {
+	bridgeLogList := GetBridgeLogListByClaims(c)
+	bridgeLogList = append(bridgeLogList, logStr)
+	c.Set("bridge_log", bridgeLogList)
+
+	return
+}
+
+// GetBridgeLogListByClaims
+// @Description: 从Claims中获取当前日志
+// @author: Roc
+// @datetime 2024-10-31 10:35:04
+// @param c *gin.Context
+// @return bridgeLogList []string
+func GetBridgeLogListByClaims(c *gin.Context) (bridgeLogList []string) {
+	//获取jwt数据失败
+	claims, exists := c.Get("bridge_log")
+	// 如果不存在,那么就是空切片
+	if !exists {
+		bridgeLogList = []string{}
+		return
+	}
+	bridgeLogList = claims.([]string)
+
+	return
+}