6
0
Fork 0

order-pre

base
panliang 2022-09-08 14:52:36 +08:00
parent e3041d1401
commit 580088a561
2 changed files with 24 additions and 13 deletions

View File

@ -4,6 +4,7 @@ namespace App\Endpoint\Api\Http\Controllers\Order;
use App\Endpoint\Api\Http\Controllers\Controller; use App\Endpoint\Api\Http\Controllers\Controller;
use App\Endpoint\Api\Http\Resources\OrderPreResource; use App\Endpoint\Api\Http\Resources\OrderPreResource;
use App\Endpoint\Api\Http\Resources\OrderResource;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Models\{Order, OrderPre, ProductSku}; use App\Models\{Order, OrderPre, ProductSku};
use App\Models\Store\Store; use App\Models\Store\Store;
@ -109,27 +110,36 @@ class OrderPreController extends Controller
public function storeOrder(Request $request) public function storeOrder(Request $request)
{ {
$request->validate([
'id' => 'required'
]);
$id = $request->input('id'); $id = $request->input('id');
$order_pre = OrderPre::findOrFail($id); $order_pre = OrderPre::findOrFail($id);
$user = $request->user(); $user = $request->user();
try { try {
DB::beginTransaction(); DB::beginTransaction();
$service = new OrderService(); if ($request->filled('coupon_id')) {
// 如果还有未支付的订单, 则不生成新订单 $coupon = $user->coupons()->find($request->input('coupon_id'));
$order = $user->orders()->where([ if (!$coupon) {
'source_type' => OrderPre::class, throw new BizException('优惠券不存在');
'source_id' => $order_pre->id, }
'status' => Order::STATUS_PENDING, if ($coupon->is_use) {
])->first(); throw new BizException('优惠券已使用');
if (!$order) { }
$order = $service->createOrderByPre($user, $order_pre);
if (!now()->between($coupon->use_start_at, $coupon->use_end_at)) {
throw new BizException('优惠券已过期');
}
$others = $order_pre->others;
$others['coupon_id'] = $coupon->id;
$order_pre->update(['others' => $others]);
} }
$service = new OrderService();
$order = $service->createOrderByPre($user, $order_pre);
DB::commit(); DB::commit();
return response()->json([ return OrderResource::make($order);
'order_id' => $order->id
]);
} catch (Throwable $e) { } catch (Throwable $e) {
DB::rollBack(); DB::rollBack();

View File

@ -15,7 +15,8 @@ class OrderProfitResource extends JsonResource
'order' => $this->when($this->whenLoaded('order'), [ 'order' => $this->when($this->whenLoaded('order'), [
'id' => $this->order?->id, 'id' => $this->order?->id,
'sn' => $this->order?->sn, 'sn' => $this->order?->sn,
'total_amount' => $this->order ? $this->order->total_amount / 100 : 0 'total_amount' => $this->order ? $this->order->total_amount / 100 : 0,
'created_at' => $this->order?->created_at->timestamp,
]), ]),
'from_user_id' => $this->from_user_id, 'from_user_id' => $this->from_user_id,
'user_id' => $this->user_id, 'user_id' => $this->user_id,