From eb9de07654e4c2cbdf1877e94b58b30a46633e7d Mon Sep 17 00:00:00 2001 From: lewis <604446095@qq.com> Date: Wed, 12 Feb 2025 16:58:47 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=95=86=E5=93=81=E6=94=B9?= =?UTF-8?q?=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StoreProductPriceLogic.php | 49 ++++++++----------- 1 file changed, 21 insertions(+), 28 deletions(-) diff --git a/app/admin/logic/store_product_price/StoreProductPriceLogic.php b/app/admin/logic/store_product_price/StoreProductPriceLogic.php index 02be79357..ffd4c352c 100644 --- a/app/admin/logic/store_product_price/StoreProductPriceLogic.php +++ b/app/admin/logic/store_product_price/StoreProductPriceLogic.php @@ -57,15 +57,9 @@ class StoreProductPriceLogic extends BaseLogic try { $find = StoreProductPrice::where('id', $params['id'])->find(); if ($find) { - $updateData = []; $changePurchase = false; if ($find['purchase_lv'] != $params['purchase_lv']) { - $updateData[] = [ - 'product_id' => $find['product_id'], - 'price_type' => StoreProductPriceList::PriceTypeSupply, - 'rate' => $params['purchase_lv'] * 100, - ]; - $params['purchase'] = bcmul($find['purchase_price'], $params['purchase_lv'], 2); + $params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeSupply, $params['purchase_lv'], $params, 'purchase', $find['purchase_price']); $changePurchase = true; } if ($changePurchase) { @@ -74,31 +68,13 @@ class StoreProductPriceLogic extends BaseLogic $params['price'] = bcmul($params['purchase'], $params['price_lv'], 2); } if ($find['cost_lv'] != $params['cost_lv']) { - $updateData[] = [ - 'product_id' => $find['product_id'], - 'price_type' => StoreProductPriceList::PriceTypeBusiness, - 'rate' => $params['cost_lv'] * 100, - ]; - $params['cost'] = bcmul($params['purchase'], $params['cost_lv'], 2); + $params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeBusiness, $params['cost_lv'], $params, 'cost', $params['purchase']); } if ($find['vip_lv'] != $params['vip_lv']) { - $updateData[] = [ - 'product_id' => $find['product_id'], - 'price_type' => StoreProductPriceList::PriceTypeVip, - 'rate' => $params['vip_lv'] * 100, - ]; - $params['vip_price'] = bcmul($params['purchase'], $params['vip_lv'], 2); + $params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeVip, $params['vip_lv'], $params, 'vip_price', $params['purchase']); } if ($find['price_lv'] != $params['price_lv']) { - $updateData[] = [ - 'product_id' => $find['product_id'], - 'price_type' => StoreProductPriceList::PriceTypeRetail, - 'rate' => $params['price_lv'] * 100, - ]; - $params['price'] = bcmul($params['purchase'], $params['price_lv'], 2); - } - if (count($updateData) > 0) { - (new StoreProductPriceList())->saveAll($updateData); + $params = self::updateProductPriceList($find['product_id'], StoreProductPriceList::PriceTypeRetail, $params['price_lv'], $params, 'price', $params['purchase']); } $find->save([ 'status' => 1, @@ -133,6 +109,23 @@ class StoreProductPriceLogic extends BaseLogic throw new BusinessException($e->getMessage()); } } + + public static function updateProductPriceList($productId, $priceType, $rate, $params, $field, $basePrice) + { + $id = StoreProductPriceList::where('product_id', $productId)->where('price_type', $priceType)->value('id'); + if (empty($id)) { + StoreProductPriceList::create([ + 'product_id' => $productId, + 'price_type' => $priceType, + 'rate' => $rate * 100, + ]); + } else { + StoreProductPriceList::where('id', $id)->update(['rate' => $rate * 100]); + } + $params[$field] = bcmul($basePrice, $rate, 2); + return $params; + } + /** * @notes 确认改价 * @param array $params