李帅

1.会员模板页面完成。

2.订单还在构思。
...@@ -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 +}
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
......