| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126 | 
							- <?php
 
- namespace app\common\Service;
 
- use app\common\model\ShopConfig as ShopConfigModel;
 
- use app\common\Enum\ChannelEnum;
 
- use think\Cache;
 
- use think\Db;
 
- /**
 
-  * 商城配置服务类
 
-  */
 
- class ShopConfigService
 
- {
 
-      /**
 
-      * 获取配置组
 
-      *
 
-      * @param string $code
 
-      * @param boolean $cache
 
-      * @return array
 
-      */
 
-     public static function getConfigs($code, $cache = true)
 
-     {
 
-         // 从缓存中获取
 
-         if ($cache) {
 
-             $config = cache("config:{$code}");
 
-             if (empty($config)) {
 
-                 $config = self::getConfigs($code, false);
 
-             }
 
-         }
 
-         // 从数据库中查找
 
-         if (!$cache) {
 
-             $row = ShopConfigModel::where('code', $code)->find();
 
-             if(!$row) return null;
 
-             if($row['type'] !== 'group') {
 
-                 $config = $row->value;
 
-             }else {
 
-                 $config = [];
 
-                 $list = ShopConfigModel::where('parent_code', $code)->select();
 
-                 foreach ($list as &$row) {
 
-                     if ($row['type'] === 'group') {
 
-                         $row->value = self::getConfigs($row->code, false);
 
-                     } else {
 
-                         cache("config:{$row->code}", $row->value);
 
-                     }
 
-                  $config[self::getShortCode($row->toArray())] = $row->value;
 
-                 }
 
-             }
 
-             // 设置配置缓存
 
-             cache("config:{$code}", $config);
 
-         }
 
-         return $config;
 
-     }
 
-     /**
 
-      * 获取单一配置项
 
-      *
 
-      * @param string $code
 
-      * @param boolean $cache
 
-      * @return mixed
 
-      */
 
-     public static function getConfigField($code, $cache = true)
 
-     {
 
-         // 从缓存中获取
 
-         if ($cache) {
 
-             $config = cache("config:{$code}");
 
-             if (empty($config)) {
 
-                 $config = self::getConfigField($code, false);
 
-             }
 
-         }
 
-         // 从数据库中查找
 
-         if (!$cache) {
 
-             $config = ShopConfigModel::where('code', $code)->value('value');
 
-             // 设置配置缓存
 
-             cache("config:{$code}", $config);
 
-         }
 
-         return $config;
 
-     }
 
-     private static function getShortCode($config)
 
-     {
 
-         if (!empty($config['parent_code'])) {
 
-             return str_replace("{$config['parent_code']}.", "", $config['code']);
 
-         }
 
-         return $config['code'];
 
-     }
 
-     /**
 
-      * 更新配置
 
-      *
 
-      * @param string $code
 
-      * @param array $configParams
 
-      * @return void
 
-      */
 
-     public static function setConfigs(string $code, array $configParams)
 
-     {
 
-         foreach ($configParams as $configKey => $configValue) {
 
-             self::setConfigField($code . '.' . $configKey, $configValue);
 
-         }
 
-       
 
-         self::getConfigs(explode('.', $code)[0], false);
 
-         return self::getConfigs($code);
 
-     }
 
-     /**
 
-      * 更新配置项
 
-      */
 
-     private static function setConfigField($code, $value)
 
-     {
 
-         $config = ShopConfigModel::where('code', $code)->find();
 
-     
 
-         if ($config) {
 
-             if ($config['type'] === 'group') {
 
-                 foreach ($value as $k => $v) {
 
-                     self::setConfigField($code . '.' . $k, $v);
 
-                 }
 
-             } else {
 
-                 $config->value = $value;
 
-                 $config->save();
 
-             }
 
-         }
 
-     }
 
- } 
 
 
  |