From fa8732e54881f26f2a3733d380f911a55c48ce9a Mon Sep 17 00:00:00 2001 From: kingc2022 Date: Mon, 2 Oct 2023 23:30:58 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=20Bug,=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=B5=81=E9=87=8F=E6=BF=80=E6=B4=BB=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 1 + .../Admin/TrafficActivateCodeController.php | 71 +++++++++++++++++++ app/Http/Controllers/Admin/UserController.php | 1 - .../Api/TrafficActivateCodeController.php | 33 +++++++++ app/Models/TrafficActivateCode.php | 28 ++++++++ ...48_create_traffic_activate_codes_table.php | 32 +++++++++ resources/js/components/Menu.vue | 2 +- resources/js/views/Sign.vue | 39 ++++++++-- resources/views/admin/codes/create.blade.php | 13 ++++ resources/views/admin/codes/edit.blade.php | 20 ++++++ resources/views/admin/codes/index.blade.php | 45 ++++++++++++ resources/views/admin/codes/show.blade.php | 8 +++ resources/views/admin/tunnels/index.blade.php | 2 +- resources/views/layouts/app.blade.php | 3 + routes/admin.php | 4 ++ routes/api.php | 2 + 16 files changed, 294 insertions(+), 10 deletions(-) create mode 100644 app/Http/Controllers/Admin/TrafficActivateCodeController.php create mode 100644 app/Http/Controllers/Api/TrafficActivateCodeController.php create mode 100644 app/Models/TrafficActivateCode.php create mode 100644 database/migrations/2023_10_01_162048_create_traffic_activate_codes_table.php create mode 100644 resources/views/admin/codes/create.blade.php create mode 100644 resources/views/admin/codes/edit.blade.php create mode 100644 resources/views/admin/codes/index.blade.php create mode 100644 resources/views/admin/codes/show.blade.php diff --git a/.gitignore b/.gitignore index 0ed13d8..eac97c7 100644 --- a/.gitignore +++ b/.gitignore @@ -17,3 +17,4 @@ yarn-error.log /.idea /.vscode .DS_Store +/project diff --git a/app/Http/Controllers/Admin/TrafficActivateCodeController.php b/app/Http/Controllers/Admin/TrafficActivateCodeController.php new file mode 100644 index 0000000..2807a63 --- /dev/null +++ b/app/Http/Controllers/Admin/TrafficActivateCodeController.php @@ -0,0 +1,71 @@ +count(); + return view('admin.codes.index', ['codes' => $codes, 'count' => $count]); + } + + /** + * Show the form for creating a new resource. + */ + public function create(): View + { + return view('admin.codes.create'); + } + + /** + * Store a newly created resource in storage. + */ + public function store(Request $request) + { + $amount = $request->input('amount'); + $traffic = $request->input('traffic'); + $codes = $this->generate_key($amount); + foreach ($codes as $code) { + TrafficActivateCode::create([ + 'code' => $code, + 'traffic' => $traffic, + ]); + } + return view('admin.codes.show', compact('codes')); + } + + private function generate_key($count): array + { + $codes = []; + for ($i = 0; $i < $count; $i++) { + $code = Str::random(25); + $code = strtoupper($code); + $formattedCode = preg_replace('/(\w{5})(\w{5})(\w{5})(\w{5})(\w{5})/', '$1-$2-$3-$4-$5', $code); + $codes[] = $formattedCode; + } + + return $codes; + } + + /** + * Remove the specified resource from storage. + */ + public function destroy(TrafficActivateCode $code) + { + $code->delete(); + + return back()->with('success', '删除成功'); + } +} diff --git a/app/Http/Controllers/Admin/UserController.php b/app/Http/Controllers/Admin/UserController.php index 9913bb3..8165502 100644 --- a/app/Http/Controllers/Admin/UserController.php +++ b/app/Http/Controllers/Admin/UserController.php @@ -18,7 +18,6 @@ class UserController extends Controller public function index(Request $request) { $users = new User(); - $count = User::count(); foreach ($request->except(['page']) as $key => $value) { if (empty($value)) { diff --git a/app/Http/Controllers/Api/TrafficActivateCodeController.php b/app/Http/Controllers/Api/TrafficActivateCodeController.php new file mode 100644 index 0000000..1008b45 --- /dev/null +++ b/app/Http/Controllers/Api/TrafficActivateCodeController.php @@ -0,0 +1,33 @@ +validate([ + 'code' => 'required|string' + ]); + $code = $request->post('code'); + $trafficActivateCode = TrafficActivateCode::where('code', $code)->first(); + if ($trafficActivateCode == null) { + return $this->error('激活码错误'); + } + if ($trafficActivateCode->used_at != null) { + return $this->error('激活码已被使用'); + } + $trafficActivateCode->user_id = $request->user()->id; + $trafficActivateCode->used_at = now(); + $trafficActivateCode->update(); + $user = User::find($request->user()->id); + $user->traffic += $trafficActivateCode->traffic; + $user->update(); + return $this->success('激活成功'); + } +} diff --git a/app/Models/TrafficActivateCode.php b/app/Models/TrafficActivateCode.php new file mode 100644 index 0000000..e103b1e --- /dev/null +++ b/app/Models/TrafficActivateCode.php @@ -0,0 +1,28 @@ + 'datetime', + ]; + + public function user(): BelongsTo + { + return $this->belongsTo(User::class); + } +} diff --git a/database/migrations/2023_10_01_162048_create_traffic_activate_codes_table.php b/database/migrations/2023_10_01_162048_create_traffic_activate_codes_table.php new file mode 100644 index 0000000..64f19ff --- /dev/null +++ b/database/migrations/2023_10_01_162048_create_traffic_activate_codes_table.php @@ -0,0 +1,32 @@ +id(); + $table->string('code')->index()->unique(); + $table->bigInteger('traffic')->index(); + $table->dateTime('used_at')->nullable(); + $table->unsignedBigInteger('user_id')->nullable()->index(); + $table->foreign('user_id')->references('id')->on('users')->nullOnDelete(); + $table->timestamps(); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::dropIfExists('traffic_activate_codes'); + } +}; diff --git a/resources/js/components/Menu.vue b/resources/js/components/Menu.vue index 9d18164..83c389a 100644 --- a/resources/js/components/Menu.vue +++ b/resources/js/components/Menu.vue @@ -45,7 +45,7 @@ const items = ref([ route: "tunnels.create", }, { - name: "签到", + name: "流量补给", route: "sign", }, { diff --git a/resources/js/views/Sign.vue b/resources/js/views/Sign.vue index d638166..391e85e 100644 --- a/resources/js/views/Sign.vue +++ b/resources/js/views/Sign.vue @@ -17,27 +17,36 @@ +
+

兑换流量激活码

+
+ + +
+ +
+ -