$type, 'name' => $name, 'value' => $value, ]; $query = ['type' => $type, 'name' => $name]; if(AdminTerminalEnum::isTenant()) { $options['tenant_id'] = request()->tenantId; $query['tenant_id'] = request()->tenantId; } $data = (AdminTerminalEnum::isTenant() ? new TenantConfig() : new Config())->where($query)->findOrEmpty(); if ($data->isEmpty()) { (AdminTerminalEnum::isTenant() ? new TenantConfig() : new Config())->create($options); } else { $data->value = $value; $data->save(); } // 返回原始值 return $original; } /** * @notes 获取配置值 * @param string $type * @param string $name * @param null $default_value * @return array|int|mixed|string * @author Tab * @date 2021/7/15 15:16 */ public static function get(string $type, string $name = '', $default_value = null) { // 初始化查询条件 $query = ['type' => $type, 'name' => $name]; // 当查询的为文件存储配置时获取平台端配置 if($type === 'storage') { $configClass = new Config(); }else{ // 根据是否为平台决定查询类 $configClass = !AdminTerminalEnum::isTenant() ? new Config() : new TenantConfig(); // 判断是否为租户端 if (AdminTerminalEnum::isTenant()) { $query['tenant_id'] = request()->tenantId; } } if (!empty($name)) { // 查询配置值 $value = $configClass->where($query)->value('value'); // 处理 JSON 数据 if ($value !== null) { $json = json_decode($value, true); if (json_last_error() === JSON_ERROR_NONE) { $value = $json; } } // 返回配置值 if ($value !== null) { // 处理特殊值 if ($value === 0 || $value === '0') { return $value; } return $value; } // 返回默认值 if ($default_value !== null) { return $default_value; } // 返回本地配置文件中的值 return config('project.' . $type . '.' . $name); } // 取某个类型下的所有name的值 $data = Config::where(['type' => $type])->column('value', 'name'); foreach ($data as $k => $v) { $json = json_decode($v, true); if (json_last_error() === JSON_ERROR_NONE) { $data[$k] = $json; } } if ($data) { return $data; } } }