$goods){ // 判断是否开启满额减免 -- 判断是否符合满减条件 if (isset($form['sku'][$goods['goods_id']]['goods']['extra']['enable_full_reduce']) && $form['sku'][$goods['goods_id']]['goods']['extra']['enable_full_reduce'] == 1 && !empty($form['sku'][$goods['goods_id']]['goods']['extra']['full_reduce_price_limit']) && $goods['goods_price'] >= $form['sku'][$goods['goods_id']]['goods']['extra']['full_reduce_price_limit']){ $reduce_money = $form['sku'][$goods['goods_id']]['goods']['extra']['full_reduce_money'] ?? 0;// 满减金额 $full_reduce_money+= $reduce_money; }else{ // 当不符合满减条件的时候,这个$reduce_money值就要归零;如果不归零,后面没有满减的商品,都会因此变为满减 $reduce_money = 0; } $goods_price = $goods['goods_price']; $total_reduce_money = 0; foreach($goods['goods_details'] as $k => $goods_detail){ // 营销赠扣表优惠金额记录 if ($reduce_money > 0) { // 计算实际付款金额金额,满减金额 $pay_money = $item['goods'][$goods_id]['goods_details'][$k]['marketing']['goods_price'] ?? $goods_detail['goods_price']; $temp_reduce_money = bcmul($pay_money/$goods_price,$reduce_money,2); if(!isset($goods['goods_details'][$k+1])){ //最后一个 $temp_reduce_money = bcsub($reduce_money,$total_reduce_money,2); } $item['goods'][$goods_id]['goods_details'][$k]['marketing']['pay_money']=bcsub($pay_money, $temp_reduce_money, 2);// order_detail实付金额 $item['goods'][$goods_id]['goods_details'][$k]['marketing']['full_reduce_money']= $temp_reduce_money;// order_detail实付金额 // $item['goods'][$goods_id]['goods_details'][$k]['marketing']['pay_money'] = bcsub($pay_money, $reduce_money, 2);// order_detail实付金额 // $item['goods'][$goods_id]['goods_details'][$k]['marketing']['full_reduce_money'] = $reduce_money;// order_detail满减金额 $item['goods'][$goods_id]['goods_details'][$k]['goods_price'] -= $temp_reduce_money;// order_detail满减金额 $total_reduce_money += $temp_reduce_money; } } $item['goods'][$goods_id]['goods_price'] -= $reduce_money;// order_detail满减金额 } // 满减赋值 if ($full_reduce_money > 0) { $prev_full_reduce = $form->marketing['deduct']['full_reduce']['money'] ?? 0; $item['mch_order_info']['pay_money'] -= $full_reduce_money; $item['mch_order_info']['goods_price'] -= $full_reduce_money; $form->marketing['deduct']['full_reduce'] = ['name' => '满减', 'money' => $prev_full_reduce - $full_reduce_money]; } return $item; } }