common/structs/storage/seller.go

63 lines
1.4 KiB
Go
Raw Normal View History

2024-08-03 17:07:10 +08:00
package storage
import (
v2 "gitea.timerzz.com/kedaya_haitao/common/structs/v2"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
type SellerApi interface {
}
type sellerApi struct {
db *gorm.DB
}
// SellerArticleApi 管理供应商商品的接口
type SellerArticleApi interface {
Get(query GetProviderArticleQuery) (article v2.ProviderArticle, err error)
}
type sellerArticleApi struct {
db *gorm.DB
}
type GetSellerArticleQuery struct {
ID uint `query:"id"`
Brand string `query:"brand"`
Pid string `query:"pid"`
SellerId string `query:"sellerId"`
SkuId string `query:"skuId"`
}
func (g *GetSellerArticleQuery) Scope(db *gorm.DB) *gorm.DB {
if g.ID > 0 {
db = db.Where("id=?", g.ID)
}
if g.Brand != "" {
db = db.Where("brand=?", g.Brand)
}
if g.Pid != "" {
db = db.Where("pid=?", g.Pid)
}
if g.SellerId != "" {
db = db.Where("seller_id=?", g.SellerId)
}
if g.SkuId != "" {
db = db.Where("sku_id=?", g.SkuId)
}
return db
}
func (p *sellerArticleApi) Get(query GetSellerArticleQuery) (article v2.SellerArticle, err error) {
err = p.db.Scopes(query.Scope).First(&article).Error
return
}
func (p *sellerArticleApi) Upsert(article v2.SellerArticle) error {
return p.db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "seller_id"}, {Name: "sku_id"}},
DoUpdates: clause.AssignmentColumns([]string{"sell"}),
}).Create(&article).Error
}