<?php
// +----------------------------------------------------------------------
// | onezan-admin 快速开发的管理平台
// +----------------------------------------------------------------------
// | 官方网址：https://www.onezan.cn
// +----------------------------------------------------------------------
// | onezan团队 版权所有 开源版本可自由商用
// +----------------------------------------------------------------------
// | Author: 543885307@qq.com
// +----------------------------------------------------------------------
namespace app\service;

use app\model\UserLevel;
use think\facade\Db;


/**
 * 系统配置服务
 * @package app\service
 */
class ConfigService
{
     /**
     * 获取整数配置
     * @param string $key
     * @param int $default
     * @return int
     */
    public static function getInt(string $key, int $default = 0): int
    {
        try {
            $v = Db::name('sys_system_config')->where('key', $key)->value('value');
            if (is_numeric($v)) return (int)$v;
            if (is_string($v) && trim($v) !== '' && is_numeric(trim($v))) return (int)trim($v);
        } catch (\Throwable $e) {
        }
        return $default;
    }

     /**
     * 获取字符串配置
     * @param string $key
     * @param string $default
     * @return string
     */
    public static function getString(string $key, string $default = ''): string
    {
        try {
            $v = Db::name('sys_system_config')->where('key', $key)->value('value');
            if (is_string($v)) return (string)$v;
            if ($v !== null) return (string)$v;
        } catch (\Throwable $e) {
        }
        return $default;
    }

     /**
     * 获取用户等级配置
     * @return array
     */
    public static function getUserLevels(): array
    {
        try {
            return UserLevel::where('status', 1)
                ->order('sort', 'asc')
                ->order('id', 'asc')
                ->field('id,name,code,description')
                ->select()
                ->toArray();
        } catch (\Throwable $e) {
            return [];
        }
    }

     /**
     * 获取注册配置
     * @return int
     */
    public static function getRegisterEnabled(): int
    {
        $v = self::getInt('register_enabled', 1);
        return $v ? 1 : 0;
    }

     /**
     * 获取图片压缩阈值配置
     * @return int
     */
    public static function getImageCompressThresholdKB(): int
    {
        $v = self::getInt('image_compress_threshold', 500);
        return $v < 0 ? 0 : $v;
    }
}
