* @version : HUOSDK 8.0 */ namespace huo\logic\agent; use huo\controller\agent\Agent; use huo\model\common\CommonModel; use huo\model\member\MemberModel; use huo\model\user\RoleModel; use huo\model\user\UserModel; use huolib\constant\AgentConst; use huolib\constant\CommonConst; use huolib\tool\Time; class AgentLogic extends CommonModel { /** * 通过玩家ID获取玩家信息 * * @param string $agent_id * * @return array|bool */ public function getInfoByAgentId($agent_id) { $_info = (new UserModel())->getUserInfo($agent_id); return $_info; } /** * @param $username * * @return array|bool */ public function getIdByName($username) { $_map['user_login'] = $username; $_agent_id = (new UserModel())->where($_map)->value('id'); if (false === $_agent_id) { return false; } if (empty($_agent_id)) { return 0; } return $_agent_id; } /** * 更新数据 * * @param array $data * * @param int $agent_id * * @return bool|mixed */ public function updateAgent($data = [], $agent_id) { $_map['id'] = $agent_id; $_data = $data; if (isset($_data['user_pass']) && cmf_pwd_is_encrypt($_data['user_pass'])) { unset($_data['user_pass']); } if (isset($_data['pay_pwd']) && cmf_pwd_is_encrypt($_data['pay_pwd'])) { unset($_data['pay_pwd']); } return (new UserModel())->updateData($_data, $agent_id); } /** * 获取渠道ID * * @param int $agent_id * @param bool $inc_me * @param array $role_type * * @return array */ public function getAgentIds( $agent_id = 0, $inc_me = false, $role_type = [AgentConst::ROLE_TYPE_GROUP, AgentConst::ROLE_TYPE_AGENT] ) { $_role_type = (new Agent())->getRoleType($agent_id); $_agent_model = new UserModel(); if (AgentConst::ROLE_TYPE_ADMIN == $_role_type || AgentConst::ROLE_TYPE_MANAGER == $_role_type) { $_role_ids = (new RoleModel())->getIdsByRoleType($role_type); $_agent_arr = $_agent_model->getIdsByRoleId($_role_ids); } elseif (AgentConst::ROLE_TYPE_PC == $_role_type) { if (1 == count($role_type) && in_array(AgentConst::ROLE_TYPE_GROUP, $role_type)) { $_agent_arr = $_agent_model->getSubAgents($agent_id, $inc_me); } elseif (1 == count($role_type) && in_array(AgentConst::ROLE_TYPE_AGENT, $role_type)) { $_group_arr = $_agent_model->getSubAgents($agent_id, $inc_me); $_agent_arr = $_agent_model->getSubAgents($_group_arr, false); } else { $_group_arr = $_agent_model->getSubAgents($agent_id, $inc_me); $_agent_arr = $_agent_model->getSubAgents($_group_arr, true); } } elseif (AgentConst::ROLE_TYPE_GROUP == $_role_type) { $_role_id = $_agent_model->getRoleIdById($agent_id); if (AgentConst::AGENT_ROLE_MP_ACCOUNT == $_role_id) { $_agent_arr = $_agent_model->getSubAgents($agent_id, $inc_me, AgentConst::AGENT_ROLE_MP_AD); } else { $_agent_arr = $_agent_model->getSubAgents($agent_id, $inc_me, AgentConst::AGENT_ROLE_MP_AGENT); } } else { $_agent_arr = [$agent_id]; } return $_agent_arr; } /** * 获取渠道Id对应名称 * * @param int $agent_id * @param bool $inc_me * @param array $role_type * @param bool $inc_nice * * @return array */ public function getIdNames( $agent_id, $inc_me = false, $role_type = [AgentConst::ROLE_TYPE_GROUP, AgentConst::ROLE_TYPE_AGENT], $inc_nice = false ) { $_role_type = (new Agent())->getRoleType($agent_id); $_role_ids = (new RoleModel())->getIdsByRoleType($role_type); $_map['role_id'] = ['in', $_role_ids]; $_map['user_status'] = AgentConst::USER_STATUS_ACTIVATED; $_agent_model = new UserModel(); if (AgentConst::ROLE_TYPE_PC == $_role_type) { if (1 == count($role_type) && in_array(AgentConst::ROLE_TYPE_AGENT, $role_type)) { $_map['id'] = ['in', $_agent_model->getSubAgents($agent_id, $inc_me)]; } elseif (1 == count($role_type) && in_array(AgentConst::ROLE_TYPE_GROUP, $role_type)) { $_map['parent_id'] = ['in', $_agent_model->getSubAgents($agent_id, $inc_me)]; } else { $_group_arr = $_agent_model->getSubAgents($agent_id, $inc_me); $_map['parent_id'] = ['in', $_group_arr]; } } elseif (AgentConst::ROLE_TYPE_GROUP == $_role_type) { $_agent_arr = $_agent_model->getSubAgents($agent_id, $inc_me); $_map['id'] = ['in', $_agent_arr]; } elseif (AgentConst::ROLE_TYPE_AGENT == $_role_type) { $_map['id'] = $agent_id; } return $_agent_model->getIdNames($_map, $inc_nice); } public function getIdNamesByRoleId($role_id = [], $inc_nice = false) { $_map['role_id'] = ['in', $role_id]; $_agent_model = new UserModel(); return $_agent_model->getIdNames($_map, $inc_nice); } /** * 添加渠道 * * @param array $data * * @return bool|mixed */ public function addAgent($data) { $_id = (new UserModel())->addData($data); return $_id; } /** * 根据域名获取AgentId * * @param $site * * @return int|mixed */ public function getAgentIdBySite($site) { if (strpos($site, DOCDOMAIN)) { /* 系统分配的域名 */ $site = str_replace("http://", "", $site); $site = str_replace("https://", "", $site); $_domain_arr = explode('.', $site); $_map['user_login'] = $_domain_arr['0']; if (empty($_map['user_login'])) { return 0; } } else { /* 独有域名 */ $_map['user_url'] = $site; } $_key = 'agent_site_key_'.$site; $_agent_id = (new UserModel())->cache($_key)->where($_map)->value('id'); if (empty($_agent_id)) { return 0; } return $_agent_id; } /** * 统计总玩家 昨日玩家 今日玩家 * * @param int|array $agent_ids * * @return array * sum_user_cnt 总玩家数 * today_user_cnt 今日玩家数 * yesterday_user_cnt 昨日玩家数 */ public function getStaticMem($agent_ids) { $_agent_ids = $agent_ids; if (is_numeric($agent_ids)) { $_agent_ids = [$agent_ids]; } $_map = []; if (!empty($agent_ids)) { $_map['agent_id'] = ['in', $_agent_ids]; } $_mem_model = new MemberModel(); $_rdata['sum_user_cnt'] = $_mem_model->where($_map)->count(); list($today_start, $today_end) = Time::today(); $_map['create_time'] = ['gt', $today_start]; $_rdata['today_user_cnt'] = $_mem_model->where($_map)->count(); $_map['create_time'] = ['between', [$today_start - CommonConst::CONST_DAY_SECONDS, $today_start]]; $_rdata['yesterday_user_cnt'] = $_mem_model->where($_map)->count(); return $_rdata; } }