api 경로 수정

This commit is contained in:
2025-04-23 11:56:26 +09:00
parent 0306ebc890
commit beac42d60c
6 changed files with 73 additions and 11 deletions
@@ -216,6 +216,61 @@ exports.getClubSubscription = async (req, res) => {
}
};
// 클럽의 현재 구독 정보 반환
exports.getCurrentSubscription = async (req, res) => {
const { clubId } = req.body;
if (!clubId) {
return res.status(400).json({ message: '클럽 ID가 필요합니다.' });
}
try {
const subscription = await ClubSubscription.findOne({
where: { clubId, status: 'active' },
include: [{
model: SubscriptionPlan,
include: [{ model: Feature, through: { attributes: ['status'] } }]
}]
});
if (!subscription) {
return res.status(404).json({ message: '활성화된 구독 정보가 없습니다.' });
}
res.json({
planName: subscription.SubscriptionPlan.name,
planId: subscription.SubscriptionPlan.id,
status: subscription.status,
startDate: subscription.startDate,
endDate: subscription.expiryDate
});
} catch (error) {
console.error('Error in getCurrentSubscription:', error);
res.status(500).json({ message: '구독 정보 조회 중 오류가 발생했습니다.' });
}
};
// 클럽의 구독 결제 내역 반환
exports.getSubscriptionPayments = async (req, res) => {
const { clubId } = req.body;
if (!clubId) {
return res.status(400).json({ message: '클럽 ID가 필요합니다.' });
}
try {
const payments = await ClubSubscription.findAll({
where: { clubId },
include: [{ model: SubscriptionPlan }],
order: [['createdAt', 'DESC']]
});
res.json(payments.map(payment => ({
id: payment.id,
paymentDate: payment.createdAt,
planName: payment.SubscriptionPlan?.name || '',
amount: payment.SubscriptionPlan?.price || 0,
status: payment.status
})));
} catch (error) {
console.error('Error in getSubscriptionPayments:', error);
res.status(500).json({ message: '결제 내역 조회 중 오류가 발생했습니다.' });
}
};
// 플랜별 구독 목록 조회
exports.getPlanSubscriptions = async (req, res) => {
try {
+3 -3
View File
@@ -7,9 +7,9 @@ const { authenticateJWT } = require('../middleware/authMiddleware');
router.get('/', authenticateJWT, featureController.getFeatures);
// 기능 구매 관련 API
router.get('/available', authenticateJWT, featureController.getAvailableFeatures);
router.get('/active', authenticateJWT, featureController.getActiveFeatures);
router.get('/payments', authenticateJWT, featureController.getFeaturePayments);
router.post('/available', authenticateJWT, featureController.getAvailableFeatures);
router.post('/active', authenticateJWT, featureController.getActiveFeatures);
router.post('/payments', authenticateJWT, featureController.getFeaturePayments);
router.post('/purchase', authenticateJWT, featureController.purchaseFeature);
module.exports = router;
+4
View File
@@ -16,4 +16,8 @@ router.get('/plans/:planId/subscriptions', authMiddleware, subscriptionControlle
router.post('/subscribe', authMiddleware, subscriptionController.subscribeClub);
router.get('/clubs/:clubId', authMiddleware, subscriptionController.getClubSubscription);
// 클럽 구독 정보 및 결제 내역 (POST, 클럽 기준)
router.post('/current', authMiddleware, subscriptionController.getCurrentSubscription);
router.post('/payments', authMiddleware, subscriptionController.getSubscriptionPayments);
module.exports = router;