commission_reward_status = self::STATUS_ACCOUNTED; $regionalOrder->commission_time = time(); $regionalOrder->save(); $rewards = RewardModel::where('regional_order_id', $regionalOrderId) ->where('status', self::STATUS_WAITING) ->select(); foreach ($rewards as $reward) { $this->settleReward($reward, $event); } return true; } public function settleReward($reward, $event) { if ($reward['status'] !== self::STATUS_WAITING) { return false; } $agent = AgentModel::get($reward['agent_id']); if (!$agent || $agent['status'] !== AgentModel::STATUS_NORMAL) { return false; } $agent->setInc('total_income', $reward['commission']); UserModel::money($reward['commission'], $reward['agent_user_id'], 'regional_agent_income', $reward['id'], '区域公司差价', $reward); $reward->status = self::STATUS_ACCOUNTED; $reward->save(); return true; } public function backByRegionalOrder($regionalOrderId, $event) { $regionalOrder = RegionalOrderModel::get($regionalOrderId); if (!$regionalOrder) { return false; } if ($regionalOrder['commission_reward_status'] === self::STATUS_ACCOUNTED) { $regionalOrder->commission_reward_status = self::STATUS_BACK; $regionalOrder->save(); } $rewards = RewardModel::where('regional_order_id', $regionalOrderId) ->where('status', self::STATUS_ACCOUNTED) ->select(); foreach ($rewards as $reward) { $this->backReward($reward); } $agent = AgentModel::get($regionalOrder['agent_id']); if ($agent) { $agent->setDec('order_money', $regionalOrder['amount']); $agent->setDec('order_count', 1); } return true; } public function backReward($reward) { if ($reward['status'] !== self::STATUS_ACCOUNTED) { return false; } $agent = AgentModel::get($reward['agent_id']); if ($agent) { $agent->setDec('total_income', $reward['commission']); } UserModel::money(-$reward['commission'], $reward['agent_user_id'], 'regional_agent_back', $reward['id'], '区域公司差价退回', $reward); $reward->status = self::STATUS_BACK; $reward->save(); return true; } }