'order_detail'], ['source_table_id' => $data['source_table_ids']], ['from_type' => AgentEnum::ADDONS_NAME], ['capital_type' => $capital_types] ]; //佣金 $wallet_type = 'commission'; CapitalLog::$capitalType = "{$wallet_type}_frozen"; $commission_list = CapitalLog::lists(['where' => array_merge($where, [['status' => CapitalLog::STATUS_WAIT_SEND]])]); if ($commission_list) { foreach ($commission_list as $item) { UserWalletService::unfrozen($item['id'], $wallet_type); try { $distribution = Agent::findOne(['user_id' => $item['user_id']]); $field = 'total_' . $wallet_type; $distribution->$field += -$item['change_num']; $distribution->save(); }catch (\Exception $e){ \Yii::error('延时结算代理商分红累计佣金增加失败,ID:'. $item['id'] .',USER_ID: '. $item['user_id'].',原因:'. $e->getMessage()); } } } //积分 $wallet_type = 'score'; CapitalLog::$capitalType = "{$wallet_type}_frozen"; $score_list = CapitalLog::lists(['where' => array_merge($where, [['status' => CapitalLog::STATUS_WAIT_SEND]])]); if ($score_list) { foreach ($score_list as $item) { UserWalletService::unfrozen($item['id'], $wallet_type); try { $distribution = Agent::findOne(['user_id' => $item['user_id']]); $field = 'total_' . $wallet_type; $distribution->$field += -$item['change_num']; $distribution->save(); }catch (\Exception $e){ \Yii::error('延时结算代理商分红累计佣金增加失败,ID:'. $item['id'] .',USER_ID: '. $item['user_id'].',原因:'. $e->getMessage()); } } } //数字币 $digital_list = DigitalLog::lists(['where' => array_merge($where, [['status' => CapitalLog::STATUS_SEND], ['send_status' => DigitalLog::SEND_STATUS_FROZEN]])]); if ($digital_list) { foreach ($digital_list as $item) { UserDigital::unfrozen($item['id']); } } // 更新延时结算日志状态 if (!empty($data['mall_id']) && !empty($data['order_no'])) { try { AgentDelayLog::updateAll(['status' => CapitalLog::STATUS_SEND, 'agented_at' => time()], ['mall_id' => $data['mall_id'], 'order_no' => $data['order_no'], 'status' => CapitalLog::STATUS_WAIT_SEND]); }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['source_table_ids'])) return true; try { // 写入延时结算日志 AgentDelayLog::batchSave($logs_data); // 加入延时队列执行 \Yii::$app->services->rabbitMq->delay($sec, $queue_data, self::class, 'handle'); return true; }catch (\Exception $e){ return true; } } }