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
|
||||
|
||||
import (
|
||||
auth "cn/oneao/base-go/biz/model/auth"
|
||||
"cn/oneao/base-go/db"
|
||||
"cn/oneao/base-go/ent/userinfo"
|
||||
"cn/oneao/base-go/logx"
|
||||
"cn/oneao/base-go/utils/jwtx"
|
||||
"cn/oneao/base-go/utils/response"
|
||||
"cn/oneao/base-go/utils/routinex"
|
||||
"context"
|
||||
"github.com/cloudwego/hertz/pkg/common/hlog"
|
||||
"fmt"
|
||||
"time"
|
||||
|
||||
auth "cn/oneao/base-go/biz/model/auth"
|
||||
|
||||
"github.com/cloudwego/hertz/pkg/app"
|
||||
"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())
|
||||
return
|
||||
}
|
||||
start := time.Now() // 记录开始时间
|
||||
|
||||
// 查询登录用户
|
||||
loginUser, err := db.Client.UserInfo.
|
||||
@@ -35,23 +35,27 @@ func LoginDefault(ctx context.Context, c *app.RequestContext) {
|
||||
Where(userinfo.AccountEQ(req.Account),
|
||||
userinfo.PasswordEQ(req.Password)).
|
||||
Only(ctx)
|
||||
duration := time.Since(start) // 计算耗时
|
||||
|
||||
fmt.Println("耗时:", duration)
|
||||
if err != nil {
|
||||
response.Fail(c).Message("账号或密码错误").Send()
|
||||
return
|
||||
}
|
||||
|
||||
// 异步更新登录事件
|
||||
routinex.Go(func() {
|
||||
go func() {
|
||||
err := db.Client.UserInfo.
|
||||
Update().
|
||||
SetLastLoginTime(time.Now()).
|
||||
Where(userinfo.IDEQ(loginUser.ID)).
|
||||
Exec(ctx)
|
||||
|
||||
logx.CtxInfo(ctx, "测试测试")
|
||||
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)
|
||||
|
||||
@@ -12,8 +12,6 @@ func Error() app.HandlerFunc {
|
||||
c.Next(ctx)
|
||||
|
||||
if err := c.Errors.Last(); err != nil {
|
||||
// 未知错误 -> 500
|
||||
//c.JSON(500, ErrorResponse{500, "Internal Server Error"})
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -1,17 +1,21 @@
|
||||
package middleware
|
||||
|
||||
import (
|
||||
"cn/oneao/base-go/logx"
|
||||
"context"
|
||||
"time"
|
||||
|
||||
"github.com/cloudwego/hertz/pkg/app"
|
||||
"github.com/cloudwego/hertz/pkg/common/hlog"
|
||||
"github.com/hertz-contrib/requestid"
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
func Log() app.HandlerFunc {
|
||||
return func(c context.Context, ctx *app.RequestContext) {
|
||||
reqId := requestid.Get(ctx)
|
||||
|
||||
c = context.WithValue(c, "RequestID", reqId)
|
||||
|
||||
start := time.Now() // 记录开始时间
|
||||
|
||||
// 执行后续处理
|
||||
@@ -20,8 +24,7 @@ func Log() app.HandlerFunc {
|
||||
// 计算耗时
|
||||
duration := time.Since(start).Milliseconds()
|
||||
|
||||
hlog.Info("请求完成",
|
||||
zap.String("RequestID", requestid.Get(ctx)),
|
||||
logx.CtxInfo(c, "请求完成",
|
||||
zap.String("IP", ctx.ClientIP()),
|
||||
zap.String("Method", string(ctx.Method())),
|
||||
zap.String("Path", string(ctx.Path())),
|
||||
|
||||
@@ -16,6 +16,7 @@ require (
|
||||
|
||||
require (
|
||||
ariga.io/atlas v0.38.0 // indirect
|
||||
filippo.io/edwards25519 v1.1.0 // indirect
|
||||
github.com/agext/levenshtein v1.2.3 // indirect
|
||||
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
|
||||
github.com/bmatcuk/doublestar v1.3.4 // indirect
|
||||
@@ -28,6 +29,7 @@ require (
|
||||
github.com/elastic/pkcs8 v1.0.0 // indirect
|
||||
github.com/fsnotify/fsnotify v1.9.0 // 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/golang/snappy v0.0.4 // 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=
|
||||
entgo.io/ent v0.14.5 h1:Rj2WOYJtCkWyFo6a+5wB3EfBRP0rnx1fMk6gGA0UUe4=
|
||||
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=
|
||||
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=
|
||||
@@ -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/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.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/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
|
||||
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 (
|
||||
"fmt"
|
||||
@@ -12,6 +12,11 @@ import (
|
||||
"gopkg.in/natefinch/lumberjack.v2"
|
||||
)
|
||||
|
||||
var (
|
||||
// 暴露底层 zap logger 供 logreq 使用
|
||||
zapLogger *zap.Logger
|
||||
)
|
||||
|
||||
func InitLog() {
|
||||
dynamicLevel := zap.NewAtomicLevel()
|
||||
|
||||
@@ -54,9 +59,10 @@ func InitLog() {
|
||||
},
|
||||
}...),
|
||||
)
|
||||
defer logger.Sync()
|
||||
|
||||
hlog.SetLogger(logger)
|
||||
|
||||
zapLogger = logger.Logger()
|
||||
}
|
||||
|
||||
// humanEncoderConfig copy from zap
|
||||
@@ -103,3 +109,12 @@ func getWriteSyncer(basePath string) zapcore.WriteSyncer {
|
||||
}
|
||||
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 (
|
||||
"context"
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package log
|
||||
package logx
|
||||
|
||||
import (
|
||||
"os"
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package log
|
||||
package logx
|
||||
|
||||
import (
|
||||
"github.com/cloudwego/hertz/pkg/common/hlog"
|
||||
@@ -4,7 +4,7 @@ import (
|
||||
"cn/oneao/base-go/biz/router/middleware"
|
||||
"cn/oneao/base-go/config"
|
||||
"cn/oneao/base-go/db"
|
||||
"cn/oneao/base-go/log"
|
||||
"cn/oneao/base-go/logx"
|
||||
"cn/oneao/base-go/utils/idgen"
|
||||
|
||||
"github.com/cloudwego/hertz/pkg/app/server"
|
||||
@@ -19,7 +19,7 @@ func main() {
|
||||
// 初始化数据库
|
||||
db.InitDB()
|
||||
// 日志
|
||||
log.InitLog()
|
||||
logx.InitLog()
|
||||
|
||||
h := server.Default(
|
||||
server.WithBasePath(config.App.Server.BaseUrl),
|
||||
|
||||
Reference in new issue
Block a user