This commit is contained in:
oneao committed 2025-11-26 22:36:39 +08:00
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())),
+2
View File
@@ -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
+3
View File
@@ -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,4 +1,4 @@
package log
package logx
import (
"context"
@@ -1,4 +1,4 @@
package log
package logx
import (
"os"
@@ -1,4 +1,4 @@
package log
package logx
import (
"github.com/cloudwego/hertz/pkg/common/hlog"
+2 -2
View File
@@ -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),