- updateStoresSkusWithoutSync中,关注且没有给价时,需要尝试从store_sku_bind中得到已有的单价
This commit is contained in:
@@ -707,27 +707,45 @@ func updateStoresSkusWithoutSync(ctx *jxcontext.Context, db *dao.DaoDB, storeIDs
|
||||
}()
|
||||
for _, storeID := range storeIDs {
|
||||
for _, skuBindInfo := range skuBindInfos {
|
||||
// 关注且没有给价时,需要尝试从store_sku_bind中得到已有的单价
|
||||
needGetExistingUnitPrice := skuBindInfo.UnitPrice == 0 && skuBindInfo.IsFocus == 1
|
||||
inSkuBinds := skuBindInfo.Skus
|
||||
var allBinds []*tStoreSkuBindAndSpec
|
||||
sql := `
|
||||
SELECT
|
||||
t2.*,
|
||||
t1.id real_sku_id, t1.spec_quality, t1.spec_unit,
|
||||
t3.price sku_name_price, t3.unit sku_name_unit, t3.name
|
||||
t1.id real_sku_id, t1.spec_quality, t1.spec_unit,`
|
||||
if needGetExistingUnitPrice {
|
||||
sql += " IF(t5.unit_price > 0, t5.unit_price, t3.price) sku_name_price,"
|
||||
}
|
||||
sql += `
|
||||
t3.unit sku_name_unit, t3.name
|
||||
FROM sku t1
|
||||
JOIN store ts ON ts.id = ? AND ts.deleted_at = ?
|
||||
LEFT JOIN store_sku_bind t2 ON t2.sku_id = t1.id AND t2.store_id = ts.id AND t2.deleted_at = ?
|
||||
JOIN sku_name t3 ON t1.name_id = t3.id AND t3.deleted_at = ?
|
||||
WHERE t1.name_id = ? AND t1.deleted_at = ?
|
||||
FOR UPDATE`
|
||||
JOIN sku_name t3 ON t1.name_id = t3.id AND t3.deleted_at = ?`
|
||||
sqlParams := []interface{}{
|
||||
storeID,
|
||||
utils.DefaultTimeValue,
|
||||
utils.DefaultTimeValue,
|
||||
utils.DefaultTimeValue,
|
||||
skuBindInfo.NameID,
|
||||
utils.DefaultTimeValue,
|
||||
}
|
||||
if needGetExistingUnitPrice {
|
||||
sql += `
|
||||
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 = ?
|
||||
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)
|
||||
}
|
||||
sql += `
|
||||
WHERE t1.name_id = ? AND t1.deleted_at = ?
|
||||
FOR UPDATE`
|
||||
sqlParams = append(sqlParams, skuBindInfo.NameID, utils.DefaultTimeValue)
|
||||
// globals.SugarLogger.Debug(sql)
|
||||
if err = dao.GetRows(db, &allBinds, sql, sqlParams...); err == nil {
|
||||
if len(allBinds) > 0 {
|
||||
// globals.SugarLogger.Debug(utils.Format4Output(allBinds, false))
|
||||
|
||||
Reference in New Issue
Block a user