import apiClient from './api'; /** * 관리자 API 서비스 */ const adminService = { /** * 모든 클럽 목록 조회 * @returns {Promise} - 클럽 목록 */ getClubs() { return apiClient.get('/api/admin/clubs'); }, /** * 모든 클럽 조회 * @returns {Promise} - 클럽 목록 */ getAllClubs() { return apiClient.get('/api/admin/clubs'); }, /** * 특정 클럽 조회 * @param {Number} id - 클럽 ID * @returns {Promise} - 클럽 정보 */ getClubById(id) { return apiClient.get(`/api/admin/clubs/${id}`); }, /** * 클럽 정보 업데이트 * @param {Number} id - 클럽 ID * @param {Object} clubData - 업데이트할 클럽 정보 * @returns {Promise} - 업데이트된 클럽 정보 */ updateClub(id, clubData) { return apiClient.put(`/api/admin/clubs/${id}`, clubData); }, /** * 클럽 삭제 * @param {Number} id - 클럽 ID * @returns {Promise} - 삭제 결과 */ deleteClub(id) { return apiClient.delete(`/api/admin/clubs/${id}`); }, /** * 클럽 멤버 조회 * @param {Number} id - 클럽 ID * @returns {Promise} - 클럽 멤버 목록 */ getClubMembers(id) { return apiClient.get(`/api/admin/clubs/${id}/members`); }, /** * 클럽 멤버 추가 * @param {Number} id - 클럽 ID * @param {Object} memberData - 멤버 정보 * @returns {Promise} - 추가된 멤버 정보 */ addClubMember(id, memberData) { return apiClient.post(`/api/admin/clubs/${id}/members`, memberData); }, /** * 클럽 멤버 정보 업데이트 * @param {Number} clubId - 클럽 ID * @param {Number} memberId - 멤버 ID * @param {Object} memberData - 업데이트할 멤버 정보 * @returns {Promise} - 업데이트된 멤버 정보 */ updateClubMember(clubId, memberId, memberData) { return apiClient.put(`/api/admin/clubs/${clubId}/members/${memberId}`, memberData); }, /** * 클럽 회원 삭제 * @param {Number} clubId - 클럽 ID * @param {Number} memberId - 멤버 ID * @returns {Promise} - 삭제 결과 */ deleteClubMember(clubId, memberId) { return apiClient.delete(`/api/admin/clubs/${clubId}/members/${memberId}`); }, /** * 모든 사용자 조회 * @returns {Promise} - 사용자 목록 */ getAllUsers() { return apiClient.get('/api/admin/users'); }, /** * 특정 사용자 조회 * @param {Number} id - 사용자 ID * @returns {Promise} - 사용자 정보 */ getUserById(id) { return apiClient.get(`/api/admin/users/${id}`); }, /** * 사용자 정보 업데이트 * @param {Number} id - 사용자 ID * @param {Object} userData - 업데이트할 사용자 정보 * @returns {Promise} - 업데이트된 사용자 정보 */ updateUser(id, userData) { return apiClient.put(`/api/admin/users/${id}`, userData); }, /** * 사용자 삭제 * @param {Number} id - 사용자 ID * @returns {Promise} - 삭제 결과 */ deleteUser(id) { return apiClient.delete(`/api/admin/users/${id}`); }, /** * 모든 이벤트 조회 * @returns {Promise} - 이벤트 목록 */ getAllEvents() { return apiClient.get('/api/admin/events'); }, /** * 특정 이벤트 조회 * @param {Number} id - 이벤트 ID * @returns {Promise} - 이벤트 정보 */ getEventById(id) { return apiClient.get(`/api/admin/events/${id}`); }, /** * 새 이벤트 생성 * @param {Object} eventData - 이벤트 정보 * @returns {Promise} - 생성된 이벤트 정보 */ createEvent(eventData) { return apiClient.post('/api/admin/events', eventData); }, /** * 이벤트 정보 업데이트 * @param {Number} id - 이벤트 ID * @param {Object} eventData - 업데이트할 이벤트 정보 * @returns {Promise} - 업데이트된 이벤트 정보 */ updateEvent(id, eventData) { return apiClient.put(`/api/admin/events/${id}`, eventData); }, /** * 이벤트 삭제 * @param {Number} id - 이벤트 ID * @returns {Promise} - 삭제 결과 */ deleteEvent(id) { return apiClient.delete(`/api/admin/events/${id}`); }, /** * 이벤트 참가자 목록 조회 * @param {Number} eventId - 이벤트 ID * @returns {Promise} - 참가자 목록 */ getEventParticipants(eventId) { return apiClient.get(`/api/admin/events/${eventId}/participants`); }, /** * 이벤트 참가자 추가 * @param {Number} eventId - 이벤트 ID * @param {Number} userId - 사용자 ID * @returns {Promise} - 추가된 참가자 정보 */ addEventParticipant(eventId, userId) { return apiClient.post(`/api/admin/events/${eventId}/participants`, { userId }); }, /** * 이벤트 참가자 상태 업데이트 * @param {Number} eventId - 이벤트 ID * @param {Number} participantId - 참가자 ID * @param {String} status - 새로운 상태 * @returns {Promise} - 업데이트된 참가자 정보 */ updateEventParticipantStatus(eventId, participantId, status) { return apiClient.put(`/api/admin/events/${eventId}/participants/${participantId}`, { status }); }, /** * 이벤트 참가자 제거 * @param {Number} eventId - 이벤트 ID * @param {Number} participantId - 참가자 ID * @returns {Promise} - 제거 결과 */ removeEventParticipant(eventId, participantId) { return apiClient.delete(`/api/admin/events/${eventId}/participants/${participantId}`); }, /** * 구독 플랜 목록 조회 * @returns {Promise} - 구독 플랜 목록 */ getPlans() { return apiClient.get('/api/admin/subscriptions/plans'); }, /** * 특정 구독 플랜 조회 * @param {Number} id - 구독 플랜 ID * @returns {Promise} - 구독 플랜 정보 */ getPlanById(id) { return apiClient.get(`/api/admin/subscriptions/plans/${id}`); }, /** * 새 구독 플랜 생성 * @param {Object} planData - 구독 플랜 정보 * @returns {Promise} - 생성된 구독 플랜 정보 */ createPlan(planData) { return apiClient.post('/api/admin/subscriptions/plans', planData); }, /** * 구독 플랜 정보 업데이트 * @param {Number} id - 구독 플랜 ID * @param {Object} planData - 업데이트할 구독 플랜 정보 * @returns {Promise} - 업데이트된 구독 플랜 정보 */ updatePlan(id, planData) { return apiClient.put(`/api/admin/subscriptions/plans/${id}`, planData); }, /** * 구독 플랜 삭제 * @param {Number} id - 구독 플랜 ID * @returns {Promise} - 삭제 결과 */ deletePlan(id) { return apiClient.delete(`/api/admin/subscriptions/plans/${id}`); }, /** * 모든 구독 목록 조회 * @returns {Promise} - 구독 목록 */ getSubscriptions() { return apiClient.get('/api/admin/subscriptions'); }, /** * 구독 플랜의 구독 목록 조회 * @param {Number} planId - 구독 플랜 ID * @returns {Promise} - 구독 목록 */ getPlanSubscriptions(planId) { return apiClient.get(`/api/admin/subscriptions/plans/${planId}/subscriptions`); }, /** * 모든 기능 목록 조회 * @returns {Promise} - 기능 목록 */ getFeatures() { return apiClient.get('/api/admin/features'); }, /** * 새 구독 생성 * @param {Object} subscriptionData - 구독 정보 * @returns {Promise} - 생성된 구독 정보 */ createSubscription(subscriptionData) { return apiClient.post('/api/admin/subscriptions', subscriptionData); }, /** * 구독 정보 업데이트 * @param {Number} id - 구독 ID * @param {Object} subscriptionData - 업데이트할 구독 정보 * @returns {Promise} - 업데이트된 구독 정보 */ updateSubscription(id, subscriptionData) { return apiClient.put(`/api/admin/subscriptions/${id}`, subscriptionData); }, /** * 구독 삭제 * @param {Number} id - 구독 ID * @returns {Promise} - 삭제 결과 */ deleteSubscription(id) { return apiClient.delete(`/api/admin/subscriptions/${id}`); }, /** * 대시보드 데이터 조회 * @returns {Promise} - 대시보드 데이터 */ getDashboardData() { return apiClient.get('/api/admin/dashboard'); }, /** * 최근 활동 조회 * @returns {Promise} - 최근 활동 목록 */ getRecentActivities() { return apiClient.get('/api/admin/activities/recent'); }, /** * 통계 데이터 조회 * @returns {Promise} - 통계 데이터 */ getStatistics() { return apiClient.get('/api/admin/statistics'); }, /** * 클럽 기능 관리 * @param {Number} clubId - 클럽 ID * @param {Object} features - 클럽 기능 정보 * @returns {Promise} - 클럽 기능 정보 */ manageClubFeatures: async (clubId, features) => { try { const response = await apiClient.put(`/api/admin/clubs/${clubId}/features`, { features }); return response.data; } catch (error) { console.error('클럽 기능 관리 중 오류:', error); throw error; } } }; export default adminService;