GlobalConfigService.php 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. <?php
  2. /**
  3. * Created by PhpStorm.
  4. * User: ywl
  5. * Date: 2017/4/14
  6. * Time: 11:38
  7. */
  8. namespace App\Web\Services;
  9. use App\Exceptions\ApiException;
  10. use App\Services\CommonUserBaseService;
  11. use App\Web\Models\SysGlobalConfigModel;
  12. use Illuminate\Support\Facades\Cache;
  13. class GlobalConfigService extends CommonUserBaseService
  14. {
  15. protected $cache = true;
  16. protected $cacheBucket = 'GlobalConfig:';
  17. /**
  18. * WebService construct
  19. * @param SysGlobalConfigModel $model
  20. * */
  21. public function __construct(SysGlobalConfigModel $model)
  22. {
  23. $this->model = $model;
  24. }
  25. /**
  26. * 获取全局配置列表
  27. * */
  28. public function getGlobalConfig($params){
  29. $data=$this->getCacheGlobalConfigData();
  30. if(empty($data)){
  31. $list= $this->model->getGlobalConfigList($params);
  32. if(!empty($list)){
  33. $data=[];
  34. foreach ($list as $value){
  35. $value['value']=json_decode($value['value'],true);
  36. $data[]=$value;
  37. }
  38. $this->setGlobalConfigCache($data);
  39. }
  40. }
  41. return $data;
  42. }
  43. /**
  44. * 文章全局配置数据保存
  45. * */
  46. public function saveGlobalConfigData($params){
  47. $saveData=[];
  48. if(!empty($params['id'])){
  49. $saveData['id']=$params['id'];
  50. if(isset($params['global_key'])){
  51. $globalKeyUnique =$this->model->checkGlobalKeyUnique($params['global_key'],$params['id']);
  52. if (!$globalKeyUnique) {
  53. throw new ApiException(10018, ['name' => $params['global_key']]);
  54. }
  55. $saveData['global_key']=$params['global_key'];
  56. }
  57. if(isset($params['label'])){
  58. $saveData['label']=empty($params['label'])?'':$params['label'];
  59. }
  60. if(isset($params['value'])){
  61. $saveData['value']=empty($params['value'])?'':json_encode($params['value']);
  62. }
  63. }else{
  64. if(isset($params['global_key'])){
  65. $globalKeyUnique =$this->model->checkGlobalKeyUnique($params['global_key']);
  66. if (!$globalKeyUnique) {
  67. throw new ApiException(10018, ['name' => $params['global_key']]);
  68. }
  69. $saveData['global_key']=$params['global_key'];
  70. }
  71. $saveData['label']=empty($params['label'])?'':$params['label'];
  72. $saveData['value']=empty($params['value'])?'':json_encode($params['value']);
  73. }
  74. $id= $this->model->saveGlobalConfigData($saveData);
  75. $this->clearGlobalConfigCache();
  76. return $id;
  77. }
  78. /**
  79. * 获取全局配置列表
  80. * */
  81. public function getGlobalConfigInfo($params){
  82. $info= $this->model->getGlobalConfigInfo($params);
  83. return $info;
  84. }
  85. /**
  86. * 获取页面详情
  87. * @return array
  88. */
  89. public function getCacheGlobalConfigData()
  90. {
  91. $key = $this->getCacheGlobalConfigKey();
  92. return Cache::get($key);
  93. }
  94. /**
  95. * 获取广告缓存key
  96. * @param $urla
  97. * @return string
  98. */
  99. private function getCacheGlobalConfigKey()
  100. {
  101. $pageParamsStr = 'web-global-config-list:' . md5('web-global-config-list');
  102. return $this->cacheBucket . $pageParamsStr;
  103. }
  104. /**
  105. * 缓存广告数据
  106. * @param array $GlobalConfigData
  107. */
  108. private function setGlobalConfigCache($GlobalConfigData)
  109. {
  110. Cache::put($this->getCacheGlobalConfigKey(), $GlobalConfigData, config('cache.page_time'));
  111. }
  112. /**
  113. * 清除广告数据缓存
  114. * */
  115. public function clearGlobalConfigCache()
  116. {
  117. $this->removeByKey('web-global-config-list');
  118. }
  119. }