59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
			
		
		
	
	
			59 lines
		
	
	
		
			1.5 KiB
		
	
	
	
		
			PHP
		
	
	
		
			Executable File
		
	
| <?php
 | |
| 
 | |
| namespace app\model\mall;
 | |
| 
 | |
| use app\model\Base;
 | |
| use app\model\Spu;
 | |
| use Exception;
 | |
| use think\model\relation\HasOne;
 | |
| 
 | |
| class SpuLimitTime extends Base
 | |
| {
 | |
|     public const TYPE = 'limit_time';// 活动类型
 | |
| 
 | |
|     /**
 | |
|      * 获取限时折扣列表
 | |
|      *
 | |
|      * @param  array  $where
 | |
|      * @param  array  $field
 | |
|      * @param  int  $page
 | |
|      * @param  int  $size
 | |
|      * @param  callable|null  $callable
 | |
|      * @param  array  $order
 | |
|      * @return array
 | |
|      * @throws Exception
 | |
|      */
 | |
|     public static function fetchList(array $where, array $field = [], int $page = 1, int $size = 20, callable $callable = null, array $order = []): array
 | |
|     {
 | |
|         $res = SpuLimitTime::findList($where, $field, $page, $size, $callable, $order);
 | |
| 
 | |
|         $res['list'] = $res['list']->each(function ($item) {
 | |
|             $statusText = '进行中';
 | |
|             $now        = date('Y-m-d H:i:s');
 | |
|             if ($item['begin_at'] > $now) {
 | |
|                 $statusText = '未开始';
 | |
|             }
 | |
| 
 | |
|             if ($item['begin_at'] < $now && $now < $item['end_at']) {
 | |
|                 $statusText = '进行中';
 | |
|             }
 | |
| 
 | |
|             if ($item['end_at'] < $now) {
 | |
|                 $statusText = '已结束';
 | |
|             }
 | |
| 
 | |
|             $item->activity_status = $statusText;
 | |
|             $item->status_text = $item->is_restore == SpuLimitTime::COMMON_ON ? '暂停' : '开启';
 | |
|         });
 | |
| 
 | |
|         return $res;
 | |
|     }
 | |
| 
 | |
|     /**
 | |
|      * @return HasOne
 | |
|      */
 | |
|     public function spu(): HasOne
 | |
|     {
 | |
|         return $this->hasOne(Spu::class, 'id', 'spu_id');
 | |
|     }
 | |
| } |