Files
ga-commission-system/ga-frontend/src/api/contract.ts
T

72 lines
2.4 KiB
TypeScript
Raw Normal View History

// ============================================================================
// 보험계약 API — 백엔드 /api/contracts (ContractController)
// 계약(contract): 고객이 가입한 보험증권 1건. 모든 수수료 계산의 출발점.
// - premium(보험료): 계약자가 내는 보험료. payCycle(납입주기): 월납/연납 등.
// - policyNo(증권번호): 계약 식별 번호. contractorName(계약자)/insuredName(피보험자).
// ============================================================================
import api, { PageResponse, unwrap } from './request';
// 계약 조회 응답. 설계사/상품/보험사/보험료/상태 등 계약 요약.
export interface ContractResp {
contractId: number;
agentId: number;
agentName: string;
orgName?: string;
productCode?: string;
productName?: string;
companyCode?: string;
companyName?: string;
insuranceType?: string;
policyNo: string;
contractorName?: string;
insuredName?: string;
premium?: number;
payCycle?: string;
payCycleName?: string;
status: string;
statusName?: string;
contractDate: string;
salesChannel?: string;
salesChannelName?: string;
}
export interface ContractSearchParam {
pageNum?: number;
pageSize?: number;
searchKeyword?: string;
agentId?: number;
companyId?: number;
insuranceType?: string;
status?: string;
startDate?: string;
endDate?: string;
}
// 계약 등록/수정 요청. payPeriod(납입기간)/coveragePeriod(보장기간) 등 포함.
export interface ContractSaveReq {
agentId: number;
productId: number;
policyNo: string;
contractorName?: string;
insuredName?: string;
premium?: number;
payCycle?: string;
payPeriod?: number;
coveragePeriod?: number;
contractDate?: string;
effectiveDate?: string;
salesChannel?: string;
}
export const contractApi = {
// 계약 목록 — GET /api/contracts
list: (p: ContractSearchParam) =>
unwrap<PageResponse<ContractResp>>(api.get('/api/contracts', { params: p })),
// 계약 상세 — GET /api/contracts/{id}
detail: (id: number) => unwrap<ContractResp>(api.get(`/api/contracts/${id}`)),
// 계약 등록(생성된 id 반환) — POST /api/contracts
create: (req: ContractSaveReq) => unwrap<number>(api.post('/api/contracts', req)),
// 계약 수정 — PUT /api/contracts/{id}
update: (id: number, req: ContractSaveReq) => unwrap<void>(api.put(`/api/contracts/${id}`, req)),
};