fix:logo历史列表调整
This commit is contained in:
@@ -1,9 +1,12 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fusenapi/model/gmodel"
|
||||
"fusenapi/utils/auth"
|
||||
"fusenapi/utils/basic"
|
||||
"fusenapi/utils/metadata"
|
||||
"fusenapi/utils/validate"
|
||||
"time"
|
||||
|
||||
@@ -12,7 +15,9 @@ 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"
|
||||
)
|
||||
|
||||
type UserInfoSetLogic struct {
|
||||
@@ -68,17 +73,86 @@ func (l *UserInfoSetLogic) UserInfoSet(req *types.UserInfoSetReq, userinfo *auth
|
||||
var userInfo = &gmodel.FsUserInfo{}
|
||||
fsUserInfoModel := gmodel.NewFsUserInfoModel(l.svcCtx.MysqlConn)
|
||||
BuilderDB := fsUserInfoModel.BuilderDB(l.ctx, nil).Model(&gmodel.FsUserInfo{})
|
||||
BuilderDB1 := BuilderDB.Where("module = ?", req.Module).Where("user_id=?", userId).Where("guest_id=?", guestId)
|
||||
BuilderDB1 := fsUserInfoModel.BuilderDB(l.ctx, nil).Model(&gmodel.FsUserInfo{})
|
||||
if req.Module == "merchant_category" {
|
||||
BuilderDB1.Where("module = ?", "profile")
|
||||
} else {
|
||||
BuilderDB1.Where("module = ?", req.Module)
|
||||
}
|
||||
//.Where("user_id=?", userId).Where("guest_id=?", guestId)
|
||||
if userId > 0 {
|
||||
BuilderDB1.Where("user_id=?", userId)
|
||||
} else {
|
||||
BuilderDB1.Where("guest_id=?", guestId)
|
||||
}
|
||||
userInfo, err = fsUserInfoModel.FindOne(BuilderDB1, nil)
|
||||
if err != nil {
|
||||
logx.Error(err)
|
||||
return resp.SetStatus(basic.CodeDbSqlErr, "UserInfoSet error system failed")
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
logx.Error(err)
|
||||
return resp.SetStatus(basic.CodeDbSqlErr, "UserInfoSet error system failed")
|
||||
}
|
||||
}
|
||||
|
||||
var nowTime = time.Now().UTC()
|
||||
if userInfo.Id != 0 {
|
||||
v := []byte(req.Metadata)
|
||||
userInfo.Metadata = &v
|
||||
userInfo.Utime = &nowTime
|
||||
var reqMetadata map[string]int64
|
||||
json.Unmarshal([]byte(req.Metadata), &reqMetadata)
|
||||
var metadataMap map[string]interface{}
|
||||
json.Unmarshal(*userInfo.Metadata, &metadataMap)
|
||||
logoSelectedId, isEx := metadataMap["logo_selected_id"]
|
||||
if isEx {
|
||||
var materialId int64 = int64(logoSelectedId.(float64))
|
||||
// 更新merchant_category
|
||||
if req.Module == "merchant_category" {
|
||||
err = l.svcCtx.MysqlConn.WithContext(l.ctx).Transaction(func(tx *gorm.DB) error {
|
||||
var userMaterialInfo gmodel.FsUserMaterial
|
||||
userMaterialGorm := tx.Where("id = ?", materialId)
|
||||
resUserMaterialInfo := userMaterialGorm.First(&userMaterialInfo)
|
||||
err = resUserMaterialInfo.Error
|
||||
if err != nil {
|
||||
logc.Errorf(l.ctx, "FsUserMaterial First err:%+v", err)
|
||||
return err
|
||||
}
|
||||
var metadataMap map[string]interface{}
|
||||
var metadataMapOld map[string]interface{}
|
||||
if userMaterialInfo.Id > 0 {
|
||||
err = json.Unmarshal(*userMaterialInfo.Metadata, &metadataMapOld)
|
||||
if err != nil {
|
||||
logc.Errorf(l.ctx, "userMaterialInfo Metadata Unmarshal err:%+v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
var metadataChild = make(map[string]interface{}, 1)
|
||||
metadataChild["merchant_category"] = reqMetadata["category_id"]
|
||||
metadataMap, err = metadata.SetMetadata(metadataChild, metadataMapOld)
|
||||
if err != nil {
|
||||
logc.Errorf(l.ctx, "metadata SetMetadata err:%+v", err)
|
||||
return err
|
||||
}
|
||||
metadataB, err := json.Marshal(metadataMap)
|
||||
if err != nil {
|
||||
logc.Errorf(l.ctx, "metadata marshal err:%+v", err)
|
||||
return err
|
||||
}
|
||||
userMaterialInfo.Metadata = &metadataB
|
||||
resUpdates := tx.Select("metadata").Where("id = ?", materialId).Updates(&userMaterialInfo)
|
||||
err = resUpdates.Error
|
||||
if err != nil {
|
||||
if err != gorm.ErrRecordNotFound {
|
||||
logc.Errorf(l.ctx, "userMaterialInfo Updates err:%+v", err)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
if err != nil {
|
||||
logx.Error(err)
|
||||
return resp.SetStatus(basic.CodeDbSqlErr, "service fail")
|
||||
}
|
||||
}
|
||||
}
|
||||
return resp.SetStatus(basic.CodeOK)
|
||||
} else {
|
||||
userInfo.GuestId = &guestId
|
||||
userInfo.UserId = &userId
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package logic
|
||||
|
||||
import (
|
||||
"encoding/json"
|
||||
"errors"
|
||||
"fusenapi/model/gmodel"
|
||||
"fusenapi/utils/auth"
|
||||
@@ -55,9 +56,15 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a
|
||||
}
|
||||
|
||||
userMaterialModel := gmodel.NewFsUserMaterialModel(l.svcCtx.MysqlConn)
|
||||
userMaterialRSB := userMaterialModel.RowSelectBuilder(nil).
|
||||
Where("module = ?", "logo").Where("user_id = ?", userId).Where("guest_id = ?", guestId).Order("id desc")
|
||||
list, err := userMaterialModel.FindAll(l.ctx, userMaterialRSB, nil, "")
|
||||
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)
|
||||
if userId != 0 {
|
||||
userMaterialRSB.Where("user_id = ?", userId)
|
||||
} else {
|
||||
userMaterialRSB.Where("guest_id = ?", guestId)
|
||||
}
|
||||
list, err := userMaterialModel.FindList(l.ctx, userMaterialRSB, nil, "")
|
||||
if err != nil {
|
||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||
return resp.SetStatusWithMessage(basic.CodeDbRecordNotFoundErr, "data not found")
|
||||
@@ -65,6 +72,58 @@ func (l *UserLogoListLogic) UserLogoList(req *types.UserLogoListReq, userinfo *a
|
||||
logx.Error(err)
|
||||
return resp.SetStatusWithMessage(basic.CodeServiceErr, "failed to get data list")
|
||||
}
|
||||
if len(list) > 0 {
|
||||
var merchantCategoryIds []int64
|
||||
for _, v := range list {
|
||||
var metadataMap map[string]interface{}
|
||||
if v.Metadata != nil {
|
||||
json.Unmarshal(*v.Metadata, &metadataMap)
|
||||
|
||||
merchantCategory, merchantCategoryEix := metadataMap["merchant_category"]
|
||||
if merchantCategoryEix {
|
||||
merchantCategoryId := int64(merchantCategory.(float64))
|
||||
merchantCategoryIds = append(merchantCategoryIds, merchantCategoryId)
|
||||
}
|
||||
|
||||
v.MetaDataMap = metadataMap
|
||||
}
|
||||
|
||||
if v.ResourceInfo != nil {
|
||||
if v.ResourceInfo.Metadata != nil {
|
||||
var resourceMetadata map[string]interface{}
|
||||
json.Unmarshal([]byte(*v.ResourceInfo.Metadata), &resourceMetadata)
|
||||
v.ResourceInfo.MetaDataMap = resourceMetadata
|
||||
}
|
||||
}
|
||||
}
|
||||
if len(merchantCategoryIds) > 0 {
|
||||
newFsMerchantCategoryModel := gmodel.NewFsMerchantCategoryModel(l.svcCtx.MysqlConn)
|
||||
fsMerchantCategoryDb := newFsMerchantCategoryModel.BuilderDB(l.ctx, nil).Model(&gmodel.FsMerchantCategory{}).Where("id in ?", merchantCategoryIds)
|
||||
resfsMerchantCategoryDb, err := newFsMerchantCategoryModel.FindAll(fsMerchantCategoryDb, nil, "")
|
||||
if err != nil {
|
||||
logx.Error(err)
|
||||
return resp.SetStatusWithMessage(basic.CodeDbSqlErr, "newFsMerchantCategoryModel FindAll db")
|
||||
}
|
||||
merchantCategoryDataLen := len(resfsMerchantCategoryDb)
|
||||
var merchantCategoryData = make(map[int64]*gmodel.FsMerchantCategory, merchantCategoryDataLen)
|
||||
if merchantCategoryDataLen > 0 {
|
||||
for _, v := range resfsMerchantCategoryDb {
|
||||
merchantCategoryData[v.Id] = v
|
||||
}
|
||||
}
|
||||
for _, v := range list {
|
||||
if v.MetaDataMap != nil {
|
||||
merchantCategory1, merchantCategoryEix1 := v.MetaDataMap["merchant_category"]
|
||||
if merchantCategoryEix1 {
|
||||
merchantCategoryId1 := int64(merchantCategory1.(float64))
|
||||
v.MetaDataMap["merchant_category_info"] = merchantCategoryData[merchantCategoryId1]
|
||||
} else {
|
||||
v.MetaDataMap["merchant_category_info"] = nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
return resp.SetStatus(basic.CodeOK, map[string]interface{}{
|
||||
"list": list,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user