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("已下架")
*/
const ON_SALE_NO = 2;
const ON_SALE_NO = 0;
/**
* @Message("无限库存")
*/
const IS_INVENTORY = 1;
/**
* @Message("活动商品")
*/
const IS_ACTIVITY = 2;
}

30
app/Controller/v3/GoodsController.php

@ -3,8 +3,12 @@
namespace App\Controller\v3;
use App\Controller\BaseController;
use App\Service\v3\Implementations\GoodsActivityService;
use App\Service\v3\Interfaces\CollectStoreServiceInterface;
use Hyperf\Di\Annotation\Inject;
use App\Service\v3\Interfaces\GoodsServiceInterface;
use App\Service\v3\Interfaces\GoodsActivityServiceInterface;
use App\Constants\v3\Goods;
class GoodsController extends BaseController
{
/**
@ -12,11 +16,35 @@ class GoodsController extends BaseController
* @var GoodsServiceInterface
*/
protected $goodsService;
/**
* @Inject
* @var GoodsActivityServiceInterface
*/
protected $goodsActivityService;
/**
* @Inject
* @var CollectStoreServiceInterface
*/
protected $collectService;
public function detail()
{
$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();
}
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);
}
}

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');
}
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 Hyperf\DbConnection\Db;
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\GoodsActivityBanner;
class GoodsActivityService implements GoodsActivityServiceInterface
{
public function do($goodsId)
@ -28,11 +29,11 @@ class GoodsActivityService implements GoodsActivityServiceInterface
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 '商品已下架';
}
if($data->is_infinite != 1 && $data->inventory < $num){
if($data->is_infinite != Goods::IS_INVENTORY && $data->inventory < $num){
return '库存不足';
}
@ -46,18 +47,7 @@ class GoodsActivityService implements GoodsActivityServiceInterface
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;
}
}

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

@ -5,9 +5,9 @@ namespace App\Service\v3\Implementations;
use App\Service\v3\Interfaces\GoodsServiceInterface;
use Hyperf\DbConnection\Db;
use App\Model\v3\Goods;
use App\Model\v3\GoodsBanner;
use App\Constants\v3\Store;
use App\Constants\v3\goods as goodsConstants;
use App\Model\v3\GoodsActivity;
class GoodsService implements GoodsServiceInterface
{
public function do($goodsId)
@ -42,18 +42,7 @@ class GoodsService implements GoodsServiceInterface
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;
}
}

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

@ -2,56 +2,18 @@
namespace App\Service\v3\Implementations;
use App\Model\v3\ShoppingCart;
use App\Model\v3\Store;
use App\Service\v3\Interfaces\ShopCartServiceInterface;
use Hyperf\DbConnection\Db;
class ShopCartService implements ShopCartServiceInterface
{
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;
}
@ -62,50 +24,9 @@ class ShopCartService implements ShopCartServiceInterface
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;
}

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\ActivityServiceInterface::class => \App\Service\v3\Implementations\ActivityService::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