diff --git a/model/product/model.go b/model/product/model.go index 773e1d5..cf3d548 100644 --- a/model/product/model.go +++ b/model/product/model.go @@ -64,6 +64,20 @@ func (p *Product) TableName() string { func (p *Product) BeforeSave(tx *gorm.DB) (err error) { p.CalRate() + p.fillPriceStatus(tx) + return +} + +func (p *Product) fillPriceStatus(tx *gorm.DB) { + switch p.Website { + case WebSite_US_Coach_Outlet: + p.fillUSCoachPriceStatus(tx) + case WebSite_CN_Coach: + p.fillCNCoachPriceStatus(tx) + } +} + +func (p *Product) fillUSCoachPriceStatus(tx *gorm.DB) { var lastPrice float64 tx.Model(&HistoryPrice{}).Where("pid = ?", p.Pid).Order("created_at desc").Limit(1).Pluck("us_price", &lastPrice) if p.USPrice != lastPrice { @@ -74,10 +88,23 @@ func (p *Product) BeforeSave(tx *gorm.DB) (err error) { p.PriceStatus = PriceStatus_UP } else { p.PriceStatus = PriceStatus_DOWN - } } - return +} + +func (p *Product) fillCNCoachPriceStatus(tx *gorm.DB) { + var lastPrice float64 + tx.Model(&HistoryPrice{}).Where("pid = ?", p.Pid).Order("created_at desc").Limit(1).Pluck("cny_price", &lastPrice) + if p.CNYPrice != lastPrice { + p.HistoryPrices = append(p.HistoryPrices, HistoryPrice{ + USPrice: p.CNYPrice, + }) + if p.CNYPrice > lastPrice { + p.PriceStatus = PriceStatus_UP + } else { + p.PriceStatus = PriceStatus_DOWN + } + } } func (p *Product) CalRate() {