瀏覽代碼

新增 抽獎api

maa3606 2 年之前
父節點
當前提交
118c71e5b0

+ 19 - 1
app/Http/Controllers/PrizeController.php

@@ -15,7 +15,7 @@ class PrizeController extends Controller
      */
     public function index()
     {
-        //
+        return Prize::all();
     }
 
     /**
@@ -73,6 +73,24 @@ class PrizeController extends Controller
         //
     }
 
+    public function draw(UpdatePrizeRequest $request, Prize $prize)
+    {
+        $prize = Prize::where('id', $request->prizeId)->first();
+        if (!$prize) {
+            // return 'prize not found';
+            return false;
+        }
+        if ($prize->count > 0) {
+            $prize->update([
+                'count' => $prize->count - 1,
+                'updated_at' => now(),
+            ]);
+            return true;
+        }
+        // return 'prize is empty';
+        return false;
+    }
+
     /**
      * Remove the specified resource from storage.
      *

+ 9 - 2
app/Http/Controllers/RecipientsController.php

@@ -15,7 +15,7 @@ class RecipientsController extends Controller
      */
     public function index()
     {
-        //
+        return Recipients::all();
     }
 
     /**
@@ -36,7 +36,14 @@ class RecipientsController extends Controller
      */
     public function store(StoreRecipientsRequest $request)
     {
-        //
+        Recipients::insert([
+            'prize_id' => $request->prizeId,
+            'user_id' => $request->userId,
+            'is_claimed' => false,
+            'created_at' => now(),
+            'updated_at' => now(),
+        ]);
+        return 'success';
     }
 
     /**

+ 1 - 1
app/Http/Requests/StoreRecipientsRequest.php

@@ -13,7 +13,7 @@ class StoreRecipientsRequest extends FormRequest
      */
     public function authorize()
     {
-        return false;
+        return true;
     }
 
     /**

+ 1 - 1
app/Http/Requests/UpdatePrizeRequest.php

@@ -13,7 +13,7 @@ class UpdatePrizeRequest extends FormRequest
      */
     public function authorize()
     {
-        return false;
+        return true;
     }
 
     /**

+ 1 - 1
app/Http/Requests/UpdateRecipientsRequest.php

@@ -13,7 +13,7 @@ class UpdateRecipientsRequest extends FormRequest
      */
     public function authorize()
     {
-        return false;
+        return true;
     }
 
     /**

+ 3 - 3
database/seeders/RecipientsSeeder.php

@@ -4,7 +4,7 @@ namespace Database\Seeders;
 
 use Illuminate\Database\Console\Seeds\WithoutModelEvents;
 use Illuminate\Database\Seeder;
-use \App\Models\Recipients;
+use App\Models\Recipients;
 
 class RecipientsSeeder extends Seeder
 {
@@ -17,14 +17,14 @@ class RecipientsSeeder extends Seeder
     {
         Recipients::insert([
             [
-                'prize_id' => '0',
+                'prize_id' => 1,
                 'user_id' => '3606',
                 'is_claimed' => true,
                 'created_at' => now(),
                 'updated_at' => now(),
             ],
             [
-                'prize_id' => '1',
+                'prize_id' => 2,
                 'user_id' => '3606',
                 'is_claimed' => false,
                 'created_at' => now(),

+ 12 - 0
resources/js/src/router/config.js

@@ -61,6 +61,18 @@ export const settings = {
             path: '*',
             redirect: 'error-404',
         },
+        {
+            path: '/draw',
+            name: 'draw',
+            component: () => import('@/views/Draw.vue'),
+            meta: {
+                pageTitle: 'Draw',
+                breadcrumb: [{
+                    text: 'Draw',
+                    active: true,
+                }, ],
+            },
+        },
     ],
 }
 export const _ = undefined

+ 34 - 0
resources/js/src/views/Draw.vue

@@ -0,0 +1,34 @@
+<template>
+  <div>
+    <b-card title="Kick start your project 🚀">
+      <b-card-text>All the best for your new project.</b-card-text>
+      <b-card-text>Please make sure to read our <b-link
+        href="https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/documentation/guide/development/installation.html"
+        target="_blank"
+      >
+        Template Documentation
+      </b-link> to understand where to go from here and how to use our template.</b-card-text>
+    </b-card>
+
+    <b-card title="Want to integrate JWT? 🔒">
+      <b-card-text>We carefully crafted JWT flow so you can implement JWT with ease and with minimum efforts.</b-card-text>
+      <b-card-text>Please read our  JWT Documentation to get more out of JWT authentication.</b-card-text>
+    </b-card>
+  </div>
+</template>
+
+<script>
+import { BCard, BCardText, BLink } from 'bootstrap-vue'
+
+export default {
+  components: {
+    BCard,
+    BCardText,
+    BLink,
+  },
+}
+</script>
+
+<style>
+
+</style>

+ 12 - 1
routes/api.php

@@ -8,6 +8,10 @@ use App\Http\Controllers\API\UserController;
 use App\Http\Controllers\TemplateController;
 use App\Models\User;
 use Illuminate\Support\Facades\Hash;
+
+use App\Http\Controllers\PrizeController;
+use App\Http\Controllers\RecipientsController;
+
 /*
 |--------------------------------------------------------------------------
 | API Routes
@@ -81,5 +85,12 @@ Route::middleware('auth:sanctum')->group(function () {
 });
 
 Route::middleware(['auth:sanctum', 'abilities:Admin'])->group(function () {
+    // Prize
+    Route::post('/prize/draw', [PrizeController::class, 'draw']);
     
-});
+    // Recipients
+    Route::post('/recipients/store', [RecipientsController::class, 'store']);
+});
+
+Route::post('/prize/index', [PrizeController::class, 'index']);
+Route::post('/recipients/index', [RecipientsController::class, 'index']);