| 
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -5,8 +5,10 @@ namespace App\Service\v3\Implementations; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Commons\Log; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Constants\v3\ActivityType; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Constants\v3\ErrorCode; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Constants\v3\Goods as GoodsConstants; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Constants\v3\LogLabel; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Constants\v3\SsdbKeys; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Model\v3\Store; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Service\v3\Interfaces\GoodsActivityServiceInterface; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\Service\v3\Interfaces\GoodsInventoryServiceInterface; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					use App\TaskWorker\SSDBTask; | 
				
			
			
		
	
	
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
				
				 | 
				
					@ -191,4 +193,45 @@ class GoodsActivityService implements GoodsActivityServiceInterface | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return true; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    public function getList($marketId,$page,$pagesize) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $storeTable = ApplicationContext::getContainer()->get(Store::class)->getTable(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $goodsTable = ApplicationContext::getContainer()->get(GoodsActivity::class)->getTable(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $builder = GoodsActivity::query() | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->join($storeTable, ''.$storeTable.'.id', '=', ''.$goodsTable.'.store_id') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->with(['store']) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //->where([''.$goodsTable.'.type' => $type])
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where(function ($query) use ($marketId, $goodsTable) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                $query->whereJsonContains(''.$goodsTable.'.market_ids', [(string)$marketId]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    ->orWhereJsonLength(''.$goodsTable.'.market_ids', '=', 0); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where([''.$goodsTable.'.on_sale' => GoodsConstants::ON_SALE_YES]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // ->where(function ($query) use ($goodsTable) {
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            //     $query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1);
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            // })
 | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->whereRaw(''.$goodsTable.'.deleted_at IS NULL') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where([''.$storeTable.'.market_id' => $marketId]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where([''.$storeTable.'.is_open' => \App\Constants\v3\Store::IS_OPEN_YES]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where([''.$storeTable.'.is_rest' => \App\Constants\v3\Store::IS_REST_NO]) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where('time1', '<=', date('H:i')) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where(function ($query) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                $query->where('time2', '>=', date('H:i')) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					                    ->orWhere('time4', '>=', date('H:i')); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            }) | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->where(''.$goodsTable.'.expire_time', '>', time()); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $paginate = $builder->select(''.$goodsTable.'.*')->addSelect(''.$goodsTable.'.sales as total_sales') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->orderBy(''.$goodsTable.'.sort', 'DESC') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->orderBy(''.$goodsTable.'.expire_time', 'ASC') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->orderBy(''.$goodsTable.'.created_at', 'DESC') | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            ->paginate($pagesize); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $goodsArr = $paginate->toArray(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $goods = collect($goodsArr['data']); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $goods = $goods->sortBy(function ($product, $key) { | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					            return $product['noneffective_note']; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        }); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        $goods = $goods->values()->all(); | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					        return  ['has_more_pages' => $paginate->hasMorePages(), 'goods' => $goods]; | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					    } | 
				
			
			
		
	
		
			
				
					 | 
					 | 
				
				 | 
				
					} |