Browse Source

筛滤商品

master
weigang 5 years ago
parent
commit
06f323d6d3
  1. 10
      app/Controller/v3/GoodsRecommendController.php
  2. 2
      app/Request/v3/GoodsRequest.php
  3. 33
      app/Service/v3/Implementations/ActivityService.php
  4. 12
      app/Service/v3/Implementations/SearchService.php

10
app/Controller/v3/GoodsRecommendController.php

@ -51,6 +51,11 @@ class GoodsRecommendController extends BaseController
->whereRaw(''.$goodsTable.'.deleted_at IS NULL') ->whereRaw(''.$goodsTable.'.deleted_at IS NULL')
->where(function ($query) use ($goodsTable) { ->where(function ($query) use ($goodsTable) {
$query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1); $query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1);
})
->where('time1', '<=', date('H:i'))
->where(function ($query) {
$query->where('time2', '>=', date('H:i'))
->orWhere('time4', '>=', date('H:i'));
}); });
// $builder = Goods::query()->with('store') // $builder = Goods::query()->with('store')
@ -122,6 +127,11 @@ class GoodsRecommendController extends BaseController
->where(function ($query) use ($goodsTable) { ->where(function ($query) use ($goodsTable) {
$query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1); $query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1);
}) })
->where('time1', '<=', date('H:i'))
->where(function ($query) {
$query->where('time2', '>=', date('H:i'))
->orWhere('time4', '>=', date('H:i'));
})
->inRandomOrder() ->inRandomOrder()
->limit(20) ->limit(20)
->get()->toArray(); ->get()->toArray();

2
app/Request/v3/GoodsRequest.php

@ -15,7 +15,7 @@ class GoodsRequest extends BaseFormRequest
public function rules(): array public function rules(): array
{ {
return [ return [
'goods_id' => 'required|nonempty|integer|exists_enable:lanzu_goods_new,id,on_sale=1',
'goods_id' => 'required|nonempty|integer',
]; ];
} }

33
app/Service/v3/Implementations/ActivityService.php

@ -2,9 +2,11 @@
namespace App\Service\v3\Implementations; namespace App\Service\v3\Implementations;
use App\Constants\v3\ActivityType;
use App\Constants\v3\Goods as GoodsConstants;
use App\Model\v3\GoodsActivity; use App\Model\v3\GoodsActivity;
use App\Model\v3\Store;
use App\Service\v3\Interfaces\ActivityServiceInterface; use App\Service\v3\Interfaces\ActivityServiceInterface;
use Hyperf\Utils\ApplicationContext;
class ActivityService implements ActivityServiceInterface class ActivityService implements ActivityServiceInterface
{ {
@ -26,16 +28,33 @@ class ActivityService implements ActivityServiceInterface
public function allForAppletIndex($type, $marketId) public function allForAppletIndex($type, $marketId)
{ {
$storeTable = ApplicationContext::getContainer()->get(Store::class)->getTable();
$goodsTable = ApplicationContext::getContainer()->get(GoodsActivity::class)->getTable();
$builder = GoodsActivity::query() $builder = GoodsActivity::query()
->join($storeTable, ''.$storeTable.'.id', '=', ''.$goodsTable.'.store_id')
->with(['store']) ->with(['store'])
->where(['type' => $type])
->where(function ($query) use ($marketId) {
$query->whereJsonContains("market_ids", [(string)$marketId])
->orWhereJsonLength("market_ids", '=', 0);
->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('time1', '<=', date('H:i'))
->where(function ($query) {
$query->where('time2', '>=', date('H:i'))
->orWhere('time4', '>=', date('H:i'));
}); });
return $builder->orderBy('sort', 'DESC')
->orderBy('expire_time', 'ASC')
return $builder->select(''.$goodsTable.'.*')->addSelect(''.$goodsTable.'.sales as total_sales')
->orderBy(''.$goodsTable.'.sort', 'DESC')
->orderBy(''.$goodsTable.'.expire_time', 'ASC')
->get()->toArray(); ->get()->toArray();
} }
} }

12
app/Service/v3/Implementations/SearchService.php

@ -38,6 +38,11 @@ class SearchService implements SearchServiceInterface
->with(['store']) ->with(['store'])
->where(function ($query) use ($goodsTable) { ->where(function ($query) use ($goodsTable) {
$query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1); $query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1);
})
->where('time1', '<=', date('H:i'))
->where(function ($query) {
$query->where('time2', '>=', date('H:i'))
->orWhere('time4', '>=', date('H:i'));
}); });
if (isset($params['store_id']) && $params['store_id']) { if (isset($params['store_id']) && $params['store_id']) {
@ -102,7 +107,12 @@ class SearchService implements SearchServiceInterface
$query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1); $query->where(''.$goodsTable.'.inventory', '>', 0)->orWhere(''.$goodsTable.'.is_infinite', '=', 1);
}) })
->whereRaw(''.$goodsTable.'.deleted_at IS NULL') ->whereRaw(''.$goodsTable.'.deleted_at IS NULL')
->where([''.$storeTable.'.market_id' => $params['market_id']]);
->where([''.$storeTable.'.market_id' => $params['market_id']])
->where('time1', '<=', date('H:i'))
->where(function ($query) {
$query->where('time2', '>=', date('H:i'))
->orWhere('time4', '>=', date('H:i'));
});
if (isset($params['store_id']) && $params['store_id']) { if (isset($params['store_id']) && $params['store_id']) {
$builder->where([''.$storeTable.'.store_id' => $params['store_id']]); $builder->where([''.$storeTable.'.store_id' => $params['store_id']]);

Loading…
Cancel
Save