* @version : HUOSDK 8.0 */ namespace huo\controller\common; use huo\model\member\MemoauthModel; use huolib\constant\CacheConst; use think\Cache; class HuoSession { private $mem_id = 0; private $app_id = 0; private $type = ''; private $cache_key = CacheConst::CACHE_MEM_SESSION_PREFIX; private static $token_cache_key = CacheConst::CACHE_MEM_APP_TOKEN_PREFIX; private static $cp_role_report_cnt_cache_key = CacheConst::CACHE_CP_ROLE_REPORT_CNT_PREFIX; public function __construct($mem_id = 0, $app_id = 0) { $this->mem_id = $mem_id; $this->app_id = $app_id; $this->setCacheKey($mem_id, $app_id); } /** * @return string */ public function getCacheKey() { return $this->cache_key; } /** * @param int $mem_id * @param int $app_id */ public function setCacheKey($mem_id, $app_id) { $this->cache_key = $this->cache_key.$mem_id.$app_id; } private function getCacheData() { return Cache::get($this->cache_key); } private function setCacheData($data) { return Cache::set($this->cache_key, $data); } /** * 设置第三方Session * openid * unionid * channel * nickname * gender * avatar * token * [ * access_token * expires_in * * ] * @param $oauth_data */ public function setOauthSession($oauth_data) { $_data = $this->getCacheData(); $_data['oauth'] = $oauth_data; $this->setCacheData($_data); } /** * 获取OpenId * * @return string */ public function getOpenId() { if (empty($this->mem_id)) { return ''; } if (!empty($this->app_id)) { $_mo_data = (new MemoauthModel())->getInfoByAppMemId($this->app_id, $this->mem_id); if (!empty($_mo_data) && isset($_mo_data['openid'])) { return $_mo_data['openid']; } } else { $_data = $this->getCacheData(); if (isset($_data['oauth']) && isset($_data['oauth']['openid'])) { return $_data['oauth']['openid']; } else { return (new MemoauthModel())->getOpenidByMemId($this->type, $this->mem_id); } } return ''; } /** * 设置OpenId * * @param string $open_id */ public function setOpenId($open_id) { $_data = $this->getCacheData(); $_data['oauth']['openid'] = $open_id; $this->setCacheData($_data); } /** * 设置第三方access_token * * @param string $access_token */ public function setAccessToken($access_token) { $_data = $this->getCacheData(); $_data['oauth']['access_token'] = $access_token; $this->setCacheData($_data); } /** * 获取第三方token * * @return string */ public function getAccessToken() { if (empty($this->mem_id)) { return ''; } if (!empty($this->app_id)) { $_mo_data = (new MemoauthModel())->getInfoByAppMemId($this->app_id, $this->mem_id); if (!empty($_mo_data) && isset($_mo_data['access_token'])) { return $_mo_data['access_token']; } } else { $_data = $this->getCacheData(); if (isset($_data['oauth']) && isset($_data['oauth']['access_token'])) { return $_data['oauth']['access_token']; } } return ''; } /** * 设置游戏登陆的mg_mem_id * * @param int $mg_mem_id 玩家游戏ID */ public function setMgMemId($mg_mem_id) { $_key = $this->app_id.'mg_mem_id'; $_data = $this->getCacheData(); $_data['mem'][$_key] = $mg_mem_id; $this->setCacheData($_data); } /** * 获取游戏玩家Id mg_mem_id * * @return mixed */ public function getMgMemId() { if (empty($this->mem_id)) { return 0; } $_key = $this->app_id.'mg_mem_id'; $_data = $this->getCacheData(); if (isset($_data['mem']) && isset($_data['mem'][$_key])) { return $_data['mem'][$_key]; } return ''; } /** * @param $agent_id */ public function setAgentId($agent_id) { $_data = $this->getCacheData(); $_data['agent']['agent_id'] = $agent_id; $this->setCacheData($_data); } /** * 获取Session中的agent_id * * @return int */ public function getAgentId() { if (empty($this->mem_id)) { return 0; } $_data = $this->getCacheData(); if (isset($_data['agent']) && isset($_data['agent']['agent_id'])) { return $_data['agent']['agent_id']; } return 0; } /** * @param int $open_cnt */ public function setOpenCnt($open_cnt) { $_data = $this->getCacheData(); $_data['device']['open_cnt'] = $open_cnt; $this->setCacheData($_data); } /** * 获取Session中的open_cnt * * @return mixed */ public function getOpenCnt() { if (empty($this->mem_id)) { return 0; } $_data = $this->getCacheData(); if (isset($_data['device']) && isset($_data['device']['open_cnt'])) { return $_data['device']['open_cnt']; } return ''; } /** * 设置小号交易token * * @param string $pay_token */ public function setAgToken($pay_token) { $_data = $this->getCacheData(); $_data['account_deal']['pay_token'] = $pay_token; $this->setCacheData($_data); } /** * 获取小号交易token * * @return mixed */ public function getAgToken() { if (empty($this->mem_id)) { return ''; } $_data = $this->getCacheData(); if (isset($_data['account_deal']) && isset($_data['account_deal']['pay_token'])) { return $_data['account_deal']['pay_token']; } return ''; } /** * 获取小号交易token * * @return mixed */ public function clearAgToken() { if (empty($this->mem_id)) { return false; } $_data = $this->getCacheData(); if (isset($_data['account_deal']) && isset($_data['account_deal']['pay_token'])) { unset($_data['account_deal']['pay_token']); } return $this->setCacheData($_data); } public static function getOpenIdByMemId($mem_id) { $_cache_key = ''; } public static function setCpCheckCnt($token, $cnt) { $_key = self::$token_cache_key.$token; $_data = Cache::get($_key); $_data['cnt'] = $cnt; Cache::set($_key, $_data); } public static function getCpCheckCnt($token) { $_key = self::$token_cache_key.$token; $_data = Cache::get($_key); if (empty($_data) || empty($_data['cnt'])) { return 0; } return $_data['cnt']; } public static function setCpReleReportCnt($mg_mem_id, $cnt) { $_key = self::$cp_role_report_cnt_cache_key.$mg_mem_id; $_data = Cache::get($_key); $_data['cnt'] = $cnt; Cache::set($_key, $_data); } public static function getCpReleReportCnt($mg_mem_id) { $_key = self::$cp_role_report_cnt_cache_key.$mg_mem_id; $_data = Cache::get($_key); if (empty($_data) || empty($_data['cnt'])) { return 0; } return $_data['cnt']; } public static function setAppId($token, $app_id) { $_key = self::$token_cache_key.$token; $_data = Cache::get($_key); $_data['app_id'] = $app_id; Cache::set($_key, $_data); } public static function getAppId($token) { $_key = self::$token_cache_key.$token; $_data = Cache::get($_key); if (empty($_data) || empty($_data['app_id'])) { return 0; } return $_data['app_id']; } /** * @return string */ public function getType() { return $this->type; } /** * @param string $type */ public function setType($type) { $this->type = $type; } }