From 1990f986f5fb078ce6b661955f8f1a9812e02b78 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E8=8B=8F=E5=B0=B9=E5=B2=9A?= <770236076@qq.com> Date: Wed, 17 Mar 2021 15:30:33 +0800 Subject: [PATCH] aa --- business/jxstore/cms/store_sku.go | 41 +++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 8 deletions(-) diff --git a/business/jxstore/cms/store_sku.go b/business/jxstore/cms/store_sku.go index 952722b8c..a06613998 100644 --- a/business/jxstore/cms/store_sku.go +++ b/business/jxstore/cms/store_sku.go @@ -89,6 +89,7 @@ type StoreSkuBindInfo struct { SubStoreID int `json:"subStoreID,omitempty"` StatusSaleBegin int16 `json:"statusSaleBegin" validate:"max=2359,min=1,ltfield=StatusSaleEnd"` //商品可售时间范围 StatusSaleEnd int16 `json:"statusSaleEnd" validate:"max=2359,min=1"` + UPC string `json:"upc"` Skus []*StoreSkuBindSkuInfo `json:"skus,omitempty"` } @@ -1065,10 +1066,18 @@ func uniqueStoreIDs(storeIDs []int) []int { func uniqueStoreNameBind(skuBindInfos []*StoreSkuBindInfo) (outSkuBindInfos []*StoreSkuBindInfo) { nameIDMap := make(map[int]int) + upcMap := make(map[string]int) for _, v := range skuBindInfos { - if nameIDMap[v.NameID] != 1 { - outSkuBindInfos = append(outSkuBindInfos, v) - nameIDMap[v.NameID] = 1 + if v.NameID != 0 { + if nameIDMap[v.NameID] != 1 { + outSkuBindInfos = append(outSkuBindInfos, v) + nameIDMap[v.NameID] = 1 + } + } else if v.UPC != "" { + if upcMap[v.UPC] != 1 { + outSkuBindInfos = append(outSkuBindInfos, v) + upcMap[v.UPC] = 1 + } } } return outSkuBindInfos @@ -1153,16 +1162,32 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs LEFT JOIN ( SELECT t7.store_id, t8.name_id, CAST(AVG(t7.unit_price) AS SIGNED) unit_price FROM store_sku_bind t7 - JOIN sku t8 ON t8.id = t7.sku_id AND t8.name_id = ? + JOIN sku t8 ON t8.id = t7.sku_id + ` + if skuBindInfo.NameID != 0 { + sql += " AND t8.name_id = ?" + sqlParams = append(sqlParams, skuBindInfo.NameID) + } else if skuBindInfo.UPC != "" { + sql += " JOIN sku_name t9 ON t9.id = t8.name_id AND t9.upc = ?" + sqlParams = append(sqlParams, skuBindInfo.UPC) + } + sql += ` WHERE t7.deleted_at = ? AND t7.store_id = ? GROUP BY 1,2 ) t5 ON t5.store_id = ts.id AND t5.name_id = t1.name_id` - sqlParams = append(sqlParams, skuBindInfo.NameID, utils.DefaultTimeValue, storeID) + sqlParams = append(sqlParams, utils.DefaultTimeValue, storeID) } - sql += ` - WHERE t1.name_id = ? AND t1.deleted_at = ? + sql += " WHERE 1 = 1" + if skuBindInfo.NameID != 0 { + sql += " AND t1.name_id = ?" + sqlParams = append(sqlParams, skuBindInfo.NameID) + } else if skuBindInfo.UPC != "" { + sql += " AND t3.upc = ?" + sqlParams = append(sqlParams, skuBindInfo.UPC) + } + sql += ` AND t1.deleted_at = ? FOR UPDATE` - sqlParams = append(sqlParams, skuBindInfo.NameID, utils.DefaultTimeValue) + sqlParams = append(sqlParams, utils.DefaultTimeValue) // globals.SugarLogger.Debug(sql) if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil { if len(allBinds) > 0 {