Browse Source

购物车优化 商品区分普通商品和活动商品

master
Lemon 5 years ago
parent
commit
9254316335
  1. 7
      app/Constants/v3/Goods.php
  2. 30
      app/Controller/v3/GoodsController.php
  3. 14
      app/Model/v3/GoodsActivityBanner.php
  4. 13
      app/Model/v3/GoodsBanner.php
  5. 12
      app/Model/v3/ShoppingCart.php
  6. 5
      app/Model/v3/Store.php
  7. 20
      app/Service/v3/Implementations/GoodsActivityService.php
  8. 15
      app/Service/v3/Implementations/GoodsService.php
  9. 97
      app/Service/v3/Implementations/ShopCartService.php
  10. 1
      config/autoload/dependencies.php

7
app/Constants/v3/Goods.php

@ -19,10 +19,15 @@ class Goods extends AbstractConstants
/** /**
* @Message("已下架") * @Message("已下架")
*/ */
const ON_SALE_NO = 2;
const ON_SALE_NO = 0;
/** /**
* @Message("无限库存") * @Message("无限库存")
*/ */
const IS_INVENTORY = 1; const IS_INVENTORY = 1;
/**
* @Message("活动商品")
*/
const IS_ACTIVITY = 2;
} }

30
app/Controller/v3/GoodsController.php

@ -3,8 +3,12 @@
namespace App\Controller\v3; namespace App\Controller\v3;
use App\Controller\BaseController; use App\Controller\BaseController;
use App\Service\v3\Implementations\GoodsActivityService;
use App\Service\v3\Interfaces\CollectStoreServiceInterface;
use Hyperf\Di\Annotation\Inject; use Hyperf\Di\Annotation\Inject;
use App\Service\v3\Interfaces\GoodsServiceInterface; use App\Service\v3\Interfaces\GoodsServiceInterface;
use App\Service\v3\Interfaces\GoodsActivityServiceInterface;
use App\Constants\v3\Goods;
class GoodsController extends BaseController class GoodsController extends BaseController
{ {
/** /**
@ -12,11 +16,35 @@ class GoodsController extends BaseController
* @var GoodsServiceInterface * @var GoodsServiceInterface
*/ */
protected $goodsService; protected $goodsService;
/**
* @Inject
* @var GoodsActivityServiceInterface
*/
protected $goodsActivityService;
/**
* @Inject
* @var CollectStoreServiceInterface
*/
protected $collectService;
public function detail() public function detail()
{ {
$params = $this->request->all(); $params = $this->request->all();
$res['detail'] = $this->goodsService->do(35);
//判断是普通商品还是特价商品
if(isset($params['activity']) && $params['activity'] == Goods::IS_ACTIVITY){
$res['detail'] = $this->goodsActivityService->do($params['goods_id']);
$res['banner'] = $this->goodsActivityService->getBanner();
}else{
$res['detail'] = $this->goodsService->do($params['goods_id']);
$res['banner'] = $this->goodsService->getBanner(); $res['banner'] = $this->goodsService->getBanner();
}
if(isset($params['user_id'])) {
$res['detail']->store->is_collected = (bool)$this->collectService->check($params['user_id'], $params['store_id']);
}else{
$res['detail']->store->is_collected = '';
}
return $this->success($res); return $this->success($res);
} }
} }

14
app/Model/v3/GoodsActivityBanner.php

@ -0,0 +1,14 @@
<?php
namespace App\Model\v3;
use App\Model\Model;
use Hyperf\Database\Model\Builder;
use Hyperf\Database\Model\SoftDeletes;
class GoodsActivityBanner extends Model
{
use SoftDeletes;
protected $table = 'lanzu_goods_activity_banners';
}

13
app/Model/v3/GoodsBanner.php

@ -0,0 +1,13 @@
<?php
namespace App\Model\v3;
use App\Model\Model;
use Hyperf\Database\Model\Builder;
use Hyperf\Database\Model\SoftDeletes;
class GoodsBanner extends Model
{
use SoftDeletes;
protected $table = 'lanzu_goods_banners';
}

