* @version : HUOSDK 8.0 */ namespace huo\controller\rate; use huo\controller\common\Base; use huo\model\rate\AgentGameRateModel; use huo\model\rate\GameRateModel; use think\Cache; class RateCache extends Base { public static function ins() { return new static(); } /** * 获取折扣KEY * * @param int $app_id * * @return string */ private function getGameRateKey($app_id) { return 'game_rate_key_'.$app_id; } /** * 获取游戏折扣 * * @param string $app_id * * @return array|bool|mixed */ public function getInfoByAppId($app_id) { $_key = $this->getGameRateKey($app_id); $_game_rate_data_json = Cache::get($_key); $_game_rate_data = json_decode($_game_rate_data_json, true); if (!is_array($_game_rate_data)) { $_game_rate_data = $_game_rate_data_json; } if (!is_array($_game_rate_data) || empty($_game_rate_data)) { $_game_rate_data = (new GameRateModel())->getInfoById($app_id); if (empty($_game_rate_data)) { return false; } $this->saveGameRateCache($app_id, $_game_rate_data); } return $_game_rate_data; } /** * 保存游戏折扣数据 * * @param $app_id * @param $game_rate_data * @param int $ttl */ public function saveGameRateCache($app_id, $game_rate_data, $ttl = 3600) { $_key = $this->getGameRateKey($app_id); Cache::set($_key, json_encode($game_rate_data), $ttl); } /** * 更新游戏折扣信息 * * @param string $app_id * @param array $game_rate_data * * @param bool $rm_cache 是否删除缓存 * * @return bool */ public function updateGameRate($app_id, $game_rate_data, $rm_cache = false) { if (true == $rm_cache) { $_key = $this->getGameRateKey($app_id); Cache::rm($_key); $_game_rate_data = $game_rate_data; } else { $_old_data = $this->getInfoByAppId($app_id); $_game_rate_data = array_merge($_old_data, $game_rate_data); $this->saveGameRateCache($app_id, $_game_rate_data); } return (new GameRateModel())->updateData($_game_rate_data, $_game_rate_data['app_id']); } /** * 获取游戏渠道折扣KEY * * @param int $app_id * @param int $agent_id * * @return string */ private function getAgentGameRateKey($app_id, $agent_id) { return 'ag_rate_key_'.$app_id.'_'.$agent_id; } /** * 获取游戏渠道折扣 * * @param int $app_id * @param int $agent_id * * @return array|bool|mixed */ public function getInfoByAppIdAgentId($app_id, $agent_id) { $_key = $this->getAgentGameRateKey($app_id, $agent_id); $_ag_rate_data_json = Cache::get($_key); $_ag_rate_data = json_decode($_ag_rate_data_json, true); if (!is_array($_ag_rate_data)) { $_ag_rate_data = $_ag_rate_data_json; } if (!is_array($_ag_rate_data) || empty($_ag_rate_data)) { $_ag_rate_data = (new AgentGameRateModel())->getInfoByGameAgent($app_id, $agent_id); if (empty($_ag_rate_data)) { return false; } $this->saveAgRateCache($app_id, $agent_id, $_ag_rate_data); } return $_ag_rate_data; } /** * 保存游戏渠道折扣数据 * * @param int $app_id * @param int $agent_id * @param array $ag_rate_data * @param int $ttl */ public function saveAgRateCache($app_id, $agent_id, $ag_rate_data, $ttl = 3600) { $_key = $this->getAgentGameRateKey($app_id, $agent_id); Cache::set($_key, json_encode($ag_rate_data), $ttl); } /** * 更新游戏渠道折扣信息 * * @param int $app_id * @param int $agent_id * @param array $ag_rate_data * * @param bool $rm_cache 是否删除缓存 * * @return bool */ public function updateAgRate($app_id, $agent_id, $ag_rate_data, $rm_cache = false) { if (true == $rm_cache) { $_key = $this->getAgentGameRateKey($app_id, $agent_id); Cache::rm($_key); $_ag_rate_data = $ag_rate_data; } else { $_old_data = $this->getInfoByAppIdAgentId($app_id, $agent_id); $_ag_rate_data = array_merge($_old_data, $ag_rate_data); $this->saveAgRateCache($app_id, $agent_id, $_ag_rate_data); } return (new AgentGameRateModel())->updateData($_ag_rate_data, $_ag_rate_data['ag_id']); } }