Laravel应用中为API获取的服务价格添加10%利润的实现咨询
Laravel价格更新添加10%利润解决方案
你只需要在获取到API提供商的价格后,乘以1.1(即增加10%)来计算最终售价,同时优化代码避免重复查询集合,提升效率:
public function priceUpdate($id) { $provider = ApiProvider::with('services')->findOrFail($id); $apiLiveData = Curl::to($provider->url)->withData(['key' => $provider->api_key, 'action' => 'services'])->post(); $currencyData = json_decode($apiLiveData); foreach ($provider->services as $data) { if (isset($data->price)) { // 提前获取当前服务对应的API价格,避免重复遍历集合 $apiPrice = collect($currencyData)->where('service', $data->api_service_id)->pluck('rate')[0]; // 计算包含10%利润的售价,优先用API价格,兜底用现有值 $sellingPrice = $apiPrice ? ($apiPrice * 1.1) : ($data->price); $data->update([ 'api_provider_price' => $apiPrice ?? $data->api_provider_price ?? $data->price, 'price' => $sellingPrice ]); } } return back()->with('success', 'Successfully updated'); }
关键修改点:
- 提取
$apiPrice变量,避免重复执行集合查询操作,减少性能消耗 - 新增
$sellingPrice计算逻辑:当API返回有效价格时,乘以1.1得到含10%利润的售价;无API价格时沿用原有售价 - 保留原有兜底逻辑,确保API数据缺失时不会出现价格异常
内容的提问来源于stack exchange,提问作者Juwel1211
相关产品推荐
相关产品推荐

