gin框架類似于javaAOP的實(shí)現(xiàn)

func LogPushAop(mqClass Class, service, operMethod, operType, operDesc string) gin.HandlerFunc {

return func(c *gin.Context) {

mid := gin_util.GetUid(c)

bodyBytes, _ := ioutil.ReadAll(c.Request.Body)

_ = c.Request.Body.Close()

mbDe := new(MbDetail)

agres, _ := user.GetAgentFromHeader(c)

if agres != nil {

mbDe.Os = agres.SysVersion

mbDe.AppVersion = agres.AppVersion

mbDe.Did = agres.Did

}

mbDe.ClientIp = c.ClientIP()

mbDe.ReQuest = json.RawMessage(bodyBytes)

c.Request.Body = ioutil.NopCloser(bytes.NewBuffer(bodyBytes))

c.Next()

mainDe, _ := json.Marshal(mbDe)

tmp := LogPushMessage{

Service:? ? service,

OperMethod: operMethod,

OperType:? operType,

MainId:? ? mid,

MainBody:? isAdmin(mid),

MainDetail: mainDe,

OperDes:? ? operDesc,

ObjectBody: operType,

}

result, ok := c.Get(LogOperationKey)

if ok {

temp := new(CallIn)

_ = copier.Copy(temp, result)

var operTemp []byte

if temp.OperIn != nil {

operTemp, _ = json.Marshal(temp.OperIn)

}

var obTemp []byte

if temp.ObjectIn != nil {

obTemp, _ = json.Marshal(temp.ObjectIn)

}

tmp.OperDetail = operTemp

tmp.ObjectDetail = obTemp

}

New(Class{

Topic:? mqClass.Topic,

Group:? mqClass.Group,

Broker: mqClass.Broker,

}).SendLogMqMessage(tmp)

}

}

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容