[as] feat: 재원분담 API 추가

This commit is contained in:
2026-07-01 17:52:57 +09:00
parent e81210ec04
commit 0e7c9b4a96
7 changed files with 263 additions and 0 deletions
@@ -16,6 +16,7 @@ export interface AcntgSeMngResponseDto {
cdLvNo: number;
useYn: string;
expln?: string;
sortSeq?: number;
rgtr?: string;
rgtrNm?: string;
mdfr?: string;
@@ -39,6 +40,7 @@ export interface AcntgSeMngSaveRequestDto {
cdLvNo: number;
useYn?: string;
expln?: string;
sortSeq?: number;
}
/** PUT /{acntgSeCd} 요청 (mode는 서비스에서 U로 설정) */
@@ -16,6 +16,7 @@ export interface CnstpSeMngResponseDto {
cdLvNo: number;
useYn: string;
expln?: string;
sortSeq?: number;
rgtr?: string;
rgtrNm?: string;
mdfr?: string;
@@ -39,6 +40,7 @@ export interface CnstpSeMngSaveRequestDto {
cdLvNo?: number;
useYn?: string;
expln?: string;
sortSeq?: number;
}
/** PUT /{cnstpSeCd} 요청 (mode는 서비스에서 U로 설정) */
@@ -0,0 +1,70 @@
import { client } from "@/shared/api";
import { ENDPOINT } from "@/shared/config";
import type { PageResponse } from "@/shared/model";
import {
FNRS_SHAR_SE_SAVE_MODE,
type FnrsSharBizCstTreeDto,
type FnrsSharSeMngResponseDto,
type FnrsSharSeMngSaveRequestDto,
type FnrsSharSeMngSearchDto,
type FnrsSharSeMngService,
type FnrsSharSeMngTreeDto,
} from "../model/fnrs-shar-se-interface";
const BASE = ENDPOINT.AS_SERVICE.FNRS_SHAR_SE;
async function findAll(
params: FnrsSharSeMngSearchDto,
): Promise<PageResponse<FnrsSharSeMngResponseDto>> {
const response = await client.get<PageResponse<FnrsSharSeMngResponseDto>>(BASE, { params });
return response.data;
}
async function findTree(): Promise<FnrsSharSeMngTreeDto[]> {
const response = await client.get<FnrsSharSeMngTreeDto[]>(`${BASE}/list/tree`);
return response.data;
}
async function findById(fnrsSharSeCd: string): Promise<FnrsSharSeMngResponseDto> {
const response = await client.get<FnrsSharSeMngResponseDto>(`${BASE}/${fnrsSharSeCd}`);
return response.data;
}
async function saveMulti(
body: FnrsSharSeMngSaveRequestDto[],
): Promise<FnrsSharSeMngResponseDto[]> {
const response = await client.post<FnrsSharSeMngResponseDto[]>(BASE, body);
return response.data;
}
async function update(fnrsSharSeCd: string, body: FnrsSharSeMngSaveRequestDto): Promise<string> {
const response = await client.put<string>(`${BASE}/${fnrsSharSeCd}`, {
...body,
fnrsSharSeCd,
mode: FNRS_SHAR_SE_SAVE_MODE.UPDATE,
});
return response.data;
}
async function deleteFnrsSharSeCd(fnrsSharSeCd: string): Promise<string> {
const response = await client.delete<string>(`${BASE}/${fnrsSharSeCd}`);
return response.data;
}
async function findTreeFnrsShar(fnrsCnsltnDocNo: string): Promise<FnrsSharBizCstTreeDto[]> {
const response = await client.get<FnrsSharBizCstTreeDto[]>(
`${BASE}/list/tree/fnrs-shar/${fnrsCnsltnDocNo}`,
);
return response.data;
}
export const fnrsSharSeMngService = {
findAll,
findTree,
findById,
saveMulti,
update,
delete: deleteFnrsSharSeCd,
findTreeFnrsShar,
} satisfies FnrsSharSeMngService;
@@ -0,0 +1,85 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { ENDPOINT } from "@/shared/config";
import type {
FnrsSharSeMngSaveRequestDto,
FnrsSharSeMngSearchDto,
} from "../model/fnrs-shar-se-interface";
import { fnrsSharSeMngService } from "./fnrs-shar-se-service";
const fnrsSharSeMngBaseKey = [ENDPOINT.AS_SERVICE.FNRS_SHAR_SE] as const;
export function useFnrsSharSeMngPage(params: FnrsSharSeMngSearchDto) {
return useQuery({
queryKey: [...fnrsSharSeMngBaseKey, "findAll", params],
queryFn: () => fnrsSharSeMngService.findAll(params),
});
}
export function useFnrsSharSeMngTree() {
return useQuery({
queryKey: [...fnrsSharSeMngBaseKey, "findTree"],
queryFn: () => fnrsSharSeMngService.findTree(),
staleTime: Infinity,
});
}
export function useFnrsSharSeMng(fnrsSharSeCd: string | null | undefined) {
return useQuery({
queryKey: [...fnrsSharSeMngBaseKey, "findById", fnrsSharSeCd],
queryFn: () => fnrsSharSeMngService.findById(fnrsSharSeCd!),
enabled: Boolean(fnrsSharSeCd),
});
}
export function useSaveMultiFnrsSharSeMng() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (body: FnrsSharSeMngSaveRequestDto[]) => fnrsSharSeMngService.saveMulti(body),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: fnrsSharSeMngBaseKey });
},
});
}
export function useUpdateFnrsSharSeMng() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({
fnrsSharSeCd,
body,
}: {
fnrsSharSeCd: string;
body: FnrsSharSeMngSaveRequestDto;
}) => fnrsSharSeMngService.update(fnrsSharSeCd, body),
onSuccess: (_data, { fnrsSharSeCd }) => {
queryClient.invalidateQueries({ queryKey: fnrsSharSeMngBaseKey });
queryClient.invalidateQueries({
queryKey: [...fnrsSharSeMngBaseKey, "findById", fnrsSharSeCd],
});
},
});
}
export function useDeleteFnrsSharSeMng() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (fnrsSharSeCd: string) => fnrsSharSeMngService.delete(fnrsSharSeCd),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: fnrsSharSeMngBaseKey });
},
});
}
export function useFnrsSharBizCstTree(fnrsCnsltnDocNo: string | null | undefined) {
return useQuery({
queryKey: [...fnrsSharSeMngBaseKey, "findTreeFnrsShar", fnrsCnsltnDocNo],
queryFn: () => fnrsSharSeMngService.findTreeFnrsShar(fnrsCnsltnDocNo!),
enabled: Boolean(fnrsCnsltnDocNo),
});
}
@@ -0,0 +1,20 @@
export { fnrsSharSeMngService } from "./api/fnrs-shar-se-service";
export {
useDeleteFnrsSharSeMng,
useFnrsSharBizCstTree,
useFnrsSharSeMng,
useFnrsSharSeMngPage,
useFnrsSharSeMngTree,
useSaveMultiFnrsSharSeMng,
useUpdateFnrsSharSeMng,
} from "./api/queries";
export type {
FnrsSharBizCstTreeDto,
FnrsSharSeMngResponseDto,
FnrsSharSeMngSaveRequestDto,
FnrsSharSeMngSearchDto,
FnrsSharSeMngService,
FnrsSharSeMngTreeDto,
FnrsSharSeSaveMode,
} from "./model/fnrs-shar-se-interface";
export { FNRS_SHAR_SE_SAVE_MODE } from "./model/fnrs-shar-se-interface";
@@ -0,0 +1,83 @@
import type { PageableParams, PageResponse } from "@/shared/model";
export const FNRS_SHAR_SE_SAVE_MODE = {
CREATE: "C",
UPDATE: "U",
DELETE: "D",
} as const;
export type FnrsSharSeSaveMode = (typeof FNRS_SHAR_SE_SAVE_MODE)[keyof typeof FNRS_SHAR_SE_SAVE_MODE];
/** 백엔드 FnrsSharSeMngResponseDto */
export interface FnrsSharSeMngResponseDto {
fnrsSharSeCd: string;
fnrsSharSeCdNm: string;
upFnrsSharSeCd?: string;
cdLvNo: number;
useYn: string;
expln?: string;
sortSeq?: number;
rgtr?: string;
rgtrNm?: string;
mdfr?: string;
regDt?: string;
mdfcnDt?: string;
}
/** 백엔드 FnrsSharSeMngSearchDto + Pageable */
export interface FnrsSharSeMngSearchDto extends PageableParams {
fnrsSharSeCd?: string;
fnrsSharSeCdNm?: string;
useYn?: string;
}
/** 백엔드 FnrsSharSeMngSaveRequestDto */
export interface FnrsSharSeMngSaveRequestDto {
fnrsSharSeCd: string;
mode: FnrsSharSeSaveMode;
fnrsSharSeCdNm: string;
upFnrsSharSeCd?: string;
cdLvNo: number;
useYn?: string;
expln?: string;
sortSeq?: number;
}
/** 백엔드 FnrsSharSeMngTreeDto */
export interface FnrsSharSeMngTreeDto {
indFnrsSharSeCdNm: string;
fnrsSharSeCd: string;
fnrsSharSeCdNm: string;
upFnrsSharSeCd?: string;
useYn: string;
treeLevel: number;
treePath: string;
sortPath: string;
}
/** 백엔드 FnrsSharBizCstTreeDto */
export interface FnrsSharBizCstTreeDto {
indFnrsSharSeCdNm: string;
fnrsSharSeCd: string;
fnrsSharSeCdNm: string;
useYn: string;
treeLevel: number;
treePath: string;
sortPath: string;
exstnAmt?: number;
chgRqtAmt?: number;
ajmtAmt?: number;
rmrkCn?: string;
envoRmrkCn?: string;
}
/** Controller public 메서드명·시그니처와 동일 */
export interface FnrsSharSeMngService {
findAll(params: FnrsSharSeMngSearchDto): Promise<PageResponse<FnrsSharSeMngResponseDto>>;
findTree(): Promise<FnrsSharSeMngTreeDto[]>;
findById(fnrsSharSeCd: string): Promise<FnrsSharSeMngResponseDto>;
saveMulti(body: FnrsSharSeMngSaveRequestDto[]): Promise<FnrsSharSeMngResponseDto[]>;
update(fnrsSharSeCd: string, body: FnrsSharSeMngSaveRequestDto): Promise<string>;
delete(fnrsSharSeCd: string): Promise<string>;
findTreeFnrsShar(fnrsCnsltnDocNo: string): Promise<FnrsSharBizCstTreeDto[]>;
}
+1
View File
@@ -16,6 +16,7 @@ export const ENDPOINT = {
CKLST_RVW: "/as-service/api/v1/cklst-rvw",
ADSTDSTR: "/as-service/api/v1/adstdstr",
FNRS_CNSLTN_MNG: "/as-service/api/v1/fnrs-cnsltn-mng",
FNRS_SHAR_SE: "/as-service/api/v1/fnrs-shar-se-mng",
},
USER_SERVICE: {
LOGIN: "/user-service/login",