[as] feat: 검토인력관리 서비스 추가

This commit is contained in:
2026-06-05 10:22:25 +09:00
parent cdfa1e56e5
commit ec18f17c79
5 changed files with 213 additions and 0 deletions
@@ -0,0 +1,86 @@
import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query";
import { ENDPOINT } from "@/shared/config";
import type {
RvwMnpwMngSaveRequestDto,
RvwMnpwMngSearchDto,
RvwMnpwMngUpdateRequestDto,
} from "../model/rvw-mnpw-interface";
import { rvwMnpwMngService } from "./rvw-mnpw-service";
const rvwMnpwMngBaseKey = [ENDPOINT.AS_COMMON_SERVICE.RVW_MNPW] as const;
export function useRvwMnpwMngPage(params: RvwMnpwMngSearchDto) {
return useQuery({
queryKey: [...rvwMnpwMngBaseKey, "findPage", params],
queryFn: () => rvwMnpwMngService.findPage(params),
});
}
export function useRvwMnpwMng(
atrzSeComCd: string | null | undefined,
ognzSn: number | null | undefined,
userUuid: string | null | undefined,
) {
return useQuery({
queryKey: [...rvwMnpwMngBaseKey, "findById", atrzSeComCd, ognzSn, userUuid],
queryFn: () => rvwMnpwMngService.findById(atrzSeComCd!, ognzSn!, userUuid!),
enabled: Boolean(atrzSeComCd && ognzSn != null && userUuid),
});
}
export function useSaveRvwMnpwMng() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: (body: RvwMnpwMngSaveRequestDto) => rvwMnpwMngService.save(body),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: rvwMnpwMngBaseKey });
},
});
}
export function useUpdateRvwMnpwMng() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({
atrzSeComCd,
ognzSn,
userUuid,
body,
}: {
atrzSeComCd: string;
ognzSn: number;
userUuid: string;
body: RvwMnpwMngUpdateRequestDto;
}) => rvwMnpwMngService.update(atrzSeComCd, ognzSn, userUuid, body),
onSuccess: (_data, { atrzSeComCd, ognzSn, userUuid }) => {
queryClient.invalidateQueries({ queryKey: rvwMnpwMngBaseKey });
queryClient.invalidateQueries({
queryKey: [...rvwMnpwMngBaseKey, "findById", atrzSeComCd, ognzSn, userUuid],
});
},
});
}
export function useDeleteRvwMnpwMng() {
const queryClient = useQueryClient();
return useMutation({
mutationFn: ({
atrzSeComCd,
ognzSn,
userUuid,
}: {
atrzSeComCd: string;
ognzSn: number;
userUuid: string;
}) => rvwMnpwMngService.delete(atrzSeComCd, ognzSn, userUuid),
onSuccess: () => {
queryClient.invalidateQueries({ queryKey: rvwMnpwMngBaseKey });
},
});
}
@@ -0,0 +1,66 @@
import { client } from "@/shared/api";
import { ENDPOINT } from "@/shared/config";
import type { PageResponse } from "@/shared/model";
import type {
RvwMnpwMngResponseDto,
RvwMnpwMngSaveRequestDto,
RvwMnpwMngSearchDto,
RvwMnpwMngService,
RvwMnpwMngUpdateRequestDto,
} from "../model/rvw-mnpw-interface";
const BASE = ENDPOINT.AS_COMMON_SERVICE.RVW_MNPW;
function pkPath(atrzSeComCd: string, ognzSn: number, userUuid: string): string {
return `${BASE}/${atrzSeComCd}/${ognzSn}/${userUuid}`;
}
async function findPage(params: RvwMnpwMngSearchDto): Promise<PageResponse<RvwMnpwMngResponseDto>> {
const response = await client.get<PageResponse<RvwMnpwMngResponseDto>>(BASE, { params });
return response.data;
}
async function findById(
atrzSeComCd: string,
ognzSn: number,
userUuid: string,
): Promise<RvwMnpwMngResponseDto> {
const response = await client.get<RvwMnpwMngResponseDto>(pkPath(atrzSeComCd, ognzSn, userUuid));
return response.data;
}
async function save(body: RvwMnpwMngSaveRequestDto): Promise<RvwMnpwMngResponseDto> {
const response = await client.post<RvwMnpwMngResponseDto>(BASE, body);
return response.data;
}
async function update(
atrzSeComCd: string,
ognzSn: number,
userUuid: string,
body: RvwMnpwMngUpdateRequestDto,
): Promise<RvwMnpwMngResponseDto> {
const response = await client.put<RvwMnpwMngResponseDto>(
pkPath(atrzSeComCd, ognzSn, userUuid),
body,
);
return response.data;
}
async function deleteRvwMnpw(
atrzSeComCd: string,
ognzSn: number,
userUuid: string,
): Promise<string> {
const response = await client.delete<string>(pkPath(atrzSeComCd, ognzSn, userUuid));
return response.data;
}
export const rvwMnpwMngService = {
findPage,
findById,
save,
update,
delete: deleteRvwMnpw,
} satisfies RvwMnpwMngService;
+15
View File
@@ -0,0 +1,15 @@
export {
useDeleteRvwMnpwMng,
useRvwMnpwMng,
useRvwMnpwMngPage,
useSaveRvwMnpwMng,
useUpdateRvwMnpwMng,
} from "./api/queries";
export { rvwMnpwMngService } from "./api/rvw-mnpw-service";
export type {
RvwMnpwMngResponseDto,
RvwMnpwMngSaveRequestDto,
RvwMnpwMngSearchDto,
RvwMnpwMngService,
RvwMnpwMngUpdateRequestDto,
} from "./model/rvw-mnpw-interface";
@@ -0,0 +1,45 @@
import type { PageableParams, PageResponse } from "@/shared/model";
/** 백엔드 RvwMnpwMngResponseDto */
export interface RvwMnpwMngResponseDto {
atrzSeComCd: string;
atrzSeComCdNm?: string;
ognzSn: number;
userUuid: string;
userUuidNm?: string;
rgtr?: string;
regDt?: string;
}
/** 백엔드 RvwMnpwMngSearchDto + Pageable */
export interface RvwMnpwMngSearchDto extends PageableParams {
atrzSeComCd?: string;
ognzSn?: number;
userUuid?: string;
}
/** 백엔드 RvwMnpwMngSaveRequestDto */
export interface RvwMnpwMngSaveRequestDto {
atrzSeComCd: string;
ognzSn: number;
userUuid: string;
}
/** 백엔드 RvwMnpwMngUpdateRequestDto */
export interface RvwMnpwMngUpdateRequestDto {
newAtrzSeComCd: string;
}
/** Controller public 메서드명·시그니처와 동일 */
export interface RvwMnpwMngService {
findPage(params: RvwMnpwMngSearchDto): Promise<PageResponse<RvwMnpwMngResponseDto>>;
findById(atrzSeComCd: string, ognzSn: number, userUuid: string): Promise<RvwMnpwMngResponseDto>;
save(body: RvwMnpwMngSaveRequestDto): Promise<RvwMnpwMngResponseDto>;
update(
atrzSeComCd: string,
ognzSn: number,
userUuid: string,
body: RvwMnpwMngUpdateRequestDto,
): Promise<RvwMnpwMngResponseDto>;
delete(atrzSeComCd: string, ognzSn: number, userUuid: string): Promise<string>;
}
+1
View File
@@ -7,6 +7,7 @@ export const ENDPOINT = {
ACNTG_SE: "/as-service/api/v1/acntg-se",
CNSTP_SE: "/as-service/api/v1/cnstp-se",
ESNTL_ATCH_FILE: "/as-service/api/v1/esntl-atch-file",
RVW_MNPW: "/as-service/api/v1/rvw-mnpw",
},
AS_INSTL_SERVICE: {
INSTL_SNCN: "/as-service/api/v1/instl-sncn",