Browse Source

260115 最新消息草稿預覽、預計發布時間

OMEGA\lulufj.ho 2 weeks ago
parent
commit
1d118ea665

+ 10
- 1
app/Filament/Resources/NewsResource.php View File

@@ -19,6 +19,7 @@ use Filament\Forms\Components\Radio;
19 19
 use Filament\Forms\Components\Section;
20 20
 use Filament\Forms\Components\Toggle;
21 21
 use Filament\Forms\Components\DatePicker;
22
+use Filament\Forms\Components\DateTimePicker;
22 23
 use Filament\Forms\Components\FileUpload;
23 24
 use Filament\Forms\Get;
24 25
 use Filament\Forms\Form;
@@ -73,7 +74,13 @@ class NewsResource extends Resource
73 74
                         DatePicker::make('post_date')
74 75
                         ->label("發布日期")
75 76
                         ->closeOnDateSelection()->required(),
76
-                    ])->columnSpanFull()->columns(2),
77
+                        DateTimePicker::make('start_date')
78
+                        ->label("預約發布時間")
79
+                        ->closeOnDateSelection(),
80
+                        DateTimePicker::make('end_date')
81
+                        ->label("預約下架時間")
82
+                        ->closeOnDateSelection(),
83
+                    ])->columnSpanFull()->columns(3),
77 84
                     FileUpload::make('news_img_pc')->label("列表圖(desktop)")
78 85
                     ->disk("public")
79 86
                     // ->helperText('建議寬高限制為:1280*720px,檔案大小限制為1M以下')->maxSize('1024')
@@ -264,6 +271,8 @@ class NewsResource extends Resource
264 271
                     $record->on_top = !$record->on_top;
265 272
                     $record->save();
266 273
                 }),
274
+                TextColumn::make("start_date")->label("預計上架時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
275
+                TextColumn::make("end_date")->label("預計下架時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
267 276
                 TextColumn::make("created_at")->label("建立時間")->dateTime('Y/m/d H:i:s')->alignCenter(),
268 277
                 TextColumn::make("updated_at")->label("更新時間")->dateTime()->alignCenter(),
269 278
             ])

+ 24
- 2
app/Http/Controllers/Api/NewsController.php View File

@@ -112,14 +112,36 @@ class NewsController extends Controller
112 112
         return response()->json($result, 200);
113 113
     }
114 114
 
115
-    public function detail($locale = 'tw', $id){
115
+    public function detail(Request $request, $locale = 'tw', $id){
116
+
117
+        $isPreview = $request->input("preview","");
118
+        $now = now();
119
+
120
+        if($isPreview){
121
+            $news = News::where('id', $id)
122
+                ->first();
123
+        }else{
124
+            $news = News::where('id', $id)
125
+                ->where("visible", 1)
126
+                ->where(fn($q) =>
127
+                    $q->whereNull('start_date')
128
+                    ->orWhere('start_date', '<=', $now)
129
+                )->where(fn($q) =>
130
+                    $q->whereNull('end_date')
131
+                    ->orWhere('end_date', '>=', $now)
132
+                )
133
+                ->first();
134
+        }
135
+
136
+
116 137
         $locate = $locale == "tw" ? "zh_TW" : $locale;
117
-        $news = News::find($id);
138
+        
118 139
         $otherNewsList = [];
119 140
         if(!$news){
120 141
             return response()->json([
121 142
                 'message' => "news not found"], 404);
122 143
         }
144
+// dd($news);
123 145
         //取得前一篇
124 146
         $previous = News::where(function ($query) use ($news) {
125 147
             $query->where('order', $news->order)

+ 1
- 1
config/app.php View File

@@ -65,7 +65,7 @@ return [
65 65
     |
66 66
     */
67 67
 
68
-    'timezone' => 'UTC',
68
+    'timezone' => 'Asia/Taipei',
69 69
 
70 70
     /*
71 71
     |--------------------------------------------------------------------------

+ 30
- 0
database/migrations/2026_01_13_082523_add_scheduled_date_to_news.php View File

@@ -0,0 +1,30 @@
1
+<?php
2
+
3
+use Illuminate\Database\Migrations\Migration;
4
+use Illuminate\Database\Schema\Blueprint;
5
+use Illuminate\Support\Facades\Schema;
6
+
7
+return new class extends Migration
8
+{
9
+    /**
10
+     * Run the migrations.
11
+     */
12
+    public function up(): void
13
+    {
14
+        Schema::table('news', function (Blueprint $table) {
15
+            $table->dateTime('start_date')->nullable()->comment("預約發布日期");
16
+            $table->dateTime('end_date')->nullable()->comment("預約下架日期");
17
+        });
18
+    }
19
+
20
+    /**
21
+     * Reverse the migrations.
22
+     */
23
+    public function down(): void
24
+    {
25
+        Schema::table('news', function (Blueprint $table) {
26
+            $table->dropColumn('start_date');
27
+            $table->dropColumn('end_date');
28
+        });
29
+    }
30
+};