fix: mapSearchBar 주석 처리

This commit is contained in:
swcho
2025-07-01 11:01:22 +09:00
parent f4b0af5ede
commit ea20ceacb3
+185
View File
@@ -0,0 +1,185 @@
import { getFetch } from "@/components/lib/api";
export type wrMapType = wrMapState & wrMapActions;
export type wrMapState = {
wrMap: {
buildingSearchRes: any[]
} // 건물 검색 결과 데이터
};
type wrMapActions = {
buildingNmSearch: (
flg: string,
sigunCode: string,
searchNm: string | undefined
) => void;
buildingNmSearchMultiple: (
checkedLayers: string[],
sigunCode: string,
searchNm: string | undefined
) => void; // 여러 레이어 동시 검색 함수 추가
};
export const wrMapStateExport: wrMapState = {
wrMap: {
buildingSearchRes: []
}
};
// 레이어 타입과 플래그 매핑
const LAYER_FLAG_MAP: { [key: string]: string } = {
// '46': '???', // 하수처리시설
// '47': '???', // 하수재이용시설
'48': 'RNB', // 빗물이용시설
'49': 'RST', // 중수도시설
'50': 'HTB', // 온배수시설
};
const findBdst = async (flg: string, sggCd: string, searchTxt: string | undefined) => {
return await getFetch('wr', `/reuseFc/building/${flg}/${sggCd}` + (searchTxt ? `/${searchTxt}` : ''))
}
export const wrMapActionsExport: (set: any) => wrMapActions = (
set: any
) => {
return {
buildingNmSearch: async (
flg: string,
sigunCode: string,
searchNm: string | undefined
) => {
try {
// if (!searchNm || searchNm.length < 2) {
// set((state: wrMapState) => ({
// ...state,
// buildingSearchData: []
// }));
// return;
// }
console.log("건축물 코드, 시군구 코드, 검색어: ", flg, sigunCode, searchNm);
const response = await findBdst(flg, sigunCode, searchNm);
console.log("response: ", response);
// API 응답을 SearchInputText 형식으로 변환
const searchListFormatted = (response || []).map((building: any) => ({
searchNm: building.bdstNm,
searchPk: String(building.bdstInfoPk),
dmdCoNm: building.bdstNm,
layerType: flg,
...building
}));
// findBdst와 유사한 API 호출
// findBdst(flg, sigunCode || "", searchNm).then(() => {
// console.log("건물 검색 API 호출: ", sigunCode, searchNm, flg);
// // bdst.bdstBase를 SearchInputText 형식으로 변환
// const searchListFormatted = (state.bdst.bdstBase || []).map((building: any) => ({
// searchNm: building.bdstNm,
// searchPk: String(building.bdstInfoPk),
// dmdCoNm: building.bdstNm,
// layerType: flg,
// ...building
// }));
// set((state: any) => ({
// ...state,
// wrMap: {
// ...state.wrMap,
// buildingSearchData: searchListFormatted
// }
// }));
// });
set((state: wrMapState) => ({
...state,
wrMap: {
...state.wrMap,
buildingSearchRes: searchListFormatted
}
}));
} catch (error) {
console.error("건물 검색 중 오류:", error);
}
},
buildingNmSearchMultiple: async (
checkedLayers: string[],
sigunCode: string,
searchNm: string | undefined
) => {
try {
if (!searchNm || searchNm.length < 2) {
set((state: any) => ({
...state.wrMap,
buildingSearchData: []
}));
return;
}
// 체크된 레이어들에 대해 병렬로 API 호출
const searchPromises = checkedLayers
.filter(layer => LAYER_FLAG_MAP[layer]) // 매핑된 레이어만 필터링
.map(layer => {
const flg = LAYER_FLAG_MAP[layer];
return findBdst(flg, sigunCode, searchNm)
.then(response => {
console.log(`레이어 ${layer}(${flg}) API 응답:`, response);
const searchListFormatted = (state.bdst.bdstBase || []).map((building: any) => ({
searchNm: building.bdstNm,
searchPk: String(building.bdstInfoPk),
dmdCoNm: building.bdstNm,
layerType: flg,
...building
}));
return {
layerType: layer,
flg: flg,
data: bdstNames
};
})
.catch(error => {
console.error(`레이어 ${layer}(${flg}) 검색 중 오류:`, error);
return { layerType: layer, flg: flg, data: [] };
});
});
const results = await Promise.all(searchPromises);
console.log("다중 레이어 검색 결과:", results);
// 모든 결과를 하나의 배열로 합치기
const allSearchResults = results.reduce((acc, result) => {
const formatted = result.data.map((building: any) => ({
searchNm: building.bdstNm,
searchPk: String(building.bdstInfoPk),
dmdCoNm: building.bdstNm,
layerType: result.layerType,
flg: result.flg,
...building.originalData
}));
return [...acc, ...formatted];
}, [] as any[]);
console.log("최종 합쳐진 검색 결과:", {
totalCount: allSearchResults.length,
sampleData: allSearchResults.slice(0, 3)
});
set((state: any) => ({
...state.wrMap,
buildingSearchData: allSearchResults
}));
} catch (error) {
console.error("다중 레이어 검색 중 오류:", error);
set((state: any) => ({
...state,
buildingSearchData: []
}));
}
}
};
};