From 1c68bbbf7391786f088b4bfa8b9b98987765ba19 Mon Sep 17 00:00:00 2001 From: hujiebin Date: Fri, 7 Jul 2023 11:11:08 +0800 Subject: [PATCH] Feature/encrypt --- resp/response.go | 41 ++++++++++++++++++++++++++++++----------- route/middleHandle.go | 13 +++++++++++++ route/router.go | 6 +++--- 3 files changed, 46 insertions(+), 14 deletions(-) diff --git a/resp/response.go b/resp/response.go index 7a40d78..1f4966d 100644 --- a/resp/response.go +++ b/resp/response.go @@ -4,6 +4,7 @@ import ( "encoding/json" "git.hilo.cn/hilo-common/mycontext" "git.hilo.cn/hilo-common/mylogrus" + "git.hilo.cn/hilo-common/utils" "github.com/gin-gonic/gin" "hilo-group/myerr" "net/http" @@ -16,6 +17,7 @@ type Response struct { MessageData interface{} `json:"messageData"` // 消息详情 OperationMessage interface{} `json:"operationMessage"` // 操作消息 Data interface{} `json:"data"` // 数据 + Edata interface{} `json:"edata"` // 数据 } /** @@ -30,7 +32,12 @@ func ResponseOk(c *gin.Context, data interface{}) { Code: myerr.GetSuccessCode(), Message: myerr.GetSuccessMsg(), OperationMessage: myerr.GetSuccessMsg(), - Data: data, + } + if _, ok := c.Get(mycontext.InnerEncrypt); ok { + //response.Edata = utils.EncryptionData(data, []byte("484194d4d0f968a7")) + response.Edata = utils.EncryptionData(data, []byte("hilo!@#$%^&*()_+")) + } else { + response.Data = data } printResponseBody(c, &response) @@ -116,15 +123,21 @@ type Page struct { func ResponsePageOk(c *gin.Context, data interface{}, total uint, index int) { // always return http.StatusOK + pageData := Page{ + Total: total, + Index: index, + Data: data, + } response := Response{ Code: myerr.GetSuccessCode(), Message: myerr.GetSuccessMsg(), OperationMessage: myerr.GetSuccessMsg(), - Data: Page{ - Total: total, - Index: index, - Data: data, - }, + } + if _, ok := c.Get(mycontext.InnerEncrypt); ok { + //response.Edata = utils.EncryptionData(data, []byte("484194d4d0f968a7")) + response.Edata = utils.EncryptionData(pageData, []byte("hilo!@#$%^&*()_+")) + } else { + response.Data = pageData } printResponseBody(c, &response) @@ -149,15 +162,21 @@ func ResponsePageBaseOk(c *gin.Context, data interface{}, nextPageIndex int, has if data == nil { data = make([]interface{}, 0) } + pageData := PageRespBase{ + NextPageIndex: nextPageIndex, + HasNextPage: hasNextPage, + Data: data, + } response := Response{ Code: myerr.GetSuccessCode(), Message: myerr.GetSuccessMsg(), OperationMessage: myerr.GetSuccessMsg(), - Data: PageRespBase{ - NextPageIndex: nextPageIndex, - HasNextPage: hasNextPage, - Data: data, - }, + } + if _, ok := c.Get(mycontext.InnerEncrypt); ok { + //response.Edata = utils.EncryptionData(data, []byte("484194d4d0f968a7")) + response.Edata = utils.EncryptionData(pageData, []byte("hilo!@#$%^&*()_+")) + } else { + response.Data = pageData } c.JSON(http.StatusOK, response) } diff --git a/route/middleHandle.go b/route/middleHandle.go index 0d0652c..e16f1f9 100644 --- a/route/middleHandle.go +++ b/route/middleHandle.go @@ -5,6 +5,7 @@ import ( "git.hilo.cn/hilo-common/mycontext" "git.hilo.cn/hilo-common/mylogrus" "git.hilo.cn/hilo-common/resource/config" + "git.hilo.cn/hilo-common/utils" "github.com/gin-gonic/gin" "hilo-group/myerr/bizerr" "hilo-group/req" @@ -133,3 +134,15 @@ func LoggerHandle(c *gin.Context) { latency := end.Sub(start) mycontext.CreateMyContext(c.Keys).Log.Infof("request end fullPath:%v,url:%v, method: %v, traceId:%v, latency:%v userId:%v", c.FullPath(), reqUri, method, traceId, latency, userId) } + +// 加密Handle +func EncryptHandle(c *gin.Context) { + header := c.Request.Header + appVersion := header.Get("Appversion") + if len(appVersion) > 0 { + if high, _ := utils.CompareVersion(appVersion, "> 3.9.0"); high { + c.Set(mycontext.InnerEncrypt, true) + } + } + c.Next() +} diff --git a/route/router.go b/route/router.go index 5d58317..9d8511c 100644 --- a/route/router.go +++ b/route/router.go @@ -31,8 +31,8 @@ func InitRouter() *gin.Engine { // imGroup.POST("/group", wrapper(group_r.CreateGroup)) imGroup.DELETE("/group/:groupId", wrapper(group_r.DestroyGroup)) - imGroup.GET("/group/:code", wrapper(group_r.GetGroupInfo)) - imGroup.GET("/detail/:groupId", wrapper(group_r.GetGroupDetail)) + imGroup.GET("/group/:code", EncryptHandle, wrapper(group_r.GetGroupInfo)) + imGroup.GET("/detail/:groupId", EncryptHandle, wrapper(group_r.GetGroupDetail)) imGroup.PUT("/group/:groupId", wrapper(group_r.ModifyGroupInfo)) imGroup.GET("/search/:code", wrapper(group_r.SearchGroup)) imGroup.DELETE("/member/:groupId", wrapper(group_r.LeaveGroup)) @@ -48,7 +48,7 @@ func InitRouter() *gin.Engine { imGroup.GET("/ownGroup", wrapper(group_r.GetOwnGroup)) imGroup.GET("/theirGroup/:userExternalId", wrapper(group_r.GetTheirGroups)) imGroup.PUT("/pluginReady/:groupId", wrapper(group_r.PluginReady)) - imGroup.GET("/roomInfo/:groupId", wrapper(group_r.GetRoomInfo)) + imGroup.GET("/roomInfo/:groupId", EncryptHandle, wrapper(group_r.GetRoomInfo)) // imGroup.GET("/password/:groupId", wrapper(group_r.GetGroupPassword)) imGroup.GET("/role/:groupId", wrapper(group_r.GetGroupRole)) -- 2.22.0