From c006cdc9b967f2bfab998dbeb63e953203fb9bd2 Mon Sep 17 00:00:00 2001 From: momo <1012651275@qq.com> Date: Fri, 8 Sep 2023 17:36:11 +0800 Subject: [PATCH] =?UTF-8?q?fix:=E8=AE=BE=E7=BD=AE=E5=BD=93=E5=89=8Dlogo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- model/gmodel/fs_user_material_logic.go | 10 +++ .../internal/logic/userlogolistlogic.go | 74 ++++++++++++++++++- .../internal/logic/logoresizelogic.go | 3 +- 3 files changed, 82 insertions(+), 5 deletions(-) diff --git a/model/gmodel/fs_user_material_logic.go b/model/gmodel/fs_user_material_logic.go index ebe8cb9d..77ae2736 100644 --- a/model/gmodel/fs_user_material_logic.go +++ b/model/gmodel/fs_user_material_logic.go @@ -62,6 +62,16 @@ func (m *FsUserMaterialModel) FindOne(ctx context.Context, rowBuilder *gorm.DB) } } +func (m *FsUserMaterialModel) FindOneData(ctx context.Context, rowBuilder *gorm.DB) (*RelaFsUserMaterial, error) { + var resp *RelaFsUserMaterial + result := rowBuilder.WithContext(ctx).First(&resp) + if result.Error != nil { + return nil, result.Error + } else { + return resp, nil + } +} + func (m *FsUserMaterialModel) FindList(ctx context.Context, rowBuilder *gorm.DB, filterMap map[string]string, orderBy string) ([]*RelaFsUserMaterial, error) { var resp []*RelaFsUserMaterial // 过滤 diff --git a/server/home-user-auth/internal/logic/userlogolistlogic.go b/server/home-user-auth/internal/logic/userlogolistlogic.go index 033fd0ed..24e6b179 100644 --- a/server/home-user-auth/internal/logic/userlogolistlogic.go +++ b/server/home-user-auth/internal/logic/userlogolistlogic.go @@ -12,6 +12,7 @@ import ( "fusenapi/server/home-user-auth/internal/svc" "fusenapi/server/home-user-auth/internal/types" + "github.com/zeromicro/go-zero/core/logc" "github.com/zeromicro/go-zero/core/logx" "gorm.io/gorm" ) @@ -46,19 +47,76 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a var userId int64 var guestId int64 + if userinfo.IsOnlooker() { + // 如果是,返回未授权的错误码 + return resp.SetStatus(basic.CodeUnAuth) + } + + // 用户信息 + NewFsUserInfoModel := gmodel.NewFsUserInfoModel(l.svcCtx.MysqlConn) + userInfoGorm := NewFsUserInfoModel.BuilderDB(l.ctx, nil).Where("module = ?", "profile") + userInfo := gmodel.FsUserInfo{} + // 检查用户是否是游客 if userinfo.IsGuest() { // 如果是,使用游客ID和游客键名格式 guestId = userinfo.GuestId + userInfoGorm.Where("guest_id = ?", guestId) } else { // 否则,使用用户ID和用户键名格式 userId = userinfo.UserId + userInfoGorm.Where("user_id = ?", userId) + } + var merchantCategoryIds []int64 + var logoSelectedIdd int64 + var userMaterialInfo *gmodel.RelaFsUserMaterial + userMaterialModel := gmodel.NewFsUserMaterialModel(l.svcCtx.MysqlConn) + resFirst := userInfoGorm.First(&userInfo) + err := resFirst.Error + if err != nil { + if err != gorm.ErrRecordNotFound { + logc.Errorf(l.ctx, "FsUserInfo First err:%+v", err) + return resp.SetStatusWithMessage(basic.CodeDbRecordNotFoundErr, "data not found") + } + } + if userInfo.Id != 0 && userInfo.Metadata != nil { + var metadata map[string]interface{} + err = json.Unmarshal([]byte(*userInfo.Metadata), &metadata) + if err != nil { + logc.Errorf(l.ctx, "userInfo.Metadata Unmarshal err:%+v", err) + return resp.SetStatusWithMessage(basic.CodeServiceErr, "failed to get data list") + } + logoSelectedId, isEx := metadata["logo_selected_id"] + if isEx { + logoSelectedIdd = int64(logoSelectedId.(float64)) + userMaterialRSB1 := userMaterialModel.RowSelectBuilder(nil).Preload("ResourceInfo", func(dbPreload *gorm.DB) *gorm.DB { + return dbPreload.Table(gmodel.NewFsResourceModel(l.svcCtx.MysqlConn).TableName()) + }).Where("module = ?", "logo").Where("id = ?", logoSelectedIdd) + userMaterialInfo, err = userMaterialModel.FindOneData(l.ctx, userMaterialRSB1) + if err != nil { + if err != gorm.ErrRecordNotFound { + logc.Errorf(l.ctx, "FsUserInfo First err:%+v", err) + return resp.SetStatusWithMessage(basic.CodeServiceErr, "failed to get data list") + } + } + var metadataMapuserMaterialInfo map[string]interface{} + if userMaterialInfo.Metadata != nil { + json.Unmarshal(*userMaterialInfo.Metadata, &metadataMapuserMaterialInfo) + merchantCategoryuserMaterialInfo, merchantCategoryEixuserMaterialInfo := metadataMapuserMaterialInfo["merchant_category"] + if merchantCategoryEixuserMaterialInfo { + merchantCategoryIduserMaterialInfo := int64(merchantCategoryuserMaterialInfo.(float64)) + merchantCategoryIds = append(merchantCategoryIds, merchantCategoryIduserMaterialInfo) + } + } + userMaterialInfo.MetaDataMap = metadataMapuserMaterialInfo + } } - userMaterialModel := gmodel.NewFsUserMaterialModel(l.svcCtx.MysqlConn) + // 历史列表 + userMaterialRSB := userMaterialModel.RowSelectBuilder(nil).Preload("ResourceInfo", func(dbPreload *gorm.DB) *gorm.DB { return dbPreload.Table(gmodel.NewFsResourceModel(l.svcCtx.MysqlConn).TableName()) - }).Where("module = ?", "logo").Order("id desc").Limit(10) + }).Where("module = ?", "logo").Order("id desc").Limit(5) if userId != 0 { userMaterialRSB.Where("user_id = ?", userId) } else { @@ -72,8 +130,8 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a logx.Error(err) return resp.SetStatusWithMessage(basic.CodeServiceErr, "failed to get data list") } + var isDefaul bool = false if len(list) > 0 { - var merchantCategoryIds []int64 for _, v := range list { var metadataMap map[string]interface{} if v.Metadata != nil { @@ -95,6 +153,10 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a v.ResourceInfo.MetaDataMap = resourceMetadata } } + + if logoSelectedIdd == v.Id { + isDefaul = true + } } if len(merchantCategoryIds) > 0 { newFsMerchantCategoryModel := gmodel.NewFsMerchantCategoryModel(l.svcCtx.MysqlConn) @@ -111,7 +173,10 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a merchantCategoryData[v.Id] = v } } - for _, v := range list { + for k, v := range list { + if !isDefaul && k == 4 && userMaterialInfo != nil { + v = userMaterialInfo + } if v.MetaDataMap != nil { merchantCategory1, merchantCategoryEix1 := v.MetaDataMap["merchant_category"] if merchantCategoryEix1 { @@ -121,6 +186,7 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a v.MetaDataMap["merchant_category_info"] = nil } } + list[k] = v } } } diff --git a/server/resource/internal/logic/logoresizelogic.go b/server/resource/internal/logic/logoresizelogic.go index c405915d..47526031 100644 --- a/server/resource/internal/logic/logoresizelogic.go +++ b/server/resource/internal/logic/logoresizelogic.go @@ -98,7 +98,7 @@ func (l *LogoResizeLogic) LogoResize(req *types.LogoResizeReq, userinfo *auth.Us hashKeyDataB, _ := json.Marshal(req) json.Unmarshal(hashKeyDataB, &hashKeyDataMap) var resourceId string = hash.JsonHashKey(hashKeyDataMap) - fmt.Println(resourceId) + //fmt.Println(resourceId) // 上传文件 var upload = file.Upload{ @@ -107,6 +107,7 @@ func (l *LogoResizeLogic) LogoResize(req *types.LogoResizeReq, userinfo *auth.Us AwsSession: l.svcCtx.AwsSession, } uploadRes, err := upload.UploadFileByByte(&file.UploadBaseReq{ + Refresh: 1, FileHash: resourceId, FileByte: emptyBuff.Bytes(), UploadBucket: 1,