123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244 |
- <?php
- /**
- * AgentOrderLogic.php UTF-8
- * 小游戏玩家渠道收益逻辑
- *
- * @date : 2018/8/16 14:09
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : luowei <lw@huosdk.com>
- * @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;
- }
- }
|