This commit is contained in:
oneao committed 2026-04-19 21:30:51 +08:00
1 parent b6415c0d65
commit 89aaef1d6b
29 files changed
+1118 -277

No files matched your search

@@ -94,8 +94,8 @@ func handleThirdLogin(
}
// ========= token =========
token, err := jwtx.CreateToken(c.Context(), map[string]any{
"id": id,
token, err := jwtx.CreateToken(c.Context(), jwtx.TokenData{
UserID: id,
})
if err != nil {
return errors.WithStack(err)
@@ -129,25 +129,24 @@ func registerUser(
err := dbClient.WithTx(c.Context(), func(tx *db.Client) error {
if err := tx.Insert(c.Context(), "user", "id", map[string]any{
if err := tx.Insert(c.Context(), "b_user", "id", map[string]any{
"id": userId,
"nickname": nickname,
"avatar": avatar,
"status": 1,
"create_time": "NOW()",
"update_time": "NOW()",
"created_at": "NOW()",
"updated_at": "NOW()",
"last_login_time": "NOW()",
}); err != nil {
return err
}
if err := tx.Insert(c.Context(), "user_oauth", "id", map[string]any{
"id": uniqueid.NextId(),
"user_id": userId,
"type": loginType,
"openid": openid,
"create_time": "NOW()",
"update_time": "NOW()",
if err := tx.Insert(c.Context(), "b_user_oauth", "id", map[string]any{
"id": uniqueid.NextId(),
"user_id": userId,
"type": loginType,
"openid": openid,
"created_at": "NOW()",
"updated_at": "NOW()",
}); err != nil {
return err
}
@@ -159,8 +158,8 @@ func registerUser(
return errors.WithStack(err)
}
token, err := jwtx.CreateToken(c.Context(), map[string]any{
"id": userId,
token, err := jwtx.CreateToken(c.Context(), jwtx.TokenData{
UserID: userId,
})
if err != nil {
return errors.WithStack(err)
@@ -179,7 +178,10 @@ func getUserByOpenID(dbClient *db.Client, c fiber.Ctx, openid string, loginType
users, err := dbClient.LoadDataBySQL(
c.Context(),
"SELECT u.* FROM user_oauth o JOIN user u ON u.id = o.user_id WHERE o.openid = ? AND o.type = ?",
`SELECT u.*
FROM b_user_oauth o
JOIN b_user u ON u.id = o.user_id
WHERE o.openid = $1 AND o.type = $2`,
[]any{openid, loginType},
)
@@ -196,6 +198,19 @@ func getUserByOpenID(dbClient *db.Client, c fiber.Ctx, openid string, loginType
// ======================== 类型工具(极简版) ========================
func toInt64(v any) int64 {
i, _ := v.(int64)
return i
switch val := v.(type) {
case int64:
return val
case int32:
return int64(val)
case int16:
return int64(val)
case int:
return int64(val)
case float64:
return int64(val)
default:
fmt.Printf("unknown type: %T, value=%v\n", v, v)
return 0
}
}
@@ -0,0 +1,79 @@
package handle
import (
"allapp-go/internal/errors"
"allapp-go/internal/httpx"
"allapp-go/pkg/s3store"
"fmt"
"mime/multipart"
"path/filepath"
"time"
"github.com/aws/aws-sdk-go-v2/service/s3"
"github.com/gofiber/fiber/v3"
"github.com/google/uuid"
)
func S3ListBuckets(c fiber.Ctx) error {
result, err := s3store.S3Client.ListBuckets(c.Context(), &s3.ListBucketsInput{})
if err != nil {
return errors.WithStack(err)
}
buckets := make([]string, 0, len(result.Buckets))
for _, b := range result.Buckets {
if b.Name != nil {
buckets = append(buckets, *b.Name)
}
}
return httpx.OK(c, buckets)
}
func S3UploadFile(c fiber.Ctx) error {
fileHeader, err := c.FormFile("file")
if err != nil {
return errors.WithStack(err)
}
file, err := fileHeader.Open()
if err != nil {
return errors.WithStack(err)
}
defer func(file multipart.File) {
_ = file.Close()
}(file)
// 日期目录
now := time.Now()
folderPath := fmt.Sprintf("%d/%02d/%02d",
now.Year(),
now.Month(),
now.Day(),
)
// UUID 文件名(保留后缀)
ext := filepath.Ext(fileHeader.Filename)
newName := fmt.Sprintf("%s%s", uuid.NewString(), ext)
// S3 object key
key := fmt.Sprintf("%s/%s", folderPath, newName)
// ContentType(防止前端乱传)
contentType := fileHeader.Header.Get("Content-Type")
// 调用存储层
err = s3store.UploadToRustFS(
c.Context(),
key,
file,
fileHeader.Size,
contentType,
)
if err != nil {
return errors.WithStack(err)
}
return httpx.OK(c, nil)
}