added the image backup API

This commit is contained in:
2025-04-05 01:27:08 +08:00
parent ec03d1b865
commit add4af6b19
31 changed files with 472 additions and 75 deletions

View File

@@ -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 (

View File

@@ -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)
}
}
}

View File

@@ -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)
}
}
}

View File

@@ -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",

View File

@@ -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)
}
}
}

View 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
}

View File

@@ -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
}

View 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
}

View File

@@ -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

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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
}

View File

@@ -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"`
}