SystemSettingTrait.php 2.5 KB
<?php
/**
+-----------------------------------------------------------------------------------------------------------------------
 * UserWallet Trait
+-----------------------------------------------------------------------------------------------------------------------
 *
 * PHP version 7
 *
 * @category  App\Models\Traits
 * @package   App\Models\Traits
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年5月20日09:32:48
 * @copyright 2020-2021 Richer (http://www.pwyld.com/)
 * @license   http://www.pwyld.com/ License
 * @link      http://www.pwyld.com/
 */
namespace App\Models\Traits;

use App\Models\Order\Order;
use App\Models\System\SystemSetting;
use Illuminate\Support\Facades\Cache;

/**
 * Trait SystemSettingTrait
 *
 * @category  App\Models\Traits
 * @package   App\Models\Traits
 * @author    Richer <yangzi1028@163.com>
 * @date      2022年5月20日09:32:48
 * @copyright 2020-2021 Richer (http://www.pwyld.com/)
 * @license   http://www.pwyld.com/ License
 * @link      http://www.pwyld.com/
 */
trait SystemSettingTrait
{

    /**
     * 系统参数
     *
     * @param string $operate
     * @param null $model
     * @param string $key
     * @return mixed
     */
    public function getSystemSetting($operate = 'get', $model = null, $key = '')
    {
        //
        $cache_key  = 'system-setting';
        $minutes    = 60 * 60 * 24;

        // 更新的时候删除缓存
        $option = [];
        if ($operate === 'get') {
            // 从 Cache 中获取
            $option = Cache::get($cache_key);
        }
        if (!$option) {
            if ($model) {
                Cache::put($cache_key, $option, $minutes);
            } else {
                $option = SystemSetting::where('status', config('constants.STATUS_OK'))->latest()->first();
                Cache::put($cache_key, $option, $minutes);
            }
        }

        if ($key) {
            return $option->$key;
        }
        return $option;
    }

    /**
     * 获取积分兑换比例
     *
     * @return mixed
     */
    public function getPointsDeductRate()
    {
        $setting = optional($this->getSystemSetting())->points_deduct_rate;
        if (!$setting) {
            return Order::POINT_EXCHANGE_RATE;
        }

        return 1 / $setting;
    }

    /**
     * 获取积分兑换上限
     *
     * @return mixed
     */
    public function getPointsDeductLimit()
    {
        $setting = optional($this->getSystemSetting())->points_deduct_limit;
        if (!$setting) {
            return 0.1;
        }

        return $setting / 100;
    }
}