|
|
<?php
namespace App\Service\v3\Implementations;
use App\Constants\v3\Goods as GoodsConstants;use App\Constants\v3\Store as StoreConstants;use App\Model\v3\Market;use App\Model\v3\Store;use App\Model\v3\Goods;use App\Service\v3\Interfaces\StoreServiceInterface;use Hyperf\Utils\ApplicationContext;
class StoreService implements StoreServiceInterface{
public function do() { // TODO: Implement do() method.
}
public function check($storeId) { $store = Store::query()->where([ ['id','=',$storeId], ['is_rest','=',0], ['status','=',2] ]) ->select('time1','time2','time3','time4') ->first(); if(!empty($store)){ $nowTime = time(); $startTime = strtotime(($store->time1)); if(!empty($store->time3) && !empty($store->time4)){ $time4 = strtotime(($store->time4)); $endTime = $time4; }else{ $time2 = strtotime(($store->time2)); $endTime = $time2; } if($nowTime > $startTime && $nowTime < $endTime){ return true; } } return false; }
public function undo() { // TODO: Implement undo() method.
}
public function detail($storeId) { return Store::query() ->with('market') ->where('id',$storeId) ->first(); }
public function getList($marketId, $page=1, $pagesize=10) { $market = Market::query()->withoutGlobalScope('normal')->find($marketId); $builder = Store::query(); $paginate = $builder->where('market_id',$marketId)->paginate($pagesize); $stores = $paginate->toArray(); $market->stores = $stores['data']; return ['has_more_pages' => $paginate->hasMorePages(), 'market' => $market]; }
public function getListByMarketId($marketId, $page=1, $pagesize=10) { $storeTable = ApplicationContext::getContainer()->get(Store::class)->getTable(); $goodsTable = ApplicationContext::getContainer()->get(Goods::class)->getTable();
$builder = Store::query() ->select(''.$storeTable.'.*') ->join($goodsTable,''.$storeTable.'.id', '=', ''.$goodsTable.'.store_id') ->where([''.$goodsTable.'.on_sale' => GoodsConstants::ON_SALE_YES]) ->where([''.$goodsTable.'.market_id' => $marketId]) ->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, ''.$storeTable.'.is_rest' => StoreConstants::IS_REST_NO]);
$paginate = $builder->groupBy(''.$storeTable.'.id')->orderBy($storeTable.'.is_rest','asc')->orderByDesc($storeTable.'.sales')->paginate($pagesize); $stores = $paginate->map(function ($item, $key) { $item->goods; return $item; })->all();
return ['has_more_pages' => $paginate->hasMorePages(), 'stores' => $stores]; }
public function updateIsRest($storeId) { $store = Store::query()->withoutGlobalScope('normal')->find($storeId); $isRest = $store->is_rest + 1; $store->is_rest = $isRest % 2; return $store->save(); }}
|