OptionCache.php 2.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. <?php
  2. /**
  3. * OptionCache.php UTF-8
  4. *
  5. *
  6. * @date : 2018/5/3 15:46
  7. *
  8. * @license 这不是一个自由软件,未经授权不许任何使用和传播。
  9. * @author : wuyonghong <wyh@huosdk.com>
  10. * @version : HUOSDK 8.0
  11. */
  12. namespace huo\controller\wap;
  13. use huo\controller\common\Base;
  14. use huo\model\option\OptionModel;
  15. use think\Cache;
  16. class OptionCache extends Base {
  17. public static function ins() {
  18. return new static();
  19. }
  20. /**
  21. * 获取optionKEY
  22. *
  23. * @param string $option_id
  24. *
  25. * @return string
  26. */
  27. private function getOptionKey($option_name) {
  28. return 'option_name_key_'.$option_name;
  29. }
  30. /**
  31. * 获取Option信息
  32. *
  33. * @param string $option_id
  34. *
  35. * @return array|bool|mixed
  36. */
  37. public function getInfoByOptionName($option_name, $autoload = 1, $auto_add = false, $auto_add_data = '') {
  38. $_key = $this->getOptionKey($option_name);
  39. $_option_data_json = Cache::get($_key);
  40. $_option_data = json_decode($_option_data_json, true);
  41. if (!is_array($_option_data)) {
  42. $_option_data = $_option_data_json;
  43. }
  44. if (!is_array($_option_data) || empty($_option_data)) {
  45. $_option_data = (new OptionModel())->getOptionData($option_name, $autoload, $auto_add, $auto_add_data);
  46. if (empty($_option_data)) {
  47. return false;
  48. }
  49. $this->saveOptionCache($option_name, $_option_data);
  50. }
  51. return $_option_data;
  52. }
  53. /**
  54. * 保存Option cache 数据
  55. *
  56. * @param $option_id
  57. * @param $_option_data
  58. * @param int $ttl
  59. */
  60. public function saveOptionCache($option_name, $_option_data, $ttl = 3600) {
  61. $_key = $this->getOptionKey($option_name);
  62. Cache::set($_key, json_encode($_option_data), $ttl);
  63. }
  64. /**
  65. * 更新option信息
  66. *
  67. * @param string $option_name
  68. * @param array $option_data
  69. *
  70. * @return bool
  71. */
  72. public function updateOption($option_name, $option_data) {
  73. $this->saveOptionCache($option_name, $option_data);
  74. $_rs = (new OptionModel())->saveOptionData($option_name, $option_data);
  75. $this->deleteOptionCache($option_name);
  76. return $_rs;
  77. }
  78. /**
  79. * 删除option cache 数据
  80. *
  81. * @param string $option_name
  82. *
  83. * @return void
  84. * @author chenbingling <cbl@huosdk.com>
  85. * @date 2018/5/9 14:15
  86. */
  87. public function deleteOptionCache($option_name) {
  88. $_key = $this->getOptionKey($option_name);
  89. Cache::rm($_key);
  90. }
  91. }