[['id'=>$user_ids]],'select'=>'id,mobile','index'=>'id']); $obj = new CloudStockAgent(); foreach ($commission_list as $item) { if ($item['capital_type'] == UserWalletEnum::PAYMENT_FOR_GOODS_FILL) { $is_true = true; } $res = UserWalletService::unfrozen($item['id'], $wallet_type); if($res){ try { $cloud_stock_agent_model = CloudStockAgent::findOne(['user_id'=>$item['user_id'],'status'=>StatusEnum::ENABLED]); $cloud_stock_agent_model->frozen_price-=$item['change_num']; if($cloud_stock_agent_model->frozen_price<0) $cloud_stock_agent_model->frozen_price = 0; if (in_array($item['capital_type'], ['equal', 'price_difference_equal'])) { $cloud_stock_agent_model->equal_award_frozen_price -= $item['change_num']; $cloud_stock_agent_model->equal_award_price += $item['change_num']; } $cloud_stock_agent_model->save(); $obj->sendGoodsMoneyMessage($user_arr,$item); }catch (\Exception $e){ \Yii::error('云库存延时结算代理商结算资金增加失败,ID:'. $item['id'] .',USER_ID: '. $item['user_id'].',原因:'. $e->getMessage()); } } } } }else{ $payment_log_list = CloudStockPaymentLog::lists($data['params'],false); if(!empty($payment_log_list)){ $is_true = true; $money_arr = []; foreach ($payment_log_list as $item) { if(isset($money_arr[$item['user_id']])){ $money_arr[$item['user_id']] += $item['money']; }else{ $money_arr[$item['user_id']] = $item['money']; } $item->status = StatusEnum::ENABLED; $item->save(); } foreach ($money_arr as $user_id => $money) { WithdrawService::handle([ 'user_id'=>$user_id, 'money'=>$money, 'is_frozen'=>false, ]); } } } if ($is_true) { //开启延时结算货款 (new PriceDifferenceProfitService(['mall_id' => $data['mall_id']]))->computeProfitByDelayBuy(1, $data['order_no']);//会员买货触发差价利润金额 } // 更新延时结算日志状态 if (!empty($data['mall_id']) && !empty($data['order_no'])) { try { CloudStockDelayLog::updateAll(['status' => CapitalLog::STATUS_SEND, 'agented_at' => time()], ['mall_id' => $data['mall_id'], 'order_no' => $data['order_no']]); }catch (\Exception $e){ return false; } } } /** * 写入延时结算任务 * @param int $sec * @param array $order_detail_ids // 结算订单详情ids * @param array $logs_data // 延时结算日志数据 * @return bool */ public static function task(int $sec = 0, array $queue_data = [], array $logs_data = []) { if (empty($queue_data['params'])) return true; try { // 写入延时结算日志 CloudStockDelayLog::batchSave($logs_data); // 加入延时队列执行 \Yii::$app->services->rabbitMq->delay($sec, $queue_data, self::class, 'handle'); return true; }catch (\Exception $e){ return true; } } }