update
All checks were successful
Deploy to Production / deploy (push) Successful in 21s

This commit is contained in:
silverpro89
2026-01-28 11:21:21 +07:00
parent 57c45d27a3
commit 3791b7cae1
23 changed files with 1033 additions and 317 deletions

View File

@@ -1,6 +1,5 @@
const { SubscriptionPlan, UserSubscription, UsersAuth } = require('../models');
const { cacheUtils } = require('../config/redis');
const { addDatabaseWriteJob } = require('../config/bullmq');
const { v4: uuidv4 } = require('uuid');
/**
@@ -98,16 +97,15 @@ class SubscriptionController {
auto_renew: req.body.auto_renew || false,
};
// Async write to DB via BullMQ
await addDatabaseWriteJob('create', 'UserSubscription', subscriptionData);
const newSubscription = await UserSubscription.create(subscriptionData);
// Clear cache
await cacheUtils.del(`subscription:user:${user_id}`);
res.status(202).json({
res.status(201).json({
success: true,
message: 'Subscription purchase request queued',
data: subscriptionData,
message: 'Subscription purchased successfully',
data: newSubscription,
});
} catch (error) {
next(error);
@@ -153,11 +151,7 @@ class SubscriptionController {
// Check nếu subscription đã hết hạn
const now = new Date();
if (subscription.status === 'active' && new Date(subscription.end_date) < now) {
subscription.status = 'expired';
await addDatabaseWriteJob('update', 'UserSubscription', {
id: subscription.id,
status: 'expired',
});
await subscription.update({ status: 'expired' });
}
await cacheUtils.set(cacheKey, subscription, 900); // Cache 15 min
@@ -195,9 +189,8 @@ class SubscriptionController {
});
}
// Async update via BullMQ
await addDatabaseWriteJob('update', 'UserSubscription', {
id,
// Update subscription
await subscription.update({
status: 'cancelled',
auto_renew: false,
});
@@ -205,9 +198,10 @@ class SubscriptionController {
// Clear cache
await cacheUtils.del(`subscription:user:${subscription.user_id}`);
res.status(202).json({
res.status(200).json({
success: true,
message: 'Subscription cancellation request queued',
message: 'Subscription cancelled successfully',
data: subscription,
});
} catch (error) {
next(error);