创建成功后订单变为未支付 支付成功后减扣库存

This commit is contained in:
Edward Yang 2022-08-26 16:35:05 +08:00
parent df8b7db1cd
commit b9b2ef7525
5 changed files with 25 additions and 8 deletions

View File

@ -19,12 +19,17 @@ class OrderProduct extends Base
'product_id', 'order_number', 'product_sku', 'name', 'image', 'quantity', 'price',
];
protected $appends = ['price_format'];
public function order(): BelongsTo
{
return $this->belongsTo(Order::class);
}
protected $appends = ['price_format'];
public function productSku(): BelongsTo
{
return $this->belongsTo(ProductSku::class, 'product_sku', 'id');
}
public function getPriceFormatAttribute()
{

View File

@ -13,13 +13,13 @@ namespace Beike\Repositories;
use Beike\Models\Order;
use Beike\Models\OrderProduct;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
use Illuminate\Database\Eloquent\Model;
class OrderProductRepo
{
public static function create(Order $order, $cartProducts)
public static function createOrderProducts(Order $order, $cartProducts)
{
$orderProducts = [];
foreach ($cartProducts as $cartProduct) {

View File

@ -14,6 +14,7 @@ namespace Beike\Repositories;
use Carbon\Carbon;
use Beike\Models\Order;
use Beike\Models\Address;
use Beike\Services\StateMachineService;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Collection;
@ -199,7 +200,7 @@ class OrderRepo
'currency_value' => 1,
'ip' => request()->getClientIp(),
'user_agent' => request()->userAgent(),
'status' => 'unpaid',
'status' => StateMachineService::CREATED,
'shipping_method_code' => $shippingMethodCode,
'shipping_method_name' => trans($shippingMethodCode),
'shipping_customer_name' => $shippingAddress->name,
@ -223,9 +224,8 @@ class OrderRepo
]);
$order->saveOrFail();
OrderProductRepo::create($order, $carts['carts']);
OrderProductRepo::createOrderProducts($order, $carts['carts']);
OrderTotalRepo::createTotals($order, $totals);
// OrderHistoryRepo::create($order);
return $order;
}

View File

@ -47,7 +47,7 @@ class StateMachineService
self::CANCELLED => ['updateStatus', 'addHistory'],
],
self::PAID => [
self::CANCELLED => ['updateStatus', 'addHistory', 'revertStock'],
self::CANCELLED => ['updateStatus', 'addHistory'],
self::SHIPPED => ['updateStatus', 'addHistory'],
self::COMPLETED => ['updateStatus', 'addHistory']
],
@ -240,7 +240,17 @@ class StateMachineService
*/
private function subStock($oldCode, $newCode)
{
$this->order->loadMissing([
'orderProducts.productSku'
]);
$orderProducts = $this->order->orderProducts;
foreach ($orderProducts as $orderProduct) {
$productSku = $orderProduct->productSku;
if (empty($productSku)) {
continue;
}
$productSku->decrement('quantity', $orderProduct->quantity);
}
}

View File

@ -20,6 +20,7 @@ use Illuminate\Support\Facades\DB;
use Beike\Repositories\PluginRepo;
use Beike\Repositories\AddressRepo;
use Beike\Repositories\CountryRepo;
use Beike\Services\StateMachineService;
use Beike\Shop\Http\Resources\Account\AddressResource;
use Beike\Shop\Http\Resources\Checkout\PaymentMethodItem;
use Beike\Shop\Http\Resources\Checkout\ShippingMethodItem;
@ -94,6 +95,7 @@ class CheckoutService
try {
DB::beginTransaction();
$order = OrderRepo::create($checkoutData);
StateMachineService::getInstance($order)->changeStatus(StateMachineService::UNPAID);
CartRepo::clearSelectedCartProducts($customer);
DB::commit();
} catch (\Exception $e) {