123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276 |
- <?php
- /**
- * MemCache.php UTF-8
- * 玩家缓存
- *
- * @date : 2018/4/25 23:20
- *
- * @license 这不是一个自由软件,未经授权不许任何使用和传播。
- * @author : wuyonghong <wyh@huosdk.com>
- * @version : HUOSDK 8.0
- */
- namespace huo\controller\member;
- use huo\controller\common\Base;
- use huo\logic\member\MemberLogic;
- use huo\model\member\MemberExtModel;
- use huo\model\member\MemoauthModel;
- use huolib\constant\CacheConst;
- use huolib\constant\MemConst;
- use think\Cache;
- class MemCache extends Base {
- public static function ins() {
- return new static();
- }
- /**
- *获取玩家Key
- *
- * @param string $mem_id
- *
- * @return string
- */
- public function getMemIdKey($mem_id) {
- return 'mem_key_'.$mem_id;
- }
- /**
- * 获取渠道ID
- *
- * @param $mem_id
- *
- * @return mixed
- */
- public function getAgentIdByMemId($mem_id) {
- $_mem_data = MemCache::ins()->getInfoById($mem_id);
- return $_mem_data['agent_id'];
- }
- /**
- * 获取上级玩家ID
- *
- * @param $mem_id
- *
- * @return mixed
- */
- public function getParentIdByMemId($mem_id) {
- $_mem_data = MemCache::ins()->getInfoById($mem_id);
- return $_mem_data['parent_mem_id'];
- }
- /**
- * 获取账户信息
- *
- * @param string $mem_id
- *
- * @return array|bool|mixed
- */
- public function getInfoById($mem_id) {
- $_key = $this->getMemIdKey($mem_id);
- Cache::rm($_key);
- $_mem_data_json = Cache::get($_key);
- $_mem_data = json_decode($_mem_data_json, true);
- if (!is_array($_mem_data)) {
- $_mem_data = $_mem_data_json;
- }
- if (!is_array($_mem_data) || empty($_mem_data)) {
- $_mem_data = (new MemberLogic())->getInfoById($mem_id);
- if (empty($_mem_data)) {
- return false;
- }
- $this->saveMemCache($mem_id, $_mem_data);
- }
- return $_mem_data;
- }
- /**
- * 保存玩家cache 数据
- *
- * @param string $mem_id
- * @param array $mem_data
- * @param int $ttl
- */
- public function saveMemCache($mem_id, $mem_data, $ttl = 3600) {
- $_key = $this->getMemIdKey($mem_id);
- Cache::set($_key, json_encode($mem_data), $ttl);
- }
- /**
- * 更新帐号信息
- *
- * @param string $mem_id
- * @param array $mem_data
- *
- * @return bool
- */
- public function updateMem($mem_id, $mem_data) {
- $_key = $this->getMemIdKey($mem_id);
- Cache::rm($_key);
- return (new MemberLogic())->updateMem($mem_id, $mem_data);
- }
- /**
- *获取玩家Key
- *
- * @param string $type
- * @param string $open_id
- *
- * @return string
- */
- public function getOpenIdKey($type, $open_id) {
- return CacheConst::CACHE_MEM_OAUTH_OPENID_MEM_PREFIX.$type.'_'.$open_id;
- }
- /**
- * 通过OpenId 获取玩家ID
- *
- *
- * @param string $type
- * @param string $open_id
- *
- * @return string
- */
- public function getMemIdByOpenId($type, $open_id) {
- $_key = $this->getOpenIdKey($type, $open_id);
- $_mem_id = Cache::get($_key);
- if (empty($_mem_id)) {
- $_mem_id = (new MemoauthModel())->getMemIdByOpenId($type, $open_id);
- if (empty($_mem_id)) {
- return false;
- }
- $this->saveOpenIdCache($type, $open_id, $_mem_id);
- }
- return $_mem_id;
- }
- /**
- * 保存玩家cache 数据
- *
- * @param string $type
- * @param string $open_id
- * @param string $mem_id
- * @param int $ttl
- *
- * @return bool
- */
- public function saveOpenIdCache($type, $open_id, $mem_id, $ttl = 3600) {
- $_key = $this->getOpenIdKey($type, $open_id);
- return Cache::set($_key, $mem_id, $ttl);
- }
- /**
- * 获取玩家Key
- *
- * @param $mem_id
- *
- * @return string
- */
- public function getMemExtKey($mem_id) {
- return 'me_key_'.$mem_id;
- }
- /**
- * 通过OpenId 获取玩家ID
- *
- * @param $mem_id
- *
- * @return array|bool
- */
- public function getMeInfoById($mem_id) {
- $_key = $this->getMemExtKey($mem_id);
- $_me_data_json = Cache::get($_key);
- $_me_data = json_decode($_me_data_json, true);
- if (!is_array($_me_data)) {
- $_me_data = $_me_data_json;
- }
- if (!is_array($_me_data) || empty($_me_data)) {
- $_me_data = (new MemberExtModel())->getExt($mem_id);
- if (empty($_me_data)) {
- return false;
- }
- $this->saveMeCache($mem_id, $_me_data);
- }
- return $_me_data;
- }
- /**
- * 获取玩家积分余额
- *
- * @param int $mem_id 玩家ID
- *
- * @return int|mixed
- */
- public function getMyItg($mem_id) {
- $_me_data = $this->getMeInfoById($mem_id);
- if (empty($_me_data)) {
- return 0;
- }
- return $_me_data['my_integral'];
- }
- /**
- * 保存玩家cache 数据
- *
- * @param string $mem_id
- * @param array $me_data
- * @param int $ttl
- *
- * @return bool
- */
- public function saveMeCache($mem_id, $me_data, $ttl = 3600) {
- $_key = $this->getMemExtKey($mem_id);
- return Cache::set($_key, json_encode($me_data), $ttl);
- }
- /**
- * 更新玩家扩展信息
- *
- * @param string $mem_id
- * @param array $me_data
- *
- * @param bool $rm_cache 是否强刷缓存
- *
- * @return bool
- */
- public function updateMeCache($mem_id, $me_data, $rm_cache = false) {
- if (true == $rm_cache) {
- $_key = $this->getMemExtKey($mem_id);
- Cache::rm($_key);
- $_me_data = $me_data;
- } else {
- $_old_data = $this->getMeInfoById($mem_id);
- $_me_data = array_merge($_old_data, $me_data);
- $this->saveMeCache($mem_id, $_me_data);
- }
- $_rs = (new MemberExtModel())->updateExt($_me_data, $mem_id);
- return $_rs;
- }
- /**
- * 判断是否封禁
- *
- * @param $mem_id
- *
- * @return bool
- */
- public function isBan($mem_id) {
- $_mem_info = $this->getInfoById($mem_id);
- if ($_mem_info['status'] == MemConst::STATUS_FORBID) {
- return true;
- }
- return false;
- }
- }
|