4
0
Fork 0

order events

master
panliang 2022-09-30 15:15:57 +08:00
parent d609c83dc5
commit 8a2f2fb3e6
10 changed files with 36 additions and 102 deletions

View File

@ -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

View File

@ -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();

View File

@ -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();

View File

@ -1,24 +0,0 @@
<?php
namespace Peidikeji\Order\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Peidikeji\Order\Models\Order;
/**
* 订单删除
*
*/
class OrderDeleted
{
use Dispatchable, InteractsWithSockets, SerializesModels;
public $order;
public function __construct(Order $order)
{
$this->order = $order;
}
}

View File

@ -1,29 +0,0 @@
<?php
namespace Peidikeji\Order\Events;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
use Peidikeji\Order\Models\Order;
/**
* 订单发货
* 每次发货触发一次
*/
class OrderShipped
{
use Dispatchable, InteractsWithSockets, SerializesModels;
// 订单
public $order;
// 发货单
public $ship;
public function __construct(Order $order, $ship)
{
$this->order = $order;
$this->ship = $ship;
}
}

View File

@ -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();

View File

@ -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());

View File

@ -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));
}
/**

View File

@ -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/');

View File

@ -209,8 +209,6 @@ class OrderStore
$order->save();
$order->goods()->createMany($this->orderGoodsList);
event(new OrderCreated($order));
return $order;
}