This commit is contained in:
ct
2025-07-07 21:17:00 +08:00
parent 23fa3aec04
commit 6a66f96d22
31 changed files with 227 additions and 232 deletions

View File

@@ -4,10 +4,10 @@
use App\Helpers\FirstParty\Credits\CreditsService;
use App\Jobs\GenerateMemeJob;
use App\Models\UserMemeGeneration;
use Illuminate\Http\Request;
use App\Models\Category;
use App\Models\UserMemeGeneration;
use Auth;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Str;
@@ -24,7 +24,7 @@ public function generateMeme(Request $request)
->where('user_id', $user->id)
->whereIn('status', ['pending', 'processing'])
->first();
if ($activeGeneration) {
return response()->json([
'error' => [
@@ -34,7 +34,7 @@ public function generateMeme(Request $request)
}
}
if (!CreditsService::canSpend($user->id, 2)) {
if (! CreditsService::canSpend($user->id, 2)) {
return response()->json([
'error' => [
'message' => 'You do not have enough credits to generate a meme. Please purchase credits from the Store.',
@@ -45,7 +45,7 @@ public function generateMeme(Request $request)
CreditsService::spend($user->id, 2);
$jobId = Str::uuid()->toString();
// Create database record
$generation = UserMemeGeneration::create([
'user_id' => $user->id,
@@ -55,11 +55,11 @@ public function generateMeme(Request $request)
'credits_to_be_charged' => 2,
'credits_are_processed' => false,
]);
// Set active job in cache
Cache::put("user_active_job_{$user->id}", $jobId, 300);
Cache::put("meme_job_status_{$jobId}", 'pending', 300);
$job = new GenerateMemeJob($user->id, $request->prompt, $jobId);
dispatch($job);
@@ -76,8 +76,8 @@ public function generateMeme(Request $request)
public function checkMemeJobStatus(Request $request)
{
$jobId = $request->job_id;
if (!$jobId) {
if (! $jobId) {
return response()->json([
'error' => [
'message' => 'Job ID is required.',
@@ -86,8 +86,8 @@ public function checkMemeJobStatus(Request $request)
}
$status = Cache::get("meme_job_status_{$jobId}");
if (!$status) {
if (! $status) {
return response()->json([
'error' => [
'message' => 'Job not found or expired.',
@@ -122,10 +122,10 @@ public function checkMemeJobStatus(Request $request)
public function getActiveJob()
{
$user = Auth::user();
$activeJobId = Cache::get("user_active_job_{$user->id}");
if (!$activeJobId) {
if (! $activeJobId) {
return response()->json([
'success' => [
'data' => null,
@@ -138,9 +138,10 @@ public function getActiveJob()
->with('meme.meme_media', 'meme.background_media')
->first();
if (!$generation) {
if (! $generation) {
// Clean up stale cache
Cache::forget("user_active_job_{$user->id}");
return response()->json([
'success' => [
'data' => null,
@@ -163,7 +164,7 @@ public function getActiveJob()
if ($generation->status === 'completed' && $generation->meme) {
$meme = $generation->meme;
$meme_media = $generation->meme->meme_media;
$response['success']['data']['result'] = [
'generate' => [
'info' => $meme,
@@ -180,7 +181,7 @@ public function getActiveJob()
public function getMemeHistory()
{
$user = Auth::user();
$generations = UserMemeGeneration::where('user_id', $user->id)
->with('meme.meme_media', 'meme.background_media')
->orderBy('created_at', 'desc')
@@ -228,9 +229,9 @@ public function aiHints()
return response()->json([
'success' => [
'data' => [
'keywords' => []
]
]
'keywords' => [],
],
],
]);
}
@@ -241,9 +242,9 @@ public function aiHints()
return response()->json([
'success' => [
'data' => [
'keywords' => $keywords
]
]
'keywords' => $keywords,
],
],
]);
}
}