결제, 구독 기능
This commit is contained in:
@@ -21,6 +21,17 @@ exports.publicEventEntry = async (req, res) => {
|
||||
if (event.status === '취소') {
|
||||
return res.status(403).json({ message: '취소된 이벤트입니다.' });
|
||||
}
|
||||
|
||||
// 클럽의 구독 활성 여부 확인
|
||||
const clubSubscription = await sequelize.models.ClubSubscription.findOne({
|
||||
where: { clubId: event.clubId, status: 'active' },
|
||||
include: [{ model: sequelize.models.SubscriptionPlan }]
|
||||
});
|
||||
|
||||
// 구독이 비활성화된 경우 접근 제한
|
||||
if (!clubSubscription) {
|
||||
return res.status(403).json({ message: '클럽의 구독이 비활성화되어 이벤트에 접근할 수 없습니다. 클럽 관리자에게 문의하세요.' });
|
||||
}
|
||||
|
||||
let token = null;
|
||||
let isAuthenticated = false;
|
||||
@@ -248,6 +259,26 @@ exports.addPublicGuest = async (req, res) => {
|
||||
const event = await Event.findOne({ where: { publicHash } });
|
||||
if (!event) return res.status(404).json({ message: '이벤트를 찾을 수 없습니다.' });
|
||||
if (event.status === '취소') return res.status(403).json({ message: '취소된 이벤트입니다.' });
|
||||
|
||||
// 클럽의 회원 수와 구독 플랜의 최대 회원 수 확인
|
||||
const memberCount = await Member.count({ where: { clubId: event.clubId } });
|
||||
|
||||
// 클럽의 구독 정보 가져오기
|
||||
const clubSubscription = await sequelize.models.ClubSubscription.findOne({
|
||||
where: { clubId: event.clubId, status: 'active' },
|
||||
include: [{ model: sequelize.models.SubscriptionPlan }]
|
||||
});
|
||||
|
||||
// 구독 플랜이 있고 회원 수가 최대치를 초과하는 경우
|
||||
if (clubSubscription && clubSubscription.SubscriptionPlan) {
|
||||
const maxMembers = clubSubscription.SubscriptionPlan.maxMembers;
|
||||
if (memberCount >= maxMembers) {
|
||||
return res.status(403).json({
|
||||
message: `회원 수가 구독 플랜의 최대 허용 인원(${maxMembers}명)을 초과했습니다. 구독 업그레이드가 필요합니다.`
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
// publicAuth 미들웨어로 인증됨
|
||||
const member = await Member.create({
|
||||
name,
|
||||
|
||||
Reference in New Issue
Block a user