diff --git a/src/api/agent.js b/src/api/agent.js index d1a19c4..2faefda 100644 --- a/src/api/agent.js +++ b/src/api/agent.js @@ -1,5 +1,11 @@ import Vue from 'vue' +// 공통: 페이지 파라미터 변환(1-based UI → 0-based Spring Pageable) +function toZeroBased(page) { + const p = Number(page || 1) + return Math.max(0, p - 1) +} + // 에이전트 리스트 조회 // 서버 스펙에 페이지네이션이 없다면 단순 GET으로 사용 // 추후 필요 시 params(page,size) 확장 가능 @@ -72,6 +78,53 @@ async function removeAgentCreator(payload) { return Vue.axios.post('/admin/partner/agent/assignment/remove', payload) } +// ========================= +// 정산 상세 - 에이전트별(크리에이터 기준 집계) +// 공통 Request: startDateStr, endDateStr, Spring Pageable(page,size,sort) +// 공통 Response: ApiResponse +// { success, message, data: { totalCount, total:{...}, items:[...] } } + +function buildSettlementParams({ startDateStr, endDateStr, page = 1, size = 20, sort }) { + const params = { + startDateStr, + endDateStr, + page: toZeroBased(page), + size + } + if (sort) params.sort = sort + return params +} + +async function getAgentLiveSettlementByCreator(agentId, { startDateStr, endDateStr, page = 1, size = 20, sort } = {}) { + return Vue.axios.get(`/admin/partner/agent/${agentId}/calculate/live-by-creator`, { + params: buildSettlementParams({ startDateStr, endDateStr, page, size, sort }) + }) +} + +async function getAgentContentSettlementByCreator(agentId, { startDateStr, endDateStr, page = 1, size = 20, sort } = {}) { + return Vue.axios.get(`/admin/partner/agent/${agentId}/calculate/content-by-creator`, { + params: buildSettlementParams({ startDateStr, endDateStr, page, size, sort }) + }) +} + +async function getAgentCommunitySettlementByCreator(agentId, { startDateStr, endDateStr, page = 1, size = 20, sort } = {}) { + return Vue.axios.get(`/admin/partner/agent/${agentId}/calculate/community-by-creator`, { + params: buildSettlementParams({ startDateStr, endDateStr, page, size, sort }) + }) +} + +async function getAgentContentDonationSettlementByCreator(agentId, { startDateStr, endDateStr, page = 1, size = 20, sort } = {}) { + return Vue.axios.get(`/admin/partner/agent/${agentId}/calculate/content-donation-by-creator`, { + params: buildSettlementParams({ startDateStr, endDateStr, page, size, sort }) + }) +} + +async function getAgentChannelDonationSettlementByCreator(agentId, { startDateStr, endDateStr, page = 1, size = 20, sort } = {}) { + return Vue.axios.get(`/admin/partner/agent/${agentId}/calculate/channel-donation-by-creator`, { + params: buildSettlementParams({ startDateStr, endDateStr, page, size, sort }) + }) +} + export { getAgentList, getAgentSettlementRatioList, @@ -83,4 +136,10 @@ export { searchAdminAgentAssignableCreators, assignAgentCreator, removeAgentCreator, + // 에이전트 정산 상세 (크리에이터 기준) + getAgentLiveSettlementByCreator, + getAgentContentSettlementByCreator, + getAgentCommunitySettlementByCreator, + getAgentContentDonationSettlementByCreator, + getAgentChannelDonationSettlementByCreator, } diff --git a/src/views/Agent/AgentChannelDonationSettlement.vue b/src/views/Agent/AgentChannelDonationSettlement.vue index 151ad27..5118352 100644 --- a/src/views/Agent/AgentChannelDonationSettlement.vue +++ b/src/views/Agent/AgentChannelDonationSettlement.vue @@ -7,27 +7,244 @@ > mdi-arrow-left - 에이전트 정산 상세 - 채널 후원 + {{ displayNickname }} 정산 상세 - 채널 후원 + - - -

채널 후원 정산 상세 페이지 (준비중)

-

Agent ID: {{ agentId }}

+ + + + + + + + + + + + + + + + + 조회 + + + + + + + + + + + + + + + + + + +
+ +