|
14 | 14 | use App\Domains\Social\Services\CardsService; |
15 | 15 | use App\Domains\Social\Services\ReviewService; |
16 | 16 | use App\Http\Controllers\Controller; |
| 17 | +use Carbon\Carbon; |
17 | 18 | use Illuminate\Http\Request; |
18 | 19 |
|
19 | 20 | /** |
@@ -98,77 +99,87 @@ public function voting(Request $request, Cards $card, $status) |
98 | 99 | $model->sendPublishNotification(); |
99 | 100 |
|
100 | 101 | /** |
101 | | - * 先把需要發表的社群平台抓出來 |
| 102 | + * 如果上一篇通過審核的文章距今已超過 60 分鐘,那就順便發表到社群平台上。 |
102 | 103 | */ |
103 | | - $platforms = Platform::where('action', Platform::ACTION_PUBLISH) |
104 | | - ->active() |
105 | | - ->get(); |
106 | | - |
107 | | - /** |
108 | | - * 根據社群平台逐一發佈 |
109 | | - */ |
110 | | - foreach ($platforms as $platform) { |
111 | | - switch ($platform->type) { |
112 | | - /** |
113 | | - * 丟給負責發表文章到 Facebook 的 Job |
114 | | - */ |
115 | | - case Platform::TYPE_FACEBOOK: |
116 | | - dispatch(new FacebookPublishJob($model, $platform))->onQueue('highest'); |
117 | | - break; |
118 | | - |
119 | | - /** |
120 | | - * 丟給負責發表文章到 Twitter 的 Job |
121 | | - */ |
122 | | - case Platform::TYPE_TWITTER: |
123 | | - dispatch(new TwitterPublishJob($model, $platform))->onQueue('highest'); |
124 | | - break; |
125 | | - |
126 | | - /** |
127 | | - * 丟給負責發表文章到 Plurk 的 Job |
128 | | - */ |
129 | | - case Platform::TYPE_PLURK: |
130 | | - dispatch(new PlurkPublishJob($model, $platform))->onQueue('highest'); |
131 | | - break; |
132 | | - |
133 | | - /** |
134 | | - * 丟給負責發表文章到 Discord 的 Job |
135 | | - */ |
136 | | - case Platform::TYPE_DISCORD: |
137 | | - dispatch(new DiscordPublishJob($model, $platform))->onQueue('highest'); |
138 | | - break; |
139 | | - |
| 104 | + if ($this->delayMode) { |
| 105 | + $card = Cards::where('active', 1)->orderBy('updated_at', 'DESC')->first(); |
| 106 | + $now = Carbon::now()->subMinutes(60); |
| 107 | + |
| 108 | + if (isset($card) && $now->timestamp > $card->updated_at->timestamp) { |
140 | 109 | /** |
141 | | - * 丟給負責發表文章到 Tumblr 的 Job |
| 110 | + * 先把需要發表的社群平台抓出來 |
142 | 111 | */ |
143 | | - case Platform::TYPE_TUMBLR: |
144 | | - dispatch(new TumblrPublishJob($model, $platform))->onQueue('highest'); |
145 | | - break; |
146 | | - |
147 | | - /** |
148 | | - * 丟給負責發表文章到 Telegram 的 Job |
149 | | - */ |
150 | | - case Platform::TYPE_TELEGRAM: |
151 | | - dispatch(new TelegramPublishJob($model, $platform))->onQueue('highest'); |
152 | | - break; |
153 | | - |
154 | | - /** |
155 | | - * 丟給負責發表文章到 Bsky 的 Job |
156 | | - */ |
157 | | - case Platform::TYPE_BSKY: |
158 | | - dispatch(new BskyPublishJob($card, $platform))->onQueue('highest'); |
159 | | - break; |
160 | | - |
| 112 | + $platforms = Platform::where('action', Platform::ACTION_PUBLISH) |
| 113 | + ->active() |
| 114 | + ->get(); |
| 115 | + |
161 | 116 | /** |
162 | | - * 其它並不在支援名單當中的社群 |
| 117 | + * 根據社群平台逐一發佈 |
163 | 118 | */ |
164 | | - default: |
165 | | - /** |
166 | | - * 直接把資料寫入 Activity log 以便日後查核 |
167 | | - */ |
168 | | - activity('social cards - undefined publish') |
169 | | - ->performedOn($card) |
170 | | - ->log(json_encode($model)); |
171 | | - break; |
| 119 | + foreach ($platforms as $platform) { |
| 120 | + switch ($platform->type) { |
| 121 | + /** |
| 122 | + * 丟給負責發表文章到 Facebook 的 Job |
| 123 | + */ |
| 124 | + case Platform::TYPE_FACEBOOK: |
| 125 | + dispatch(new FacebookPublishJob($model, $platform))->onQueue('highest'); |
| 126 | + break; |
| 127 | + |
| 128 | + /** |
| 129 | + * 丟給負責發表文章到 Twitter 的 Job |
| 130 | + */ |
| 131 | + case Platform::TYPE_TWITTER: |
| 132 | + dispatch(new TwitterPublishJob($model, $platform))->onQueue('highest'); |
| 133 | + break; |
| 134 | + |
| 135 | + /** |
| 136 | + * 丟給負責發表文章到 Plurk 的 Job |
| 137 | + */ |
| 138 | + case Platform::TYPE_PLURK: |
| 139 | + dispatch(new PlurkPublishJob($model, $platform))->onQueue('highest'); |
| 140 | + break; |
| 141 | + |
| 142 | + /** |
| 143 | + * 丟給負責發表文章到 Discord 的 Job |
| 144 | + */ |
| 145 | + case Platform::TYPE_DISCORD: |
| 146 | + dispatch(new DiscordPublishJob($model, $platform))->onQueue('highest'); |
| 147 | + break; |
| 148 | + |
| 149 | + /** |
| 150 | + * 丟給負責發表文章到 Tumblr 的 Job |
| 151 | + */ |
| 152 | + case Platform::TYPE_TUMBLR: |
| 153 | + dispatch(new TumblrPublishJob($model, $platform))->onQueue('highest'); |
| 154 | + break; |
| 155 | + |
| 156 | + /** |
| 157 | + * 丟給負責發表文章到 Telegram 的 Job |
| 158 | + */ |
| 159 | + case Platform::TYPE_TELEGRAM: |
| 160 | + dispatch(new TelegramPublishJob($model, $platform))->onQueue('highest'); |
| 161 | + break; |
| 162 | + |
| 163 | + /** |
| 164 | + * 丟給負責發表文章到 Bsky 的 Job |
| 165 | + */ |
| 166 | + case Platform::TYPE_BSKY: |
| 167 | + dispatch(new BskyPublishJob($card, $platform))->onQueue('highest'); |
| 168 | + break; |
| 169 | + |
| 170 | + /** |
| 171 | + * 其它並不在支援名單當中的社群 |
| 172 | + */ |
| 173 | + default: |
| 174 | + /** |
| 175 | + * 直接把資料寫入 Activity log 以便日後查核 |
| 176 | + */ |
| 177 | + activity('social cards - undefined publish') |
| 178 | + ->performedOn($card) |
| 179 | + ->log(json_encode($model)); |
| 180 | + break; |
| 181 | + } |
| 182 | + } |
172 | 183 | } |
173 | 184 | } |
174 | 185 | } |
|
0 commit comments