aogg
12/19/2018 - 11:57 AM

Model业务类库

Model业务类库

<?php
/**
 * Created by PhpStorm.
 * User: code
 * Date: 2018-12-19
 * Time: 15:52
 */

namespace App\Repositories\Common\Traits\ModelFieldTraits;


use Illuminate\Support\Carbon;

/**
 * 指定 时间区间 有效的业务
 *
 * 如:
 * 1、任何时刻开启  (0 到 86400)
 * 2、每天指定时间段开启  (123 到 70000)
 * 3、指定日期开启 (2018-12-19 16:03:37 到 2018-12-29 16:03:40)
 *
 * 数据库设计:
 * type,start_time,end_time
 * 其中时间用int来保存,非日期的都通过type来保存为(秒)的时间
 */
trait ModelTypeTimeRangeTrait
{
    /**
     *
     *
     * @param bool $intBool
     * @param int $timeValue
     * @return int
     */
    public static function getTodayFullTime($intBool, $timeValue)
    {
        return $intBool ? Carbon::today()->addSecond($timeValue)->getTimestamp() : $timeValue;
    }

    /**
     * 判断当前时间是否在区间内
     *
     * @param bool $intBool
     * @param int $startTime
     * @param int $endTime
     * @return bool
     */
    public static function ifNowBetween($intBool, $startTime, $endTime)
    {

        return Carbon::now()->between(
            Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $startTime)),
            Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $endTime))
        );
    }

    /**
     * 根据指定的时间戳,判断当前时间是否在区间内
     *
     * @param int $timestamp
     * @param bool $intBool
     * @param int $startTime
     * @param int $endTime
     * @return bool
     */
    public static function ifNowBetweenByTimestamp($timestamp, $intBool, $startTime, $endTime)
    {
        return Carbon::createFromTimestamp($timestamp)->between(
            Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $startTime)),
            Carbon::createFromTimestamp(self::getTodayFullTime($intBool, $endTime))
        );
    }
}