12
app/Model/v3/ShoppingCart.php

@ -0,0 +1,12 @@
<?php
namespace App\Model\v3;
use App\Model\Model;
class ShoppingCart extends Model
{
protected $table = 'lanzu_shopping_cart';
}

5
app/Model/v3/Store.php

@ -67,4 +67,9 @@ class Store extends Model
{ {
return $this->hasMany(Goods::class, 'store_id', 'id'); return $this->hasMany(Goods::class, 'store_id', 'id');
} }
public function shoppingCart()
{
return $this->hasMany(ShoppingCart::class, 'store_id', 'id');
}
} }

20
app/Service/v3/Implementations/GoodsActivityService.php

@ -5,8 +5,9 @@ namespace App\Service\v3\Implementations;
use App\Service\v3\Interfaces\GoodsActivityServiceInterface; use App\Service\v3\Interfaces\GoodsActivityServiceInterface;
use Hyperf\DbConnection\Db; use Hyperf\DbConnection\Db;
use App\Constants\v3\Store; use App\Constants\v3\Store;
use App\Constants\v3\goods as goodsConstants;
use App\Constants\v3\Goods;
use App\Model\v3\GoodsActivity; use App\Model\v3\GoodsActivity;
use App\Model\v3\GoodsActivityBanner;
class GoodsActivityService implements GoodsActivityServiceInterface class GoodsActivityService implements GoodsActivityServiceInterface
{ {
public function do($goodsId) public function do($goodsId)
@ -28,11 +29,11 @@ class GoodsActivityService implements GoodsActivityServiceInterface
return '店铺已休息'; return '店铺已休息';
} }
if($data->on_sale == 0 || !is_null($data->deleted_at)){
if($data->on_sale == Goods::ON_SALE_NO || !is_null($data->deleted_at)){
return '商品已下架'; return '商品已下架';
} }
if($data->is_infinite != 1 && $data->inventory < $num){
if($data->is_infinite != Goods::IS_INVENTORY && $data->inventory < $num){
return '库存不足'; return '库存不足';
} }
@ -46,18 +47,7 @@ class GoodsActivityService implements GoodsActivityServiceInterface
public function getBanner() public function getBanner()
{ {
$banner = [
[
'id' => 1,
'type' => 1,
'path' => 'https://img.lanzu.vip/static/img/dic_banners/dic_banner_0.jpg'
],
[
'id' => 2,
'type' => 1,
'path' => 'https://img.lanzu.vip/static/img/dic_banners/dic_banner_1.jpg'
]
];
$banner = GoodsActivityBanner::query()->where('goods_id',1572)->get();
return $banner; return $banner;
} }
} }

15
app/Service/v3/Implementations/GoodsService.php

@ -5,9 +5,9 @@ namespace App\Service\v3\Implementations;
use App\Service\v3\Interfaces\GoodsServiceInterface; use App\Service\v3\Interfaces\GoodsServiceInterface;
use Hyperf\DbConnection\Db; use Hyperf\DbConnection\Db;
use App\Model\v3\Goods; use App\Model\v3\Goods;
use App\Model\v3\GoodsBanner;
use App\Constants\v3\Store; use App\Constants\v3\Store;
use App\Constants\v3\goods as goodsConstants; use App\Constants\v3\goods as goodsConstants;
use App\Model\v3\GoodsActivity;
class GoodsService implements GoodsServiceInterface class GoodsService implements GoodsServiceInterface
{ {
public function do($goodsId) public function do($goodsId)
@ -42,18 +42,7 @@ class GoodsService implements GoodsServiceInterface
public function getBanner() public function getBanner()
{ {
$banner = [
[
'id' => 1,
'type' => 1,
'path' => 'https://img.lanzu.vip/static/img/dic_banners/dic_banner_0.jpg'
],
[
'id' => 2,
'type' => 1,
'path' => 'https://img.lanzu.vip/static/img/dic_banners/dic_banner_1.jpg'
]
];
$banner = GoodsBanner::query()->where('goods_id',1572)->get();
return $banner; return $banner;
} }
} }

