会员价和分销价

wysf
lqmac 12 months ago
parent f714177951
commit 584d277f66
  1. 75
      app/api/model/Goods.php
  2. 26
      app/api/service/Goods.php
  3. 15
      app/common/model/PriceSet.php

@ -539,36 +539,52 @@ class Goods extends GoodsModel
$catService = new \app\store\model\GoodsCategoryRel();
$catIds = $catService->where(['goods_id' => $goods->goods_id])->column('category_id');
//读取分类集
$price_list_plus = $price_list_dealer = [];
foreach ($catIds as $k => $v) {
$price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']);
$price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']);
}
// $price_list_plus = $price_list_dealer = [];
// foreach ($catIds as $k => $v) {
// $price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']);
// $price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']);
// }
//价格判断
if (UserService::isstore()) {
$goods['goods_price_min_plus'] = min($price_list_plus);
$goods['goods_price_min_dealer'] = min($price_list_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$goods['goods_price_min_plus'] = $priceArr['membershipPrice'];
$goods['goods_price_min_dealer'] = $priceArr['distributionPrice'];
// $goods['goods_price_min_plus'] = min($price_list_plus);
// $goods['goods_price_min_dealer'] = min($price_list_dealer);
} elseif (UserService::isPlusMember()) {
$goods['goods_price_min_plus'] = min($price_list_plus);
$goods['goods_price_min_plus'] = \app\common\model\PriceSet::membershipPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
//$goods['goods_price_min_plus'] = min($price_list_plus);
} elseif (UserService::isDealerMember()) {
$goods['goods_price_min_dealer'] = min($price_list_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$goods['goods_price_min_dealer'] = $priceArr['distributionPrice'];
//$goods['goods_price_min_dealer'] = min($price_list_dealer);
}
// 会员折扣价: 商品sku列表
if ($goods->getRelation('skuList')) {
foreach ($goods['skuList'] as &$skuItem) {
$temp_price_plus = $temp_price_dealer = [];
foreach ($catIds as $k => $v) {
$temp_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $skuItem['goods_price']);
$temp_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $skuItem['goods_price']);
}
// $temp_price_plus = $temp_price_dealer = [];
// foreach ($catIds as $k => $v) {
// $temp_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $skuItem['goods_price']);
// $temp_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $skuItem['goods_price']);
// }
//价格判断
if (UserService::isstore()) {
$skuItem['goods_price_plus'] = min($temp_price_plus);
$skuItem['goods_price_dealer'] = min($temp_price_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($skuItem['goods_price'], $skuItem['cost_price'], $catIds);
$skuItem['goods_price_min_plus'] = $priceArr['membershipPrice'];
$skuItem['goods_price_min_dealer'] = $priceArr['distributionPrice'];
// $skuItem['goods_price_plus'] = min($temp_price_plus);
// $skuItem['goods_price_dealer'] = min($temp_price_dealer);
} elseif (UserService::isPlusMember()) {
$skuItem['goods_price_plus'] = min($temp_price_plus);
$skuItem['goods_price_plus'] = \app\common\model\PriceSet::membershipPrice($skuItem['goods_price'], $skuItem['cost_price'], $catIds);
//$skuItem['goods_price_plus'] = min($temp_price_plus);
} elseif (UserService::isDealerMember()) {
$skuItem['goods_price_dealer'] = min($temp_price_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($skuItem['goods_price'], $skuItem['cost_price'], $catIds);
$skuItem['goods_price_min_dealer'] = $priceArr['distributionPrice'];
//$skuItem['goods_price_dealer'] = min($temp_price_dealer);
}
}
@ -576,17 +592,20 @@ class Goods extends GoodsModel
// 折扣价: 已选择的商品sku(用于购物车)
if ($goods->getAttr('skuInfo')) {
if (UserService::isPlusMember()) {
$sku_price_plus = [];
foreach ($catIds as $k => $v) {
$sku_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['skuInfo']['goods_price']);
}
$goods['skuInfo']['goods_price'] = min($sku_price_plus);
// $sku_price_plus = [];
// foreach ($catIds as $k => $v) {
// $sku_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['skuInfo']['goods_price']);
// }
// $goods['skuInfo']['goods_price'] = min($sku_price_plus);
$goods['skuInfo']['goods_price'] = \app\common\model\PriceSet::membershipPrice($goods['skuInfo']['goods_price'], $goods['skuInfo']['cost_price'], $catIds);
} elseif (UserService::isDealerMember()) {
$sku_price_dealer = [];
foreach ($catIds as $k => $v) {
$sku_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['skuInfo']['goods_price']);
}
$goods['skuInfo']['goods_price'] = min($sku_price_dealer);
// $sku_price_dealer = [];
// foreach ($catIds as $k => $v) {
// $sku_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['skuInfo']['goods_price']);
// }
//$goods['skuInfo']['goods_price'] = min($sku_price_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['skuInfo']['goods_price'], $goods['skuInfo']['cost_price'], $catIds);
$goods['skuInfo']['goods_price'] = $priceArr['distributionPrice'];
}
}

@ -323,19 +323,27 @@ class Goods extends GoodsService
if (UserService::isLogin()) {
$catService = new \app\store\model\GoodsCategoryRel();
$catIds = $catService->where(['goods_id' => $goods['goods_id']])->column('category_id');
$price_list_plus = $price_list_dealer = [];
foreach ($catIds as $k => $v) {
$price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']);
$price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']);
}
// $price_list_plus = $price_list_dealer = [];
// foreach ($catIds as $k => $v) {
// $price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']);
// $price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']);
// }
//价格判断
if (UserService::isstore()) {
$temp['goods_price_min_plus'] = min($price_list_plus);
$temp['goods_price_min_dealer'] = min($price_list_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$temp['goods_price_min_plus'] = $priceArr['membershipPrice'];
$temp['goods_price_min_dealer'] = $priceArr['distributionPrice'];
// $temp['goods_price_min_plus'] = min($price_list_plus);
// $temp['goods_price_min_dealer'] = min($price_list_dealer);
} elseif (UserService::isPlusMember()) {
$temp['goods_price_min_plus'] = min($price_list_plus);
$temp['goods_price_min_plus'] = \app\common\model\PriceSet::membershipPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
//$temp['goods_price_min_plus'] = min($price_list_plus);
} elseif (UserService::isDealerMember()) {
$temp['goods_price_min_dealer'] = min($price_list_dealer);
$priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$temp['goods_price_min_dealer'] = $priceArr['distributionPrice'];
//$temp['goods_price_min_dealer'] = min($price_list_dealer);
}
}
$data[] = $temp;

@ -38,6 +38,10 @@ class PriceSet extends BaseModel
*/
public static function membershipPrice($market_price, $cost_price, $category_ids){
$addPriceRate = self::getAddPriceRate(0, $category_ids, $cost_price);
//没有加价率返回市场价
if (!$addPriceRate) {
return sprintf("%.2f", $market_price);
}
$membershipPrice = $cost_price * (1 + $addPriceRate * 0.01);
//当加价率生效后,会员价高于市场价
if ($membershipPrice > $market_price) {
@ -57,10 +61,18 @@ class PriceSet extends BaseModel
* @return [type] [description]
*/
public static function distributionPrice($market_price, $cost_price, $category_ids){
$arr = [];
//会员价
$membershipPrice = self::membershipPrice($market_price, $cost_price, $category_ids);
$arr['membershipPrice'] = $membershipPrice;
//分销价
$addPriceRate = self::getAddPriceRate(1, $category_ids, $cost_price);
//没有加价率返回市场价
if (!$addPriceRate) {
$arr['distributionPrice'] = sprintf("%.2f", $market_price);
return $arr;
}
$distributionPrice = $cost_price * (1 + $addPriceRate * 0.01);
$price = $distributionPrice;
//当加价率生效后,分销价高于市场价
@ -71,7 +83,8 @@ class PriceSet extends BaseModel
if ($distributionPrice > $membershipPrice) {
$price = ($membershipPrice - $cost_price) * $addPriceRate * 0.01 + $cost_price;
}
return sprintf("%.2f", $price);
$arr['distributionPrice'] = sprintf("%.2f", $price);
return $arr;
}

Loading…
Cancel
Save