SdkPluginCache.php 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /**
  3. * SdkPluginCache.php UTF-8
  4. * SDK更新缓存
  5. *
  6. * @date : 2018/6/1 14:32
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : chenbingling <cbl@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\app;
  13. use huo\controller\common\Base;
  14. use huo\logic\app\SdkPluginConfLogic;
  15. use huo\model\app\SdkPluginConfModel;
  16. use think\Cache;
  17. class SdkPluginCache extends Base {
  18. public static function ins() {
  19. return new static();
  20. }
  21. protected $cache_tag = 'sdk_plugin_name';
  22. /**
  23. * 获取插件KEY
  24. *
  25. * @param string $client_id
  26. *
  27. * @return string
  28. */
  29. private function getPluginKey($client_id) {
  30. return 'plugin_client_id_key_'.$client_id;
  31. }
  32. /**
  33. * 获取插件列表
  34. *
  35. * @param string client_id
  36. *
  37. * @return array|bool|mixed
  38. * @throws \think\Exception
  39. * @throws \think\db\exception\DataNotFoundException
  40. * @throws \think\db\exception\ModelNotFoundException
  41. * @throws \think\exception\DbException
  42. */
  43. public function getInfoByClient($client_id) {
  44. $_key = $this->getPluginKey($client_id);
  45. $_plugin_data_json = Cache::get($_key);
  46. $_plugin_data = json_decode($_plugin_data_json, true);
  47. if(!is_array($_plugin_data)){
  48. $_plugin_data = $_plugin_data_json;
  49. }
  50. if (!is_array($_plugin_data) || empty($_plugin_data)) {
  51. $_plugin_data = (new SdkPluginConfLogic())->getPluginByClientId($client_id);
  52. if (empty($_plugin_data)) {
  53. return false;
  54. }
  55. $this->savePluginsCache($client_id, $_plugin_data);
  56. }
  57. return $_plugin_data;
  58. }
  59. /**
  60. * 保存插件cache 数据
  61. *
  62. * @param $client_id
  63. * @param $_plugin_data
  64. * @param int $ttl
  65. */
  66. public function savePluginsCache($client_id, $_plugin_data, $ttl = 3600) {
  67. $_key = $this->getPluginKey($client_id);
  68. Cache::tag($this->cache_tag)->set($_key, json_encode($_plugin_data), $ttl);
  69. }
  70. /**
  71. * 更新插件信息
  72. *
  73. * @param $param
  74. * @param $_map
  75. *
  76. * @return SdkPluginConfModel
  77. */
  78. public function updateSdkPlugin($param, $_map) {
  79. Cache::clear($this->cache_tag);
  80. return (new SdkPluginConfModel())->update($param, $_map, true);
  81. }
  82. }