Server : nginx/1.20.1
System : Linux iZ2ze9ojcl78uluczwag69Z 4.18.0-240.22.1.el8_3.x86_64 #1 SMP Thu Apr 8 19:01:30 UTC 2021 x86_64
User : www ( 1000)
PHP Version : 7.3.28
Disable Function : passthru,exec,system,chroot,chgrp,chown,shell_exec,popen,proc_open,pcntl_exec,ini_alter,ini_restore,dl,openlog,syslog,readlink,symlink,popepassthru,pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,imap_open,apache_setenv
Directory :  /www/wwwroot/0531yanglao.com/app/admin/service/
Upload File :
Current Directory [ Writeable ] Root Directory [ Writeable ]


Current File : /www/wwwroot/0531yanglao.com/app/admin/service/SettingService.php
<?php
/*
 * @Description  : 设置
 * @Author       : https://github.com/skyselang
 * @Date         : 2021-03-09
 * @LastEditTime : 2021-03-20
 */

namespace app\admin\service;

use think\facade\Db;
use app\common\cache\SettingCache;

class SettingService
{
    // 默认设置id
    private static $setting_id = 1;

    /**
     * 验证码设置
     *
     * @param array  $param  验证码参数
     * @param string $method 请求方式
     *
     * @return array
     */
    public static function verify($param = [], $method = 'get')
    {
        if ($method == 'get') {
            $setting = self::setting();
            $verify  = $setting['verify'];
        } else {
            $setting_id = self::$setting_id;

            $verify['switch'] = $param['switch'];
            $verify['curve']  = $param['curve'];
            $verify['noise']  = $param['noise'];
            $verify['bgimg']  = $param['bgimg'];
            $verify['type']   = $param['type'];
            $verify['length'] = $param['length'];
            $verify['expire'] = $param['expire'];

            $update['verify']      = serialize($verify);
            $update['update_time'] = datetime();

            $setting = Db::name('setting')
                ->where('setting_id', $setting_id)
                ->update($update);

            if (empty($setting)) {
                exception();
            } else {
                SettingCache::del($setting_id);
            }
        }

        $VerifyService = new VerifyService();

        $verify = array_merge($verify, $VerifyService->verify());

        return $verify;
    }

    /**
     * Token设置
     *
     * @param array  $param  token参数
     * @param string $method 请求方式
     *
     * @return array
     */
    public static function token($param = [], $method = 'get')
    {
        if ($method == 'get') {
            $setting = self::setting();
            $token   = $setting['token'];
        } else {
            $setting_id = self::$setting_id;

            $token['iss'] = $param['iss'];
            $token['exp'] = $param['exp'];

            $update['token']       = serialize($token);
            $update['update_time'] = datetime();

            $setting = Db::name('setting')
                ->where('setting_id', $setting_id)
                ->update($update);

            if (empty($setting)) {
                exception();
            } else {
                SettingCache::del($setting_id);
            }
        }

        return $token;
    }

    /**
     * 默认设置
     *
     * @return array
     */
    public static function setting()
    {
        $setting_id = self::$setting_id;

        $setting = SettingCache::get($setting_id);

        if (empty($setting)) {
            $setting = Db::name('setting')
                ->where('setting_id', $setting_id)
                ->find();

            if (empty($setting)) {
                $setting['setting_id']  = $setting_id;
                $setting['verify']      = serialize([]);
                $setting['token']       = serialize([]);
                $setting['create_time'] = datetime();
                Db::name('setting')
                    ->insert($setting);
            }

            // 验证码
            $verify = unserialize($setting['verify']);
            if (empty($verify)) {
                $verify['switch'] = false;  //开关
                $verify['curve']  = false;  //曲线
                $verify['noise']  = false;  //杂点 
                $verify['bgimg']  = false;  //背景图
                $verify['type']   = 1;      //类型:1数字,2字母,3数字字母,4算术,5中文
                $verify['length'] = 4;      //位数3-6位
                $verify['expire'] = 180;    //有效时间(秒)
            }

            // Token
            $token = unserialize($setting['token']);
            if (empty($token)) {
                $token['iss'] = 'yylAdmin';  //签发者
                $token['exp'] = 7200;        //有效时间(小时)
            }

            $setting['verify']      = serialize($verify);
            $setting['token']       = serialize($token);
            $setting['update_time'] = datetime();
            Db::name('setting')
                ->where('setting_id', $setting_id)
                ->update($setting);

            SettingCache::set($setting_id, $setting);

            $setting['verify'] = $verify;
            $setting['token']  = $token;
        } else {
            $setting['verify'] = unserialize($setting['verify']);
            $setting['token']  = unserialize($setting['token']);
        }

        return $setting;
    }
}