From acdada96e5265dfa3e33b35c28fb7bf44d1b1b67 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Tue, 25 Feb 2020 10:29:34 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9F=A5=E8=AF=A2=E9=AB=98=E4=BB=B7=E6=A0=BC?= =?UTF-8?q?=E5=95=86=E5=93=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- business/jxstore/cms/store_sku.go | 20 ++++++++++++++++++-- controllers/cms_store_sku.go | 1 + 2 files changed, 19 insertions(+), 2 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 87d664b3c..71ddf27ee 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -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...) diff --git a/controllers/cms_store_sku.go b/controllers/cms_store_sku.go index 72632ae0c..c7ce39da0 100644 --- a/controllers/cms_store_sku.go +++ b/controllers/cms_store_sku.go @@ -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]