fix 修复数据库查询bug
This commit is contained in:
parent
402be86404
commit
14abeb24b5
@ -83,7 +83,7 @@ func (p *Product) BeforeSave(tx *gorm.DB) (err error) {
|
|||||||
|
|
||||||
func (p *Product) fillPriceStatus(tx *gorm.DB) {
|
func (p *Product) fillPriceStatus(tx *gorm.DB) {
|
||||||
var lastPrice float64
|
var lastPrice float64
|
||||||
tx.Model(&HistoryPrice{}).Where("pid = ?", p.Pid).Order("created_at desc").Limit(1).Pluck("original_price", &lastPrice)
|
tx.Model(&HistoryPrice{}).Where("pid=?", p.Pid).Order("created_at desc").Limit(1).Pluck("original_price", &lastPrice)
|
||||||
if p.OriginalPrice != lastPrice {
|
if p.OriginalPrice != lastPrice {
|
||||||
p.HistoryPrices = append(p.HistoryPrices, HistoryPrice{
|
p.HistoryPrices = append(p.HistoryPrices, HistoryPrice{
|
||||||
OriginalPrice: p.OriginalPrice,
|
OriginalPrice: p.OriginalPrice,
|
||||||
|
@ -1,9 +1,10 @@
|
|||||||
package productv1
|
package productv1
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"testing"
|
||||||
|
|
||||||
"gitea.timerzz.com/kedaya_haitao/common/pkg/database"
|
"gitea.timerzz.com/kedaya_haitao/common/pkg/database"
|
||||||
"gorm.io/gorm/clause"
|
"gorm.io/gorm/clause"
|
||||||
"testing"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestUpsert(t *testing.T) {
|
func TestUpsert(t *testing.T) {
|
||||||
@ -51,7 +52,7 @@ func TestUpdate(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
var p = Product{Pid: "CJ575-QBO4G", DWPrice: 3000, Freight: 150, Remark: "test", OriginalPrice: 209.3, ExchangeRate: 7.3}
|
var p = Product{Pid: "CJ575-QBO4G", DWPrice: 3000, Freight: 150, Remark: "test", OriginalPrice: 209.3, ExchangeRate: 7.3}
|
||||||
err = db.Model(&p).Where("pid = ?", p.Pid).Select("dw_price", "freight", "remark", "rate", "cal_mark", "cny_price").Updates(&p).Error
|
err = db.Model(&p).Where("pid=?", p.Pid).Select("dw_price", "freight", "remark", "rate", "cal_mark", "cny_price").Updates(&p).Error
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
@ -69,7 +70,7 @@ func TestGetConfig(t *testing.T) {
|
|||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
}
|
}
|
||||||
var exchangeRate float64
|
var exchangeRate float64
|
||||||
db.Table("options").Select("exchange_rate").Where("id = ?", 1).Scan(&exchangeRate)
|
db.Table("options").Select("exchange_rate").Where("id=?", 1).Scan(&exchangeRate)
|
||||||
t.Log(exchangeRate)
|
t.Log(exchangeRate)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -67,19 +67,19 @@ func (f *FindArticleQuery) SetAvailable(available bool) *FindArticleQuery {
|
|||||||
|
|
||||||
func (l *FindArticleQuery) Scope(db *gorm.DB) *gorm.DB {
|
func (l *FindArticleQuery) Scope(db *gorm.DB) *gorm.DB {
|
||||||
if l.ID != 0 {
|
if l.ID != 0 {
|
||||||
db = db.Where("`id` = ?", l.ID)
|
db = db.Where("`id`=?", l.ID)
|
||||||
}
|
}
|
||||||
if l.Keyword != "" {
|
if l.Keyword != "" {
|
||||||
db = db.Where("(`name` LIKE ? OR `english_name LIKE ? OR `remark` LIKE ? )", "%"+l.Keyword+"%", "%"+l.Keyword+"%", "%"+l.Keyword+"%")
|
db = db.Where("(`name` ilike ? OR `english_name ilike ? OR `remark` ilike ? )", "%"+l.Keyword+"%", "%"+l.Keyword+"%", "%"+l.Keyword+"%")
|
||||||
}
|
}
|
||||||
if l.Brand != "" {
|
if l.Brand != "" {
|
||||||
db = db.Where("`brand` = ?", l.Brand)
|
db = db.Where("`brand`=?", l.Brand)
|
||||||
}
|
}
|
||||||
if l.Pid != "" {
|
if l.Pid != "" {
|
||||||
db = db.Where("`pid` = ?", l.Pid)
|
db = db.Where("`pid`=?", l.Pid)
|
||||||
}
|
}
|
||||||
if l.Available != nil {
|
if l.Available != nil {
|
||||||
db = db.Where("`available` = ?", *l.Available)
|
db = db.Where("`available`=?", *l.Available)
|
||||||
}
|
}
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
@ -132,13 +132,13 @@ func NewGetArticleQuery() *GetArticleQuery {
|
|||||||
func (g *GetArticleQuery) Scope(db *gorm.DB) *gorm.DB {
|
func (g *GetArticleQuery) Scope(db *gorm.DB) *gorm.DB {
|
||||||
db = db.Preload("Providers").Preload("Sellers")
|
db = db.Preload("Providers").Preload("Sellers")
|
||||||
if g.ID != 0 {
|
if g.ID != 0 {
|
||||||
db = db.Where("`id` = ?", g.ID)
|
db = db.Where("`id`=?", g.ID)
|
||||||
}
|
}
|
||||||
if g.Brand != "" {
|
if g.Brand != "" {
|
||||||
db = db.Where("`brand` = ?", g.Brand)
|
db = db.Where("`brand`=?", g.Brand)
|
||||||
}
|
}
|
||||||
if g.Pid != "" {
|
if g.Pid != "" {
|
||||||
db = db.Where("`pid` = ?", g.Pid)
|
db = db.Where("`pid`=?", g.Pid)
|
||||||
}
|
}
|
||||||
if g.History {
|
if g.History {
|
||||||
db = db.Preload("Providers.HistoryPrice").Preload("Sellers.HistoryPrice")
|
db = db.Preload("Providers.HistoryPrice").Preload("Sellers.HistoryPrice")
|
||||||
|
@ -43,18 +43,18 @@ func (g *ListProviderQuery) Scope(db *gorm.DB) *gorm.DB {
|
|||||||
db = db.Where("provider_id=?", g.ProviderId)
|
db = db.Where("provider_id=?", g.ProviderId)
|
||||||
}
|
}
|
||||||
if g.Keyword != "" {
|
if g.Keyword != "" {
|
||||||
db = db.Where("name LIKE ?", "%"+g.Keyword+"%")
|
db = db.Where("name ilike ?", "%"+g.Keyword+"%")
|
||||||
}
|
}
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *providerApi) Get(id uint) (provider v2.Provider, err error) {
|
func (p *providerApi) Get(id uint) (provider v2.Provider, err error) {
|
||||||
err = p.db.Where("id = ?", id).Preload("CalculateProcess").First(&provider).Error
|
err = p.db.Where("id=?", id).Preload("CalculateProcess").First(&provider).Error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *providerApi) GetByProvider(providerId v2.ProviderId) (provider v2.Provider, err error) {
|
func (p *providerApi) GetByProvider(providerId v2.ProviderId) (provider v2.Provider, err error) {
|
||||||
err = p.db.Where("provider_id = ?", providerId).Preload("CalculateProcess").First(&provider).Error
|
err = p.db.Where("provider_id=?", providerId).Preload("CalculateProcess").First(&provider).Error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,13 +88,13 @@ func (p *providerApi) Update(provider v2.Provider) error {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 删除已经没有的CalculateProcess
|
// 删除已经没有的CalculateProcess
|
||||||
if err := tx.Not(ids).Where("owner_id = ? AND kind = ?", provider.ID, "provider").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
if err := tx.Not(ids).Where("owner_id=? AND kind=?", provider.ID, "provider").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新方案的name和描述
|
// 更新方案的name和描述
|
||||||
return tx.Session(&gorm.Session{FullSaveAssociations: true}).Select("updated_at", "name", "config", "mark", "CalculateProcess").
|
return tx.Session(&gorm.Session{FullSaveAssociations: true}).Select("updated_at", "name", "config", "mark", "CalculateProcess").
|
||||||
Where("id = ?", provider.ID).Updates(&provider).Error
|
Where("id=?", provider.ID).Updates(&provider).Error
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,15 +102,15 @@ func (p *providerApi) UpdateStatus(provider v2.Provider) error {
|
|||||||
if provider.ID == 0 {
|
if provider.ID == 0 {
|
||||||
return fmt.Errorf("id为空")
|
return fmt.Errorf("id为空")
|
||||||
}
|
}
|
||||||
return p.db.Model(&provider).Where("id = ?", provider.ID).Select("status", "msg", "pull_at").Updates(&provider).Error
|
return p.db.Model(&provider).Where("id=?", provider.ID).Select("status", "msg", "pull_at").Updates(&provider).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *providerApi) Delete(id uint) (provider v2.Provider, err error) {
|
func (p *providerApi) Delete(id uint) (provider v2.Provider, err error) {
|
||||||
err = p.db.Transaction(func(tx *gorm.DB) error {
|
err = p.db.Transaction(func(tx *gorm.DB) error {
|
||||||
if err = tx.Where("owner_id = ? AND kind = ?", id, "provider").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
if err = tx.Where("owner_id=? AND kind=?", id, "provider").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
||||||
|
|
||||||
}
|
}
|
||||||
return p.db.Clauses(clause.Returning{}).Where("id = ?", id).Delete(&provider).Error
|
return p.db.Clauses(clause.Returning{}).Where("id=?", id).Delete(&provider).Error
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
@ -40,21 +40,21 @@ func (g *ListSellerQuery) Scope(db *gorm.DB) *gorm.DB {
|
|||||||
db = db.Where("id=?", g.ID)
|
db = db.Where("id=?", g.ID)
|
||||||
}
|
}
|
||||||
if g.SellerId != "" {
|
if g.SellerId != "" {
|
||||||
db = db.Where("seller_id = ?", g.SellerId)
|
db = db.Where("seller_id=?", g.SellerId)
|
||||||
}
|
}
|
||||||
if g.Keyword != "" {
|
if g.Keyword != "" {
|
||||||
db = db.Where("name LIKE ?", "%"+g.Keyword+"%")
|
db = db.Where("name ilike ?", "%"+g.Keyword+"%")
|
||||||
}
|
}
|
||||||
return db
|
return db
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *sellerApi) Get(id uint) (seller v2.Seller, err error) {
|
func (p *sellerApi) Get(id uint) (seller v2.Seller, err error) {
|
||||||
err = p.db.Where("id = ?", id).Preload("CalculateProcess").First(&seller).Error
|
err = p.db.Where("id=?", id).Preload("CalculateProcess").First(&seller).Error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *sellerApi) GetBySellerId(sellerId v2.SellerId) (seller v2.Seller, err error) {
|
func (p *sellerApi) GetBySellerId(sellerId v2.SellerId) (seller v2.Seller, err error) {
|
||||||
err = p.db.Where("seller_id = ?", sellerId).Preload("CalculateProcess").First(&seller).Error
|
err = p.db.Where("seller_id=?", sellerId).Preload("CalculateProcess").First(&seller).Error
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -88,13 +88,13 @@ func (p *sellerApi) Update(seller v2.Seller) error {
|
|||||||
})
|
})
|
||||||
|
|
||||||
// 删除已经没有的CalculateProcess
|
// 删除已经没有的CalculateProcess
|
||||||
if err := tx.Not(ids).Where("owner_id = ? AND kind = ?", seller.ID, "seller").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
if err := tx.Not(ids).Where("owner_id=? AND kind=?", seller.ID, "seller").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
// 更新方案的name和描述
|
// 更新方案的name和描述
|
||||||
return tx.Session(&gorm.Session{FullSaveAssociations: true}).Select("updated_at", "name", "config", "mark", "CalculateProcess").
|
return tx.Session(&gorm.Session{FullSaveAssociations: true}).Select("updated_at", "name", "config", "mark", "CalculateProcess").
|
||||||
Where("id = ?", seller.ID).Updates(&seller).Error
|
Where("id=?", seller.ID).Updates(&seller).Error
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -102,15 +102,15 @@ func (p *sellerApi) UpdateStatus(seller v2.Seller) error {
|
|||||||
if seller.ID == 0 {
|
if seller.ID == 0 {
|
||||||
return fmt.Errorf("id为空")
|
return fmt.Errorf("id为空")
|
||||||
}
|
}
|
||||||
return p.db.Model(&seller).Where("id = ?", seller.ID).Select("status", "msg", "pull_at").Updates(&seller).Error
|
return p.db.Model(&seller).Where("id=?", seller.ID).Select("status", "msg", "pull_at").Updates(&seller).Error
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *sellerApi) Delete(id uint) (seller v2.Seller, err error) {
|
func (p *sellerApi) Delete(id uint) (seller v2.Seller, err error) {
|
||||||
err = p.db.Transaction(func(tx *gorm.DB) error {
|
err = p.db.Transaction(func(tx *gorm.DB) error {
|
||||||
if err = tx.Where("owner_id = ? AND kind = ?", id, "seller").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
if err = tx.Where("owner_id=? AND kind=?", id, "seller").Delete(&v2.CalculateProcess{}).Error; err != nil {
|
||||||
|
|
||||||
}
|
}
|
||||||
return p.db.Clauses(clause.Returning{}).Where("id = ?", id).Delete(&seller).Error
|
return p.db.Clauses(clause.Returning{}).Where("id=?", id).Delete(&seller).Error
|
||||||
})
|
})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user