80 lines
3.0 KiB
PHP
80 lines
3.0 KiB
PHP
<?php
|
|
|
|
namespace app\admin\service;
|
|
|
|
use app\common\model\store_product\StoreProduct;
|
|
use app\common\model\StoreProductPriceList;
|
|
|
|
class ProductPriceService
|
|
{
|
|
|
|
/**
|
|
* 设置商品价格
|
|
* @param $purchasePrice float 采购价
|
|
* @param $productPriceRate array 价格比例
|
|
* @return array
|
|
*/
|
|
public function setProductPrice(float $purchasePrice, array $productPriceRate)
|
|
{
|
|
$result = [];
|
|
$result['purchase_lv'] = bcdiv($productPriceRate['supply_rate'], 100, 2);
|
|
$result['purchase'] = bcmul($purchasePrice, $result['purchase_lv'], 2);
|
|
$result['cost_lv'] = bcdiv($productPriceRate['merchant_rate'], 100, 2);
|
|
$result['cost'] = bcmul($result['purchase'], $result['cost_lv'], 2);
|
|
$result['vip_lv'] = bcdiv($productPriceRate['vip_rate'], 100, 2);
|
|
$result['vip_price'] = bcmul($result['purchase'], $result['vip_lv'], 2);
|
|
$result['price_lv'] = bcdiv($productPriceRate['price_rate'], 100, 2);
|
|
$result['price'] = bcmul($result['purchase'], $result['price_lv'], 2);
|
|
// 暂时不处理零售价,零售价使用会员价
|
|
// $lastNum = substr($result['price'], -1);
|
|
// if ($lastNum > 0) {
|
|
// $result['price'] = ceil($result['price'] * 10);
|
|
// $result['price'] = bcdiv($result['price'], 10, 2);
|
|
// }
|
|
$lastNum = substr($result['vip_price'], -1);
|
|
if ($lastNum > 0) {
|
|
$result['vip_price'] = ceil($result['vip_price'] * 10);
|
|
$result['vip_price'] = bcdiv($result['vip_price'], 10, 2);
|
|
}
|
|
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;
|
|
}
|
|
|
|
} |