* @version : HUOSDK 8.0 */ namespace huo\controller\agent; use huo\controller\common\Base; use huo\controller\common\HuoSession; use huo\logic\agent\AgentGameLogic; use huo\logic\agent\AgentLogic; use huo\logic\finance\AgentOrderLogic; use huo\logic\order\OrderLogic; use huo\model\user\RoleModel; use huo\model\user\RoleUserModel; use huo\model\user\UserModel; use huolib\constant\AgentConst; use huolib\constant\CommonConst; use huolib\constant\MemConst; use huolib\status\MemberStatus; use huolib\utils\UserUtils; use think\Cache; use think\Log; class Agent extends Base { /** * 获取渠道基本信息 * * @param $agent_id * * @return bool */ public function getAgentBaseInfo($agent_id) { if (empty($agent_id)) { return false; } $_ac_class = AgentCache::ins(); $_agent_data = $_ac_class->getInfoByAgentId($agent_id); if (empty($_agent_data)) { return false; } $_data['user_login'] = $_agent_data['user_login']; $_data['user_nicename'] = $_agent_data['user_nicename']; $_data['user_email'] = $_agent_data['user_email']; $_data['signature'] = $_agent_data['signature']; $_data['role_id'] = $_agent_data['role_id']; $_data['role_type'] = (new RoleModel())->getRoleTypeById($_data['role_id']); $_data['parent_id'] = $_agent_data['parent_id']; $_data['cp_id'] = $_agent_data['cp_id']; $_data['user_status'] = $_agent_data['user_status']; $_data['mobile'] = $_agent_data['mobile']; $_data['avatar'] = $_agent_data['avatar']; $_ae_info = $_ac_class->getAgentExtByAgentId($agent_id); $_data['ptb_remain'] = $_ae_info['ptb_remain']; $_data['share_remain'] = $_ae_info['share_remain']; $_data['frozen_amount'] = $_ae_info['frozen_amount']; HuoSession::setAgentId($_agent_data['id']); return $_data; } /** * 获取统计信息 * * @param $agent_id * * @return array */ public function getStatisticsTotalInfo($agent_id) { $_ae_data = AgentCache::ins()->getAgentExtByAgentId($agent_id); if (empty($_ae_data)) { $_code = MemberStatus::INVALID_PARAMS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_agent_ids = (new AgentLogic())->getAgentIds($agent_id, true); /* 玩家统计 */ $_member = (new AgentLogic())->getStaticMem($_agent_ids); $_rdata['sum_user_cnt'] = $_member['sum_user_cnt']; $_rdata['today_user_cnt'] = $_member['today_user_cnt']; $_rdata['yesterday_user_cnt'] = $_member['yesterday_user_cnt']; /* 玩家流水统计 */ $_member = (new OrderLogic())->getStaticMoney($_agent_ids); $_rdata['sum_money'] = $_member['sum_money']; $_rdata['today_money'] = $_member['today_money']; $_rdata['yesterday_money'] = $_member['yesterday_money']; /* 流水分成统计 */ $_role_type = $this->getRoleType($agent_id); $_share_money = (new AgentOrderLogic())->getStaticShareMoney($agent_id, $_role_type); $_rdata['sum_share_total'] = $_share_money['sum_share_total']; $_rdata['today_share_total'] = $_share_money['today_share_total']; $_rdata['yesterday_share_total'] = $_share_money['yesterday_share_total']; /* 游戏统计 */ $_game = (new AgentGameLogic())->getStaticGame($agent_id); $_rdata['sum_game_cnt'] = $_game['sum_game_cnt']; $_rdata['today_game_cnt'] = $_game['today_game_cnt']; $_rdata['yesterday_game_cnt'] = $_game['yesterday_game_cnt']; $_code = MemberStatus::NO_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code), $_rdata); } /** * 获取父渠道ID * * @param $agent_id * * @return int|false */ public function getParentId($agent_id) { $_agent_data = AgentCache::ins()->getInfoByAgentId($agent_id); if (empty($_agent_data)) { return false; } return $_agent_data['parent_id']; } /** * 获取角色类型 * * @param $agent_id * * @return int|false */ public function getRoleType($agent_id) { $_agent_data = AgentCache::ins()->getInfoByAgentId($agent_id); if (empty($_agent_data)) { return false; } $_role_type = (new RoleModel())->getRoleTypeById($_agent_data['role_id']); return $_role_type; } /** * 通过用户名获取Id * * @param string $username * * @return array|bool */ public function getIdByName($username = '') { $_agent_id = (new AgentLogic())->getIdByName($username); return $_agent_id; } /** * @param $username * @param $password * * @return array|mixed */ public function login($username, $password) { $_login_chk = UserUtils::checkLogin($username, $password); if (MemberStatus::NO_ERROR != $_login_chk) { Log::write( "func=".__FUNCTION__."&class=".__CLASS__."&step=1&username=$username&pwd=$password", Log::NOTICE ); return $this->retErrMsg($_login_chk); } $_agent_id = $this->getIdByName($username); $_agent_data = AgentCache::ins()->getInfoByAgentId($_agent_id); if ($_agent_data) { $_chk_pwd = cmf_compare_password($password, $_agent_data['user_pass']); if (false == $_chk_pwd) { $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR; } elseif (MemConst::STATUS_FORBID == $_agent_data['user_status']) { $_rs = MemberStatus::ACCOUNT_HALT; } else { $_rs = MemberStatus::NO_ERROR; } } else { $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR; Log::write( "func=".__FUNCTION__."&class=".__CLASS__."&step=2&username=$username&pwd=$password", Log::NOTICE ); return $this->huoError($_rs, MemberStatus::getMsg($_rs)); } if (!isset($_rs)) { $_rs = MemberStatus::USERNAME_OR_PASSWORD_ERR; } if (MemberStatus::NO_ERROR == $_rs) { return $this->huoSuccess($_rs, MemberStatus::getMsg($_rs), $this->getAgentBaseInfo($_agent_id)); } else { Log::write("func=".__FUNCTION__."&class=".__CLASS__."&step=3&username=$username&pwd=$password", Log::ERROR); return $this->huoError($_rs, MemberStatus::getMsg($_rs)); } } /** * 更新密码 * * @param $agent_id * @param $old_pwd * @param $new_pwd * * @return array */ public function updatePwd($agent_id, $old_pwd, $new_pwd) { $_ac_class = AgentCache::ins(); $_agent_data = $_ac_class->getInfoByAgentId($agent_id); if (empty($_agent_data)) { $_code = MemberStatus::INVALID_PARAMS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } /* 校验旧密码 */ if (false == cmf_compare_password($old_pwd, $_agent_data['user_pass'])) { $_code = MemberStatus::PASSWORD_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } return $this->setPwd($agent_id, $new_pwd); } /** * 更新支付密码 * * @param $agent_id * @param $old_pwd * @param $new_pwd * * @return array */ public function updatePayPwd($agent_id, $old_pwd, $new_pwd) { $_ac_class = AgentCache::ins(); $_agent_data = $_ac_class->getInfoByAgentId($agent_id); if (empty($_agent_data)) { $_code = MemberStatus::INVALID_PARAMS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } /* 校验旧密码 */ if (cmf_compare_password($old_pwd, $_agent_data['pay_pwd'])) { $_code = MemberStatus::PASSWORD_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } return $this->setPwd($agent_id, $new_pwd); } /** * 更新信息 * * @param $agent_id * @param $param * * @return array */ public function updateData($agent_id, $param) { $_ac_class = AgentCache::ins(); $_agent_data = $_ac_class->getInfoByAgentId($agent_id); if (empty($_agent_data)) { $_code = MemberStatus::INVALID_PARAMS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_data = []; if (isset($param['user_nicename'])) { $_data['user_nicename'] = $param['user_nicename']; } if (isset($param['signature'])) { $_data['signature'] = $param['signature']; } if (isset($param['avatar'])) { $_data['avatar'] = $param['avatar']; } $_data = array_merge($_agent_data, $_data); $_rs = $_ac_class->updateAgent($agent_id, $_data); if (false === $_rs) { $_code = MemberStatus::INNER_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } else { $_code = MemberStatus::NO_ERROR; return $this->huoSuccess($_code, MemberStatus::getMsg($_code)); } } /** * 更新密码 * * @param $agent_id * @param $new_pwd * * @return array */ public function setPwd($agent_id, $new_pwd) { $_ac_class = AgentCache::ins(); $_rs = UserUtils::checkPassword($new_pwd); if (MemberStatus::NO_ERROR != $_rs) { $_code = $_rs; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_agent_data['user_pass'] = $new_pwd; $_rs = $_ac_class->updateAgent($agent_id, $_agent_data); if (false === $_rs) { $_code = MemberStatus::INNER_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } else { $_code = MemberStatus::NO_ERROR; return $this->huoSuccess($_code, MemberStatus::getMsg($_code)); } } /** * 更新密码 * * @param $agent_id * @param $new_pwd * * @return array */ public function setPayPwd($agent_id, $new_pwd) { $_ac_class = AgentCache::ins(); $_rs = UserUtils::checkPassword($new_pwd); if (MemberStatus::NO_ERROR != $_rs) { $_code = $_rs; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_agent_data['pay_pwd'] = $new_pwd; $_rs = $_ac_class->updateAgent($agent_id, $_agent_data); if (false === $_rs) { $_code = MemberStatus::INNER_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } else { $_code = MemberStatus::NO_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } } /** * 校验支付密码 * * @param $agent_id * @param $pay_pwd * * @return array */ public function checkPayPwd($agent_id, $pay_pwd) { $_ac_class = AgentCache::ins(); $_agent_data = $_ac_class->getInfoByAgentId($agent_id); /* 校验旧密码 */ if (false == cmf_compare_password($pay_pwd, $_agent_data['pay_pwd'])) { $_code = MemberStatus::PASSWORD_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } else { $_code = MemberStatus::NO_ERROR; return $this->huoSuccess($_code, MemberStatus::getMsg($_code)); } } /** * 添加渠道游戏 * * @param string $agent_name * @param string $user_nice * @param string $user_pass * @param int $prent_id * @param int $role_id * @param string $email * @param int $agent_charge_type * @param string $price * @param int $cp_id * @param int $wx_id * * @return array */ public function addAgent( $agent_name, $user_nice, $user_pass, $prent_id, $role_id = AgentConst::AGENT_ROLE_CPS, $email = '', $agent_charge_type = 0, $price = '', $cp_id = 0, $wx_id = 0 ) { $_agent_name = $agent_name; $_id = $this->getIdByName($_agent_name); if (!empty($_id)) { $_code = MemberStatus::USERNAME_EXISTS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_rs = UserUtils::checkRegister($_agent_name, $user_pass); if (MemberStatus::NO_ERROR != $_rs) { return $this->huoError($_rs, MemberStatus::getMsg($_rs)); } $_parent_id = $prent_id; if (empty($prent_id)) { $_parent_id = 1; } $_role_id = $role_id; if (empty($role_id)) { $_role_id = AgentConst::AGENT_ROLE_CPS; } $_data['user_login'] = $agent_name; $_data['user_pass'] = $user_pass; $_data['pay_pwd'] = $user_pass; $_data['user_nicename'] = $user_nice; $_data['user_email'] = $email; $_data['role_id'] = $_role_id; $_data['parent_id'] = $_parent_id; /* Modified by chenbingling BEGIN 2020/12/15 ISSUES:#13831 新增mp买量新增字段 */ $_data['agent_charge_type'] = $agent_charge_type; $_data['price'] = $price; $_data['cp_id'] = $cp_id; $_data['wx_id'] = $wx_id; /* END 2020/12/15 ISSUES:#13831 */ $_rs = (new AgentLogic())->addAgent($_data); if (false === $_rs) { return $this->huoError(); } /* 添加渠道角色表 */ $_ru_data = [ 'role_id' => $_role_id, 'user_id' => $_rs ]; (new RoleUserModel())->insert($_ru_data); $_rdata['agent_id'] = $_rs; $_code = MemberStatus::NO_ERROR; Cache::clear('agent_id_name'); return $this->huoSuccess($_code, MemberStatus::getMsg($_code), $_rdata); } /** * 根据域名获取agent_id * * @param $site * * @return int|mixed */ public function getAgentIdBySite($site) { if (H5SITE == $site) { return 0; } return (new AgentLogic())->getAgentIdBySite($site); } /** * 获取专属推广信息 * * @param int $agent_id * * @return array */ public function getSite($agent_id) { if (empty($agent_id)) { $_code = MemberStatus::INVALID_PARAMS; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_agent_data = AgentCache::ins()->getInfoByAgentId($agent_id); if (empty($_agent_data)) { $_code = MemberStatus::UID_INVALID; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_site['agent_id'] = $_agent_data['id']; $_site['site'] = $_agent_data['user_login'].'.'.H5DOMAIN; $_site['user_url'] = $_agent_data['user_url']; $_site['site_name'] = $_agent_data['site_name']; $_site['logo'] = $_agent_data['logo']; $_site['wx_qr'] = $_agent_data['wx_qr']; $_site['float_icon'] = $_agent_data['float_icon']; $_code = MemberStatus::NO_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code), $_site); } /** * @param int $agent_id * @param array $data * * @return array */ public function editSite($agent_id, $data) { $_ac_class = AgentCache::ins(); $_agent_data = $_ac_class->getInfoByAgentId($agent_id); if (empty($_agent_data)) { $_code = MemberStatus::UID_INVALID; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_agent_data = array_merge($_agent_data, $data); $_rs = $_ac_class->updateAgent($agent_id, $_agent_data); if (false === $_rs) { $_code = MemberStatus::INNER_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } $_code = MemberStatus::NO_ERROR; return $this->huoError($_code, MemberStatus::getMsg($_code)); } /** * 查找所有不存在父ID的玩家渠道id_name * * @param int $role_id * * @return array */ public function getCpsIdName($role_id = 0) { $_map = []; if (!empty($role_id)) { $_map['role_id'] = $role_id; } $_map['parent_id'] = 1; $_map['user_status'] = CommonConst::STATUS_YES; $_rs = (new UserModel())->where($_map)->column("CONCAT(user_login,'(',user_nicename,')')", 'id'); return $_rs; } }