97
app/Service/v3/Implementations/ShopCartService.php

@ -2,56 +2,18 @@
namespace App\Service\v3\Implementations; namespace App\Service\v3\Implementations;
use App\Model\v3\ShoppingCart;
use App\Model\v3\Store;
use App\Service\v3\Interfaces\ShopCartServiceInterface; use App\Service\v3\Interfaces\ShopCartServiceInterface;
use Hyperf\DbConnection\Db;
class ShopCartService implements ShopCartServiceInterface class ShopCartService implements ShopCartServiceInterface
{ {
public function do() public function do()
{ {
$res = [
[
'store_nmae' => '五金杂货铺',
'price' => '100.00',
'note' => '多放辣椒',
'store_id' => 66,
'goods_list' =>
[
[
'id' => 3971,
'goods_id' => 1301,
'name' => '半边手撕鸡',
'num' => 4,
'price' => '90.00',
'total' => '360.00'
]
]
],
[
'store_nmae' => '回味手撕鸡J009',
'note' => '手撕鸡加辣',
'store_price' => '720.00',
'store_id' => 123,
'goods_list' =>
[
[
'id' => 3971,
'goods_id' => 1301,
'name' => '半边手撕鸡',
'num' => 4,
'price' => '90.00',
'total' => '360.00'
],
[
'id' => 3971,
'goods_id' => 1301,
'name' => '半边手撕鸡',
'num' => 4,
'price' => '90.00',
'total' => '360.00'
]
]
],
];
$storeIds = Db::table('lanzu_shopping_cart')->where('user_id',15)->pluck('store_id')->toArray();
$res = Store::query()->with('shoppingCart')->whereIn('id',$storeIds)
->get();
return $res; return $res;
} }
@ -62,50 +24,9 @@ class ShopCartService implements ShopCartServiceInterface
public function undo() public function undo()
{ {
$res = [
[
'store_nmae' => '五金杂货铺',
'price' => '100.00',
'note' => '多放辣椒',
'store_id' => 66,
'goods_list' =>
[
[
'id' => 3971,
'goods_id' => 1301,
'name' => '半边手撕鸡',
'num' => 4,
'price' => '90.00',
'total' => '360.00'
]
]
],
[
'store_nmae' => '回味手撕鸡J009',
'note' => '手撕鸡加辣',
'store_price' => '720.00',
'store_id' => 123,
'goods_list' =>
[
[
'id' => 3971,
'goods_id' => 1301,
'name' => '半边手撕鸡',
'num' => 4,
'price' => '90.00',
'total' => '360.00'
],
[
'id' => 3971,
'goods_id' => 1301,
'name' => '半边手撕鸡',
'num' => 4,
'price' => '90.00',
'total' => '360.00'
]
]
],
];
$storeIds = Db::table('lanzu_shopping_cart')->where('user_id',198)->pluck('store_id')->toArray();
$res = Store::query()->with('shoppingCart')->whereIn('id',$storeIds)
->get();
return $res; return $res;
} }

1
config/autoload/dependencies.php

@ -59,4 +59,5 @@ return [
\App\Service\v3\Interfaces\BannerServiceInterface::class => \App\Service\v3\Implementations\BannerService::class, \App\Service\v3\Interfaces\BannerServiceInterface::class => \App\Service\v3\Implementations\BannerService::class,
\App\Service\v3\Interfaces\ActivityServiceInterface::class => \App\Service\v3\Implementations\ActivityService::class, \App\Service\v3\Interfaces\ActivityServiceInterface::class => \App\Service\v3\Implementations\ActivityService::class,
\App\Service\v3\Interfaces\LocationServiceInterface::class => \App\Service\v3\Implementations\LocationService::class, \App\Service\v3\Interfaces\LocationServiceInterface::class => \App\Service\v3\Implementations\LocationService::class,
\App\Service\v3\Interfaces\GoodsActivityServiceInterface::class => \App\Service\v3\Implementations\GoodsActivityService::class,
]; ];
Loading…
Cancel
Save