exception
parent
7e0c93cda1
commit
d7460353ce
|
|
@ -3,6 +3,9 @@
|
||||||
namespace Peidikeji\Goods\Action;
|
namespace Peidikeji\Goods\Action;
|
||||||
|
|
||||||
use Dcat\Admin\Grid\BatchAction;
|
use Dcat\Admin\Grid\BatchAction;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Peidikeji\Goods\Exceptions\GoodsException;
|
||||||
|
use Peidikeji\Goods\GoodsService;
|
||||||
use Peidikeji\Goods\Models\Goods;
|
use Peidikeji\Goods\Models\Goods;
|
||||||
|
|
||||||
class BatchGoodsDown extends BatchAction
|
class BatchGoodsDown extends BatchAction
|
||||||
|
|
@ -12,9 +15,18 @@ class BatchGoodsDown extends BatchAction
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$ids = $this->getKey();
|
$ids = $this->getKey();
|
||||||
Goods::whereIn('id', $ids)->update(['on_sale' => 0]);
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
return $this->response()->success('操作成功')->refresh();
|
$service = GoodsService::make();
|
||||||
|
foreach(Goods::whereIn('id', $ids)->get() as $item) {
|
||||||
|
$service->downSale($item);
|
||||||
|
}
|
||||||
|
DB::commit();
|
||||||
|
return $this->response()->success('操作成功')->refresh();
|
||||||
|
} catch (GoodsException $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
return $this->response()->error($e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function confirm()
|
public function confirm()
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,9 @@
|
||||||
namespace Peidikeji\Goods\Action;
|
namespace Peidikeji\Goods\Action;
|
||||||
|
|
||||||
use Dcat\Admin\Grid\BatchAction;
|
use Dcat\Admin\Grid\BatchAction;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
use Peidikeji\Goods\Exceptions\GoodsException;
|
||||||
|
use Peidikeji\Goods\GoodsService;
|
||||||
use Peidikeji\Goods\Models\Goods;
|
use Peidikeji\Goods\Models\Goods;
|
||||||
|
|
||||||
class BatchGoodsUp extends BatchAction
|
class BatchGoodsUp extends BatchAction
|
||||||
|
|
@ -12,9 +15,18 @@ class BatchGoodsUp extends BatchAction
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$ids = $this->getKey();
|
$ids = $this->getKey();
|
||||||
Goods::whereIn('id', $ids)->update(['on_sale' => 1]);
|
try {
|
||||||
|
DB::beginTransaction();
|
||||||
return $this->response()->success('操作成功')->refresh();
|
$service = GoodsService::make();
|
||||||
|
foreach(Goods::whereIn('id', $ids)->get() as $item) {
|
||||||
|
$service->upSale($item);
|
||||||
|
}
|
||||||
|
DB::commit();
|
||||||
|
return $this->response()->success('操作成功')->refresh();
|
||||||
|
} catch (GoodsException $e) {
|
||||||
|
DB::rollBack();
|
||||||
|
return $this->response()->error($e->getMessage());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public function confirm()
|
public function confirm()
|
||||||
|
|
|
||||||
|
|
@ -3,6 +3,8 @@
|
||||||
namespace Peidikeji\Goods\Action;
|
namespace Peidikeji\Goods\Action;
|
||||||
|
|
||||||
use Dcat\Admin\Grid\RowAction;
|
use Dcat\Admin\Grid\RowAction;
|
||||||
|
use Peidikeji\Goods\Exceptions\GoodsException;
|
||||||
|
use Peidikeji\Goods\GoodsService;
|
||||||
use Peidikeji\Goods\Models\Goods;
|
use Peidikeji\Goods\Models\Goods;
|
||||||
|
|
||||||
class RowGoodsSale extends RowAction
|
class RowGoodsSale extends RowAction
|
||||||
|
|
@ -15,9 +17,18 @@ class RowGoodsSale extends RowAction
|
||||||
public function handle()
|
public function handle()
|
||||||
{
|
{
|
||||||
$info = Goods::findOrFail($this->getKey());
|
$info = Goods::findOrFail($this->getKey());
|
||||||
Goods::where('id', $this->getKey())->update(['on_sale' => ! $info->on_sale]);
|
$service = GoodsService::make();
|
||||||
|
try {
|
||||||
|
if ($info->on_sale) {
|
||||||
|
$service->downSale($info);
|
||||||
|
} else {
|
||||||
|
$service->upSale($info);
|
||||||
|
}
|
||||||
|
return $this->response()->success('操作成功')->refresh();
|
||||||
|
} catch(GoodsException $e) {
|
||||||
|
return $this->response()->error($e->getMessage());
|
||||||
|
}
|
||||||
|
|
||||||
return $this->response()->success('操作成功')->refresh();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function confirm()
|
public function confirm()
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,23 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace Peidikeji\Goods\Exceptions;
|
||||||
|
|
||||||
|
use Dcat\Admin\Traits\JsonResponse;
|
||||||
|
use Exception;
|
||||||
|
|
||||||
|
class GoodsException extends Exception
|
||||||
|
{
|
||||||
|
use JsonResponse;
|
||||||
|
|
||||||
|
protected $code = 400;
|
||||||
|
|
||||||
|
public function report()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function render($request)
|
||||||
|
{
|
||||||
|
return $this->error($this->message, $this->code);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -4,14 +4,15 @@ namespace Peidikeji\Goods;
|
||||||
|
|
||||||
use Illuminate\Support\Arr;
|
use Illuminate\Support\Arr;
|
||||||
use Illuminate\Support\Str;
|
use Illuminate\Support\Str;
|
||||||
|
use Peidikeji\Goods\Exceptions\GoodsException;
|
||||||
use Peidikeji\Goods\Models\Goods;
|
use Peidikeji\Goods\Models\Goods;
|
||||||
use Peidikeji\Goods\Models\GoodsSku;
|
use Peidikeji\Goods\Models\GoodsSku;
|
||||||
|
|
||||||
class GoodsService
|
class GoodsService
|
||||||
{
|
{
|
||||||
public static function make(...$params)
|
public static function make()
|
||||||
{
|
{
|
||||||
return new static(...$params);
|
return new static();
|
||||||
}
|
}
|
||||||
|
|
||||||
public function generateSn()
|
public function generateSn()
|
||||||
|
|
@ -27,8 +28,8 @@ class GoodsService
|
||||||
/**
|
/**
|
||||||
* 根据规格生成SKU
|
* 根据规格生成SKU
|
||||||
*
|
*
|
||||||
* @param Goods $goods 商品
|
* @param Goods $goods 商品
|
||||||
* @param array $options {spec: 指定规格, price: 基础价格, name: 基础名称, stock: 默认库存, name_add: 是否在名称上面追加属性值, price_add: 是否在价格上面追加属性的加价}
|
* @param array $options {spec: 指定规格, price: 基础价格, name: 基础名称, stock: 默认库存, name_add: 是否在名称上面追加属性值, price_add: 是否在价格上面追加属性的加价}
|
||||||
*/
|
*/
|
||||||
public function generateSku(Goods $goods, $options = [])
|
public function generateSku(Goods $goods, $options = [])
|
||||||
{
|
{
|
||||||
|
|
@ -72,4 +73,29 @@ class GoodsService
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品上架销售
|
||||||
|
*
|
||||||
|
* @param Goods $goods 商品
|
||||||
|
* @throws GoodsException
|
||||||
|
*/
|
||||||
|
public function upSale(Goods $goods)
|
||||||
|
{
|
||||||
|
if ($goods->spec && $goods->skus()->count() === 0) {
|
||||||
|
throw new GoodsException($goods->name . ' 必需生成货品');
|
||||||
|
}
|
||||||
|
|
||||||
|
$goods->update(['on_sale' => 1]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 商品下架
|
||||||
|
*
|
||||||
|
* @param Goods $goods 商品
|
||||||
|
*/
|
||||||
|
public function downSale(Goods $goods)
|
||||||
|
{
|
||||||
|
$goods->update(['on_sale' => 0]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -132,7 +132,7 @@ class GoodsController extends AdminController
|
||||||
});
|
});
|
||||||
$grid->column('price');
|
$grid->column('price');
|
||||||
$grid->column('stock')
|
$grid->column('stock')
|
||||||
->if(fn () => $this->skus->count() > 0)
|
->if(fn () => !!$this->spec)
|
||||||
->display(fn () => $this->skus->sum('stock'))
|
->display(fn () => $this->skus->sum('stock'))
|
||||||
->else()
|
->else()
|
||||||
->editable();
|
->editable();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue