| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 | <?php/** * Created by PhpStorm. * User: zhengmingwei * Date: 2020/2/9 * Time: 6:29 PM */namespace addons\unishop\model;use addons\unishop\extend\Hashids;use think\Model;use traits\model\SoftDelete;class FlashSale extends Model{    use SoftDelete;    // 表名    protected $name = 'unishop_flash_sale';    // 开启自动写入时间戳字段    protected $autoWriteTimestamp = 'int';    // 定义时间戳字段名    protected $createTime = 'createtime';    protected $updateTime = 'updatetime';    protected $deleteTime = 'deletetime';    // 已归档    const STATUS_YES = 1; // 是    const STATUS_NO = 0; // 否    // 已上架    const SWITCH_YES = 1; // 是    const SWITCH_NO = 0; // 否    // 隐藏属性    protected $hidden = [        'id'    ];    // 追加属性    protected $append = [        'flash_id',        'starttime_hour',        'state',        'current',    ];    /**     * Encode flash_id     */    public function getFlashIdAttr($value, $data) {        return Hashids::encodeHex($data['id']);    }    /**     * Format time 'H:i'     */    public function getStarttimeHourAttr($value, $data) {        return date('H:i', $data['starttime']);    }    /**     * Now in progress     */    public function getCurrentAttr($value, $data) {        if (date('Y-m-d H:00:00', time()) == date('Y-m-d H:00:00', $data['starttime'])) {            return true;        } else {            return false;        }    }    /**     * State     */    public function getStateAttr($value, $data) {        $time = time();        if (date('Y-m-d H:00:00', $time) == date('Y-m-d H:00:00', $data['starttime'])) {            return 2; // '抢购进行中';        } else if ($data['starttime'] < $time) {            return 1; // '已开抢';        } else {            return 0; // '未开始';        }    }    /**     * 关联秒杀产品表     * @return \think\model\relation\HasMany     */    public function product()    {        return $this->hasMany('flashProduct', 'flash_id', 'id');    }    /**     * 获取离开始时间的倒计时     * @param $targetTime     * @return bool     */    public static function countdown($targetTime)    {        $time = $targetTime - time();        if ($time > 0) {            // 如果time等于0,那么时间是从1970-01-01 08:00:00开始的            $countdown['day'] = intval(date('d', $time) - 1);            $countdown['hour'] = intval(date('H', $time) - 8);            $countdown['minute'] = intval(date('i', $time));            $countdown['second'] = intval(date('s', $time));            foreach ($countdown as &$item) {                if ($item < 0) $item = 0;            }            return $countdown;        }        return false;    }}
 |