From 71d861dd78775235cd8205028b55ecb7ffe30ede Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Tue, 24 Dec 2024 10:38:40 +0800 Subject: [PATCH 1/3] =?UTF-8?q?fix(purchase):=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E9=87=87=E8=B4=AD=E4=BB=B7=E8=AE=A1=E7=AE=97=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增供货价计算步骤,作为商户价和零售价的基础 - 修改商户价和零售价的计算方式,基于供货价进行加成 - 优化价格配置的生成逻辑,确保各层级价格正确计算 --- .../PurchaseProductOfferLogic.php | 55 ++++++++++++------- 1 file changed, 34 insertions(+), 21 deletions(-) diff --git a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php index 96cceca8..18a927b3 100644 --- a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php +++ b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php @@ -358,18 +358,29 @@ class PurchaseProductOfferLogic extends BaseLogic if (!empty($productCatePriceRate)) { $storeProductGroupPrice = StoreProductGroupPrice::where('product_id', $product['id'])->select()->toArray(); $storeProductGroupPrice = reset_index($storeProductGroupPrice, 'group_id'); - foreach ($productCatePriceRate as $k => $v) { - if ($v['id'] == 4) { - $data['cost_lv'] = bcdiv($v['rate'], 100, 2); - $data['cost'] = bcmul($params['purchase'], bcadd($data['cost_lv'], 1, 2), 2); - continue; - } elseif ($v['id'] == 100001) { + $purchase=0; + foreach ($storeProductGroupPrice as $k => $v) { + if ($v['id'] == 100001) { + //供货 $data['purchase_lv'] = bcdiv($v['rate'], 100, 2); $data['purchase'] = bcmul($params['purchase'], bcadd($data['purchase_lv'], 1, 2), 2); + $purchase=$data['purchase']; + break; + } + } + + foreach ($productCatePriceRate as $k => $v) { + if ($v['id'] == 4 &&$purchase>0) { + //商户 + $data['cost_lv'] = bcdiv($v['rate'], 100, 2); + $data['purchase_lv'] = bcdiv($v['rate'], 100, 2); + $purchase=bcmul($purchase, bcadd($data['purchase_lv'], 1, 2), 2); + $data['cost'] = bcmul($purchase, bcadd($data['cost_lv'], 1, 2), 2); continue; - } elseif ($v['id'] == 100002) { + }elseif ($v['id'] == 100002 &&$purchase>0) { + //零售 $data['price_lv'] = bcdiv($v['rate'], 100, 2); - $data['price'] = bcmul($params['purchase'], bcadd($data['price_lv'], 1, 2), 1); + $data['price'] = bcmul($purchase, bcadd($data['price_lv'], 1, 2), 1); if ($product['two_cate_id'] == 15268) { $lastNum = substr($data['price'], -1); if ($lastNum <= 2) { @@ -383,20 +394,22 @@ class PurchaseProductOfferLogic extends BaseLogic continue; } $baseRate = 100 + $v['rate']; - $item = [ - 'product_id' => $product['id'], - 'group_id' => $v['id'], - 'group_name' => $v['title'], - 'price' => bcmul($params['purchase'], $baseRate / 100, 2), - 'price_type' => 3, - 'base_rate' => $baseRate, - ]; - if (isset($storeProductGroupPrice[$v['id']])) { - $item['base_rate'] = $storeProductGroupPrice[$v['id']]['base_rate']; - $item['price'] = bcmul($params['purchase'], $item['base_rate'] / 100, 2); - $item['id'] = $storeProductGroupPrice[$v['id']]['id']; + if($purchase>0){ + $item = [ + 'product_id' => $product['id'], + 'group_id' => $v['id'], + 'group_name' => $v['title'], + 'price' => bcmul($purchase, $baseRate / 100, 2), + 'price_type' => 3, + 'base_rate' => $baseRate, + ]; + if (isset($storeProductGroupPrice[$v['id']])) { + $item['base_rate'] = $storeProductGroupPrice[$v['id']]['base_rate']; + $item['price'] = bcmul($purchase, $item['base_rate'] / 100, 2); + $item['id'] = $storeProductGroupPrice[$v['id']]['id']; + } + $priceConfig[] = $item; } - $priceConfig[] = $item; } } $data['price_config'] = $priceConfig; From b2a3df87c493418353485d7b4a30f7ec4227980a Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Tue, 24 Dec 2024 10:47:55 +0800 Subject: [PATCH 2/3] =?UTF-8?q?refactor(purchase=5Fproduct=5Foffer):=20?= =?UTF-8?q?=E9=87=8D=E6=9E=84=E9=87=87=E8=B4=AD=E4=BA=A7=E5=93=81=E6=8A=A5?= =?UTF-8?q?=E4=BB=B7=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 注释掉 ProductOffer::push($offer) 行,暂时不推送报价信息 - 在 catch 块中添加调试信息输出,便于排查错误 - 修复商户和供货商价格计算逻辑,优化价格计算过程 --- .../purchase_product_offer/PurchaseProductOfferLogic.php | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php index 18a927b3..28e67e5d 100644 --- a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php +++ b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php @@ -221,10 +221,11 @@ class PurchaseProductOfferLogic extends BaseLogic }else{ $offer['pay_type_name']='没设置'; } - ProductOffer::push($offer); + // ProductOffer::push($offer); return true; } catch (\Throwable $e) { Db::rollback(); + d($e); throw new BusinessException($e->getMessage()); } } @@ -359,7 +360,7 @@ class PurchaseProductOfferLogic extends BaseLogic $storeProductGroupPrice = StoreProductGroupPrice::where('product_id', $product['id'])->select()->toArray(); $storeProductGroupPrice = reset_index($storeProductGroupPrice, 'group_id'); $purchase=0; - foreach ($storeProductGroupPrice as $k => $v) { + foreach ($productCatePriceRate as $k => $v) { if ($v['id'] == 100001) { //供货 $data['purchase_lv'] = bcdiv($v['rate'], 100, 2); @@ -368,13 +369,10 @@ class PurchaseProductOfferLogic extends BaseLogic break; } } - foreach ($productCatePriceRate as $k => $v) { if ($v['id'] == 4 &&$purchase>0) { //商户 $data['cost_lv'] = bcdiv($v['rate'], 100, 2); - $data['purchase_lv'] = bcdiv($v['rate'], 100, 2); - $purchase=bcmul($purchase, bcadd($data['purchase_lv'], 1, 2), 2); $data['cost'] = bcmul($purchase, bcadd($data['cost_lv'], 1, 2), 2); continue; }elseif ($v['id'] == 100002 &&$purchase>0) { From 785a3a861559f3dc3be70444a870844828a868b6 Mon Sep 17 00:00:00 2001 From: mkm <727897186@qq.com> Date: Tue, 24 Dec 2024 10:48:12 +0800 Subject: [PATCH 3/3] =?UTF-8?q?fix(app):=20=E4=BF=AE=E5=A4=8D=E8=B4=AD?= =?UTF-8?q?=E4=B9=B0=E4=BA=A7=E5=93=81=E4=BC=98=E6=83=A0=E6=97=B6=E7=9A=84?= =?UTF-8?q?=E6=94=AF=E4=BB=98=E7=B1=BB=E5=9E=8B=E5=90=8D=E7=A7=B0=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 移除了对 ProductOffer::push($offer) 的注释,恢复了该功能 - 优化了 PurchaseProductOfferLogic 中的逻辑,确保正确显示支付类型名称 --- .../logic/purchase_product_offer/PurchaseProductOfferLogic.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php index 28e67e5d..782f1c02 100644 --- a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php +++ b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php @@ -221,7 +221,7 @@ class PurchaseProductOfferLogic extends BaseLogic }else{ $offer['pay_type_name']='没设置'; } - // ProductOffer::push($offer); + ProductOffer::push($offer); return true; } catch (\Throwable $e) { Db::rollback();