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