|
- <?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;
- }
- }
|