查询高价格商品

This commit is contained in:
苏尹岚
2020-02-25 10:29:34 +08:00
parent 53b3de92b3
commit acdada96e5
2 changed files with 19 additions and 2 deletions

View File

@@ -231,7 +231,7 @@ func GetStoreSkus(ctx *jxcontext.Context, storeID int, skuIDs []int, isFocus boo
return GetStoresSkus(ctx, []int{storeID}, skuIDs, isFocus, keyword, isBySku, isAct, params, offset, pageSize)
}
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct bool, actVendorID int, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool, keyword string, isBySku, isAct, isHighPrice bool, actVendorID int, params map[string]interface{}) (sql string, sqlParams []interface{}, err error) {
sql = `
FROM sku_name t1
JOIN sku t2 FORCE INDEX(PRIMARY) ON t1.id = t2.name_id AND t2.deleted_at = ?/* AND t2.status = ?*/
@@ -292,16 +292,23 @@ func getGetStoresSkusBaseSQL(db *dao.DaoDB, storeIDs, skuIDs []int, isFocus bool
sql += `
JOIN store_sku_bind t4 ON t4.store_id = t3.id AND t4.sku_id = t2.id AND t4.deleted_at = ?
LEFT JOIN sku_name_place_bind t5 ON t1.id = t5.name_id AND t3.city_code = t5.place_code
LEFT JOIN (SELECT count(*) count,id,city_code FROM store WHERE status = ? GROUP BY 2)te ON te.id = t3.id AND te.city_code = t3.city_code
LEFT JOIN price_refer_snapshot tn ON IF(te.count < 3 ,tn.city_code = 0, tn.city_code = t3.city_code) AND tn.sku_id = t2.id AND tn.snapshot_at = ?
LEFT JOIN price_refer_snapshot t6 ON t6.city_code = 0 AND t6.sku_id = t2.id AND t6.snapshot_at = ?
WHERE t1.deleted_at = ? AND (t1.is_global = 1 OR t5.id IS NOT NULL OR 1 = ?)/* AND t1.status = ?*/
`
sqlParams = append(sqlParams, []interface{}{
utils.DefaultTimeValue,
model.StoreStatusOpened,
utils.Time2Date(time.Now().AddDate(0, 0, -1)),
utils.Time2Date(time.Now().AddDate(0, 0, -1)),
utils.DefaultTimeValue,
utils.Bool2Int(isFocus),
// model.SkuStatusNormal,
})
if isHighPrice {
sql += " AND t4.unit_price > tn.mid_unit_price / IF(t3.pay_percentage < 50 , 70, t3.pay_percentage) * 1.2"
}
if isFocus {
sql += " AND ((t2.status = ? AND t1.status = ?) OR t4.status = ?)"
sqlParams = append(sqlParams, model.SkuStatusNormal, model.SkuStatusNormal, model.SkuStatusNormal)
@@ -443,8 +450,12 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
if params["actVendorID"] != nil {
actVendorID = int(utils.Interface2Int64WithDefault(params["actVendorID"], -1))
}
isHighPrice := false
if params["isHighPrice"] != nil {
isHighPrice = params["isHighPrice"].(bool)
}
db := dao.GetDB()
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, actVendorID, params)
sql, sqlParams, err := getGetStoresSkusBaseSQL(db, storeIDs, skuIDs, isFocus, keyword, isBySku, isAct, isHighPrice, actVendorID, params)
if err != nil {
return nil, err
}
@@ -479,6 +490,11 @@ func GetStoresSkusNew(ctx *jxcontext.Context, storeIDs, skuIDs []int, isFocus bo
` + sql + `
GROUP BY 1, 2
ORDER BY 1, 2
`
if isHighPrice {
sql2 += " , t4.unit_price DESC"
}
sql2 += `
LIMIT ? OFFSET ?
`
sqlParams2 := append([]interface{}{}, sqlParams...)

View File

@@ -85,6 +85,7 @@ func (c *StoreSkuController) GetStoreSkus() {
// @Param ebaiSyncStatus query int false "饿百同步标识"
// @Param mtwmSyncStatus query int false "美团外卖同步标识"
// @Param lockTime query string false "价格锁定时间"
// @Param isHighPrice query bool false "是否查过高价格商品"
// @Success 200 {object} controllers.CallResult
// @Failure 200 {object} controllers.CallResult
// @router /GetStoresSkus [get,post]