Merge pull request '修改商品改价的错误' (#519) from dev into main

Reviewed-on: #519
This commit is contained in:
mkm 2025-02-20 09:22:52 +08:00
commit 26cbcace03

View File

@ -61,7 +61,7 @@ class StoreProductPriceLogic extends BaseLogic
if ($find) { if ($find) {
$changePurchase = false; $changePurchase = false;
if ($find['purchase_lv'] != $params['purchase_lv']) { if ($find['purchase_lv'] != $params['purchase_lv']) {
$params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeSupply, $params['purchase_lv'], $params, 'purchase', $find['purchase_price']); $params = self::updateProductPriceList2($find['product_id'], 'supply_rate', $params['purchase_lv'], $params, 'purchase', $find['purchase_price']);
$changePurchase = true; $changePurchase = true;
} }
if ($changePurchase) { if ($changePurchase) {
@ -70,13 +70,13 @@ class StoreProductPriceLogic extends BaseLogic
$params['price'] = bcmul($params['purchase'], $params['price_lv'], 2); $params['price'] = bcmul($params['purchase'], $params['price_lv'], 2);
} }
if ($find['cost_lv'] != $params['cost_lv']) { if ($find['cost_lv'] != $params['cost_lv']) {
$params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeBusiness, $params['cost_lv'], $params, 'cost', $params['purchase']); $params = self::updateProductPriceList2($find['product_id'], 'merchant_rate', $params['cost_lv'], $params, 'cost', $find['purchase']);
} }
if ($find['vip_lv'] != $params['vip_lv']) { if ($find['vip_lv'] != $params['vip_lv']) {
$params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeVip, $params['vip_lv'], $params, 'vip_price', $params['purchase']); $params = self::updateProductPriceList2($find['product_id'], 'vip_rate', $params['vip_lv'], $params, 'vip_price', $find['purchase']);
} }
if ($find['price_lv'] != $params['price_lv']) { if ($find['price_lv'] != $params['price_lv']) {
$params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeRetail, $params['price_lv'], $params, 'price', $params['purchase']); $params = self::updateProductPriceList2($find['product_id'], 'price_rate', $params['price_lv'], $params, 'price', $find['purchase']);
} }
$find->save([ $find->save([
'status' => 1, 'status' => 1,
@ -112,6 +112,21 @@ class StoreProductPriceLogic extends BaseLogic
} }
} }
public static function updateProductPriceList2($productId, $field, $rate, $params, $index, $basePrice)
{
$id = StoreProductPriceList::where('product_id', $productId)->value('id');
if (empty($id)) {
StoreProductPriceList::create([
'product_id' => $productId,
$field => $rate * 100,
]);
} else {
StoreProductPriceList::where('id', $id)->update([$field => $rate * 100]);
}
$params[$index] = bcmul($basePrice, $rate, 2);
return $params;
}
public static function updateProductPriceList($productId, $priceType, $rate, $params, $field, $basePrice) public static function updateProductPriceList($productId, $priceType, $rate, $params, $field, $basePrice)
{ {
$id = StoreProductPriceList::where('product_id', $productId)->where('price_type', $priceType)->value('id'); $id = StoreProductPriceList::where('product_id', $productId)->where('price_type', $priceType)->value('id');