* @version : HUOSDK 8.0 */ namespace huo\controller\app; use huo\controller\common\Base; use huo\logic\app\SdkPluginConfLogic; use huo\model\app\SdkPluginConfModel; use think\Cache; class SdkPluginCache extends Base { public static function ins() { return new static(); } protected $cache_tag = 'sdk_plugin_name'; /** * 获取插件KEY * * @param string $client_id * * @return string */ private function getPluginKey($client_id) { return 'plugin_client_id_key_'.$client_id; } /** * 获取插件列表 * * @param string client_id * * @return array|bool|mixed * @throws \think\Exception * @throws \think\db\exception\DataNotFoundException * @throws \think\db\exception\ModelNotFoundException * @throws \think\exception\DbException */ public function getInfoByClient($client_id) { $_key = $this->getPluginKey($client_id); $_plugin_data_json = Cache::get($_key); $_plugin_data = json_decode($_plugin_data_json, true); if(!is_array($_plugin_data)){ $_plugin_data = $_plugin_data_json; } if (!is_array($_plugin_data) || empty($_plugin_data)) { $_plugin_data = (new SdkPluginConfLogic())->getPluginByClientId($client_id); if (empty($_plugin_data)) { return false; } $this->savePluginsCache($client_id, $_plugin_data); } return $_plugin_data; } /** * 保存插件cache 数据 * * @param $client_id * @param $_plugin_data * @param int $ttl */ public function savePluginsCache($client_id, $_plugin_data, $ttl = 3600) { $_key = $this->getPluginKey($client_id); Cache::tag($this->cache_tag)->set($_key, json_encode($_plugin_data), $ttl); } /** * 更新插件信息 * * @param $param * @param $_map * * @return SdkPluginConfModel */ public function updateSdkPlugin($param, $_map) { Cache::clear($this->cache_tag); return (new SdkPluginConfModel())->update($param, $_map, true); } }