Compare commits

..

2 Commits

Author SHA1 Message Date
baeca78c5f feat 添加providerArticleApi 2024-08-26 15:15:04 +08:00
759c035eae feat 添加PageListQuery构造函数 2024-08-26 15:13:13 +08:00
3 changed files with 86 additions and 2 deletions

View File

@ -0,0 +1,60 @@
package storage
import (
v2 "gitea.timerzz.com/kedaya_haitao/common/structs/v2"
"gorm.io/gorm"
"gorm.io/gorm/clause"
)
// ProviderArticleApi 管理供应商商品的接口
type ProviderArticleApi interface {
Get(query GetProviderArticleQuery) (article v2.ProviderArticle, err error)
Upsert(article v2.ProviderArticle) error
}
type providerArticleApi struct {
db *gorm.DB
}
func NewProviderArticleApi(db *gorm.DB) ProviderArticleApi {
return &providerArticleApi{db: db}
}
type GetProviderArticleQuery struct {
ID uint `query:"id"`
Brand string `query:"brand"`
Pid string `query:"pid"`
ProviderId string `query:"providerId"`
SkuId string `query:"skuId"`
}
func (g *GetProviderArticleQuery) 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.ProviderId != "" {
db = db.Where("provider_id=?", g.ProviderId)
}
if g.SkuId != "" {
db = db.Where("sku_id=?", g.SkuId)
}
return db
}
func (p *providerArticleApi) Get(query GetProviderArticleQuery) (article v2.ProviderArticle, err error) {
err = p.db.Scopes(query.Scope).Preload("CalculateProcess").First(&article).Error
return
}
func (p *providerArticleApi) Upsert(article v2.ProviderArticle) error {
return p.db.Clauses(clause.OnConflict{
Columns: []clause.Column{{Name: "provider_id"}, {Name: "sku_id"}},
DoUpdates: clause.AssignmentColumns([]string{"cost"}),
}).Create(&article).Error
}

View File

@ -27,6 +27,25 @@ type PageListQuery struct {
PageQuery
}
func NewPageListQuery(scoper Scoper) *PageListQuery {
return &PageListQuery{Scoper: scoper}
}
func (p *PageListQuery) SetPage(page int) *PageListQuery {
p.Page = page
return p
}
func (p *PageListQuery) SetPageSize(pageSize int) *PageListQuery {
p.Size = pageSize
return p
}
func (p *PageListQuery) SetScoper(scoper Scoper) *PageListQuery {
p.Scoper = scoper
return p
}
func (p *PageListQuery) Scope(db *gorm.DB) *gorm.DB {
if p.Scoper != nil {
db = p.Scoper.Scope(db)

View File

@ -3,8 +3,9 @@ package storage
import "gorm.io/gorm"
type Storage struct {
articleApi ArticleApi
providerApi ProviderApi
articleApi ArticleApi
providerApi ProviderApi
providerArticleApi ProviderArticleApi
}
func NewStorage(db *gorm.DB) *Storage {
@ -23,3 +24,7 @@ func (s *Storage) Article() ArticleApi {
func (s *Storage) Provider() ProviderApi {
return s.providerApi
}
func (s *Storage) ProviderArticle() ProviderArticleApi {
return s.providerArticleApi
}