* @version : HuoMP 1.0 */ namespace huomp\logic\finance; use huo\controller\agent\AgentCache; use huo\controller\agent\AgentWallet; use huo\controller\finance\AoRequest; use huo\controller\game\GameCache; use huo\controller\member\MemCache; use huo\controller\wap\Option; use huo\model\agent\AgentGameModel; use huo\model\agent\AgentOrderModel; use huo\model\common\CommonModel; use huo\model\user\UserModel; use huolib\constant\AgentConst; use huolib\constant\OptionConst; use huolib\constant\SettleConst; use huolib\constant\WalletConst; use huolib\tool\StrUtils; use huomp\logic\member\MemInvitedLogLogic; use think\Log; class AgentOrderIncomeLogic extends CommonModel { /** * 注册收益 * * @param $agent_id * * @return bool */ public function register($agent_id) { $_agent_info = (new AgentCache())->getInfoByAgentId($agent_id); if (empty($_agent_info['mem_id']) || $_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) { Log::write('不是小游戏玩家渠道', 'agent_order_debug', true); return false; } $_option = new Option(); $_setting_name = OptionConst::REBATE_MP_TEXT_REWARD; $_mp_reward_item = $_option->getOptionData($_setting_name); if (!empty($_mp_reward_item['option_value'])) { $_mp_reward_item_value = json_decode($_mp_reward_item['option_value'], true); } if (empty($_mp_reward_item_value)) { Log::write('option未配置', 'agent_order_debug', true); return false; } $_mem_info = (new MemCache())->getInfoById($_agent_info['mem_id']); $_mem_id = $_mem_info['id']; //注册收益 $_agent_gain = get_val($_mp_reward_item_value, 'mem_reward', 0); //某些记录 user 表 没有记录到 parent_id,所以用 member 表 parent_mem_id 来查询 $_pmem_id = $_mem_info['parent_mem_id']; //邀请渠道 $_parent_id = 0; if (!empty($_pmem_id)) { $_parent_id = (new UserModel())->getIdByMemId($_pmem_id); } //邀请注册收益 $_parent_gain = 0; if (!empty($_parent_id)) { $_parent_gain = get_val($_mp_reward_item_value, 'mem_agent_reward', 0); } $_flag = AoRequest::FLAG_REGISTER; $_order_id = StrUtils::genOrderId($agent_id, $agent_id, 0, WalletConst::WALLET_ORDER_PREFIX_MP); $_data = [ "order_id" => $_order_id, "mem_id" => $_mem_id, "agent_id" => $agent_id, "agent_gain" => $_agent_gain, "flag" => $_flag, "parent_id" => $_parent_id, "parent_gain" => $_parent_gain, "remark" => "新用户奖励", ]; $_rs = (new AgentOrderModel())->createOrder($_data); if (!$_rs) { Log::write('创建订单失败', 'agent_order_debug', true); return false; } //增加余额 $_aw_class = new AgentWallet(); $_rs = $_aw_class->updateWallet($agent_id, $_agent_gain, SettleConst::SETTLE_WALLET_ADD); if (!$_rs) { Log::write('增加余额失败', 'agent_order_debug', true); return false; } if (!empty($_parent_id)) { //计算 邀请渠道收益 $_parent_agent_info = (new AgentCache())->getInfoByAgentId($_parent_id); if (empty($_parent_agent_info['mem_id']) || $_parent_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) { Log::write('父级不是小游戏玩家渠道', 'agent_order_debug', true); return false; } $_parent_mem_id = $_parent_agent_info['mem_id']; $_flag = AoRequest::FLAG_INVITE_REGISTER; $_order_id = StrUtils::genOrderId($_parent_id, $_parent_id, $agent_id, WalletConst::WALLET_ORDER_PREFIX_MP); $_data = [ "order_id" => $_order_id, "mem_id" => $_parent_mem_id, "from_id" => $agent_id, "agent_id" => $_parent_id, "agent_gain" => $_parent_gain, "flag" => $_flag, "remark" => "授权成功获得奖励", ]; $_rs = (new AgentOrderModel())->createOrder($_data); if (!$_rs) { Log::write('创建订单失败', 'agent_order_debug', true); return false; } //增加余额 $_aw_class = new AgentWallet(); $_rs = $_aw_class->updateWallet($_parent_id, $_parent_gain, SettleConst::SETTLE_WALLET_ADD); if (!$_rs) { Log::write('增加余额失败', 'agent_order_debug', true); return false; } //累计收益 (new MemInvitedLogLogic())->cumulativeIncome($_parent_mem_id, $_mem_id, $_parent_gain); } return true; } /** * 打开游戏收益 * * @param $agent_id * @param $agent_app_id * * @return bool|int */ public function openGame($agent_id, $agent_app_id) { $_agent_info = (new AgentCache())->getInfoByAgentId($agent_id); if (empty($_agent_info['mem_id']) || $_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) { Log::write('不是小游戏玩家渠道', 'agent_order_debug', true); return false; } $_mem_id = $_agent_info['mem_id']; $_mem_info = (new MemCache())->getInfoById($_mem_id); $_ag_info = (new AgentGameModel())->getInfoById($agent_app_id); $_app_info = (new GameCache())->getInfoByAppId($_ag_info['app_id']); //打开游戏收益 $_agent_gain = get_val($_ag_info, 'mem_reward', 0); //某些记录 user 表 没有记录到 parent_id,所以用 member 表 parent_mem_id 来查询 $_pmem_id = $_mem_info['parent_mem_id']; //邀请渠道 $_parent_id = 0; if (!empty($_pmem_id)) { $_parent_id = (new UserModel())->getIdByMemId($_pmem_id); } //邀请打开游戏收益 $_parent_gain = 0; if (!empty($_parent_id)) { $_parent_gain = get_val($_ag_info, 'mem_agent_reward', 0); } $_flag = AoRequest::FLAG_OPEN_GAME; $_order_id = StrUtils::genOrderId($agent_id, $agent_id, 0, WalletConst::WALLET_ORDER_PREFIX_MP); $_data = [ "order_id" => $_order_id, "agent_id" => $agent_id, "app_id" => $_app_info['id'], "agent_gain" => $_agent_gain, "flag" => $_flag, "parent_id" => $_parent_id, "parent_gain" => $_parent_gain, "remark" => "打开".$_app_info['name']."获得奖励", ]; $_rs = (new AgentOrderModel())->createOrder($_data); if (!$_rs) { Log::write('创建订单失败', 'agent_order_debug', true); return false; } //增加余额 $_aw_class = new AgentWallet(); $_rs = $_aw_class->updateWallet($agent_id, $_agent_gain, SettleConst::SETTLE_WALLET_ADD); if (!$_rs) { Log::write('增加余额失败', 'agent_order_debug', true); return false; } if (!empty($_parent_id)) { //计算 邀请打开游戏收益 $_parent_agent_info = (new AgentCache())->getInfoByAgentId($_parent_id); if (empty($_parent_agent_info['mem_id']) || $_parent_agent_info['role_id'] != AgentConst::AGENT_ROLE_MP_MEMBER) { Log::write('父级不是小游戏玩家渠道', 'agent_order_debug', true); return false; } $_parent_mem_id = $_parent_agent_info['mem_id']; $_flag = AoRequest::FLAG_INVITE_OPEN_GAME; $_order_id = StrUtils::genOrderId($_parent_id, $_parent_id, $agent_id, WalletConst::WALLET_ORDER_PREFIX_MP); $_data = [ "order_id" => $_order_id, "mem_id" => $_parent_mem_id, "from_id" => $agent_id, "app_id" => $_app_info['id'], "agent_id" => $_parent_id, "agent_gain" => $_parent_gain, "flag" => $_flag, "remark" => "打开".$_app_info['name']."获得奖励", ]; $_rs = (new AgentOrderModel())->createOrder($_data); if (!$_rs) { Log::write('创建订单失败', 'agent_order_debug', true); return false; } //增加余额 $_aw_class = new AgentWallet(); $_rs = $_aw_class->updateWallet($_parent_id, $_parent_gain, SettleConst::SETTLE_WALLET_ADD); if (!$_rs) { Log::write('增加余额失败', 'agent_order_debug', true); return false; } //累计收益 (new MemInvitedLogLogic())->cumulativeIncome($_parent_mem_id, $_mem_id, $_parent_gain); } return true; } }