代码拉取完成,页面将自动刷新
package middleware
import (
"fmt"
"gitee.com/xlizy/common-go/base/common_config"
"gitee.com/xlizy/common-go/base/common_const"
"gitee.com/xlizy/common-go/base/common_goroutine"
"gitee.com/xlizy/common-go/base/enums/common_error"
"gitee.com/xlizy/common-go/base/response"
"gitee.com/xlizy/common-go/components/orm/tx"
"gitee.com/xlizy/common-go/components/universal"
"gitee.com/xlizy/common-go/utils/common_utils"
rm "gitee.com/xlizy/common-go/utils/middleware/router_manage"
"gitee.com/xlizy/common-go/utils/threadlocal"
"gitee.com/xlizy/common-go/utils/zlog"
"gitee.com/xlizy/rpc-interface/rpc_pbs"
"github.com/google/uuid"
"github.com/kataras/iris/v12/context"
"runtime"
"strings"
"time"
)
var Default = func(ctx *context.Context) {
traceId := ctx.GetHeader("X-Request-Id")
if traceId == "" {
traceId = uuid.New().String()
}
threadlocal.SetTraceId(traceId)
userId := ctx.GetHeader("X-Request-UserId")
if userId != "" {
threadlocal.SetUserId(userId)
}
zlog.Info("MainHandlerName:{},router:{}", ctx.GetCurrentRoute().MainHandlerName(), ctx.RouteName())
ctx.Next()
}
var SaveOp = func(ctx *context.Context) {
if lr, ok := rm.IrisRouterMap[ctx.RouteName()]; ok {
if lr.SaveOp {
req := &rpc_pbs.UserOperationBehaviorReq{
UserId: threadlocal.GetUserId(),
ServerName: common_config.GetAppName(),
ApiPath: ctx.RouteName(),
EventCode: ctx.GetCurrentRoute().MainHandlerName(),
EventName: rm.IrisRouterMap[ctx.RouteName()].Description,
ExtendData: "{}",
Ipv4: common_utils.RemoteIp(ctx.Request()),
Ipv6: "",
Device: "未知",
UserAgent: ctx.Request().UserAgent(),
SomeId: ctx.Request().Header.Get("X-Request-Some"),
TraceId: threadlocal.GetTraceId(),
BehaviorTime: time.Now().Format(common_const.DataFormat),
}
traceId := threadlocal.GetTraceId()
_ = common_goroutine.GetNonBlockingAntsPool().Submit(func() {
threadlocal.SetUserId(traceId)
universal.SaveUserOperationBehavior(req)
})
}
}
ctx.Next()
}
var CrossDomain = func(ctx *context.Context) {
ctx.Header("Access-Control-Allow-Origin", ctx.Request().Header.Get("Origin"))
ctx.Header("Access-Control-Allow-Headers", "Content-Type,Content-Disposition,X-Request-Id,X-Request-Some")
ctx.Header("Access-Control-Expose-Headers", "Content-Length,Access-Control-Allow-Origin,Access-Control-Allow-Headers,Content-Type,cache-control,Set-Auth,Content-Disposition")
ctx.Header("Access-Control-Allow-Methods", "GET,POST,OPTIONS,PUT,DELETE,PATCH,HEAD,TRACE")
ctx.Header("Access-Control-Allow-Credentials", "true")
ctx.Header("Access-Control-Max-Age", "7200")
if ctx.Request().Method == "OPTIONS" {
ctx.StatusCode(200)
} else {
ctx.Next()
}
}
var NeedLogin = func(ctx *context.Context) {
userId := ctx.GetHeader("X-Request-UserId")
if userId == "" {
ctx.JSON(response.Error(common_error.NOT_LOGGED_IN, nil))
} else {
if userId != "" {
threadlocal.SetUserId(userId)
ctx.Next()
} else {
ctx.JSON(response.Error(common_error.NOT_LOGGED_IN, nil))
}
}
}
var GlobalRecover = func(ctx *context.Context) {
defer func() {
if err := recover(); err != nil {
if ctx.IsStopped() {
return
}
if tx.IsInTX() {
tx.NeedRollback()
tx.TryCommit()
}
var stacktrace string
for i := 1; ; i++ {
_, f, l, got := runtime.Caller(i)
if !got {
break
}
stacktrace += fmt.Sprintf("%s:%d\n", f, l)
}
errMsg := fmt.Sprintf("%s", err)
zlog.Info("异常Ctl入口:{}", ctx.HandlerName())
zlog.Error("ErrorInfo:{}", errMsg)
// 返回错误信息
if strings.HasPrefix(errMsg, "") {
_ = ctx.JSON(response.Error(common_error.SYSTEM_ERROR, errMsg))
}
ctx.StatusCode(500)
ctx.StopExecution()
}
}()
ctx.Next()
if tx.IsInTX() {
tx.TryCommit()
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。