From 41264fd9a071b830e298f6e3eb851d9c37e8bed0 Mon Sep 17 00:00:00 2001 From: lewis <604446095@qq.com> Date: Sat, 12 Apr 2025 11:24:54 +0800 Subject: [PATCH] =?UTF-8?q?=E5=95=86=E5=93=81=E5=88=97=E8=A1=A8=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E6=94=B9=E4=BB=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../StoreProductPriceController.php | 18 ++++++++ .../ProductSourceLinkLogic.php | 8 +--- .../ProductSourceLinkInfoLogic.php | 5 +-- .../PurchaseProductOfferLogic.php | 9 +++- .../StoreProductPriceLogic.php | 26 +++++++++++- app/admin/service/ProductPriceService.php | 41 +++++++++++++++++++ .../model/store_product/StoreProduct.php | 9 ++++ 7 files changed, 104 insertions(+), 12 deletions(-) diff --git a/app/admin/controller/store_product_price/StoreProductPriceController.php b/app/admin/controller/store_product_price/StoreProductPriceController.php index 98ded405f..3ef942f79 100644 --- a/app/admin/controller/store_product_price/StoreProductPriceController.php +++ b/app/admin/controller/store_product_price/StoreProductPriceController.php @@ -6,6 +6,7 @@ namespace app\admin\controller\store_product_price; use app\admin\controller\BaseAdminController; use app\admin\lists\store_product_price\StoreProductPriceLists; use app\admin\logic\store_product_price\StoreProductPriceLogic; +use app\admin\service\ProductPriceService; use app\admin\validate\store_product_price\StoreProductPriceValidate; @@ -114,4 +115,21 @@ class StoreProductPriceController extends BaseAdminController return $this->data($data); } + public function getRate(ProductPriceService $productPriceService) + { + $params = $this->request->get(); + $productPriceRate = $productPriceService->getProductPriceRate($params['product_id'], true); + return $this->data($productPriceRate); + } + + public function create() + { + $params = request()->post(); + $result = StoreProductPriceLogic::add($params); + if (true === $result) { + return $this->success('添加成功', [], 1, 1); + } + return $this->fail(StoreProductPriceLogic::getError()); + } + } \ No newline at end of file diff --git a/app/admin/logic/product_source_link/ProductSourceLinkLogic.php b/app/admin/logic/product_source_link/ProductSourceLinkLogic.php index 1227c4676..8cc20aab6 100644 --- a/app/admin/logic/product_source_link/ProductSourceLinkLogic.php +++ b/app/admin/logic/product_source_link/ProductSourceLinkLogic.php @@ -4,15 +4,11 @@ namespace app\admin\logic\product_source_link; use app\admin\logic\product_source_link_info\ProductSourceLinkInfoLogic; -use app\admin\logic\purchase_product_offer\PurchaseProductOfferLogic; -use app\common\model\inventory_transfer\InventoryTransfer; +use app\admin\service\ProductPriceService; use app\common\model\product_source_link\ProductSourceLink; use app\common\logic\BaseLogic; use app\common\model\product_source_link_info\ProductSourceLinkInfo; use support\exception\BusinessException; -use think\db\exception\DataNotFoundException; -use think\db\exception\DbException; -use think\db\exception\ModelNotFoundException; use think\facade\Db; @@ -57,7 +53,7 @@ class ProductSourceLinkLogic extends BaseLogic ]; if ($attrs['types'] == ProductSourceLinkInfo::TypeIn) { // 商品入库,记录采购总价和供货总价 - $priceRate = PurchaseProductOfferLogic::getProductPriceRate(['id' => $offer['product_id']]); + $priceRate = (new ProductPriceService())->getProductPriceRate($offer['product_id']); $attrs['purchase_price'] = $offer['total_price']; $rate = bcdiv($priceRate['supply_rate'], 100, 2); $attrs['supply_price'] = bcmul(bcmul($offer['price'], $rate, 2), $offer['nums'], 2); diff --git a/app/admin/logic/product_source_link_info/ProductSourceLinkInfoLogic.php b/app/admin/logic/product_source_link_info/ProductSourceLinkInfoLogic.php index 2fb9a194b..f26b31951 100644 --- a/app/admin/logic/product_source_link_info/ProductSourceLinkInfoLogic.php +++ b/app/admin/logic/product_source_link_info/ProductSourceLinkInfoLogic.php @@ -3,8 +3,7 @@ namespace app\admin\logic\product_source_link_info; -use app\admin\logic\product_source_link\ProductSourceLinkLogic; -use app\admin\logic\purchase_product_offer\PurchaseProductOfferLogic; +use app\admin\service\ProductPriceService; use app\common\model\inventory_transfer\InventoryTransfer; use app\common\model\product_source_link\ProductSourceLink; use app\common\model\product_source_link_info\ProductSourceLinkInfo; @@ -151,7 +150,7 @@ class ProductSourceLinkInfoLogic extends BaseLogic ]; if ($attrs['types'] == ProductSourceLinkInfo::TypeIn) { // 商品入库,记录采购总价和供货总价 - $priceRate = PurchaseProductOfferLogic::getProductPriceRate(['id' => $this->purchaseProductOffer['product_id']]); + $priceRate = (new ProductPriceService())->getProductPriceRate($this->purchaseProductOffer['product_id']); $attrs['purchase_price'] = $this->purchaseProductOffer['total_price']; $rate = bcdiv($priceRate['supply_rate'], 100, 2); $attrs['supply_price'] = bcmul(bcmul($this->purchaseProductOffer['price'], $rate, 2), $this->purchaseProductOffer['nums'], 2); diff --git a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php index 5b20a2066..56cceb4b5 100644 --- a/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php +++ b/app/admin/logic/purchase_product_offer/PurchaseProductOfferLogic.php @@ -410,9 +410,9 @@ class PurchaseProductOfferLogic extends BaseLogic 'warehouse_id' => $warehouseId, 'warehouse_product_id' => $warehouseProductId, ]; - $productPriceRate = self::getProductPriceRate($product); + $productService = new ProductPriceService(); + $productPriceRate = $productService->getProductPriceRate($product['id']); if (!empty($productPriceRate)) { - $productService = new ProductPriceService(); $priceArray = $productService->setProductPrice($params['purchase'], $productPriceRate); $data = array_merge($data, $priceArray); } @@ -425,6 +425,11 @@ class PurchaseProductOfferLogic extends BaseLogic } } + /** + * @deprecated 已废弃,使用(new ProductPriceService())->getProductPriceRate($product['id']) + * @param $product + * @return array|int[] + */ public static function getProductPriceRate($product) { $list = StoreProductPriceList::where('product_id', $product['id'])->findOrEmpty()->toArray(); diff --git a/app/admin/logic/store_product_price/StoreProductPriceLogic.php b/app/admin/logic/store_product_price/StoreProductPriceLogic.php index b3ffda41c..65e8e361a 100644 --- a/app/admin/logic/store_product_price/StoreProductPriceLogic.php +++ b/app/admin/logic/store_product_price/StoreProductPriceLogic.php @@ -37,7 +37,31 @@ class StoreProductPriceLogic extends BaseLogic { Db::startTrans(); try { - StoreProductPrice::create([]); + $model = StoreProductPrice::create($params); + + $productPrice = StoreProduct::where('id', $model['product_id'])->value('vip_price'); + if ($productPrice != $model['vip_price']) { + SqlChannelPriceLog($model['product_id'], 43, $productPrice, $model['vip_price']); + } + + StoreProduct::where('id', $model['product_id'])->update([ + 'purchase' => $model['purchase'], + 'cost' => $model['cost'], + 'vip_price' => $model['vip_price'], + 'price' => $model['vip_price'], + 'ot_price' => $model['price'] + ]); + StoreBranchProduct::where('product_id', $model['product_id'])->update([ + 'purchase' => $model['purchase'], + 'cost' => $model['cost'], + 'vip_price' => $model['vip_price'], + 'price' => $model['vip_price'], + 'ot_price' => $model['price'] + ]); + + $productSourceLinkInfoLogic = new ProductSourceLinkInfoLogic(); + $productSourceLinkInfoLogic->storeProductPrice = $model; + $productSourceLinkInfoLogic->updateSupplyPrice(); Db::commit(); return true; diff --git a/app/admin/service/ProductPriceService.php b/app/admin/service/ProductPriceService.php index 0ab79957e..81f1fa2b6 100644 --- a/app/admin/service/ProductPriceService.php +++ b/app/admin/service/ProductPriceService.php @@ -2,6 +2,9 @@ namespace app\admin\service; +use app\common\model\store_product\StoreProduct; +use app\common\model\StoreProductPriceList; + class ProductPriceService { @@ -36,4 +39,42 @@ class ProductPriceService return $result; } + /** + * @param $productId int 商品id + * @param $percent bool 是否返回百分比 + * @return array|int[] + * @throws \think\db\exception\DataNotFoundException + * @throws \think\db\exception\DbException + * @throws \think\db\exception\ModelNotFoundException + */ + public function getProductPriceRate($productId, $percent = false) + { + $list = StoreProductPriceList::where('product_id', $productId)->findOrEmpty()->toArray(); + $product = StoreProduct::where('id', $productId)->field('id,store_name,top_cate_id,cate_id')->find(); + if (empty($list)) { + if ($product->isSpecial()) { + $list = [ + 'supply_rate' => 102, + 'merchant_rate' => 102, + 'vip_rate' => 104, + 'price_rate' => 108, + ]; + } else { + $list = [ + 'supply_rate' => 105, + 'merchant_rate' => 105, + 'vip_rate' => 108, + 'price_rate' => 112, + ]; + } + } + if ($percent) { + $list['supply_rate'] = $list['supply_rate'] / 100; + $list['merchant_rate'] = $list['merchant_rate'] / 100; + $list['vip_rate'] = $list['vip_rate'] / 100; + $list['price_rate'] = $list['price_rate'] / 100; + } + return $list; + } + } \ No newline at end of file diff --git a/app/common/model/store_product/StoreProduct.php b/app/common/model/store_product/StoreProduct.php index 17b7bf597..1d969ae85 100644 --- a/app/common/model/store_product/StoreProduct.php +++ b/app/common/model/store_product/StoreProduct.php @@ -55,4 +55,13 @@ class StoreProduct extends BaseModel Log::error('product:'.$e->getMessage()); } } + + public function isSpecial() + { + if (in_array($this->top_cate_id, [15189, 6]) || in_array($this->cate_id, [15551, 15552,15569,15570]) || mb_strpos($this->store_name, '鸡精') !== false || mb_strpos($this->store_name, '生抽') !== false || mb_strpos($this->store_name, '多宝鱼') !== false || mb_strpos($this->store_name, '小青虾') !== false) { + return true; + } + return false; + } + } \ No newline at end of file