where(['id' => $user_id])->select('level')->scalar() ?? 0; foreach ($item['goods'] as $goods_id => $goods) { foreach ($type_code as $code) { if (empty($form['sku'][$goods['goods_id']]['goods']['extra'][$code . '_give_setting'])) continue; //判断是否开启积分/余额赠送 $give_setting = $form['sku'][$goods['goods_id']]['goods']['extra'][$code . '_give_setting']; $settingArr = Json::decode($give_setting, true); if (isset($settingArr['enable_give_' . $code]) && empty($settingArr['enable_give_' . $code])) continue; if (empty($settingArr['code']) || $settingArr['code'] != $code) continue; $give_settlement = $settingArr['settlement'] ?? 1; if (empty($settingArr['give_num']) || $settingArr['give_num'] <= 0) continue;// 配置为0直接退出 $enable_limit_level = $settingArr['enable_limit_level'] ?? 0; $limit_level = $settingArr['limit_level'] ?? []; if($enable_limit_level == 1 && !in_array($user_level, (array)$limit_level)){ continue; } foreach ($goods['goods_details'] as $k => $goods_detail) { // give_type:1=固定值,2=百分比 if ($settingArr['give_type'] == 1) { $give_num = bcmul($settingArr['give_num'], $goods['num'], 2); } elseif ($settingArr['give_type'] == 2) { $give_num = bcdiv($settingArr['give_num'] * $goods_detail['price'] * $goods['num'], 100, 2); } if (!empty($give_num) && $give_num > 0) { $item['goods'][$goods_id]['goods_details'][$k]['marketing']['give_' . $settingArr['code']] = $give_num; $item['goods'][$goods_id]['goods_details'][$k]['marketing']['give_' . $settingArr['code'] . '_settlement'] = $give_settlement; $item['goods'][$goods_id]['goods_details'][$k]['marketing'][$settingArr['code'].'_enable_limit_level'] = $enable_limit_level; $item['goods'][$goods_id]['goods_details'][$k]['marketing'][$settingArr['code'].'_limit_level'] = $limit_level; } } } } $item = self::handleDigital($item, $form,$extra); return $item; } /** * 处理数字币赠送 * @param $item * @param $form * @param array $extra * @return */ private static function handleDigital($item, &$form,&$extra = []) { $give_score_settlement = 1; foreach($item['goods'] as $goods_id =>$goods){ $give_setting = $form['sku'][$goods['goods_id']]['goods']['extra']['digital_give_setting'] ?? 0;// 满减金额 if (empty($give_setting)) continue; $settingArr = Json::decode($give_setting, true); if(!empty($settingArr['code']) && $settingArr['code']=='digital') $give_score_settlement = $settingArr['settlement']??1; if (empty($settingArr['give_num']) || $settingArr['give_num'] <= 0 || !$settingArr['is_enable']) continue; // 配置为0直接退出 foreach($goods['goods_details'] as $k => $goods_detail){ // give_type:1=固定值,2=百分比 if ($settingArr['give_type'] == 1) { $give_num = $settingArr['give_num'] * $goods['num']; } elseif ($settingArr['give_type'] == 2) { $give_num = bcdiv($settingArr['give_num'] * $goods_detail['price'] * $goods['num'], 100, 2); } if (!empty($give_num) && $give_num > 0) { $item['goods'][$goods_id]['goods_details'][$k]['marketing']['give_' . $settingArr['code']] = $give_num; $item['goods'][$goods_id]['goods_details'][$k]['marketing']['give_' . $settingArr['code'].'_settlement'] = $give_score_settlement; } } } return $item; } }