[251029] feat: UserReviewList API-1

🕐 커밋 시간: 2025. 10. 29. 10:37:54

📊 변경 통계:
  • 총 파일: 2개
  • 추가: +111줄

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/actions/productActions.js
  ~ com.twin.app.shoptime/src/api/apiConfig.js

🔧 주요 변경 내용:
  • 핵심 비즈니스 로직 개선
  • API 서비스 레이어 개선
  • 중간 규모 기능 개선
This commit is contained in:
2025-10-29 10:37:55 +09:00
parent 5f99661b6c
commit 04b7a06118
2 changed files with 111 additions and 0 deletions

View File

@@ -150,6 +150,28 @@ const extractReviewApiData = (apiResponse) => {
}
};
// IF-LGSP-101용 API 응답에서 reviewDetail 추출
const extractReviewListApiData = (apiResponse) => {
try {
let reviewDetail = null;
if (apiResponse && apiResponse.data && apiResponse.data.reviewDetail) {
reviewDetail = apiResponse.data.reviewDetail;
} else if (apiResponse && apiResponse.reviewDetail) {
reviewDetail = apiResponse.reviewDetail;
}
if (!reviewDetail) {
return null;
}
return reviewDetail;
} catch (error) {
console.error('[UserReviewList] ❌ extractReviewListApiData 에러:', error);
return null;
}
};
// Mock 데이터 생성 함수 (재사용성 위해 분리) - 100개 리뷰와 많은 이미지 포함
const createMockReviewData = () => {
const reviewTexts = [
@@ -389,3 +411,90 @@ export const getVideoIndicatorFocus = (focused) => (dispatch) => {
payload: focused,
});
};
// User Review List 추가 조회 IF-LGSP-101
export const getUserReviewList = (requestParams) => (dispatch, getState) => {
const {
prdtId,
patnrId,
filterTpCd = 'ALL',
filterTpVal,
pageSize = 5,
pageNo = 1
} = requestParams;
const params = {
prdtId,
patnrId,
filterTpCd,
pageSize,
pageNo
};
if (filterTpCd !== 'ALL' && filterTpVal) {
params.filterTpVal = filterTpVal;
}
const body = {};
console.log('[UserReviewList] 🚀 API 요청 시작:', {
requestParams,
params,
body,
url: URLS.GET_USER_REVIEW_LIST,
timestamp: new Date().toISOString()
});
const onSuccess = (response) => {
console.log('[UserReviewList] ✅ API 성공 응답:', {
status: response.status,
statusText: response.statusText,
retCode: response.data && response.data.retCode,
retMsg: response.data && response.data.retMsg,
hasData: !!(response.data && response.data.data),
fullResponse: response.data,
});
const reviewDetail = extractReviewListApiData(response.data);
console.log('[UserReviewList] 📊 추출된 reviewDetail:', {
hasReviewDetail: !!reviewDetail,
reviewDetail: reviewDetail,
totRvwCnt: reviewDetail && reviewDetail.totRvwCnt,
totRvwAvg: reviewDetail && reviewDetail.totRvwAvg,
rvwListCnt: reviewDetail && reviewDetail.rvwListCnt,
reviewListLength: reviewDetail && reviewDetail.reviewList ? reviewDetail.reviewList.length : 0,
});
if (reviewDetail) {
dispatch({
type: types.GET_USER_REVIEW_LIST,
payload: {
reviewDetail,
prdtId: prdtId
},
});
console.log('[UserReviewList] 📦 데이터 디스패치 완료:', {
reviewDetail,
prdtId
});
} else {
console.warn('[UserReviewList] ⚠️ reviewDetail 추출 실패');
}
};
const onFail = (error) => {
console.error('[UserReviewList] ❌ API 실패:', {
message: error.message,
status: error.response && error.response.status,
statusText: error.response && error.response.statusText,
responseData: error.response && error.response.data,
requestParams: requestParams,
params: params,
url: URLS.GET_USER_REVIEW_LIST,
fullError: error,
});
};
TAxios(dispatch, getState, 'get', URLS.GET_USER_REVIEW_LIST, params, body, onSuccess, onFail);
};

View File

@@ -59,6 +59,8 @@ export const URLS = {
GET_PRODUCT_GROUP: "/lgsp/v1/product/group.lge",
GET_PRODUCT_OPTION: "/lgsp/v1/product/option.lge",
GET_USER_REVEIW: "/lgsp/v1/product/reviews.lge",
// IF-LGSP-101 신규 - Reviews API 추가 251029
GET_USER_REVIEW_LIST: "/lgsp/v1/product/review/list.lge",
//my-page controller
GET_MY_RECOMMANDED_KEYWORD: "/lgsp/v1/mypage/reckeyword.lge",