diff --git a/app/Http/Controllers/Api/OrderController.php b/app/Http/Controllers/Api/OrderController.php index f51c58d..98906d8 100644 --- a/app/Http/Controllers/Api/OrderController.php +++ b/app/Http/Controllers/Api/OrderController.php @@ -13,6 +13,7 @@ use App\Models\Order; use EasyWeChat\Factory; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; +use App\Service\OrderStatus as Status; /** * 订单 @@ -49,14 +50,14 @@ class OrderController extends Controller $timeout_ids = []; //10分钟内未付款订单提示付款 foreach ($order_list['data'] as &$v) { - if ($v['status'] == 0) { + if ($v['status'] == Status::UNPAID) { $minute = $time - $v['created_at']; //订单创建后10分钟内未付款则提示,否则取消订单 if ($minute < 600) { $v['status_text'] = '请在' . ceil($minute / 60) . '分钟内付款'; } else { $timeout_ids[] = $v['id']; - $v['status'] = -1; + $v['status'] = Status::CANCEL; $v['status_text'] = '已取消'; //TODO 加回库存,未考虑到几天/几个月后再打开订单列表页的情况 Product::query()->find($v['product_id'])->update(['stock' => $v['num']]); @@ -65,7 +66,7 @@ class OrderController extends Controller } //超时订单设置为已取消 TODO 测试阶段暂时注释 -// Order::query()->whereIn('id', $timeout_ids)->update(['status' => -1]); +// Order::query()->whereIn('id', $timeout_ids)->update(['status' => Status::CANCEL]); return $this->success($order_list); } @@ -120,10 +121,10 @@ class OrderController extends Controller $price = $this->calc($ap, $formData['num']); $title = $ap->product->title; //产品标题 //代理商产品表增加销量 - $ap->increment('sale', $formData['num']); + // $ap->increment('sale', $formData['num']); TODO 支付成功之后再增加销量 //供应商产品表加销量、减库存 - $ap->product->sale += $formData['num']; + // $ap->product->sale += $formData['num']; TODO 支付成功之后再增加销量 $ap->product->stock -= $formData['num']; $ap->product->save(); @@ -139,7 +140,7 @@ class OrderController extends Controller 'picture' => $ap->product->picture, 'agent_product_id' => $ap->id, 'product_id' => $ap->product_id, - 'status' => 0, + 'status' => Status::UNPAID, 'pay_type' => $formData['pay_type'], 'coupon_id' => join(',', $coupon_ids), ]); @@ -185,10 +186,10 @@ class OrderController extends Controller //TODO 需要后台处理 $order = Order::find($formData['id']); - if (!in_array($order->status, [1, 2, 3])) { + if (!in_array($order->status, [Status::PAY_EARNEST, Status::PAID, Status::PAY_RETAINAGE])) { return $this->error('当前订单状态不允许退款'); } - $order->status = 6; + $order->status = Status::REFUNDING; $order->refund_info = [ 'desc' => strip_tags($formData['desc']), 'pictures' => $formData['pictures'] ?? [], @@ -244,7 +245,7 @@ class OrderController extends Controller 'body' => $order->title, 'out_trade_no' => $order->order_no, 'total_fee' => $order->price, //TODO 需要区分定金和全款 -// 'notify_url' => 'https://pay.weixin.qq.com/wxpay/pay.action', // 支付结果通知网址,如果不设置则会使用配置里的默认地址 + 'notify_url' => route('wxpay_notify'), // 支付结果通知网址,如果不设置则会使用配置里的默认地址 'trade_type' => 'JSAPI', 'openid' => $openid, ]); diff --git a/app/Http/Controllers/Api/VerificationController.php b/app/Http/Controllers/Api/VerificationController.php index 6ad6919..d8ffdaa 100644 --- a/app/Http/Controllers/Api/VerificationController.php +++ b/app/Http/Controllers/Api/VerificationController.php @@ -4,6 +4,7 @@ namespace App\Http\Controllers\Api; use App\Http\Controllers\Controller; use App\Models\Order; use App\Models\User; +use App\Service\OrderStatus; class VerificationController extends Controller { @@ -21,7 +22,7 @@ class VerificationController extends Controller if (!$order) { return $this->error('订单不存在或无权限'); } - if (!in_array($order->status, [2, 3])) { + if (!in_array($order->status, [OrderStatus::PAID, OrderStatus::PAY_RETAINAGE])) { return $this->error('当前订单状态不允许核销'); } $order->status = 16; diff --git a/app/Models/Order.php b/app/Models/Order.php index fc0d2e5..16710ba 100644 --- a/app/Models/Order.php +++ b/app/Models/Order.php @@ -4,6 +4,7 @@ namespace App\Models; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\SoftDeletes; +use App\Service\OrderStatus as Status; class Order extends BaseModel { @@ -24,14 +25,14 @@ class Order extends BaseModel public function getStatusTextAttribute() { $status_text = [ - -1 => '已取消', - 0 => '待付款', - 1 => '已付定金', - 2 => '已付款', - 3 => '已付尾款', - 6 => '退款中', - 7 => '已退款', - 16 => '已完成', + Status::CANCEL => '已取消', + Status::UNPAID => '待付款', + Status::PAY_EARNEST => '已付定金', + Status::PAID => '已付款', + Status::PAY_RETAINAGE => '已付尾款', + Status::REFUNDING => '退款中', + Status::REFUNDED => '已退款', + Status::SUCCESS => '已完成', ]; return $status_text[$this->status] ?? '未知'; } diff --git a/app/Service/OrderStatus.php b/app/Service/OrderStatus.php new file mode 100644 index 0000000..4ac14d9 --- /dev/null +++ b/app/Service/OrderStatus.php @@ -0,0 +1,20 @@ +