first commit
This commit is contained in:
132
app/api/controller/OrderController.php
Normal file
132
app/api/controller/OrderController.php
Normal file
@@ -0,0 +1,132 @@
|
||||
<?php
|
||||
namespace app\api\controller;
|
||||
|
||||
use support\Request;
|
||||
use app\common\service\OrderFlowService;
|
||||
use app\common\service\PaymentService;
|
||||
use app\common\model\Order;
|
||||
|
||||
class OrderController
|
||||
{
|
||||
public function create(Request $request)
|
||||
{
|
||||
$params = $request->post();
|
||||
$userId = $request->user->id;
|
||||
|
||||
try {
|
||||
$order = OrderFlowService::createOrder($params, $userId);
|
||||
|
||||
return jsonResponse([
|
||||
'order_id' => $order->id,
|
||||
'order_no' => $order->order_no,
|
||||
'pay_amount' => $order->total_price
|
||||
], '下单成功');
|
||||
} catch (\Exception $e) {
|
||||
return jsonResponse(null, '下单失败: ' . $e->getMessage(), 400);
|
||||
}
|
||||
}
|
||||
|
||||
public function list(Request $request)
|
||||
{
|
||||
$status = $request->get('status', 'all');
|
||||
$userId = $request->user->id;
|
||||
|
||||
$query = Order::where('user_id', $userId);
|
||||
if ($status !== 'all') {
|
||||
$query->where('status', $status);
|
||||
}
|
||||
|
||||
$orders = $query->orderBy('id', 'desc')->get();
|
||||
|
||||
return jsonResponse(['items' => $orders, 'total' => $orders->count()]);
|
||||
}
|
||||
|
||||
public function detail(Request $request, $id)
|
||||
{
|
||||
$userId = $request->user->id;
|
||||
$order = Order::with(['logs'])->where('id', $id)->where('user_id', $userId)->first();
|
||||
|
||||
if (!$order) {
|
||||
return jsonResponse(null, '订单不存在', 404);
|
||||
}
|
||||
|
||||
$timeline = [];
|
||||
$isFirst = true;
|
||||
foreach ($order->logs as $log) {
|
||||
$timeline[] = [
|
||||
'title' => $log->title,
|
||||
'time' => $log->created_at->format('Y-m-d H:i:s'),
|
||||
'desc' => $log->description,
|
||||
'is_current' => $isFirst,
|
||||
'is_done' => true
|
||||
];
|
||||
$isFirst = false;
|
||||
}
|
||||
|
||||
return jsonResponse([
|
||||
'id' => $order->id,
|
||||
'order_no' => $order->order_no,
|
||||
'category' => $order->category,
|
||||
'service_type' => $order->service_type,
|
||||
'status' => $order->status,
|
||||
'is_fast' => (bool)$order->is_fast,
|
||||
'express_company' => $order->express_company,
|
||||
'express_no' => $order->express_no,
|
||||
'timeline' => $timeline
|
||||
]);
|
||||
}
|
||||
|
||||
public function pay(Request $request)
|
||||
{
|
||||
$orderId = (int)$request->post('order_id');
|
||||
$userId = $request->user->id;
|
||||
$payType = trim((string)$request->post('pay_type', 'jsapi'));
|
||||
$appId = trim((string)$request->post('app_id', ''));
|
||||
|
||||
$order = Order::where('id', $orderId)->where('user_id', $userId)->first();
|
||||
if (!$order) {
|
||||
return jsonResponse(null, '订单不存在', 404);
|
||||
}
|
||||
|
||||
try {
|
||||
if ($payType === 'native') {
|
||||
$pay = PaymentService::createWechatNativePay($order);
|
||||
return jsonResponse($pay, '支付发起成功');
|
||||
}
|
||||
|
||||
if ($appId === '') {
|
||||
return jsonResponse(null, '缺少 app_id,无法发起 JSAPI 支付', 400);
|
||||
}
|
||||
|
||||
$openid = trim((string)$request->post('openid', ''));
|
||||
$pay = PaymentService::createWechatJsapiPay($order, $appId, $openid);
|
||||
return jsonResponse($pay, '支付发起成功');
|
||||
} catch (\Throwable $e) {
|
||||
return jsonResponse(null, $e->getMessage(), 400);
|
||||
}
|
||||
}
|
||||
|
||||
public function ship(Request $request)
|
||||
{
|
||||
$orderId = (int)$request->post('order_id');
|
||||
$expressCompany = trim($request->post('express_company', ''));
|
||||
$expressNo = trim($request->post('express_no', ''));
|
||||
|
||||
if (!$expressCompany || !$expressNo) {
|
||||
return jsonResponse(null, '物流信息不完整', 400);
|
||||
}
|
||||
|
||||
$userId = $request->user->id;
|
||||
$order = Order::where('id', $orderId)->where('user_id', $userId)->first();
|
||||
if (!$order) {
|
||||
return jsonResponse(null, '订单不存在', 404);
|
||||
}
|
||||
|
||||
try {
|
||||
OrderFlowService::userShip($order, $expressCompany, $expressNo);
|
||||
return jsonResponse(null, '发货信息已提交');
|
||||
} catch (\Exception $e) {
|
||||
return jsonResponse(null, $e->getMessage(), 400);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user