diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 06a6a6f6a..6d137da56 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -2235,6 +2235,10 @@ func GetTopSkusByCityCode(ctx *jxcontext.Context, cityCode, storeID int) (skuNam } for _, v := range skuNameAndPlace { if skuNameMap[v.ID] != nil { + midPrice, err := dao.GetMidPriceByNameID(db, cityCode, v.ID, utils.Time2Date(time.Now().AddDate(0, 0, -1))) + if err == nil { + v.Price = midPrice + } v.Type = skuNameMap[v.ID].BrandID skuNameAndPlaceList = append(skuNameAndPlaceList, v) } diff --git a/business/model/dao/store_sku.go b/business/model/dao/store_sku.go index 730f8f7d1..542db6533 100644 --- a/business/model/dao/store_sku.go +++ b/business/model/dao/store_sku.go @@ -1344,3 +1344,36 @@ func GetDeletedStoreSkuBind(db *DaoDB, storeID, skuID int) (storeSkuBind *model. } return storeSkuBind } + +func GetMidPriceByNameID(db *DaoDB, cityCode, skuNameID int, snapDate time.Time) (midPrice int, err error) { + var ( + storeSkuExt []*StoreSkuExt + price int + skuMap = make(map[int]int) + ) + sql := ` + SELECT a.mid_price bind_price,a.sku_id,b.spec_quality + FROM price_refer_snapshot a + JOIN sku b ON a.sku_id = b.id + JOIN sku_name c ON c.id = b.name_id + WHERE c.id = ? + AND a.snapshot_at = ? + AND a.city_code = ? + ` + sqlParams := []interface{}{ + skuNameID, + snapDate, + cityCode, + } + err = GetRows(db, &storeSkuExt, sql, sqlParams...) + if err != nil { + return 0, err + } + for _, v := range storeSkuExt { + price = model.SpecialSpecQuality / int(utils.Float64TwoInt64(float64(v.SkuSpecQuality))) * v.BindPrice + if skuMap[skuNameID] < price { + skuMap[skuNameID] = price + } + } + return skuMap[skuNameID], err +}