会员价和分销价

wysf
lqmac 1 year 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(); $catService = new \app\store\model\GoodsCategoryRel();
$catIds = $catService->where(['goods_id' => $goods->goods_id])->column('category_id'); $catIds = $catService->where(['goods_id' => $goods->goods_id])->column('category_id');
//读取分类集 //读取分类集
$price_list_plus = $price_list_dealer = []; // $price_list_plus = $price_list_dealer = [];
foreach ($catIds as $k => $v) { // foreach ($catIds as $k => $v) {
$price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']); // $price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']);
$price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']); // $price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']);
} // }
//价格判断 //价格判断
if (UserService::isstore()) { if (UserService::isstore()) {
$goods['goods_price_min_plus'] = min($price_list_plus); $priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$goods['goods_price_min_dealer'] = min($price_list_dealer); $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()) { } 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()) { } 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列表 // 会员折扣价: 商品sku列表
if ($goods->getRelation('skuList')) { if ($goods->getRelation('skuList')) {
foreach ($goods['skuList'] as &$skuItem) { foreach ($goods['skuList'] as &$skuItem) {
$temp_price_plus = $temp_price_dealer = []; // $temp_price_plus = $temp_price_dealer = [];
foreach ($catIds as $k => $v) { // foreach ($catIds as $k => $v) {
$temp_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $skuItem['goods_price']); // $temp_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $skuItem['goods_price']);
$temp_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $skuItem['goods_price']); // $temp_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $skuItem['goods_price']);
} // }
//价格判断 //价格判断
if (UserService::isstore()) { if (UserService::isstore()) {
$skuItem['goods_price_plus'] = min($temp_price_plus); $priceArr = \app\common\model\PriceSet::distributionPrice($skuItem['goods_price'], $skuItem['cost_price'], $catIds);
$skuItem['goods_price_dealer'] = min($temp_price_dealer); $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()) { } 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()) { } 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(用于购物车) // 折扣价: 已选择的商品sku(用于购物车)
if ($goods->getAttr('skuInfo')) { if ($goods->getAttr('skuInfo')) {
if (UserService::isPlusMember()) { if (UserService::isPlusMember()) {
$sku_price_plus = []; // $sku_price_plus = [];
foreach ($catIds as $k => $v) { // foreach ($catIds as $k => $v) {
$sku_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['skuInfo']['goods_price']); // $sku_price_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['skuInfo']['goods_price']);
} // }
$goods['skuInfo']['goods_price'] = min($sku_price_plus); // $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()) { } elseif (UserService::isDealerMember()) {
$sku_price_dealer = []; // $sku_price_dealer = [];
foreach ($catIds as $k => $v) { // foreach ($catIds as $k => $v) {
$sku_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['skuInfo']['goods_price']); // $sku_price_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['skuInfo']['goods_price']);
} // }
$goods['skuInfo']['goods_price'] = min($sku_price_dealer); //$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()) { if (UserService::isLogin()) {
$catService = new \app\store\model\GoodsCategoryRel(); $catService = new \app\store\model\GoodsCategoryRel();
$catIds = $catService->where(['goods_id' => $goods['goods_id']])->column('category_id'); $catIds = $catService->where(['goods_id' => $goods['goods_id']])->column('category_id');
$price_list_plus = $price_list_dealer = []; // $price_list_plus = $price_list_dealer = [];
foreach ($catIds as $k => $v) { // foreach ($catIds as $k => $v) {
$price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']); // $price_list_plus[] = GoodsPriceModel::getDiscountPrice($v, 1, $goods['goods_price_min']);
$price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']); // $price_list_dealer[] = GoodsPriceModel::getDiscountPrice($v, 2, $goods['goods_price_min']);
} // }
//价格判断 //价格判断
if (UserService::isstore()) { if (UserService::isstore()) {
$temp['goods_price_min_plus'] = min($price_list_plus); $priceArr = \app\common\model\PriceSet::distributionPrice($goods['goods_price_min'], $goods['cost_price_min'], $catIds);
$temp['goods_price_min_dealer'] = min($price_list_dealer);
$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()) { } 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()) { } 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; $data[] = $temp;

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

Loading…
Cancel
Save