|
@@ -88,7 +88,7 @@ class PromoProduct extends Model
|
|
// 循环处理
|
|
// 循环处理
|
|
foreach ($data as $value) {
|
|
foreach ($data as $value) {
|
|
// 重组数据
|
|
// 重组数据
|
|
- $list[$value['product_id']]= $value;
|
|
|
|
|
|
+ $list[$value['product_id']][]= $value;
|
|
}
|
|
}
|
|
// 返回结果
|
|
// 返回结果
|
|
return $list;
|
|
return $list;
|
|
@@ -126,49 +126,79 @@ class PromoProduct extends Model
|
|
// 获取产品活动
|
|
// 获取产品活动
|
|
$promoList = $this->getListByIds($productIds);
|
|
$promoList = $this->getListByIds($productIds);
|
|
$promoProductList = [];
|
|
$promoProductList = [];
|
|
- foreach ($promoList as $promoInfo) {
|
|
|
|
- $promoInfoCity = [];
|
|
|
|
- if ($promoInfo['city_ids']){
|
|
|
|
- $promoInfoCity = explode(',',$promoInfo['city_ids']);
|
|
|
|
- }
|
|
|
|
- $promoInfo['price_total'] = $productPrice[$promoInfo['product_id']]['price_total'];
|
|
|
|
- // 判断是不是可以参与
|
|
|
|
- if (!$promoInfoCity || in_array($cityId, $promoInfoCity)) {
|
|
|
|
- if ($promoInfo['tag_scope']) {
|
|
|
|
- // 解析数组
|
|
|
|
- $promoInfo['tag_scope'] = explode(',', $promoInfo['tag_scope']);
|
|
|
|
- // 标签范围限定时,默认不能参与
|
|
|
|
- $allowJoin = 0;
|
|
|
|
- // 判断标签是不是存在
|
|
|
|
- if ($tags) {
|
|
|
|
- foreach ($tags as $v) {
|
|
|
|
- // 标签范围内,允许参加
|
|
|
|
- if (in_array($v['name'], $promoInfo['tag_scope'])) $allowJoin = 1;
|
|
|
|
- }
|
|
|
|
- // 在范围
|
|
|
|
- if ($allowJoin) {
|
|
|
|
- $promoProductList[$promoInfo['id']][] = $promoInfo;
|
|
|
|
|
|
+ foreach ($promoList as $promoListItem) {
|
|
|
|
+ foreach ($promoListItem as $promoInfo){
|
|
|
|
+ $promoInfoCity = [];
|
|
|
|
+ if ($promoInfo['city_ids']){
|
|
|
|
+ $promoInfoCity = explode(',',$promoInfo['city_ids']);
|
|
|
|
+ }
|
|
|
|
+ $promoInfo['price_total'] = $productPrice[$promoInfo['product_id']]['price_total'];
|
|
|
|
+ // 判断是不是可以参与
|
|
|
|
+ if (!$promoInfoCity || in_array($cityId, $promoInfoCity)) {
|
|
|
|
+ if ($promoInfo['tag_scope']) {
|
|
|
|
+ // 解析数组
|
|
|
|
+ $promoInfo['tag_scope'] = explode(',', $promoInfo['tag_scope']);
|
|
|
|
+ // 标签范围限定时,默认不能参与
|
|
|
|
+ $allowJoin = 0;
|
|
|
|
+ // 判断标签是不是存在
|
|
|
|
+ if ($tags) {
|
|
|
|
+ foreach ($tags as $v) {
|
|
|
|
+ // 标签范围内,允许参加
|
|
|
|
+ if (in_array($v['name'], $promoInfo['tag_scope'])) $allowJoin = 1;
|
|
|
|
+ }
|
|
|
|
+ // 在范围
|
|
|
|
+ if ($allowJoin) {
|
|
|
|
+ $promoProductList[$promoInfo['id']][] = $promoInfo;
|
|
|
|
+ }
|
|
}
|
|
}
|
|
|
|
+ } else {
|
|
|
|
+ $promoProductList[$promoInfo['id']][] = $promoInfo;
|
|
}
|
|
}
|
|
- } else {
|
|
|
|
- $promoProductList[$promoInfo['id']][] = $promoInfo;
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if( !$promoProductList ) return ['is_used'=>0,'product_price'=>$productPrice,'rebate_product'=>[]];
|
|
if( !$promoProductList ) return ['is_used'=>0,'product_price'=>$productPrice,'rebate_product'=>[]];
|
|
$reductionTotal = 0;
|
|
$reductionTotal = 0;
|
|
$promoRebateIds = [];
|
|
$promoRebateIds = [];
|
|
|
|
+ $productPromo = [];
|
|
|
|
+ foreach ($promoProductList as $key => $value){
|
|
|
|
+ $reduction = 0;
|
|
|
|
+ $priceSum = array_sum(array_column($value,'price_total'));
|
|
|
|
+ if ($priceSum >= $value[0]['std_pay']) {
|
|
|
|
+ foreach ($value as $v){
|
|
|
|
+ $productPromo[$v['product_id']][] = [
|
|
|
|
+ 'promo_id' => $key,
|
|
|
|
+ 'rebate' => $v['rebate'],
|
|
|
|
+ ];
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ if (!$productPromo) return ['is_used'=>0,'product_price'=>$productPrice,'rebate_product'=>[]];
|
|
|
|
+ foreach ($productPromo as $key => $value){
|
|
|
|
+ $rebateValue = 0;
|
|
|
|
+ $rebateKey = 0;
|
|
|
|
+ foreach ($value as $v){
|
|
|
|
+ if($v['rebate']>$rebateValue){
|
|
|
|
+ $rebateValue = $v['rebate'];
|
|
|
|
+ $rebateKey = $v['promo_id'];
|
|
|
|
+ unset($promoProductList[$rebateKey]);
|
|
|
|
+ }else{
|
|
|
|
+ unset($promoProductList[$v['promo_id']]);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
foreach ($promoProductList as $key => $value){
|
|
foreach ($promoProductList as $key => $value){
|
|
$reduction = 0;
|
|
$reduction = 0;
|
|
$priceSum = array_sum(array_column($value,'price_total'));
|
|
$priceSum = array_sum(array_column($value,'price_total'));
|
|
if ($priceSum >= $value[0]['std_pay']) {
|
|
if ($priceSum >= $value[0]['std_pay']) {
|
|
|
|
+
|
|
switch ($value[0]['rebate_type']){
|
|
switch ($value[0]['rebate_type']){
|
|
case 1:
|
|
case 1:
|
|
$reduction = $value[0]['rebate'];
|
|
$reduction = $value[0]['rebate'];
|
|
$reductionTotal += $value[0]['rebate'];
|
|
$reductionTotal += $value[0]['rebate'];
|
|
break;
|
|
break;
|
|
case 2:
|
|
case 2:
|
|
- $reduction = $priceSum - number_format($priceSum * $value[0]['rebate']/10,2);
|
|
|
|
|
|
+ $reduction = $priceSum - number_format($priceSum * $value[0]['rebate']/10,2);
|
|
$reductionTotal += $priceSum - number_format($priceSum * $value[0]['rebate']/10,2);
|
|
$reductionTotal += $priceSum - number_format($priceSum * $value[0]['rebate']/10,2);
|
|
break;
|
|
break;
|
|
case 3:
|
|
case 3:
|