This commit is contained in:
oneao committed 2026-04-17 17:25:15 +08:00
1 parent e893ef2e48
commit b6415c0d65
25 files changed
+1495 -112

No files matched your search

@@ -5,6 +5,7 @@ import (
"allapp-go/internal/httpx"
"allapp-go/internal/types"
"allapp-go/pkg/db"
"allapp-go/pkg/uniqueid"
"github.com/gofiber/fiber/v3"
)
@@ -48,3 +49,22 @@ func LoadDataBySql(c fiber.Ctx) error {
return httpx.OK(c, data)
}
func GetUniqueId(c fiber.Ctx) error {
var req types.GetUniqueIdReq
if err := httpx.BindAndValidate(c, &req); err != nil {
return errors.WithStack(err)
}
count := req.Count
// 预分配,避免扩容
ids := make([]int64, 0, count)
for i := 0; i < count; i++ {
ids = append(ids, uniqueid.NextId())
}
return httpx.OK(c, ids)
}
@@ -21,6 +21,7 @@ func SaveData(c fiber.Ctx) error {
}
ctx := c.Context()
dbClient := db.New()
err := dbClient.WithTx(ctx, func(tx *db.Client) error {
@@ -1,6 +1,8 @@
package httpx
import (
"reflect"
"github.com/go-playground/validator/v10"
"github.com/gofiber/fiber/v3"
)
@@ -8,10 +10,23 @@ import (
var validate = validator.New()
func BindAndValidate(c fiber.Ctx, v any) error {
// 1️⃣ 绑定 JSON
if err := c.Bind().Body(v); err != nil {
return err
}
// 2️⃣ 只允许 struct 校验(先不支持 slice)
rv := reflect.ValueOf(v)
if rv.Kind() == reflect.Ptr {
rv = rv.Elem()
}
// 如果是 slice,直接跳过校验
if rv.Kind() == reflect.Slice {
return nil
}
// 3️⃣ struct 校验
if err := validate.Struct(v); err != nil {
return err
}
@@ -1,9 +1,7 @@
package middleware
import (
"allapp-go/internal/httpx"
"allapp-go/pkg/jwtx"
"strings"
"context"
"github.com/gofiber/fiber/v3"
)
@@ -13,35 +11,30 @@ const CtxUserIDKey = "user_id"
// Auth 登录校验中间件
func Auth() fiber.Handler {
return func(c fiber.Ctx) error {
token := strings.TrimSpace(c.Get("Token"))
if token == "" {
return httpx.Unauthorized(c, "未登录")
}
//token := strings.TrimSpace(c.Get("Token"))
//
//if token == "" {
// return httpx.Unauthorized(c, "未登录")
//}
//
//verifyToken, ok := jwtx.VerifyToken(c.Context(), token)
//if !ok {
// return httpx.Unauthorized(c, "登录已过期")
//}
//
//c.Locals(CtxUserIDKey, verifyToken.Data["user_id"])
verifyToken, ok := jwtx.VerifyToken(c.Context(), token)
if !ok {
return httpx.Unauthorized(c, "登录已过期")
}
c.Locals(CtxUserIDKey, verifyToken.Data["user_id"])
ctx := context.WithValue(c.Context(), CtxUserIDKey, int64(779895419121733))
c.SetContext(ctx)
return c.Next()
}
}
func GetUserID(c fiber.Ctx) (int64, error) {
v := c.Locals(CtxUserIDKey)
func GetUserID(ctx context.Context) (int64, bool) {
v := ctx.Value(CtxUserIDKey)
if v == nil {
return 0, httpx.Unauthorized(c, "登录已过期")
}
id, ok := v.(int64)
userID, ok := v.(int64)
if !ok {
return 0, httpx.Unauthorized(c, "登录已过期")
}
return userID, nil
return id, ok
}
@@ -3,6 +3,7 @@ package router
import (
"allapp-go/internal/config"
"allapp-go/internal/handle"
"allapp-go/internal/middleware"
"github.com/gofiber/fiber/v3"
)
@@ -11,10 +12,14 @@ func SetupRouter(app *fiber.App, cfg *config.Config) {
api := app.Group(cfg.App.BaseUrl)
// ==================== data ====================
api.Post("/data/loadData", handle.LoadData)
api.Post("/data/loadDataBySql", handle.LoadDataBySql)
api.Post("/data/saveData", handle.SaveData)
data := api.Group("/data", middleware.Auth())
data.Post("/loadData", handle.LoadData)
data.Post("/loadDataBySql", handle.LoadDataBySql)
data.Post("/saveData", handle.SaveData)
data.Post("/getUniqueId", handle.GetUniqueId)
// ==================== auth ====================
api.Post("/auth/login/qq", handle.LoginQq)
api.Post("/auth/login/wechat", handle.LoginWechat)
}
@@ -12,3 +12,7 @@ type LoadDataBySqlReq struct {
Sql string `json:"sql" validate:"required"`
Args []any `json:"args"`
}
type GetUniqueIdReq struct {
Count int `json:"count" binding:"required,min=1,max=100"`
}