✨ added the image backup API
This commit is contained in:
@@ -797,6 +797,14 @@ type (
|
||||
ImageBedUploadListResponse {
|
||||
Records []ImageBedUploadMeta `json:"records"`
|
||||
}
|
||||
BackupImageRequest {
|
||||
OriginProvider string `json:"origin_provider"`
|
||||
OriginBucket string `json:"origin_bucket"`
|
||||
OriginRegion string `json:"origin_region"`
|
||||
TargetProvider string `json:"target_provider"`
|
||||
TargetBucket string `json:"target_bucket"`
|
||||
TargetRegion string `json:"target_region"`
|
||||
}
|
||||
)
|
||||
|
||||
// 文件上传
|
||||
@@ -959,6 +967,10 @@ service auth {
|
||||
// 获取图床上传的图片列表
|
||||
@handler getImageBedUploadList
|
||||
post /image/bed/upload/list (ImageBedUploadListRequest) returns (ImageBedUploadListResponse)
|
||||
|
||||
// 备份图像数据
|
||||
@handler backupImage
|
||||
post /image/backup (BackupImageRequest) returns (string)
|
||||
}
|
||||
|
||||
type (
|
||||
@@ -1085,6 +1097,16 @@ type (
|
||||
bindGitee bool `json:"bind_gitee,default=false"`
|
||||
setPassword bool `json:"set_password,default=false"`
|
||||
}
|
||||
ModifyPersonalInfoRequest {
|
||||
Nickname string `json:"nickname,optional"`
|
||||
Avatar string `json:"avatar,optional"`
|
||||
Email string `json:"email,optional"`
|
||||
Gender int64 `json:"gender,optional"`
|
||||
Introduce string `json:"introduce,optional"`
|
||||
Blog string `json:"blog,optional"`
|
||||
Location string `json:"location,optional"`
|
||||
Company string `json:"company,optional"`
|
||||
}
|
||||
)
|
||||
|
||||
// 用户服务
|
||||
@@ -1107,6 +1129,14 @@ service auth {
|
||||
// 退出登录
|
||||
@handler logout
|
||||
post /logout returns (string)
|
||||
|
||||
// 获取个人信息
|
||||
@handler getPersonalInfo
|
||||
post /personal/info returns (UserMeta)
|
||||
|
||||
// 修改个人信息
|
||||
@handler modifyPersonalInfo
|
||||
post /personal/modify (ModifyPersonalInfoRequest) returns (string)
|
||||
}
|
||||
|
||||
type (
|
||||
|
@@ -0,0 +1,21 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/logic/auth"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/common/xhttp"
|
||||
)
|
||||
|
||||
func GetPersonalInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
l := auth.NewGetPersonalInfoLogic(r.Context(), svcCtx)
|
||||
resp, err := l.GetPersonalInfo()
|
||||
if err != nil {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, err)
|
||||
} else {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
@@ -0,0 +1,29 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/logic/auth"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/types"
|
||||
"schisandra-album-cloud-microservices/common/xhttp"
|
||||
)
|
||||
|
||||
func ModifyPersonalInfoHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.ModifyPersonalInfoRequest
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := auth.NewModifyPersonalInfoLogic(r.Context(), svcCtx)
|
||||
resp, err := l.ModifyPersonalInfo(&req)
|
||||
if err != nil {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, err)
|
||||
} else {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
@@ -40,6 +40,16 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||
Path: "/logout",
|
||||
Handler: auth.LogoutHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/personal/info",
|
||||
Handler: auth.GetPersonalInfoHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/personal/modify",
|
||||
Handler: auth.ModifyPersonalInfoHandler(serverCtx),
|
||||
},
|
||||
}...,
|
||||
),
|
||||
rest.WithJwt(serverCtx.Config.Auth.AccessSecret),
|
||||
@@ -381,6 +391,11 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
|
||||
Path: "/image/all/list",
|
||||
Handler: storage.QueryAllImageListHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/image/backup",
|
||||
Handler: storage.BackupImageHandler(serverCtx),
|
||||
},
|
||||
{
|
||||
Method: http.MethodPost,
|
||||
Path: "/image/bed/upload",
|
||||
|
@@ -0,0 +1,29 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"net/http"
|
||||
|
||||
"github.com/zeromicro/go-zero/rest/httpx"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/logic/storage"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/types"
|
||||
"schisandra-album-cloud-microservices/common/xhttp"
|
||||
)
|
||||
|
||||
func BackupImageHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
|
||||
return func(w http.ResponseWriter, r *http.Request) {
|
||||
var req types.BackupImageRequest
|
||||
if err := httpx.Parse(r, &req); err != nil {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, err)
|
||||
return
|
||||
}
|
||||
|
||||
l := storage.NewBackupImageLogic(r.Context(), svcCtx)
|
||||
resp, err := l.BackupImage(&req)
|
||||
if err != nil {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, err)
|
||||
} else {
|
||||
xhttp.JsonBaseResponseCtx(r.Context(), w, resp)
|
||||
}
|
||||
}
|
||||
}
|
39
app/auth/api/internal/logic/auth/get_personal_info_logic.go
Normal file
39
app/auth/api/internal/logic/auth/get_personal_info_logic.go
Normal file
@@ -0,0 +1,39 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type GetPersonalInfoLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewGetPersonalInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetPersonalInfoLogic {
|
||||
return &GetPersonalInfoLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *GetPersonalInfoLogic) GetPersonalInfo() (resp *types.UserMeta, err error) {
|
||||
uid, ok := l.ctx.Value("user_id").(string)
|
||||
if !ok {
|
||||
return nil, errors.New("user_id not found")
|
||||
}
|
||||
authUser := l.svcCtx.DB.ScaAuthUser
|
||||
|
||||
err = authUser.Where(authUser.UID.Eq(uid)).Scan(&resp)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return resp, nil
|
||||
}
|
@@ -0,0 +1,42 @@
|
||||
package auth
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/types"
|
||||
"schisandra-album-cloud-microservices/app/auth/model/mysql/model"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type ModifyPersonalInfoLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewModifyPersonalInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ModifyPersonalInfoLogic {
|
||||
return &ModifyPersonalInfoLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *ModifyPersonalInfoLogic) ModifyPersonalInfo(req *types.ModifyPersonalInfoRequest) (resp string, err error) {
|
||||
uid, ok := l.ctx.Value("user_id").(string)
|
||||
if !ok {
|
||||
return "", errors.New("user_id not found")
|
||||
}
|
||||
|
||||
authUser := l.svcCtx.DB.ScaAuthUser
|
||||
info, err := authUser.Where(authUser.UID.Eq(uid)).Updates(model.ScaAuthUser{Nickname: req.Nickname, Avatar: req.Avatar, Email: req.Email, Gender: req.Gender, Introduce: req.Introduce, Blog: req.Blog, Location: req.Location, Company: req.Company})
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
if info.RowsAffected == 0 {
|
||||
return "", errors.New("user not found")
|
||||
}
|
||||
return "success", nil
|
||||
}
|
128
app/auth/api/internal/logic/storage/backup_image_logic.go
Normal file
128
app/auth/api/internal/logic/storage/backup_image_logic.go
Normal file
@@ -0,0 +1,128 @@
|
||||
package storage
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"github.com/redis/go-redis/v9"
|
||||
"schisandra-album-cloud-microservices/app/auth/model/mysql/model"
|
||||
"schisandra-album-cloud-microservices/common/constant"
|
||||
"schisandra-album-cloud-microservices/common/encrypt"
|
||||
storageConfig "schisandra-album-cloud-microservices/common/storage/config"
|
||||
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/svc"
|
||||
"schisandra-album-cloud-microservices/app/auth/api/internal/types"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
)
|
||||
|
||||
type BackupImageLogic struct {
|
||||
logx.Logger
|
||||
ctx context.Context
|
||||
svcCtx *svc.ServiceContext
|
||||
}
|
||||
|
||||
func NewBackupImageLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BackupImageLogic {
|
||||
return &BackupImageLogic{
|
||||
Logger: logx.WithContext(ctx),
|
||||
ctx: ctx,
|
||||
svcCtx: svcCtx,
|
||||
}
|
||||
}
|
||||
|
||||
func (l *BackupImageLogic) BackupImage(req *types.BackupImageRequest) (resp string, err error) {
|
||||
uid, ok := l.ctx.Value("user_id").(string)
|
||||
if !ok {
|
||||
return "", errors.New("user_id not found")
|
||||
}
|
||||
if req.TargetBucket == "" || req.OriginBucket == "" {
|
||||
return "", errors.New("origin bucket or target bucket required")
|
||||
}
|
||||
if req.TargetBucket == req.OriginBucket {
|
||||
return "", errors.New("origin bucket and target bucket cannot be the same")
|
||||
}
|
||||
|
||||
if req.OriginProvider == req.TargetProvider {
|
||||
// 加载用户oss配置信息
|
||||
originOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.OriginProvider + ":" + req.OriginBucket
|
||||
originOssConfig, err := l.getOssConfigFromCacheOrDb(originOssConfigKey, uid, req.OriginProvider, req.OriginBucket)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
||||
service, err := l.svcCtx.StorageManager.GetStorage(uid, originOssConfig)
|
||||
if err != nil {
|
||||
return "", errors.New("get storage failed")
|
||||
}
|
||||
// 同一供应商,直接复制
|
||||
_, err = service.PutBucketReplication(l.ctx, req.OriginBucket, req.TargetBucket, req.TargetRegion)
|
||||
if err != nil {
|
||||
return "", errors.New("put bucket replication failed")
|
||||
}
|
||||
} else {
|
||||
// 不同供应商,先复制到本地,再上传到目标OSS
|
||||
return "", errors.New("different provider not supported yet")
|
||||
}
|
||||
|
||||
return "success", nil
|
||||
}
|
||||
|
||||
// 提取解密操作为函数
|
||||
func (l *BackupImageLogic) decryptConfig(config *model.ScaStorageConfig) (*storageConfig.StorageConfig, error) {
|
||||
accessKey, err := encrypt.Decrypt(config.AccessKey, l.svcCtx.Config.Encrypt.Key)
|
||||
if err != nil {
|
||||
return nil, errors.New("decrypt access key failed")
|
||||
}
|
||||
secretKey, err := encrypt.Decrypt(config.SecretKey, l.svcCtx.Config.Encrypt.Key)
|
||||
if err != nil {
|
||||
return nil, errors.New("decrypt secret key failed")
|
||||
}
|
||||
return &storageConfig.StorageConfig{
|
||||
Provider: config.Provider,
|
||||
Endpoint: config.Endpoint,
|
||||
AccessKey: accessKey,
|
||||
SecretKey: secretKey,
|
||||
BucketName: config.Bucket,
|
||||
Region: config.Region,
|
||||
}, nil
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *BackupImageLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
}
|
||||
|
||||
var ossConfig *storageConfig.StorageConfig
|
||||
if result != "" {
|
||||
var redisOssConfig model.ScaStorageConfig
|
||||
if err = json.Unmarshal([]byte(result), &redisOssConfig); err != nil {
|
||||
return nil, errors.New("unmarshal oss config failed")
|
||||
}
|
||||
return l.decryptConfig(&redisOssConfig)
|
||||
}
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
// 缓存数据库配置
|
||||
ossConfig, err = l.decryptConfig(dbOssConfig)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
marshalData, err := json.Marshal(dbOssConfig)
|
||||
if err != nil {
|
||||
return nil, errors.New("marshal oss config failed")
|
||||
}
|
||||
err = l.svcCtx.RedisClient.Set(l.ctx, cacheKey, marshalData, 0).Err()
|
||||
if err != nil {
|
||||
return nil, errors.New("set oss config failed")
|
||||
}
|
||||
|
||||
return ossConfig, nil
|
||||
}
|
@@ -39,7 +39,7 @@ func (l *DeleteStorageConfigLogic) DeleteStorageConfig(req *types.DeleteStorageC
|
||||
if info.RowsAffected == 0 {
|
||||
return "", errors.New("storage config not found")
|
||||
}
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
err = l.svcCtx.RedisClient.Del(l.ctx, cacheOssConfigKey).Err()
|
||||
if err != nil {
|
||||
return "", err
|
||||
|
@@ -46,8 +46,8 @@ func (l *DownloadAlbumLogic) DownloadAlbum(req *types.DownloadAlbumRequest) (res
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -107,7 +107,7 @@ func (l *DownloadAlbumLogic) decryptConfig(config *model.ScaStorageConfig) (*sto
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *DownloadAlbumLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *DownloadAlbumLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -124,7 +124,7 @@ func (l *DownloadAlbumLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider s
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -95,8 +95,8 @@ func (l *GetAlbumDetailLogic) GetAlbumDetail(req *types.AlbumDetailListRequest)
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -215,7 +215,7 @@ func (l *GetAlbumDetailLogic) decryptConfig(config *model.ScaStorageConfig) (*st
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetAlbumDetailLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetAlbumDetailLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -232,7 +232,7 @@ func (l *GetAlbumDetailLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -61,8 +61,8 @@ func (l *GetBucketCapacityLogic) GetBucketCapacity(req *types.BucketCapacityRequ
|
||||
return resp, nil
|
||||
}
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -142,7 +142,7 @@ func (l *GetBucketCapacityLogic) decryptConfig(config *model.ScaStorageConfig) (
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetBucketCapacityLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetBucketCapacityLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -159,7 +159,7 @@ func (l *GetBucketCapacityLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provid
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -86,8 +86,8 @@ func (l *GetDeleteRecordLogic) GetDeleteRecord(req *types.QueryDeleteRecordReque
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -189,7 +189,7 @@ func (l *GetDeleteRecordLogic) decryptConfig(config *model.ScaStorageConfig) (*s
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetDeleteRecordLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetDeleteRecordLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -206,7 +206,7 @@ func (l *GetDeleteRecordLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -85,8 +85,8 @@ func (l *GetFaceDetailListLogic) GetFaceDetailList(req *types.FaceDetailListRequ
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -189,7 +189,7 @@ func (l *GetFaceDetailListLogic) decryptConfig(config *model.ScaStorageConfig) (
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetFaceDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetFaceDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -206,7 +206,7 @@ func (l *GetFaceDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provid
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -44,8 +44,8 @@ func (l *GetImageBedUploadListLogic) GetImageBedUploadList(req *types.ImageBedUp
|
||||
return nil, err
|
||||
}
|
||||
|
||||
cacheKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheKey, uid, req.Provider)
|
||||
cacheKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, errors.New("get oss config failed")
|
||||
}
|
||||
@@ -94,7 +94,7 @@ func (l *GetImageBedUploadListLogic) decryptConfig(dbConfig *model.ScaStorageCon
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetImageBedUploadListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*config.StorageConfig, error) {
|
||||
func (l *GetImageBedUploadListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*config.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -111,7 +111,7 @@ func (l *GetImageBedUploadListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, pr
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -65,8 +65,8 @@ func (l *GetImageUrlLogic) GetImageUrl(req *types.SingleImageRequest) (resp stri
|
||||
return "", errors.New("get storage info failed")
|
||||
}
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + result.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, result.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + result.Provider + ":" + result.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, result.Provider, result.Bucket)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -108,7 +108,7 @@ func (l *GetImageUrlLogic) decryptConfig(config *model.ScaStorageConfig) (*stora
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetImageUrlLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetImageUrlLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -125,7 +125,7 @@ func (l *GetImageUrlLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider str
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -97,8 +97,8 @@ func (l *GetPrivateImageListLogic) GetPrivateImageList(req *types.PrivateImageLi
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -196,7 +196,7 @@ func (l *GetPrivateImageListLogic) decryptConfig(config *model.ScaStorageConfig)
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetPrivateImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetPrivateImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -213,7 +213,7 @@ func (l *GetPrivateImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, prov
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -98,8 +98,8 @@ func (l *GetPrivateImageUrlLogic) GetPrivateImageUrl(req *types.SinglePrivateIma
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
@@ -178,7 +178,7 @@ func (l *GetPrivateImageUrlLogic) decryptConfig(config *model.ScaStorageConfig)
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *GetPrivateImageUrlLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *GetPrivateImageUrlLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -195,7 +195,7 @@ func (l *GetPrivateImageUrlLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provi
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -61,8 +61,8 @@ func (l *ImageBedUploadLogic) ImageBedUpload(r *http.Request) (resp *types.Image
|
||||
|
||||
// 上传文件到OSS
|
||||
|
||||
cacheKey := constant.UserOssConfigPrefix + uid + ":" + result.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheKey, uid, result.Provider)
|
||||
cacheKey := constant.UserOssConfigPrefix + uid + ":" + result.Provider + ":" + result.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheKey, uid, result.Provider, result.Bucket)
|
||||
if err != nil {
|
||||
return nil, errors.New("get oss config failed")
|
||||
}
|
||||
@@ -137,7 +137,7 @@ func (l *ImageBedUploadLogic) decryptConfig(dbConfig *model.ScaStorageConfig) (*
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *ImageBedUploadLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*config.StorageConfig, error) {
|
||||
func (l *ImageBedUploadLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*config.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -154,7 +154,7 @@ func (l *ImageBedUploadLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -109,8 +109,8 @@ func (l *QueryAllImageListLogic) QueryAllImageList(req *types.AllImageListReques
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -222,7 +222,7 @@ func (l *QueryAllImageListLogic) decryptConfig(config *model.ScaStorageConfig) (
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *QueryAllImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *QueryAllImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -239,7 +239,7 @@ func (l *QueryAllImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provid
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -91,8 +91,8 @@ func (l *QueryLocationDetailListLogic) QueryLocationDetailList(req *types.Locati
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -193,7 +193,7 @@ func (l *QueryLocationDetailListLogic) decryptConfig(config *model.ScaStorageCon
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *QueryLocationDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *QueryLocationDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -210,7 +210,7 @@ func (l *QueryLocationDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid,
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -60,8 +60,8 @@ func (l *QueryLocationImageListLogic) QueryLocationImageList(req *types.Location
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -132,7 +132,7 @@ func (l *QueryLocationImageListLogic) decryptConfig(config *model.ScaStorageConf
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *QueryLocationImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *QueryLocationImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -149,7 +149,7 @@ func (l *QueryLocationImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, p
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -93,8 +93,8 @@ func (l *QueryRecentImageListLogic) QueryRecentImageList(req *types.RecentListRe
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -206,7 +206,7 @@ func (l *QueryRecentImageListLogic) decryptConfig(config *model.ScaStorageConfig
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *QueryRecentImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *QueryRecentImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -223,7 +223,7 @@ func (l *QueryRecentImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, pro
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -91,8 +91,8 @@ func (l *QueryThingDetailListLogic) QueryThingDetailList(req *types.ThingDetailL
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -193,7 +193,7 @@ func (l *QueryThingDetailListLogic) decryptConfig(config *model.ScaStorageConfig
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *QueryThingDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *QueryThingDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -210,7 +210,7 @@ func (l *QueryThingDetailListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, pro
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -64,8 +64,8 @@ func (l *QueryThingImageListLogic) QueryThingImageList(req *types.ThingListReque
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -152,7 +152,7 @@ func (l *QueryThingImageListLogic) decryptConfig(config *model.ScaStorageConfig)
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *QueryThingImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *QueryThingImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -169,7 +169,7 @@ func (l *QueryThingImageListLogic) getOssConfigFromCacheOrDb(cacheKey, uid, prov
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -85,8 +85,8 @@ func (l *SearchImageLogic) SearchImage(req *types.SearchImageRequest) (resp *typ
|
||||
}
|
||||
|
||||
// 加载用户oss配置信息
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider)
|
||||
cacheOssConfigKey := constant.UserOssConfigPrefix + uid + ":" + req.Provider + ":" + req.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheOssConfigKey, uid, req.Provider, req.Bucket)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
@@ -325,7 +325,7 @@ func (l *SearchImageLogic) decryptConfig(config *model.ScaStorageConfig) (*stora
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *SearchImageLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*storageConfig.StorageConfig, error) {
|
||||
func (l *SearchImageLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*storageConfig.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -342,7 +342,7 @@ func (l *SearchImageLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider str
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -222,8 +222,8 @@ func (l *UploadFileLogic) parseUploadSettingResult(r *http.Request) (types.Uploa
|
||||
|
||||
// 上传文件到 OSS
|
||||
func (l *UploadFileLogic) uploadFileToOSS(uid string, header *multipart.FileHeader, file io.Reader, thumbnail io.Reader, result types.File, settingResult types.UploadSetting) (string, string, error) {
|
||||
cacheKey := constant.UserOssConfigPrefix + uid + ":" + result.Provider
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheKey, uid, result.Provider)
|
||||
cacheKey := constant.UserOssConfigPrefix + uid + ":" + result.Provider + ":" + result.Bucket
|
||||
ossConfig, err := l.getOssConfigFromCacheOrDb(cacheKey, uid, result.Provider, result.Bucket)
|
||||
if err != nil {
|
||||
return "", "", errors.New("get oss config failed")
|
||||
}
|
||||
@@ -293,7 +293,7 @@ func (l *UploadFileLogic) decryptConfig(dbConfig *model.ScaStorageConfig) (*conf
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (l *UploadFileLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*config.StorageConfig, error) {
|
||||
func (l *UploadFileLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*config.StorageConfig, error) {
|
||||
result, err := l.svcCtx.RedisClient.Get(l.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -310,7 +310,7 @@ func (l *UploadFileLogic) getOssConfigFromCacheOrDb(cacheKey, uid, provider stri
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := l.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -129,7 +129,7 @@ func (c *NsqImageProcessConsumer) getGeoLocation(latitude, longitude float64) (s
|
||||
}
|
||||
|
||||
// 从缓存或数据库中获取 OSS 配置
|
||||
func (c *NsqImageProcessConsumer) getOssConfigFromCacheOrDb(cacheKey, uid, provider string) (*config.StorageConfig, error) {
|
||||
func (c *NsqImageProcessConsumer) getOssConfigFromCacheOrDb(cacheKey, uid, provider string, bucket string) (*config.StorageConfig, error) {
|
||||
result, err := c.svcCtx.RedisClient.Get(c.ctx, cacheKey).Result()
|
||||
if err != nil && !errors.Is(err, redis.Nil) {
|
||||
return nil, errors.New("get oss config failed")
|
||||
@@ -146,7 +146,7 @@ func (c *NsqImageProcessConsumer) getOssConfigFromCacheOrDb(cacheKey, uid, provi
|
||||
|
||||
// 缓存未命中,从数据库中加载
|
||||
scaOssConfig := c.svcCtx.DB.ScaStorageConfig
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider)).First()
|
||||
dbOssConfig, err := scaOssConfig.Where(scaOssConfig.UserID.Eq(uid), scaOssConfig.Provider.Eq(provider), scaOssConfig.Bucket.Eq(bucket)).First()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
@@ -99,6 +99,15 @@ type AllStorageListResponse struct {
|
||||
Records []StorageConfigMeta `json:"records"`
|
||||
}
|
||||
|
||||
type BackupImageRequest struct {
|
||||
OriginProvider string `json:"origin_provider"`
|
||||
OriginBucket string `json:"origin_bucket"`
|
||||
OriginRegion string `json:"origin_region"`
|
||||
TargetProvider string `json:"target_provider"`
|
||||
TargetBucket string `json:"target_bucket"`
|
||||
TargetRegion string `json:"target_region"`
|
||||
}
|
||||
|
||||
type BucketCapacityRequest struct {
|
||||
Provider string `json:"provider"`
|
||||
Bucket string `json:"bucket"`
|
||||
@@ -371,6 +380,17 @@ type ModifyFaceTypeResponse struct {
|
||||
Result string `json:"result"`
|
||||
}
|
||||
|
||||
type ModifyPersonalInfoRequest struct {
|
||||
Nickname string `json:"nickname,optional"`
|
||||
Avatar string `json:"avatar,optional"`
|
||||
Email string `json:"email,optional"`
|
||||
Gender int64 `json:"gender,optional"`
|
||||
Introduce string `json:"introduce,optional"`
|
||||
Blog string `json:"blog,optional"`
|
||||
Location string `json:"location,optional"`
|
||||
Company string `json:"company,optional"`
|
||||
}
|
||||
|
||||
type OAuthCallbackRequest struct {
|
||||
Code string `form:"code"`
|
||||
}
|
||||
|
@@ -419,3 +419,45 @@ func (a *AliOSS) PresignedURL(ctx context.Context, bucketName, objectKey string,
|
||||
|
||||
return presignedResult.URL, nil
|
||||
}
|
||||
|
||||
// PutBucketReplication 配置跨区域复制规则
|
||||
func (a *AliOSS) PutBucketReplication(ctx context.Context, originBucketName, targetBucketName, targetBucketRegion string) (string, error) {
|
||||
request := &oss.PutBucketReplicationRequest{
|
||||
Bucket: oss.Ptr(originBucketName), // 存储空间名称
|
||||
ReplicationConfiguration: &oss.ReplicationConfiguration{
|
||||
Rules: []oss.ReplicationRule{
|
||||
{
|
||||
RTC: &oss.ReplicationTimeControl{
|
||||
Status: oss.Ptr("enabled"), // 在配置跨区域复制规则时,开启数据复制时间控制(RTC)功能
|
||||
},
|
||||
Destination: &oss.ReplicationDestination{
|
||||
Bucket: oss.Ptr(targetBucketName), // 目标存储空间名称
|
||||
Location: oss.Ptr(targetBucketRegion), // 目标存储区域
|
||||
TransferType: oss.TransferTypeOssAcc, // 传输类型
|
||||
},
|
||||
HistoricalObjectReplication: oss.HistoricalObjectReplicationEnabled, // 开启历史数据复制功能
|
||||
},
|
||||
},
|
||||
},
|
||||
}
|
||||
result, err := a.client.PutBucketReplication(ctx, request)
|
||||
if err != nil {
|
||||
return "", fmt.Errorf("failed to put bucket replication, error: %v", err)
|
||||
}
|
||||
return *result.ReplicationRuleId, nil
|
||||
}
|
||||
|
||||
// DeleteBucketReplication 删除跨区域复制规则
|
||||
func (a *AliOSS) DeleteBucketReplication(ctx context.Context, bucketName string, ruleId string) error {
|
||||
request := &oss.DeleteBucketReplicationRequest{
|
||||
Bucket: oss.Ptr(bucketName), // 存储空间名称
|
||||
ReplicationRules: &oss.ReplicationRules{
|
||||
IDs: []string{ruleId}, // 复制规则ID列表
|
||||
},
|
||||
}
|
||||
_, err := a.client.DeleteBucketReplication(ctx, request)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to delete bucket replication, error: %v", err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
@@ -77,4 +77,6 @@ type Service interface {
|
||||
DeleteObject(ctx context.Context, bucketName, objectName string) (int, error)
|
||||
RenameObject(ctx context.Context, destBucketName, destObjectName, srcObjectName, srcBucketName string) (int, error)
|
||||
PresignedURL(ctx context.Context, bucketName, objectKey string, expires time.Duration) (string, error)
|
||||
PutBucketReplication(ctx context.Context, originBucketName, targetBucketName, targetBucketRegion string) (string, error)
|
||||
DeleteBucketReplication(ctx context.Context, bucketName string, ruleId string) error
|
||||
}
|
||||
|
Reference in New Issue
Block a user