make(LegumesRepository::class)->getLegumes($data['legumes_id']); if(!$cycleLegumes) throw new \Exception('信息不存在'); if((int)$cycleLegumes['status'] != 0) throw new \Exception('当前豆豆已分配!'); // 获取时间段所有消费用户 $orderList = StoreOrder::whereNotIn('status',[-1,11]) ->field('order_id,uid,(sum(pay_price) + sum(use_platform_integral_price)) as sum_money') ->whereBetweenTime('pay_time',$cycleLegumes['start_time'],$cycleLegumes['end_time']) ->group('order_id') ->select() ->toArray(); $totalMoney = array_sum(array_column($orderList,'sum_money')); $insertData = []; foreach($orderList as $orderInfo){ // 计算订单金额占比 必须进行100的偏移计算 $rate = (float)sprintf("%.3f",$orderInfo['sum_money'] / $totalMoney * 100); $getLegumes = sprintf("%.3f",$cycleLegumes['legumes_num'] * $rate / 100); // 信息记录 $insertData[] = [ 'uid' => $orderInfo['uid'], 'legumes_id' => $data['legumes_id'], 'order_id' => $orderInfo['order_id'], 'cycle_total_legumes' => $cycleLegumes['legumes_num'], 'total_sales_money' => $totalMoney, 'order_money' => $orderInfo['sum_money'], 'order_money_rate' => $rate, 'get_legumes' => $getLegumes, ]; } // 添加数据 if(count($insertData) > 0) app()->make(LegumesLogRepository::class)->insertAll($insertData); // 修改豆豆周期分配状态 app()->make(LegumesRepository::class)->update($data['legumes_id'],[ 'status' => 1 ]); // 触发全平台豆豆转积分操作 Queue::push(ComputeIntegralJob::class); } 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)); } }