| 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;    }}
 |