Showing
6 changed files
with
103 additions
and
11 deletions
... | @@ -3,6 +3,7 @@ | ... | @@ -3,6 +3,7 @@ |
3 | namespace App\Http\Controllers\V1; | 3 | namespace App\Http\Controllers\V1; |
4 | 4 | ||
5 | use App\Http\Controllers\Controller; | 5 | use App\Http\Controllers\Controller; |
6 | +use App\Jobs\CancelUnpaidOrder; | ||
6 | use App\Models\MembershipGood; | 7 | use App\Models\MembershipGood; |
7 | use App\Models\Order; | 8 | use App\Models\Order; |
8 | use App\Models\OrderGood; | 9 | use App\Models\OrderGood; |
... | @@ -10,6 +11,7 @@ use Carbon\Carbon; | ... | @@ -10,6 +11,7 @@ use Carbon\Carbon; |
10 | use Illuminate\Http\Request; | 11 | use Illuminate\Http\Request; |
11 | use Illuminate\Support\Facades\Auth; | 12 | use Illuminate\Support\Facades\Auth; |
12 | use Illuminate\Support\Facades\DB; | 13 | use Illuminate\Support\Facades\DB; |
14 | +use Illuminate\Support\Facades\Log; | ||
13 | use Illuminate\Support\Facades\Validator; | 15 | use Illuminate\Support\Facades\Validator; |
14 | use Jiannei\Response\Laravel\Support\Facades\Response; | 16 | use Jiannei\Response\Laravel\Support\Facades\Response; |
15 | 17 | ||
... | @@ -17,7 +19,12 @@ class OrderController extends Controller | ... | @@ -17,7 +19,12 @@ class OrderController extends Controller |
17 | { | 19 | { |
18 | public function index(Request $request) | 20 | public function index(Request $request) |
19 | { | 21 | { |
22 | +// $user_id = Auth::user()->getAuthIdentifier(); todo | ||
23 | + $user_id = 1; | ||
20 | 24 | ||
25 | + $orders = Order::query()->where('user_id',$user_id)->simplePaginate(10); | ||
26 | + | ||
27 | + return Response::success($orders); | ||
21 | } | 28 | } |
22 | 29 | ||
23 | public function store(Request $request) | 30 | public function store(Request $request) |
... | @@ -30,16 +37,26 @@ class OrderController extends Controller | ... | @@ -30,16 +37,26 @@ class OrderController extends Controller |
30 | 37 | ||
31 | if ($validator->fails()) return Response::fail('缺少参数',500,$validator->errors()); | 38 | if ($validator->fails()) return Response::fail('缺少参数',500,$validator->errors()); |
32 | 39 | ||
33 | - $user_id = Auth::user()->getAuthIdentifier(); | 40 | +// $user_id = Auth::user()->getAuthIdentifier(); todo |
41 | + $user_id = 1; | ||
34 | 42 | ||
35 | $order = $this->build($user_id, $data['goods_id'], $this->getClientTerminal()); | 43 | $order = $this->build($user_id, $data['goods_id'], $this->getClientTerminal()); |
36 | 44 | ||
37 | - return Response::success($order); | 45 | + if (!$order) return Response::fail('', 500,$order); |
46 | + | ||
47 | + return Response::success(['order_sn' => $order]); | ||
38 | } | 48 | } |
39 | 49 | ||
40 | public function show($id) | 50 | public function show($id) |
41 | { | 51 | { |
52 | +// $user_id = Auth::user()->getAuthIdentifier(); todo | ||
53 | + $user_id = 1; | ||
54 | + | ||
55 | + $order = Order::query()->where('order_sn',$id)->where('user_id',$user_id)->first(); | ||
42 | 56 | ||
57 | + if (!$order) return Response::fail('order_sn fail',500); | ||
58 | + | ||
59 | + return Response::success($order); | ||
43 | } | 60 | } |
44 | 61 | ||
45 | /** | 62 | /** |
... | @@ -71,6 +88,8 @@ class OrderController extends Controller | ... | @@ -71,6 +88,8 @@ class OrderController extends Controller |
71 | $order->goods_amount = $membership_good->price; | 88 | $order->goods_amount = $membership_good->price; |
72 | $order->status = Order::UNPAID; | 89 | $order->status = Order::UNPAID; |
73 | $order->source = $source; | 90 | $order->source = $source; |
91 | + $order->thumbnail = $membership->getSingleImage(); | ||
92 | + $order->cancel_time = Carbon::now()->addSeconds(Order::TIMEOUT); | ||
74 | 93 | ||
75 | $order->save(); | 94 | $order->save(); |
76 | 95 | ||
... | @@ -87,16 +106,16 @@ class OrderController extends Controller | ... | @@ -87,16 +106,16 @@ class OrderController extends Controller |
87 | 106 | ||
88 | $order->goods = $order_good; | 107 | $order->goods = $order_good; |
89 | 108 | ||
109 | + CancelUnpaidOrder::dispatch($order)->delay(Order::TIMEOUT); | ||
90 | 110 | ||
91 | - // todo 超时处理,建议给Job处理 | 111 | + if ($pay_amount == 0) { //0元购就不执行回调了 |
92 | - | 112 | + $this->freePay($order); |
93 | -// if ($pay_amount == 0) { //0元购就不执行回调了 | 113 | + } |
94 | -// $this->freePay($order); | 114 | + return $order_sn; |
95 | -// } | ||
96 | - return $order; | ||
97 | }); | 115 | }); |
98 | }catch (\Exception $exception){ | 116 | }catch (\Exception $exception){ |
99 | - return Response::fail('', 500, $exception->getMessage()); | 117 | + Log::error($exception->getMessage()); |
118 | + return $exception->getMessage(); | ||
100 | } | 119 | } |
101 | } | 120 | } |
102 | 121 | ... | ... |
1 | +<?php | ||
2 | + | ||
3 | +namespace App\Http\Controllers\V1; | ||
4 | + | ||
5 | +use App\Http\Controllers\Controller; | ||
6 | +use App\Models\VideoTemp; | ||
7 | +use Illuminate\Http\Request; | ||
8 | +use Jiannei\Response\Laravel\Support\Facades\Response; | ||
9 | + | ||
10 | +class TemplateController extends Controller | ||
11 | +{ | ||
12 | + // | ||
13 | + public function index() | ||
14 | + { | ||
15 | + $temps = VideoTemp::query()->where('state', 1)->get(); | ||
16 | + | ||
17 | + return Response::success($temps); | ||
18 | + } | ||
19 | +} |
app/Jobs/CancelUnpaidOrder.php
0 → 100644
1 | +<?php | ||
2 | + | ||
3 | +namespace App\Jobs; | ||
4 | + | ||
5 | +use App\Models\Order; | ||
6 | +use Illuminate\Bus\Queueable; | ||
7 | +use Illuminate\Contracts\Queue\ShouldBeUnique; | ||
8 | +use Illuminate\Contracts\Queue\ShouldQueue; | ||
9 | +use Illuminate\Foundation\Bus\Dispatchable; | ||
10 | +use Illuminate\Queue\InteractsWithQueue; | ||
11 | +use Illuminate\Queue\SerializesModels; | ||
12 | + | ||
13 | +class CancelUnpaidOrder implements ShouldQueue | ||
14 | +{ | ||
15 | + use Dispatchable, InteractsWithQueue, Queueable, SerializesModels; | ||
16 | + | ||
17 | + public $order; | ||
18 | + | ||
19 | + /** | ||
20 | + * Create a new job instance. | ||
21 | + * @param $order | ||
22 | + * @return void | ||
23 | + */ | ||
24 | + public function __construct(Order $order) | ||
25 | + { | ||
26 | + $this->order = $order; | ||
27 | + } | ||
28 | + | ||
29 | + /** | ||
30 | + * Execute the job. | ||
31 | + * | ||
32 | + * @return void | ||
33 | + */ | ||
34 | + public function handle() | ||
35 | + { | ||
36 | + if ($this->order->status >= Order::USER_CANCEL){ | ||
37 | + return; | ||
38 | + } | ||
39 | + | ||
40 | + $this->order->timeoutCanceled(); | ||
41 | + } | ||
42 | +} |
... | @@ -21,7 +21,7 @@ class Order extends Model | ... | @@ -21,7 +21,7 @@ class Order extends Model |
21 | const TIMEOUT_CANCEL = 102; | 21 | const TIMEOUT_CANCEL = 102; |
22 | 22 | ||
23 | /** 商户取消*/ | 23 | /** 商户取消*/ |
24 | - const MERCHANT_CANCEL = 102; | 24 | + const MERCHANT_CANCEL = 103; |
25 | 25 | ||
26 | /** 已支付*/ // 回调 | 26 | /** 已支付*/ // 回调 |
27 | const PAID = 201; | 27 | const PAID = 201; |
... | @@ -29,10 +29,13 @@ class Order extends Model | ... | @@ -29,10 +29,13 @@ class Order extends Model |
29 | /** 已完成*/ // 回调并且业务逻辑(加天数、加销量)执行完毕 | 29 | /** 已完成*/ // 回调并且业务逻辑(加天数、加销量)执行完毕 |
30 | const DONE = 204; | 30 | const DONE = 204; |
31 | 31 | ||
32 | + /** 订单超时时间 30分钟 */ | ||
33 | + const TIMEOUT = 1800; | ||
34 | + | ||
32 | 35 | ||
33 | public function order_goods() | 36 | public function order_goods() |
34 | { | 37 | { |
35 | - return $this->hasOne('App\Models\OrderGood','order_sn'); | 38 | + return $this->hasOne('App\Models\OrderGood','order_sn','order_sn'); |
36 | } | 39 | } |
37 | 40 | ||
38 | /** | 41 | /** |
... | @@ -45,4 +48,9 @@ class Order extends Model | ... | @@ -45,4 +48,9 @@ class Order extends Model |
45 | $Sn = $prefix . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99)); | 48 | $Sn = $prefix . strtoupper(dechex(date('m'))) . date('d') . substr(time(), -5) . substr(microtime(), 2, 5) . sprintf('%02d', rand(0, 99)); |
46 | return $Sn; | 49 | return $Sn; |
47 | } | 50 | } |
51 | + | ||
52 | + public function timeoutCanceled() | ||
53 | + { | ||
54 | + | ||
55 | + } | ||
48 | } | 56 | } |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -18,6 +18,7 @@ class CreateOrderTable extends Migration | ... | @@ -18,6 +18,7 @@ class CreateOrderTable extends Migration |
18 | $table->string('order_sn')->index()->default('')->comment('订单号'); | 18 | $table->string('order_sn')->index()->default('')->comment('订单号'); |
19 | $table->unsignedBigInteger('user_id')->index()->comment('用户id'); | 19 | $table->unsignedBigInteger('user_id')->index()->comment('用户id'); |
20 | $table->string('description')->default('')->comment('订单描述'); | 20 | $table->string('description')->default('')->comment('订单描述'); |
21 | + $table->string('thumbnail')->default('')->comment('缩略图'); | ||
21 | $table->decimal('pay_amount')->comment('实付金额'); | 22 | $table->decimal('pay_amount')->comment('实付金额'); |
22 | $table->decimal('goods_amount')->comment('商品金额'); | 23 | $table->decimal('goods_amount')->comment('商品金额'); |
23 | $table->unsignedSmallInteger('status')->comment('订单状态:100待付款 101用户取消 102超时取消 103商户取消 201已付款 204已完成'); | 24 | $table->unsignedSmallInteger('status')->comment('订单状态:100待付款 101用户取消 102超时取消 103商户取消 201已付款 204已完成'); | ... | ... |
... | @@ -33,6 +33,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route | ... | @@ -33,6 +33,9 @@ Route::prefix('v1')->namespace('App\Http\Controllers\V1')->group(function (Route |
33 | /** 临境 */ | 33 | /** 临境 */ |
34 | $api->apiResource('/immersive', 'ImmerseController'); | 34 | $api->apiResource('/immersive', 'ImmerseController'); |
35 | 35 | ||
36 | + /** 模板 */ | ||
37 | + $api->apiResource('/template', 'TemplateController'); | ||
38 | + | ||
36 | /** 创建订单 */ | 39 | /** 创建订单 */ |
37 | $api->apiResource('/order', 'OrderController'); | 40 | $api->apiResource('/order', 'OrderController'); |
38 | 41 | ... | ... |
-
Please register or login to post a comment