diff --git a/beike/Services/StateMachineService.php b/beike/Services/StateMachineService.php index c0d3eef8..7cf829ea 100644 --- a/beike/Services/StateMachineService.php +++ b/beike/Services/StateMachineService.php @@ -27,6 +27,7 @@ class StateMachineService const PAID = 'paid'; // 已支付 const SHIPPED = 'shipped'; // 已发货 const COMPLETED = 'completed'; // 已完成 + const CANCELLED = 'cancelled'; // 已取消 const ORDER_STATUS = [ self::CREATED, @@ -39,12 +40,13 @@ class StateMachineService const MACHINES = [ self::CREATED => [ self::UNPAID => ['updateStatus', 'addHistory'], - self::PAID => ['updateStatus', 'addHistory', 'subStock'], ], self::UNPAID => [ self::PAID => ['updateStatus', 'addHistory', 'subStock'], + self::CANCELLED => ['updateStatus', 'addHistory'], ], self::PAID => [ + self::CANCELLED => ['updateStatus', 'addHistory', 'revertStock'], self::SHIPPED => ['updateStatus', 'addHistory'], self::COMPLETED => ['updateStatus', 'addHistory'] ], @@ -239,4 +241,13 @@ class StateMachineService { } + + + /** + * 恢复库存 + */ + private function revertStock($oldCode, $newCode) + { + + } } diff --git a/beike/Shop/Http/Controllers/Account/OrderController.php b/beike/Shop/Http/Controllers/Account/OrderController.php index b541c6ee..04cde79c 100644 --- a/beike/Shop/Http/Controllers/Account/OrderController.php +++ b/beike/Shop/Http/Controllers/Account/OrderController.php @@ -89,7 +89,7 @@ class OrderController extends Controller /** - * 订单完成 + * 完成订单 * * @param Request $request * @param $number @@ -107,4 +107,25 @@ class OrderController extends Controller StateMachineService::getInstance($order)->changeStatus(StateMachineService::COMPLETED, $comment); return json_success(trans('shop/account.order.completed')); } + + + /** + * 取消订单 + * + * @param Request $request + * @param $number + * @return array + * @throws \Exception + */ + public function cancel(Request $request, $number) + { + $customer = current_customer(); + $order = OrderRepo::getOrderByNumber($number, $customer); + if (empty($order)) { + throw new \Exception('无效的订单'); + } + $comment = '用户取消订单'; + StateMachineService::getInstance($order)->changeStatus(StateMachineService::CANCELLED, $comment); + return json_success(trans('shop/account.order.cancelled')); + } } diff --git a/config/database.php b/config/database.php index b42d9b30..99e2a09f 100644 --- a/config/database.php +++ b/config/database.php @@ -57,7 +57,7 @@ return [ 'prefix' => '', 'prefix_indexes' => true, 'strict' => true, - 'engine' => null, + 'engine' => 'InnoDB', 'options' => extension_loaded('pdo_mysql') ? array_filter([ PDO::MYSQL_ATTR_SSL_CA => env('MYSQL_ATTR_SSL_CA'), ]) : [],