Skip to content

Commit b8ef8df

Browse files
committed
feat(user): qiniu oss test
1 parent a20beb3 commit b8ef8df

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+5516
-153
lines changed

app/user/cmd/wire_gen.go

Lines changed: 10 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

app/user/configs/config.yaml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,15 @@ jwt:
5050
email_expire: 300s
5151

5252
oss:
53-
local:
54-
avatar: "https://treble.sxisa.com/v1/user/avatar/%s" # /v1/user/avatar/{name}
53+
provider: "qiniu"
54+
avatar: "https://treble.sxisa.com/api/user/v1/user/avatar/%s" # /v1/user/avatar/{name}
55+
minio:
56+
5557
qiniu:
5658
access_key: "L8l6DGiYXzmx0IVT0GpIxI-Mj8LqfoIKF6iAnrWa"
5759
secret_key: "qY6ohp-qZEtd20NZN94o7TScg3IeEGSZe-ZRsVXW"
5860
bucket: "bass-test"
5961
timeout: 300s
62+
size_min: 0 # 单位 MB
63+
size_max: 20 # 单位 MB
64+
callback_url: "https://treble.sxisa.com/api/user/v1/oss/qiniu/uploadCallback"

app/user/go.mod

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ require (
3636
github.com/BurntSushi/toml v1.3.2 // indirect
3737
github.com/agext/levenshtein v1.2.3 // indirect
3838
github.com/alecthomas/chroma v0.10.0 // indirect
39+
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 // indirect
3940
github.com/antlr4-go/antlr/v4 v4.13.1 // indirect
4041
github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect
4142
github.com/beorn7/perks v1.0.1 // indirect
@@ -48,14 +49,18 @@ require (
4849
github.com/coreos/go-systemd/v22 v22.6.0 // indirect
4950
github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect
5051
github.com/dlclark/regexp2 v1.11.5 // indirect
52+
github.com/elastic/go-sysinfo v1.0.2 // indirect
53+
github.com/elastic/go-windows v1.0.0 // indirect
5154
github.com/envoyproxy/protoc-gen-validate v1.3.0 // indirect
5255
github.com/fsnotify/fsnotify v1.6.0 // indirect
56+
github.com/gammazero/toposort v0.1.1 // indirect
5357
github.com/go-kratos/aegis v0.2.0 // indirect
5458
github.com/go-kratos/kratos/contrib/registry/etcd/v2 v2.0.0-20251205160234-b9fab9a5a5ab // indirect
5559
github.com/go-logr/logr v1.4.3 // indirect
5660
github.com/go-logr/stdr v1.2.2 // indirect
5761
github.com/go-openapi/inflect v0.19.0 // indirect
5862
github.com/go-playground/form/v4 v4.3.0 // indirect
63+
github.com/gofrs/flock v0.8.1 // indirect
5964
github.com/gogo/protobuf v1.3.2 // indirect
6065
github.com/golang-jwt/jwt/v5 v5.3.0 // indirect
6166
github.com/google/cel-go v0.25.0 // indirect
@@ -64,9 +69,11 @@ require (
6469
github.com/gorilla/mux v1.8.1 // indirect
6570
github.com/grpc-ecosystem/grpc-gateway/v2 v2.27.3 // indirect
6671
github.com/hashicorp/hcl/v2 v2.18.1 // indirect
72+
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 // indirect
6773
github.com/mitchellh/go-wordwrap v1.0.1 // indirect
6874
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 // indirect
6975
github.com/panjf2000/ants/v2 v2.11.3 // indirect
76+
github.com/pkg/errors v0.8.1 // indirect
7077
github.com/prometheus/client_model v0.6.2 // indirect
7178
github.com/prometheus/common v0.66.1 // indirect
7279
github.com/prometheus/procfs v0.16.1 // indirect
@@ -101,6 +108,8 @@ require (
101108
google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.5.1 // indirect
102109
gopkg.in/natefinch/lumberjack.v2 v2.2.1 // indirect
103110
gopkg.in/yaml.v3 v3.0.1 // indirect
111+
howett.net/plist v0.0.0-20181124034731-591f970eefbb // indirect
112+
modernc.org/fileutil v1.3.0 // indirect
104113
)
105114

106115
tool (

app/user/go.sum

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ github.com/agext/levenshtein v1.2.3 h1:YB2fHEn0UJagG8T1rrWknE3ZQzWM06O8AMAatNn7l
2222
github.com/agext/levenshtein v1.2.3/go.mod h1:JEDfjyjHDjOF/1e4FlBE/PkbqA9OfWu2ki2W0IB5558=
2323
github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbfjek=
2424
github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s=
25+
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82 h1:7dONQ3WNZ1zy960TmkxJPuwoolZwL7xKtpcM04MBnt4=
2526
github.com/alex-ant/gomath v0.0.0-20160516115720-89013a210a82/go.mod h1:nLnM0KdK1CmygvjpDUO6m1TjSsiQtL61juhNsvV/JVI=
2627
github.com/antlr4-go/antlr/v4 v4.13.1 h1:SqQKkuVZ+zWkMMNkjy5FZe5mr5WURWnlpmOuzYWrPrQ=
2728
github.com/antlr4-go/antlr/v4 v4.13.1/go.mod h1:GKmUxMtwp6ZgGwZSva4eWPC5mS6vUAmOABFgjdkM7Nw=
@@ -59,7 +60,9 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cu
5960
github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc=
6061
github.com/dlclark/regexp2 v1.11.5 h1:Q/sSnsKerHeCkc/jSTNq1oCm7KiVgUMZRDUoRu0JQZQ=
6162
github.com/dlclark/regexp2 v1.11.5/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
63+
github.com/elastic/go-sysinfo v1.0.2 h1:Wq1bOgnSz7Obl7DbMjbn0tzx1bE5G8Cfy3MVFa6C1Cc=
6264
github.com/elastic/go-sysinfo v1.0.2/go.mod h1:O/D5m1VpYLwGjCYzEt63g3Z1uO3jXfwyzzjiW90t8cY=
65+
github.com/elastic/go-windows v1.0.0 h1:qLURgZFkkrYyTTkvYpsZIgf83AUsdIHfvlJaqaZ7aSY=
6366
github.com/elastic/go-windows v1.0.0/go.mod h1:TsU0Nrp7/y3+VwE82FoZF8gC/XFg/Elz6CcloAxnPgU=
6467
github.com/envoyproxy/go-control-plane v0.13.5-0.20251024222203-75eaa193e329 h1:K+fnvUM0VZ7ZFJf0n4L/BRlnsb9pL/GuDG6FqaH+PwM=
6568
github.com/envoyproxy/go-control-plane/envoy v1.35.0 h1:ixjkELDE+ru6idPxcHLj8LBVc2bFP7iBytj353BoHUo=
@@ -68,6 +71,7 @@ github.com/envoyproxy/protoc-gen-validate v1.3.0 h1:TvGH1wof4H33rezVKWSpqKz5NXWg
6871
github.com/envoyproxy/protoc-gen-validate v1.3.0/go.mod h1:HvYl7zwPa5mffgyeTUHA9zHIH36nmrm7oCbo4YKoSWA=
6972
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
7073
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
74+
github.com/gammazero/toposort v0.1.1 h1:OivGxsWxF3U3+U80VoLJ+f50HcPU1MIqE1JlKzoJ2Eg=
7175
github.com/gammazero/toposort v0.1.1/go.mod h1:H2cozTnNpMw0hg2VHAYsAxmkHXBYroNangj2NTBQDvw=
7276
github.com/go-kratos/aegis v0.2.0 h1:dObzCDWn3XVjUkgxyBp6ZeWtx/do0DPZ7LY3yNSJLUQ=
7377
github.com/go-kratos/aegis v0.2.0/go.mod h1:v0R2m73WgEEYB3XYu6aE2WcMwsZkJ/Rzuf5eVccm7bI=
@@ -98,6 +102,7 @@ github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl
98102
github.com/go-playground/validator/v10 v10.7.0/go.mod h1:xm76BBt941f7yWdGnI2DVPFFg1UK3YY04qifoXU3lOk=
99103
github.com/go-test/deep v1.0.3 h1:ZrJSEWsXzPOxaZnFteGEfooLba+ju3FYIbOrS+rQd68=
100104
github.com/go-test/deep v1.0.3/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA=
105+
github.com/gofrs/flock v0.8.1 h1:+gYjHKf32LDeiEEFhQaotPbLuUXjY5ZqxKgXy7n59aw=
101106
github.com/gofrs/flock v0.8.1/go.mod h1:F1TvTiK9OcQqauNUHlbJvyl9Qa1QvF/gOUDKA14jxHU=
102107
github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
103108
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
@@ -125,6 +130,7 @@ github.com/iancoleman/strcase v0.3.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47
125130
github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
126131
github.com/jinzhu/copier v0.4.0 h1:w3ciUoD19shMCRargcpm0cm91ytaBhDvuRpz1ODO/U8=
127132
github.com/jinzhu/copier v0.4.0/go.mod h1:DfbEm0FYsaqBcKcFuvmOZb218JkPGtvSHsKg8S8hyyg=
133+
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901 h1:rp+c0RAYOWj8l6qbCUTSiRLG/iKnW3K3/QfPPuSsBt4=
128134
github.com/joeshaw/multierror v0.0.0-20140124173710-69b34d4ec901/go.mod h1:Z86h9688Y0wesXCyonoVr47MasHilkuLMqGhRZ4Hpak=
129135
github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
130136
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
@@ -155,6 +161,7 @@ github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8m
155161
github.com/panjf2000/ants/v2 v2.11.3 h1:AfI0ngBoXJmYOpDh9m516vjqoUu2sLrIVgppI9TZVpg=
156162
github.com/panjf2000/ants/v2 v2.11.3/go.mod h1:8u92CYMUc6gyvTIw8Ru7Mt7+/ESnJahz5EVtqfrilek=
157163
github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA=
164+
github.com/pkg/errors v0.8.1 h1:iURUrRGxPUNPdy5/HRSm+Yj6okJ6UtLINN0Q9M4+h3I=
158165
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
159166
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10 h1:GFCKgmp0tecUJ0sJuv4pzYCqS9+RGSn52M3FUwPs+uo=
160167
github.com/planetscale/vtprotobuf v0.6.1-0.20240319094008-0393e58bdf10/go.mod h1:t/avpk3KcrXxUnYOhZhMXJlSEyie6gQbtLq5NM3loB8=
@@ -315,6 +322,8 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C
315322
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
316323
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=
317324
gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
325+
howett.net/plist v0.0.0-20181124034731-591f970eefbb h1:jhnBjNi9UFpfpl8YZhA9CrOqpnJdvzuiHsl/dnxl11M=
318326
howett.net/plist v0.0.0-20181124034731-591f970eefbb/go.mod h1:vMygbs4qMhSZSc4lCUl2OEE+rDiIIJAIdR4m7MiMcm0=
327+
modernc.org/fileutil v1.3.0 h1:gQ5SIzK3H9kdfai/5x41oQiKValumqNTDXMvKo62HvE=
319328
modernc.org/fileutil v1.3.0/go.mod h1:XatxS8fZi3pS8/hKG2GH/ArUogfxjpEKs3Ku3aK4JyQ=
320329
modernc.org/mathutil v1.6.0/go.mod h1:Ui5Q9q1TR2gFm0AQRqQUaBWFLAhQpCwNcuhBOSedWPo=

app/user/internal/biz/biz.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ var BizProviderSet = wire.NewSet(
2222
NewUserDomain,
2323
NewUserRelationDomain,
2424
NewTwoFactorAuthenticationDomain,
25+
NewObjectStorageDomain,
2526
)
2627

2728
type BaseDomain struct {
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package model
2+
3+
import "user/internal/data/ent/gen"
4+
5+
type ObjectStorage struct {
6+
*gen.ObjectStorage
7+
}
8+
9+
type UploadToken struct {
10+
Key string
11+
Token string
12+
}
Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
package biz
2+
3+
import (
4+
"context"
5+
"encoding/json"
6+
"user/internal/biz/model"
7+
"user/internal/biz/repo"
8+
"user/internal/data/ent"
9+
"user/internal/data/ent/gen"
10+
"user/internal/data/oss"
11+
12+
"github.com/google/uuid"
13+
)
14+
15+
type ObjectStorageDomain struct {
16+
*BaseDomain
17+
objectStorageRepo repo.ObjectStorageRepo
18+
}
19+
20+
func NewObjectStorageDomain(base *BaseDomain, ossFactory *oss.Factory) *ObjectStorageDomain {
21+
return &ObjectStorageDomain{
22+
BaseDomain: base,
23+
objectStorageRepo: ossFactory.Get(base.conf.Oss.Provider),
24+
}
25+
}
26+
27+
func (d *ObjectStorageDomain) UploadToken(ctx context.Context, num int) ([]*model.UploadToken, error) {
28+
tokens := make([]*model.UploadToken, 0, num)
29+
for range num {
30+
key := uuid.New().String()
31+
tokens = append(tokens, &model.UploadToken{
32+
Key: key,
33+
Token: d.objectStorageRepo.UploadToken(key),
34+
})
35+
}
36+
return tokens, nil
37+
}
38+
39+
func (d *ObjectStorageDomain) QiniuUploadCallback(ctx context.Context, o *model.ObjectStorage) error {
40+
marshal, _ := json.Marshal(o)
41+
d.log.Infof("QiniuUploadCallback: %s", marshal)
42+
43+
err := ent.WithTx(ctx, d.db, func(tx *gen.Client) error {
44+
_, err := d.objectStorageRepo.Save(ctx, tx, o)
45+
return err
46+
})
47+
return err
48+
}
Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
package repo
2+
3+
import (
4+
"context"
5+
"user/internal/biz/model"
6+
"user/internal/data/ent/gen"
7+
)
8+
9+
type ObjectStorageRepo interface {
10+
Name() string
11+
12+
Save(ctx context.Context, tx *gen.Client, o *model.ObjectStorage) (*model.ObjectStorage, error)
13+
UploadToken(key string) string
14+
//UpdateAuditStatus(ctx context.Context, key string, status bool) error
15+
}

0 commit comments

Comments
 (0)