Browse Source

订单状态使用常量

dev
李可松 4 years ago
parent
commit
ab9683ba81
  1. 19
      app/Http/Controllers/Api/OrderController.php
  2. 3
      app/Http/Controllers/Api/VerificationController.php
  3. 17
      app/Models/Order.php
  4. 20
      app/Service/OrderStatus.php

19
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,
]);

3
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;

17
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] ?? '未知';
}

20
app/Service/OrderStatus.php

@ -0,0 +1,20 @@
<?php
namespace App\Service;
/**
* 订单状态码
* Class OrderStatus
* @package App\Service
*/
class OrderStatus
{
const CANCEL = -1; //取消
const UNPAID = 0; //待付款
const PAY_EARNEST = 1; //已付定金
const PAID = 2; //已付全款
const PAY_RETAINAGE = 3; //已付尾款
const REFUNDING = 6; //退款中
const REFUNDED = 7; //退款完成
const SUCCESS = 16; //已完成
}
Loading…
Cancel
Save