find(); // 判断:当前抽成豆豆信息是否已经结算,未结算-无操作处理(结算时处理退款内容);已结算-处理退款相关内容 $maxEndTime = Legumes::max('end_time'); $createTime = strtotime($platformCommissionRecord->create_time); if($createTime < $maxEndTime){ // 已结算 - 处理退款相关内容 $legumesId = (int)Legumes::where('start_time','<',$createTime)->where('end_time','>',$createTime)->value('id'); if($legumesId > 0){ // 获取需要修改的信息列表 $correlationList = LegumesLog::field('id,uid,order_money,refund_order_money,get_legumes,refund_get_legumes,get_integral') ->where('legumes_id',$legumesId) ->select() ->toArray(); // 循环处理 $updateData = []; foreach($correlationList as $correlationInfo){ // 计算 退款金额 $reduceOrderMoney = (float)sprintf("%.2f",$correlationInfo['order_money'] * $data['refund_rate'] / 100); $refundOrderMoney = bcadd($correlationInfo['refund_order_money'],$reduceOrderMoney,2); if($refundOrderMoney > $correlationInfo['order_money']) $refundOrderMoney = $correlationInfo['order_money']; // 计算 退款豆豆 $reduceGetLegumes = (float)sprintf("%.2f",$correlationInfo['get_legumes'] * $data['refund_rate'] / 100); $refundGetLegumes = bcadd($correlationInfo['refund_get_legumes'],$reduceGetLegumes,3); if($refundGetLegumes > $correlationInfo['get_legumes']) $refundGetLegumes = $correlationInfo['get_legumes']; // 记录修改信息 $updateData[] = [ 'id' => $correlationInfo['id'], 'refund_order_money' => $refundOrderMoney, 'refund_get_legumes' => $refundGetLegumes ]; } if(count($updateData) > 0) { LegumesLog::batchUpdate(array_values($updateData)); Queue::push(ComputeIntegralJob::class,[ 'ids' => array_column($correlationList,'id') ]); } } } } catch(\Exception $e){ $data['error_msg'] = $e->getMessage(); Log::info('订单退款成功 - 豆豆和积分 - 失败: '.var_export($data,1)); } $job->delete(); } public function failed($data){ Log::info('订单退款成功 - 豆豆和积分 - 失败(failed): '.var_export($data,1)); } }