diff --git a/README.md b/README.md index 6014edf..ddefc8e 100644 --- a/README.md +++ b/README.md @@ -20,27 +20,6 @@ ## 配置 -### app\Providers\EventServiceProvider.php - -```php -use Peidikeji\Order\Listeners\UpdateGoodsSoldCount; -use Peidikeji\Order\Listeners\UpdateGoodsStock; -use Peidikeji\Order\Listeners\OrderUseScore; - -protected $listen = [ - \Peidikeji\Order\Events\OrderCreated::class => [ - UpdateGoodsStock::class, - UpdateGoodsSoldCount::class, - OrderUseScore::class, - ], - \Peidikeji\Order\Events\OrderCanceled::class => [ - UpdateGoodsStock::class, - UpdateGoodsSoldCount::class, - OrderUseScore::class - ], -]; -``` - ### dcat-admin-user\src\Models\User.php ```php diff --git a/src/Action/ShowCancel.php b/src/Action/ShowCancel.php index 8a8c44e..0722fe9 100644 --- a/src/Action/ShowCancel.php +++ b/src/Action/ShowCancel.php @@ -6,6 +6,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Show\AbstractTool; use Illuminate\Support\Facades\DB; use Peidikeji\Order\Enums\PayStatus; +use Peidikeji\Order\Events\OrderCanceled; use Peidikeji\Order\Models\Order; use Peidikeji\Order\OrderService; @@ -32,6 +33,7 @@ class ShowCancel extends AbstractTool ], ]); DB::commit(); + event(new OrderCanceled($order)); return $this->response()->success('操作成功')->refresh(); } catch (\Exception $e) { DB::rollBack(); diff --git a/src/Action/ShowReceive.php b/src/Action/ShowReceive.php index a69edbb..6bc0ed5 100644 --- a/src/Action/ShowReceive.php +++ b/src/Action/ShowReceive.php @@ -6,6 +6,7 @@ use Dcat\Admin\Admin; use Dcat\Admin\Show\AbstractTool; use Illuminate\Support\Facades\DB; use Peidikeji\Order\Enums\ShipStatus; +use Peidikeji\Order\Events\OrderReceived; use Peidikeji\Order\Models\Order; use Peidikeji\Order\OrderService; @@ -32,6 +33,7 @@ class ShowReceive extends AbstractTool ], ]); DB::commit(); + event(new OrderReceived($order)); return $this->response()->success('操作成功')->refresh(); } catch (\Exception $e) { DB::rollBack(); diff --git a/src/Events/OrderDeleted.php b/src/Events/OrderDeleted.php deleted file mode 100644 index d5869f0..0000000 --- a/src/Events/OrderDeleted.php +++ /dev/null @@ -1,24 +0,0 @@ -order = $order; - } -} diff --git a/src/Events/OrderShipped.php b/src/Events/OrderShipped.php deleted file mode 100644 index 1894531..0000000 --- a/src/Events/OrderShipped.php +++ /dev/null @@ -1,29 +0,0 @@ -order = $order; - $this->ship = $ship; - } -} diff --git a/src/Form/PayForm.php b/src/Form/PayForm.php index 72383c6..0391034 100644 --- a/src/Form/PayForm.php +++ b/src/Form/PayForm.php @@ -8,7 +8,9 @@ use Dcat\Admin\Models\Administrator; use Dcat\Admin\Traits\LazyWidget; use Dcat\Admin\Widgets\Form; use Illuminate\Support\Facades\DB; +use Peidikeji\Order\Enums\PayStatus; use Peidikeji\Order\Enums\PayWay; +use Peidikeji\Order\Events\OrderPaid; use Peidikeji\Order\Exceptions\OrderException; use Peidikeji\Order\Models\Order; use Peidikeji\Order\OrderService; @@ -42,6 +44,9 @@ class PayForm extends Form implements LazyRenderable 'attribute' => $input, ]); DB::commit(); + if ($order->pay_status === PayStatus::Success) { + event(new OrderPaid($order)); + } return $this->response()->success('操作成功')->refresh(); } catch (\Exception $e) { DB::rollBack(); diff --git a/src/Http/Api/OrderController.php b/src/Http/Api/OrderController.php index d6ed462..82d5102 100644 --- a/src/Http/Api/OrderController.php +++ b/src/Http/Api/OrderController.php @@ -7,9 +7,14 @@ use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Validation\Rule; use Illuminate\Validation\Rules\Enum; +use Peidikeji\Order\Enums\PayStatus; use Peidikeji\Order\Enums\PayWay; use Peidikeji\Order\Enums\ShipStatus; use Peidikeji\Order\Enums\ShipWay; +use Peidikeji\Order\Events\OrderCanceled; +use Peidikeji\Order\Events\OrderCreated; +use Peidikeji\Order\Events\OrderPaid; +use Peidikeji\Order\Events\OrderReceived; use Peidikeji\Order\Http\Resources\OrderResource; use Peidikeji\Order\Http\Resources\OrderShipResouce; use Peidikeji\Order\OrderService; @@ -94,7 +99,6 @@ class OrderController extends Controller 'goods' => [Rule::requiredIf(!$request->filled('cart_id')), 'array'], 'cart_id' => ['array'], 'address' => [Rule::requiredIf(!$request->filled('address_id')), 'array'], - 'pay_way' => [Rule::in([PayWay::WxMini->value])] ]); $store = OrderStore::init()->user($user)->remarks($request->input('remarks')); @@ -128,12 +132,7 @@ class OrderController extends Controller } $result = OrderResource::make($order); DB::commit(); - if ($request->filled('pay_way')) { - $result = []; - $payData = OrderService::make()->pay($order, $request->input('pay_way')); - $result['order'] = OrderResource::make($order); - $result['payment'] = $payData; - } + event(new OrderCreated($order)); return $this->json($result); } catch (\Exception $e) { return $this->error($e->getMessage()); @@ -160,8 +159,11 @@ class OrderController extends Controller try { DB::beginTransaction(); - $result = OrderService::make()->pay($order, PayWay::WxMini->value); + $result = OrderService::make()->pay($order, $request->input('pay_way')); DB::commit(); + if ($order->pay_status === PayStatus::Success) { + event(new OrderPaid($order)); + } return $this->json($result); } catch (\Exception $e) { return $this->error($e->getMessage()); @@ -186,6 +188,7 @@ class OrderController extends Controller ] ]); DB::commit(); + event(new OrderCanceled($order)); return $this->success('订单成功取消'); } catch (\Exception $e) { return $this->error($e->getMessage()); @@ -210,6 +213,7 @@ class OrderController extends Controller ] ]); DB::commit(); + event(new OrderReceived($order)); return $this->success('收货成功'); } catch (\Exception $e) { return $this->error($e->getMessage()); diff --git a/src/OrderService.php b/src/OrderService.php index 3a678b6..57eed37 100644 --- a/src/OrderService.php +++ b/src/OrderService.php @@ -4,18 +4,12 @@ namespace Peidikeji\Order; use Illuminate\Support\Arr; use Overtrue\LaravelWeChat\EasyWeChat; -use Peidikeji\Order\Enums\OrderScene; use Peidikeji\Order\Enums\OrderShipStatus; -use Peidikeji\Order\Enums\OrderStatus; use Peidikeji\Order\Enums\PayStatus; use Peidikeji\Order\Enums\PayWay; use Peidikeji\Order\Enums\RefundStatus; use Peidikeji\Order\Enums\ShipStatus; -use Peidikeji\Order\Events\OrderCanceled; -use Peidikeji\Order\Events\OrderDeleted; -use Peidikeji\Order\Events\OrderPaid; use Peidikeji\Order\Events\OrderReceived; -use Peidikeji\Order\Events\OrderShipped; use Peidikeji\Order\Exceptions\OrderException; use Peidikeji\Order\Models\Order; use Peidikeji\Order\Models\OrderShip; @@ -172,8 +166,6 @@ class OrderService $order->pay_way = data_get($data, 'pay_way'); } $order->save(); - - event(new OrderPaid($order)); } /** @@ -227,8 +219,6 @@ class OrderService ]); $ship->goods()->createMany($params); - - event(new OrderShipped($order, $ship)); } /** @@ -253,8 +243,6 @@ class OrderService 'ship_status' => OrderShipStatus::Autocheck, ]); } - - event(new OrderReceived($order)); } /** @@ -306,7 +294,6 @@ class OrderService $order->is_closed = 1; $order->save(); - event(new OrderCanceled($order)); } /** @@ -324,8 +311,6 @@ class OrderService $order->ships()->delete(); $order->delete(); - - event(new OrderDeleted($order)); } /** diff --git a/src/OrderServiceProvider.php b/src/OrderServiceProvider.php index 6825fcf..2919029 100644 --- a/src/OrderServiceProvider.php +++ b/src/OrderServiceProvider.php @@ -5,12 +5,24 @@ namespace Peidikeji\Order; use Illuminate\Support\ServiceProvider; use Peidikeji\Order\Console\OrderCancel; use Peidikeji\Order\Console\OrdeReceive; +use Illuminate\Support\Facades\Event; +use Peidikeji\Order\Events\OrderCanceled; +use Peidikeji\Order\Events\OrderCreated; +use Peidikeji\Order\Listeners\OrderUseScore; +use Peidikeji\Order\Listeners\UpdateGoodsSoldCount; +use Peidikeji\Order\Listeners\UpdateGoodsStock; class OrderServiceProvider extends ServiceProvider { public function register() { + Event::listen(OrderCreated::class, [UpdateGoodsStock::class, 'handle']); + Event::listen(OrderCreated::class, [UpdateGoodsSoldCount::class, 'handle']); + Event::listen(OrderCreated::class, [OrderUseScore::class, 'handle']); + Event::listen(OrderCanceled::class, [UpdateGoodsStock::class, 'handle']); + Event::listen(OrderCanceled::class, [UpdateGoodsSoldCount::class, 'handle']); + Event::listen(OrderCanceled::class, [OrderUseScore::class, 'handle']); } public function boot() @@ -24,9 +36,9 @@ class OrderServiceProvider extends ServiceProvider $this->loadRoutesFrom(__DIR__.'/../routes/admin.php'); $this->loadRoutesFrom(__DIR__.'/../routes/api.php'); - $this->publishes([ - __DIR__.'/../database/' => database_path('migrations') - ], 'dcat-admin-order-migrations'); + // $this->publishes([ + // __DIR__.'/../database/' => database_path('migrations') + // ], 'dcat-admin-order-migrations'); $this->loadMigrationsFrom(__DIR__.'/../database/'); diff --git a/src/OrderStore.php b/src/OrderStore.php index 3be687c..2066a8b 100644 --- a/src/OrderStore.php +++ b/src/OrderStore.php @@ -209,8 +209,6 @@ class OrderStore $order->save(); $order->goods()->createMany($this->orderGoodsList); - event(new OrderCreated($order)); - return $order; }