diff --git a/app/Http/Controllers/Admin/SettingController.php b/app/Http/Controllers/Admin/SettingController.php index 32fcb1f..44fa91f 100644 --- a/app/Http/Controllers/Admin/SettingController.php +++ b/app/Http/Controllers/Admin/SettingController.php @@ -15,7 +15,7 @@ class SettingController extends Controller public function promoCode(Request $request) { - $start = Carbon::now()->startOfMonth(); + $start = Carbon::now()->month(1)->startOfMonth(); $end = Carbon::now()->endOfMonth(); $result = Promocode::whereBetween('created_at', [$start, $end])->paginate(100); diff --git a/app/Http/Controllers/EmailController.php b/app/Http/Controllers/EmailController.php index 2145e9b..72721e4 100644 --- a/app/Http/Controllers/EmailController.php +++ b/app/Http/Controllers/EmailController.php @@ -105,7 +105,7 @@ public function index(Request $request) } public function sendemail(Request $request) { - \Log::info('got send mail', ['function' => 'sendemail']); + Log::info('got send mail', ['function' => 'sendemail']); // 驗證請求數據 $validatedData = $request->validate([ @@ -126,28 +126,28 @@ public function sendemail(Request $request) $check->token = $token; $check->save(); - \Log::info('Generated token', ['token' => $token]); + Log::info('Generated token', ['token' => $token]); $subject = "卡菲姬系統-驗證email"; // 使用 route 生成驗證鏈接 $verificationLink = route('email.verify', ['token' => $token]); - \Log::info('Generated verification link', ['link' => $verificationLink]); + Log::info('Generated verification link', ['link' => $verificationLink]); try { // 郵件內容 $message = "您好,\n\n請點擊以下鏈接以驗證您的電子郵件地址:\n\n" . $verificationLink . "\n\n如果您未請求此操作,請忽略此郵件。\n\n感謝您!"; - \Log::info('Preparing to send mail', ['email' => $validatedData['email'], 'subject' => $subject, 'message' => $message]); + Log::info('Preparing to send mail', ['email' => $validatedData['email'], 'subject' => $subject, 'message' => $message]); // 發送電子郵件 Mail::to($validatedData['email'])->send(new \App\Mail\CustomMail($subject, $message)); - \Log::info('Mail sent successfully'); + Log::info('Mail sent successfully'); return response()->json(['status' => 'success', 'msg' => '郵件發送成功']); - } catch (\Exception $e) { - \Log::error('Failed to send mail', ['error' => $e->getMessage()]); + } catch (Exception $e) { + Log::error('Failed to send mail', ['error' => $e->getMessage()]); return response()->json(['status' => 'error', 'msg' => '郵件發送失敗,請稍後再試!', 'error' => $e->getMessage()], 500); } @@ -178,11 +178,12 @@ public function validemail(Request $request) 'status' => 'error', 'msg' => 'email 以使用 ,是否逕行合併,如果是 請先驗證email', ]); - } - return response()->json([ - 'status' => 'success', + } else { + return response()->json([ + 'status' => 'success', - ]); + ]); + } } /** diff --git a/app/Http/Controllers/LoginController.php b/app/Http/Controllers/LoginController.php index a7e6304..42072cd 100644 --- a/app/Http/Controllers/LoginController.php +++ b/app/Http/Controllers/LoginController.php @@ -116,7 +116,7 @@ public function adminLogout() public function memberLogout() { Auth::guard('member')->logout(); - return redirect()->route('front.login.view'); + return redirect()->route('login'); } public function adminNormalLogin(Request $request) @@ -165,7 +165,7 @@ public function handleGoogleCallback() 'source' => 'cafeg', ] ); - \Log::info('google Oauth :', [$user]); + Log::info('google Oauth :', [$user]); // 登入用戶 diff --git a/app/Http/Controllers/front/MemberController.php b/app/Http/Controllers/front/MemberController.php index 3dc851c..5af35d2 100644 --- a/app/Http/Controllers/front/MemberController.php +++ b/app/Http/Controllers/front/MemberController.php @@ -12,14 +12,25 @@ class MemberController extends Controller { - // + /** + * Summary of index member 首頁 + * @return mixed arrray promocode + * @return mixed|\Illuminate\Contracts\View\View|\Illuminate\Http\RedirectResponse + */ public function index() { $code = null; if (isset(Auth::guard('member')->user()->id)) { $user_id = Auth::guard('member')->user()->id; - $code = Promocode::where('used_count', $user_id)->first(); + $code = Promocode::where('used_count', $user_id)->latest()->first(); + + if (!$code) { + $code = Promocode::where('used_count', 0)->first(); + $code->give_to = '首次'; + $code->used_count = $user_id; + $code->save(); + } return view('front.member.index', ['code' => $code]); } else { @@ -27,6 +38,10 @@ public function index() return redirect()->route('front.login.view'); } } + /** + * Summary of profile 登入後個人資訊沒有menu + * @return \Illuminate\Contracts\View\View + */ public function profile() { return view('front.member.profile'); @@ -69,7 +84,11 @@ public function profileUpdate(Request $request) return response()->json(['status' => 'success', 'msg' => '更新成功']); } - + /** + * Summary of pageProfile 個人資訊 has menu + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Contracts\View\View + */ public function pageProfile(Request $request) { @@ -102,4 +121,12 @@ public function checkEmail(Request $request) return response()->json(['status' => 'success', 'msg' => '該email號碼可用']); } + + public function changeLevel(Request $request) + { + $user = Member::find($request->id); + $user->level = $request->level; + $user->save(); + return response()->json(['status' => 'success', '成功', 'level' => $request->level, 'name' => $user->level_name]); + } } diff --git a/app/Http/Controllers/front/PromoCodeController.php b/app/Http/Controllers/front/PromoCodeController.php index 25dc552..24685ad 100644 --- a/app/Http/Controllers/front/PromoCodeController.php +++ b/app/Http/Controllers/front/PromoCodeController.php @@ -20,24 +20,18 @@ public function index() /** * Show the form for creating a new resource. */ - public function create() + public function create(Request $request) { $user_id = Auth::guard('member')->user()->id; $count = Promocode::where('used_count', $user_id)->count(); + $give_to = $request->input('give_to'); - if (!$count) { + $row = Promocode::where('used_count', 0)->first(); + $row->used_count = $user_id; + $row->give_to = $give_to; + $row->save(); + return response()->json(['status' => 'success', 'msg' => '已成功取得', 'promocode' => $row->code, 'give_to' => $row->give_to]); - $row = Promocode::where('used_count', 0)->first(); - $row->used_count = $user_id; - $row->save(); - return response()->json(['status' => 'success', 'msg' => '已成功取得', 'promocode' => $row->code]); - } else { - $code = Promocode::where('used_count', $user_id)->latest() - ->first(); - ; - return response()->json(['status' => 'success', 'msg' => '你已取得過優惠碼', 'promocode' => $code->code]); - - } } /** @@ -48,23 +42,18 @@ public function create() public function morePromocode() { $user = Auth::guard('member')->user(); - try { if ($user->level != 9) { throw new Exception("Error Processing Request", 401); } else { - $row = Promocode::where('used_count', 0)->first(); $row->used_count = $user->id; $row->save(); return response()->json(['status' => 'success', 'msg' => '已成功取得', 'promocode' => $row->code]); } - - } catch (Exception $th) { //throw $th; return response()->json(['status' => 'error', 'msg' => $th->getMessage(), 'code' => $th->getCode()]); - } } diff --git a/app/Http/Controllers/front/RegisterController.php b/app/Http/Controllers/front/RegisterController.php index a9d0d1c..e83e65c 100644 --- a/app/Http/Controllers/front/RegisterController.php +++ b/app/Http/Controllers/front/RegisterController.php @@ -9,6 +9,7 @@ use Mail; use Log; use Auth; +use Str; class RegisterController extends Controller { /** @@ -61,9 +62,9 @@ public function forgotPassword(Request $request) public function sendForgotPassword(Request $request) { - \Log::info('sendForgotPassword', []); + Log::info('sendForgotPassword', []); $subject = "卡菲姬系統-密碼重新設定"; - $token = \Str::random(32); + $token = Str::random(32); $result = Member::where('email', $request->email)->firstOrFail(); try { @@ -72,7 +73,7 @@ public function sendForgotPassword(Request $request) } else { $verificationLink = route('change.password', ['token' => $token, 'id' => $result->id]); - \Log::info('sendForgotPassword go EmailVerifications', []); + Log::info('sendForgotPassword go EmailVerifications', []); $res = EmailVerifications::where('email', $request->email)->first(); if ($res) { @@ -95,8 +96,8 @@ public function sendForgotPassword(Request $request) // 發送電子郵件 Mail::to($request->input('email'))->send(new \App\Mail\CustomMail($subject, $message)); return response()->json(['status' => 'success', 'msg' => '郵件發送成功']); - } catch (\Exception $e) { - \Log::error('Failed to send mail', ['error' => $e->getMessage()]); + } catch (Exception $e) { + Log::error('Failed to send mail', ['error' => $e->getMessage()]); return response()->json(['status' => 'error', 'msg' => '郵件發送失敗,請稍後再試!', 'error' => $e->getMessage()], 500); } } diff --git a/app/Models/Member.php b/app/Models/Member.php index fee4564..546c846 100644 --- a/app/Models/Member.php +++ b/app/Models/Member.php @@ -32,7 +32,7 @@ class Member extends Authenticatable public static $levelName = [ 0 => '一般會員', 1 => '白銀會員', - 2 => '黃金會員', + 2 => '白金會員', 9 => '管理員', ]; diff --git a/app/Models/Promocode.php b/app/Models/Promocode.php index 35ec6b0..2311e6b 100644 --- a/app/Models/Promocode.php +++ b/app/Models/Promocode.php @@ -18,4 +18,9 @@ class Promocode extends Model 'valid_to', 'is_active', ]; + + public function getMember() + { + return $this->hasOne(Member::class, 'id', 'used_count'); + } } diff --git a/database/migrations/2025_01_13_154705_create_promocodes_table.php b/database/migrations/2025_01_13_154705_create_promocodes_table.php index 1ffdc0e..9e58b60 100644 --- a/database/migrations/2025_01_13_154705_create_promocodes_table.php +++ b/database/migrations/2025_01_13_154705_create_promocodes_table.php @@ -4,8 +4,7 @@ use Illuminate\Database\Schema\Blueprint; use Illuminate\Support\Facades\Schema; -return new class extends Migration -{ +return new class extends Migration { /** * Run the migrations. */ @@ -21,6 +20,7 @@ public function up(): void $table->date('valid_from')->nullable()->comment('有效期開始'); $table->date('valid_to')->nullable()->comment('有效期結束'); $table->boolean('is_active')->default(true)->comment('是否啟用'); + $table->string('give_to')->nullable()->comment('給予誰'); $table->timestamps(); // 自動生成 created_at 和 updated_at }); } diff --git a/resources/menu/verticalMenu.json b/resources/menu/verticalMenu.json index 9336354..883271c 100644 --- a/resources/menu/verticalMenu.json +++ b/resources/menu/verticalMenu.json @@ -2,12 +2,12 @@ { "name": "首 頁", "icon": "menu-icon tf-icons ri-home-smile-line", - "slug": "admin/memberlist", + "slug": "admin.index", "submenu": [ { "url": "admin/memberlist", "name": "會員列表", - "slug": "memberlist" + "slug": "admin.memberlist" } ] @@ -15,24 +15,24 @@ { "name": "設 定", "icon": "menu-icon tf-icons ri-settings-line", - "slug": "admin/setting/*", + "slug": "admin.setting", "submenu": [ { "url": "admin/setting/promocode", "name": "優惠代碼", - "slug": "admin/setting" + "slug": "admin.setting.promocode" }, { "url": "admin/setting/adminlist", "name": "後台登入人員", - "slug": "setting.adminlist" + "slug": "admin.setting.adminlist" } ] }, { "name": "登 出", "icon": "menu-icon tf-icons ri-logout-circle-line", - "slug": "logout", + "slug": "admin.logout", "url": "admin/logout", "submenu": [ diff --git a/resources/views/admin/member/index.blade.php b/resources/views/admin/member/index.blade.php index 05d5386..cb1933b 100644 --- a/resources/views/admin/member/index.blade.php +++ b/resources/views/admin/member/index.blade.php @@ -3,8 +3,7 @@ @endsection @section('content')
| 縮 排 | 會員id | 會員名稱 | 手機號碼 | @@ -162,7 +165,13 @@|||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| {{ $item->id }} | + {{-- 縮排 --}} ++ + + | +{{ $item->id }} |
@@ -178,10 +187,10 @@ class="rounded-circle">
|
-
{{ $item->phone }} | -- + | + @if ($item->level == 0) @elseif($item->level == 1) @@ -189,60 +198,198 @@ class="rounded-circle"> @elseif($item->level == 2) @elseif($item->level == 9) - + @endif - {{ $item->Level_Name }} |
@if (count($item->getPromoCode) == 1)
-
{{ $item->getPromoCode[0]->code }}
@endif
@if (count($item->getPromoCode) > 1)
-
- {{ $item->getPromoCode[0]->code }} (多筆)
+ {{ $item->getPromoCode[0]->code }} ({{ count($item->getPromoCode) }}
+ 筆)
@endif
-
-
-
- @foreach ($item->getPromoCode as $key => $val)
- @if($key %8 ==0)
-
+ - @endif - {{ $val->code }} - @endforeach - - |
+
+
+
+
+
|
- ||||||||||
|
+
+
-
- {{ $data->links() }}
+
+
+ @endif + {{ $val->code }} + @endforeach + --}} |
+
+ ||||||||||||||||||