Browse Source

order assign

Tokumeikoi 4 years ago
parent
commit
d1a2e7a29e

+ 40 - 0
app/Http/Controllers/Admin/OrderController.php

@@ -2,13 +2,16 @@
 
 namespace App\Http\Controllers\Admin;
 
+use App\Http\Requests\Admin\OrderAssign;
 use App\Http\Requests\Admin\OrderUpdate;
 use App\Services\OrderService;
+use App\Utils\Helper;
 use Illuminate\Http\Request;
 use App\Http\Controllers\Controller;
 use App\Models\Order;
 use App\Models\User;
 use App\Models\Plan;
+use Illuminate\Support\Facades\DB;
 
 class OrderController extends Controller
 {
@@ -100,4 +103,41 @@ class OrderController extends Controller
             'data' => true
         ]);
     }
+
+    public function assign(OrderAssign $request)
+    {
+        $plan = Plan::find($request->input('plan_id'));
+        $user = User::where('email', $request->input('email'));
+
+        if (!$user) {
+            abort(500, '该用户不存在');
+        }
+
+        if (!$plan) {
+            abort(500, '该订阅不存在');
+        }
+
+        DB::beginTransaction();
+        $order = new Order();
+        $orderService = new OrderService($order);
+        $order->user_id = $user->id;
+        $order->plan_id = $plan->id;
+        $order->cycle = $request->input('cycle');
+        $order->trade_no = Helper::guid();
+        $order->total_amount = $request->input('total_amount');
+
+        $orderService->setOrderType($user);
+        $orderService->setInvite($user);
+
+        if (!$order->save()) {
+            DB::rollback();
+            abort(500, '订单创建失败');
+        }
+
+        DB::commit();
+
+        return response([
+            'data' => $order->trade_no
+        ]);
+    }
 }

+ 34 - 0
app/Http/Requests/Admin/OrderAssign.php

@@ -0,0 +1,34 @@
+<?php
+
+namespace App\Http\Requests\Admin;
+
+use Illuminate\Foundation\Http\FormRequest;
+
+class OrderAssign extends FormRequest
+{
+    /**
+     * Get the validation rules that apply to the request.
+     *
+     * @return array
+     */
+    public function rules()
+    {
+        return [
+            'plan_id' => 'required',
+            'email' => 'required',
+            'total_amount' => 'required',
+            'cycle' => 'required|in:month_price,quarter_price,half_year_price,year_price,onetime_price,reset_price'
+        ];
+    }
+
+    public function messages()
+    {
+        return [
+            'plan_id.required' => '订阅不能为空',
+            'email.required' => '邮箱不能为空',
+            'total_amount.required' => '支付金额不能为空',
+            'cycle.required' => '订阅周期不能为空',
+            'cycle.in' => '订阅周期格式有误'
+        ];
+    }
+}

+ 1 - 0
app/Http/Routes/AdminRoute.php

@@ -36,6 +36,7 @@ class AdminRoute
             $router->get ('/order/fetch', 'Admin\\OrderController@fetch');
             $router->post('/order/repair', 'Admin\\OrderController@repair');
             $router->post('/order/update', 'Admin\\OrderController@update');
+            $router->post('/order/assign', 'Admin\\OrderController@assign');
             // User
             $router->get ('/user/fetch', 'Admin\\UserController@fetch');
             $router->post('/user/update', 'Admin\\UserController@update');