u
This commit is contained in:
1 parent
b9f728812d
commit
d9b2522552
12 files changed
+104
-19
No files matched your search
@@ -3,17 +3,16 @@
|
|||||||
package auth
|
package auth
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
auth "cn/oneao/base-go/biz/model/auth"
|
||||||
"cn/oneao/base-go/db"
|
"cn/oneao/base-go/db"
|
||||||
"cn/oneao/base-go/ent/userinfo"
|
"cn/oneao/base-go/ent/userinfo"
|
||||||
|
"cn/oneao/base-go/logx"
|
||||||
"cn/oneao/base-go/utils/jwtx"
|
"cn/oneao/base-go/utils/jwtx"
|
||||||
"cn/oneao/base-go/utils/response"
|
"cn/oneao/base-go/utils/response"
|
||||||
"cn/oneao/base-go/utils/routinex"
|
|
||||||
"context"
|
"context"
|
||||||
"github.com/cloudwego/hertz/pkg/common/hlog"
|
"fmt"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
auth "cn/oneao/base-go/biz/model/auth"
|
|
||||||
|
|
||||||
"github.com/cloudwego/hertz/pkg/app"
|
"github.com/cloudwego/hertz/pkg/app"
|
||||||
"github.com/cloudwego/hertz/pkg/protocol/consts"
|
"github.com/cloudwego/hertz/pkg/protocol/consts"
|
||||||
)
|
)
|
||||||
@@ -28,6 +27,7 @@ func LoginDefault(ctx context.Context, c *app.RequestContext) {
|
|||||||
c.String(consts.StatusBadRequest, err.Error())
|
c.String(consts.StatusBadRequest, err.Error())
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
start := time.Now() // 记录开始时间
|
||||||
|
|
||||||
// 查询登录用户
|
// 查询登录用户
|
||||||
loginUser, err := db.Client.UserInfo.
|
loginUser, err := db.Client.UserInfo.
|
||||||
@@ -35,23 +35,27 @@ func LoginDefault(ctx context.Context, c *app.RequestContext) {
|
|||||||
Where(userinfo.AccountEQ(req.Account),
|
Where(userinfo.AccountEQ(req.Account),
|
||||||
userinfo.PasswordEQ(req.Password)).
|
userinfo.PasswordEQ(req.Password)).
|
||||||
Only(ctx)
|
Only(ctx)
|
||||||
|
duration := time.Since(start) // 计算耗时
|
||||||
|
|
||||||
|
fmt.Println("耗时:", duration)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
response.Fail(c).Message("账号或密码错误").Send()
|
response.Fail(c).Message("账号或密码错误").Send()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 异步更新登录事件
|
// 异步更新登录事件
|
||||||
routinex.Go(func() {
|
go func() {
|
||||||
err := db.Client.UserInfo.
|
err := db.Client.UserInfo.
|
||||||
Update().
|
Update().
|
||||||
SetLastLoginTime(time.Now()).
|
SetLastLoginTime(time.Now()).
|
||||||
Where(userinfo.IDEQ(loginUser.ID)).
|
Where(userinfo.IDEQ(loginUser.ID)).
|
||||||
Exec(ctx)
|
Exec(ctx)
|
||||||
|
|
||||||
|
logx.CtxInfo(ctx, "测试测试")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
hlog.Errorf("更新用户登录时间失败,UserID=%d, err=%v", loginUser.ID, err)
|
logx.CtxError(ctx, "更新用户登录时间失败,UserID=%d, err=%v", loginUser.ID, err)
|
||||||
}
|
}
|
||||||
})
|
}()
|
||||||
|
|
||||||
// 包装数据
|
// 包装数据
|
||||||
token, err := jwtx.CreateAccessToken(loginUser.ID)
|
token, err := jwtx.CreateAccessToken(loginUser.ID)
|
||||||
|
|||||||
@@ -12,8 +12,6 @@ func Error() app.HandlerFunc {
|
|||||||
c.Next(ctx)
|
c.Next(ctx)
|
||||||
|
|
||||||
if err := c.Errors.Last(); err != nil {
|
if err := c.Errors.Last(); err != nil {
|
||||||
// 未知错误 -> 500
|
|
||||||
//c.JSON(500, ErrorResponse{500, "Internal Server Error"})
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,17 +1,21 @@
|
|||||||
package middleware
|
package middleware
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"cn/oneao/base-go/logx"
|
||||||
"context"
|
"context"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"github.com/cloudwego/hertz/pkg/app"
|
"github.com/cloudwego/hertz/pkg/app"
|
||||||
"github.com/cloudwego/hertz/pkg/common/hlog"
|
|
||||||
"github.com/hertz-contrib/requestid"
|
"github.com/hertz-contrib/requestid"
|
||||||
"go.uber.org/zap"
|
"go.uber.org/zap"
|
||||||
)
|
)
|
||||||
|
|
||||||
func Log() app.HandlerFunc {
|
func Log() app.HandlerFunc {
|
||||||
return func(c context.Context, ctx *app.RequestContext) {
|
return func(c context.Context, ctx *app.RequestContext) {
|
||||||
|
reqId := requestid.Get(ctx)
|
||||||
|
|
||||||
|
c = context.WithValue(c, "RequestID", reqId)
|
||||||
|
|
||||||
start := time.Now() // 记录开始时间
|
start := time.Now() // 记录开始时间
|
||||||
|
|
||||||
// 执行后续处理
|
// 执行后续处理
|
||||||
@@ -20,8 +24,7 @@ func Log() app.HandlerFunc {
|
|||||||
// 计算耗时
|
// 计算耗时
|
||||||
duration := time.Since(start).Milliseconds()
|
duration := time.Since(start).Milliseconds()
|
||||||
|
|
||||||
hlog.Info("请求完成",
|
logx.CtxInfo(c, "请求完成",
|
||||||
zap.String("RequestID", requestid.Get(ctx)),
|
|
||||||
zap.String("IP", ctx.ClientIP()),
|
zap.String("IP", ctx.ClientIP()),
|
||||||
zap.String("Method", string(ctx.Method())),
|
zap.String("Method", string(ctx.Method())),
|
||||||
zap.String("Path", string(ctx.Path())),
|
zap.String("Path", string(ctx.Path())),
|
||||||
|
|||||||
@@ -16,6 +16,7 @@ require (
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
ariga.io/atlas v0.38.0 // indirect
|
ariga.io/atlas v0.38.0 // indirect
|
||||||
|
filippo.io/edwards25519 v1.1.0 // indirect
|
||||||
github.com/agext/levenshtein v1.2.3 // indirect
|
github.com/agext/levenshtein v1.2.3 // indirect
|
||||||
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
||||||
github.com/bmatcuk/doublestar v1.3.4 // indirect
|
github.com/bmatcuk/doublestar v1.3.4 // indirect
|
||||||
@@ -28,6 +29,7 @@ require (
|
|||||||
github.com/elastic/pkcs8 v1.0.0 // indirect
|
github.com/elastic/pkcs8 v1.0.0 // indirect
|
||||||
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
github.com/fsnotify/fsnotify v1.9.0 // indirect
|
||||||
github.com/go-openapi/inflect v0.21.3 // indirect
|
github.com/go-openapi/inflect v0.21.3 // indirect
|
||||||
|
github.com/go-sql-driver/mysql v1.9.3 // indirect
|
||||||
github.com/goccy/go-json v0.10.5 // indirect
|
github.com/goccy/go-json v0.10.5 // indirect
|
||||||
github.com/golang/snappy v0.0.4 // indirect
|
github.com/golang/snappy v0.0.4 // indirect
|
||||||
github.com/google/go-cmp v0.7.0 // indirect
|
github.com/google/go-cmp v0.7.0 // indirect
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ ariga.io/atlas v0.38.0 h1:MwbtwVtDWJFq+ECyeTAz2ArvewDnpeiw/t/sgNdDsdo=
|
|||||||
ariga.io/atlas v0.38.0/go.mod h1:D7XMK6ei3GvfDqvzk+2VId78j77LdqHrqPOWamn51/s=
|
ariga.io/atlas v0.38.0/go.mod h1:D7XMK6ei3GvfDqvzk+2VId78j77LdqHrqPOWamn51/s=
|
||||||
entgo.io/ent v0.14.5 h1:Rj2WOYJtCkWyFo6a+5wB3EfBRP0rnx1fMk6gGA0UUe4=
|
entgo.io/ent v0.14.5 h1:Rj2WOYJtCkWyFo6a+5wB3EfBRP0rnx1fMk6gGA0UUe4=
|
||||||
entgo.io/ent v0.14.5/go.mod h1:zTzLmWtPvGpmSwtkaayM2cm5m819NdM7z7tYPq3vN0U=
|
entgo.io/ent v0.14.5/go.mod h1:zTzLmWtPvGpmSwtkaayM2cm5m819NdM7z7tYPq3vN0U=
|
||||||
|
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
|
||||||
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
|
||||||
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
|
gitea.com/xorm/sqlfiddle v0.0.0-20180821085327-62ce714f951a/go.mod h1:EXuID2Zs0pAQhH8yz+DNjUbjppKQzKFAn28TMYPB6IU=
|
||||||
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
|
github.com/DATA-DOG/go-sqlmock v1.5.0 h1:Shsta01QNfFxHCfpW6YH2STWB0MudeXXEWMr20OEh60=
|
||||||
@@ -47,6 +48,8 @@ github.com/fsnotify/fsnotify v1.9.0/go.mod h1:8jBTzvmWwFyi3Pb8djgCCO5IBqzKJ/Jwo8
|
|||||||
github.com/go-openapi/inflect v0.21.3 h1:TmQvw+9eLrsNp4X0BBQacEZZtAnzk2z1FaLdQQJsDiU=
|
github.com/go-openapi/inflect v0.21.3 h1:TmQvw+9eLrsNp4X0BBQacEZZtAnzk2z1FaLdQQJsDiU=
|
||||||
github.com/go-openapi/inflect v0.21.3/go.mod h1:INezMuUu7SJQc2AyR3WO0DqqYUJSj8Kb4hBd7WtjlAw=
|
github.com/go-openapi/inflect v0.21.3/go.mod h1:INezMuUu7SJQc2AyR3WO0DqqYUJSj8Kb4hBd7WtjlAw=
|
||||||
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
github.com/go-sql-driver/mysql v1.8.1/go.mod h1:wEBSXgmK//2ZFJyE+qWnIsVGmvmEKlqwuVSjsCm7DZg=
|
||||||
|
github.com/go-sql-driver/mysql v1.9.3 h1:U/N249h2WzJ3Ukj8SowVFjdtZKfu9vlLZxjPXV1aweo=
|
||||||
|
github.com/go-sql-driver/mysql v1.9.3/go.mod h1:qn46aNg1333BRMNU69Lq93t8du/dwxI64Gl8i5p1WMU=
|
||||||
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
|
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
|
||||||
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||||
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
github.com/goccy/go-json v0.10.5 h1:Fq85nIqj+gXn/S5ahsiTlK3TmC85qgirsdTP/+DeaC4=
|
||||||
|
|||||||
@@ -0,0 +1 @@
|
|||||||
|
package auth
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
package logx
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
|
||||||
|
"github.com/cloudwego/hertz/pkg/common/hlog"
|
||||||
|
"go.uber.org/zap"
|
||||||
|
)
|
||||||
|
|
||||||
|
// getRequestID 从 context 中取 RequestID,如果没有则返回空字符串
|
||||||
|
func getRequestID(ctx context.Context) string {
|
||||||
|
if ctx == nil {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if rid, ok := ctx.Value("RequestID").(string); ok {
|
||||||
|
return rid
|
||||||
|
}
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
|
||||||
|
func CtxInfo(ctx context.Context, v ...interface{}) {
|
||||||
|
rid := getRequestID(ctx)
|
||||||
|
if rid != "" {
|
||||||
|
v = append(v, zap.String("RequestID", rid))
|
||||||
|
}
|
||||||
|
hlog.Info(v...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CtxError(ctx context.Context, v ...interface{}) {
|
||||||
|
rid := getRequestID(ctx)
|
||||||
|
if rid != "" {
|
||||||
|
v = append(v, zap.String("RequestID", rid))
|
||||||
|
}
|
||||||
|
hlog.Error(v...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CtxWarn(ctx context.Context, v ...interface{}) {
|
||||||
|
rid := getRequestID(ctx)
|
||||||
|
if rid != "" {
|
||||||
|
v = append(v, zap.String("RequestID", rid))
|
||||||
|
}
|
||||||
|
hlog.Warn(v...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CtxDebug(ctx context.Context, v ...interface{}) {
|
||||||
|
rid := getRequestID(ctx)
|
||||||
|
if rid != "" {
|
||||||
|
v = append(v, zap.String("RequestID", rid))
|
||||||
|
}
|
||||||
|
hlog.Debug(v...)
|
||||||
|
}
|
||||||
|
|
||||||
|
func CtxFatal(ctx context.Context, v ...interface{}) {
|
||||||
|
rid := getRequestID(ctx)
|
||||||
|
if rid != "" {
|
||||||
|
v = append(v, zap.String("RequestID", rid))
|
||||||
|
}
|
||||||
|
hlog.Fatal(v...)
|
||||||
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
package log
|
package logx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
@@ -12,6 +12,11 @@ import (
|
|||||||
"gopkg.in/natefinch/lumberjack.v2"
|
"gopkg.in/natefinch/lumberjack.v2"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
// 暴露底层 zap logger 供 logreq 使用
|
||||||
|
zapLogger *zap.Logger
|
||||||
|
)
|
||||||
|
|
||||||
func InitLog() {
|
func InitLog() {
|
||||||
dynamicLevel := zap.NewAtomicLevel()
|
dynamicLevel := zap.NewAtomicLevel()
|
||||||
|
|
||||||
@@ -54,9 +59,10 @@ func InitLog() {
|
|||||||
},
|
},
|
||||||
}...),
|
}...),
|
||||||
)
|
)
|
||||||
defer logger.Sync()
|
|
||||||
|
|
||||||
hlog.SetLogger(logger)
|
hlog.SetLogger(logger)
|
||||||
|
|
||||||
|
zapLogger = logger.Logger()
|
||||||
}
|
}
|
||||||
|
|
||||||
// humanEncoderConfig copy from zap
|
// humanEncoderConfig copy from zap
|
||||||
@@ -103,3 +109,12 @@ func getWriteSyncer(basePath string) zapcore.WriteSyncer {
|
|||||||
}
|
}
|
||||||
return currentSync[basePath]
|
return currentSync[basePath]
|
||||||
}
|
}
|
||||||
|
func Sync() error {
|
||||||
|
if zapLogger != nil {
|
||||||
|
return zapLogger.Sync()
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
func GetZapLogger() *zap.Logger {
|
||||||
|
return zapLogger
|
||||||
|
}
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package log
|
package logx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"context"
|
"context"
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package log
|
package logx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"os"
|
"os"
|
||||||
+1
-1
@@ -1,4 +1,4 @@
|
|||||||
package log
|
package logx
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"github.com/cloudwego/hertz/pkg/common/hlog"
|
"github.com/cloudwego/hertz/pkg/common/hlog"
|
||||||
@@ -4,7 +4,7 @@ import (
|
|||||||
"cn/oneao/base-go/biz/router/middleware"
|
"cn/oneao/base-go/biz/router/middleware"
|
||||||
"cn/oneao/base-go/config"
|
"cn/oneao/base-go/config"
|
||||||
"cn/oneao/base-go/db"
|
"cn/oneao/base-go/db"
|
||||||
"cn/oneao/base-go/log"
|
"cn/oneao/base-go/logx"
|
||||||
"cn/oneao/base-go/utils/idgen"
|
"cn/oneao/base-go/utils/idgen"
|
||||||
|
|
||||||
"github.com/cloudwego/hertz/pkg/app/server"
|
"github.com/cloudwego/hertz/pkg/app/server"
|
||||||
@@ -19,7 +19,7 @@ func main() {
|
|||||||
// 初始化数据库
|
// 初始化数据库
|
||||||
db.InitDB()
|
db.InitDB()
|
||||||
// 日志
|
// 日志
|
||||||
log.InitLog()
|
logx.InitLog()
|
||||||
|
|
||||||
h := server.Default(
|
h := server.Default(
|
||||||
server.WithBasePath(config.App.Server.BaseUrl),
|
server.WithBasePath(config.App.Server.BaseUrl),
|
||||||
|
|||||||
Reference in new issue
Block a user