AddonsConfigService.php 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. <?php
  2. namespace services\common;
  3. use Yii;
  4. use common\enums\AppEnum;
  5. use common\models\common\AddonsConfig;
  6. /**
  7. * Class AddonsConfigService
  8. * @package services\common
  9. */
  10. class AddonsConfigService
  11. {
  12. /**
  13. * @param $name
  14. * @param $merchant_id
  15. * @return array|\yii\db\ActiveRecord|null
  16. */
  17. public function findByName($name, $app_id, $merchant_id = 0)
  18. {
  19. return AddonsConfig::find()
  20. ->where(['addon_name' => $name, 'app_id' => $app_id])
  21. ->andFilterWhere(['merchant_id' => $merchant_id])
  22. ->one();
  23. }
  24. /**
  25. * 查找缓存配置
  26. *
  27. * @param string $name
  28. * @param int $merchant_id
  29. * @param false $noCache
  30. * @return array|mixed
  31. */
  32. public function findConfigByCache($name = '', $merchant_id = 0, $noCache = false)
  33. {
  34. empty($name) && $name = Yii::$app->params['addon']['name'];
  35. $app_id = $merchant_id > 0 ? AppEnum::MERCHANT : AppEnum::BACKEND;
  36. $cacheKey = 'rfAddonConfig'. ':' . $app_id . ':' . $name;
  37. if (!$noCache && Yii::$app->cache->exists($cacheKey)) {
  38. return Yii::$app->cache->get($cacheKey);
  39. }
  40. $config = $this->findByName($name, $app_id, $merchant_id);
  41. Yii::$app->cache->set($cacheKey, $config->data ?? [], 60);
  42. return $config->data ?? [];
  43. }
  44. /**
  45. * 查询配置
  46. *
  47. * @param string $name
  48. * @param string $app_id
  49. * @param int $merchant_id
  50. * @return array|mixed
  51. */
  52. public function getConfig($name = '', $merchant_id = 0)
  53. {
  54. empty($name) && $name = Yii::$app->params['addon']['name'];
  55. $app_id = $merchant_id > 0 ? AppEnum::MERCHANT : AppEnum::BACKEND;
  56. $config = $this->findByName($name, $app_id, $merchant_id);
  57. return $config->data ?? [];
  58. }
  59. /**
  60. * 写入配置
  61. *
  62. * @param array $config
  63. * @param string $name
  64. * @param int $merchant_id
  65. * @param int $store_id
  66. * @return array|mixed
  67. */
  68. public function setConfig($config = [], $name = '', $merchant_id = 0, $store_id = 0)
  69. {
  70. empty($name) && $name = Yii::$app->params['addon']['name'];
  71. $app_id = $merchant_id > 0 ? AppEnum::MERCHANT : AppEnum::BACKEND;
  72. if (empty($configModel = $this->findByName($name, $app_id, $merchant_id))) {
  73. $configModel = new AddonsConfig();
  74. $configModel->addon_name = $name;
  75. $configModel->merchant_id = $merchant_id;
  76. $configModel->store_id = $store_id;
  77. $configModel->app_id = $app_id;
  78. $configModel->data = [];
  79. }
  80. $configModel->data = array_merge($configModel->data, $config);
  81. $configModel->save();
  82. // 清空缓存
  83. return $this->findConfigByCache($name, $merchant_id, true);
  84. }
  85. }
粤ICP备19079148号