Browse Source

260311 最新消息修改前後篇的顯示條件

OMEGA\lulufj.ho 3 weeks ago
parent
commit
85b4445868
1 changed files with 33 additions and 14 deletions
  1. 33
    14
      app/Http/Controllers/Api/NewsController.php

+ 33
- 14
app/Http/Controllers/Api/NewsController.php View File

128
     public function detail(Request $request, $locale = 'tw', $id){
128
     public function detail(Request $request, $locale = 'tw', $id){
129
 
129
 
130
         $isPreview = $request->input("preview","");
130
         $isPreview = $request->input("preview","");
131
-        $now = now();
132
-
131
+        $now = Carbon::now(); 
132
+        
133
         if($isPreview){
133
         if($isPreview){
134
             $news = News::where('id', $id)
134
             $news = News::where('id', $id)
135
                 ->first();
135
                 ->first();
156
         }
156
         }
157
 // dd($news);
157
 // dd($news);
158
         //取得前一篇
158
         //取得前一篇
159
-        $previous = News::where(function ($query) use ($news) {
159
+        $previous = News::where(function ($query) use ($news, $now) {
160
             $query->where('order', $news->order)
160
             $query->where('order', $news->order)
161
             ->where('post_date', $news->post_date)
161
             ->where('post_date', $news->post_date)
162
-            ->where('id', '>', $news->id);
162
+            ->where('id', '>', $news->id)
163
+            ->where("visible", 1)
164
+            ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
165
+            ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
163
         })
166
         })
164
-        ->orWhere(function ($query) use ($news) {
167
+        ->orWhere(function ($query) use ($news, $now) {
165
             $query->where('order', $news->order)
168
             $query->where('order', $news->order)
166
-            ->where('post_date', '>', $news->post_date);
169
+            ->where('post_date', '>', $news->post_date)
170
+            ->where("visible", 1)
171
+            ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
172
+            ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
167
         })
173
         })
168
-        ->orWhere(function ($query) use ($news) {
169
-            $query->where('order', '>', $news->order);
174
+        ->orWhere(function ($query) use ($news, $now) {
175
+            $query->where('order', '>', $news->order)
176
+            ->where("visible", 1)
177
+            ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
178
+            ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
170
         })
179
         })
171
         ->orderBy('order', 'asc')
180
         ->orderBy('order', 'asc')
172
         ->orderBy('post_date', 'asc')
181
         ->orderBy('post_date', 'asc')
173
         ->orderBy('id', 'asc')
182
         ->orderBy('id', 'asc')
174
         ->first();
183
         ->first();
184
+
175
         //取得下一篇
185
         //取得下一篇
176
-        $next = News::where(function ($query) use ($news) {
186
+        $next = News::where(function ($query) use ($news, $now) {
177
             $query->where('order', $news->order)
187
             $query->where('order', $news->order)
178
             ->where('post_date', $news->post_date)
188
             ->where('post_date', $news->post_date)
179
-            ->where('id', '<', $news->id);
189
+            ->where('id', '<', $news->id)
190
+            ->where("visible", 1)
191
+            ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
192
+            ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
180
         })
193
         })
181
-        ->orWhere(function ($query) use ($news) {
194
+        ->orWhere(function ($query) use ($news, $now) {
182
             $query->where('order', $news->order)
195
             $query->where('order', $news->order)
183
-            ->where('post_date', '<', $news->post_date);
196
+            ->where('post_date', '<', $news->post_date)
197
+            ->where("visible", 1)
198
+            ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
199
+            ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
184
         })
200
         })
185
-        ->orWhere(function ($query) use ($news) {
186
-            $query->where('order', '<', $news->order);
201
+        ->orWhere(function ($query) use ($news, $now) {
202
+            $query->where('order', '<', $news->order)
203
+            ->where("visible", 1)
204
+            ->where(fn($q) => $q->whereNull('start_date')->orWhere('start_date', '<=', $now))
205
+            ->where(fn($q) => $q->whereNull('end_date')->orWhere('end_date', '>=', $now));
187
         })
206
         })
188
         ->orderBy('order', 'desc')
207
         ->orderBy('order', 'desc')
189
         ->orderBy('post_date', 'desc')
208
         ->orderBy('post_date', 'desc')