Files
shoptime/com.twin.app.shoptime/src/actions/cartActions.js
optrader 741c4338ca [251124] fix: Log정리-5
🕐 커밋 시간: 2025. 11. 24. 12:43:58

📊 변경 통계:
  • 총 파일: 40개
  • 추가: +774줄
  • 삭제: -581줄

📝 수정된 파일:
  ~ com.twin.app.shoptime/src/actions/appDataActions.js
  ~ com.twin.app.shoptime/src/actions/billingActions.js
  ~ com.twin.app.shoptime/src/actions/brandActions.js
  ~ com.twin.app.shoptime/src/actions/cancelActions.js
  ~ com.twin.app.shoptime/src/actions/cardActions.js
  ~ com.twin.app.shoptime/src/actions/cartActions.js
  ~ com.twin.app.shoptime/src/actions/checkoutActions.js
  ~ com.twin.app.shoptime/src/actions/commonActions.js
  ~ com.twin.app.shoptime/src/actions/convertActions.js
  ~ com.twin.app.shoptime/src/actions/couponActions.js
  ~ com.twin.app.shoptime/src/actions/deviceActions.js
  ~ com.twin.app.shoptime/src/actions/empActions.js
  ~ com.twin.app.shoptime/src/actions/eventActions.js
  ~ com.twin.app.shoptime/src/actions/forYouActions.js
  ~ com.twin.app.shoptime/src/actions/homeActions.js
  ~ com.twin.app.shoptime/src/actions/logActions.js
  ~ com.twin.app.shoptime/src/actions/mediaActions.js
  ~ com.twin.app.shoptime/src/actions/mockCartActions.js
  ~ com.twin.app.shoptime/src/actions/myPageActions.js
  ~ com.twin.app.shoptime/src/actions/onSaleActions.js
  ~ com.twin.app.shoptime/src/actions/orderActions.js
  ~ com.twin.app.shoptime/src/actions/panelActions.js
  ~ com.twin.app.shoptime/src/actions/panelNavigationActions.js
  ~ com.twin.app.shoptime/src/actions/pinCodeActions.js
  ~ com.twin.app.shoptime/src/actions/productActions.js
  ~ com.twin.app.shoptime/src/actions/queuedPanelActions.js
  ~ com.twin.app.shoptime/src/actions/searchActions.js
  ~ com.twin.app.shoptime/src/actions/shippingActions.js
  ~ com.twin.app.shoptime/src/actions/voiceActions.js
  ~ com.twin.app.shoptime/src/actions/webSpeechActions.js
  ~ com.twin.app.shoptime/src/reducers/localSettingsReducer.js
  ~ com.twin.app.shoptime/src/reducers/mediaOverlayReducer.js
  ~ com.twin.app.shoptime/src/reducers/mockCartReducer.js
  ~ com.twin.app.shoptime/src/reducers/playReducer.js
  ~ com.twin.app.shoptime/src/reducers/productReducer.js
  ~ com.twin.app.shoptime/src/reducers/videoOverlayReducer.js
  ~ com.twin.app.shoptime/src/views/UserReview/ShowUserReviews.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/UserReviewPanel.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/components/UserReviewsList.jsx
  ~ com.twin.app.shoptime/src/views/UserReview/components/VirtualScrollBar.jsx

🔧 함수 변경 내용:
  📊 Function-level changes summary across 40 files:
    • Functions added: 14
    • Functions modified: 34
    • Functions deleted: 18
  📋 By language:
    • javascript: 40 files, 66 function changes

🔧 주요 변경 내용:
  • 핵심 비즈니스 로직 개선
  • 로깅 시스템 개선
  • 설정 관리 시스템 개선
  • UI 컴포넌트 아키텍처 개선
2025-11-24 12:47:57 +09:00

353 lines
7.9 KiB
JavaScript

import { URLS } from '../api/apiConfig';
import { TAxios } from '../api/TAxios';
import { types } from './actionTypes';
import { showError } from './commonActions';
import { createDebugHelpers } from '../utils/debug';
// 디버그 헬퍼 설정
const DEBUG_MODE = false;
const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE);
/**
* 회원 장바구니 정보 조회
* @param {Object} props - { mbrNo: 회원번호 }
*/
export const getMyInfoCartSearch = (props) => (dispatch, getState) => {
const { mbrNo } = props;
const onSuccess = (response) => {
dlog('getMyInfoCartSearch onSuccess: ', response.data);
dispatch({
type: types.GET_MY_INFO_CART_SEARCH,
payload: response.data.data,
});
};
const onFail = (error) => {
derror('getMyInfoCartSearch OnFail: ', error);
// 실패 시에도 빈 데이터로 초기화
dispatch({
type: types.GET_MY_INFO_CART_SEARCH,
payload: { cartList: [] },
});
};
// API URL이 정의되어 있지 않은 경우 임시로 빈 데이터 반환
if (!URLS.GET_MY_INFO_CART_SEARCH) {
dwarn('GET_MY_INFO_CART_SEARCH URL이 정의되지 않았습니다.');
dispatch({
type: types.GET_MY_INFO_CART_SEARCH,
payload: { cartList: [] },
});
return;
}
TAxios(dispatch, getState, 'get', URLS.GET_MY_INFO_CART_SEARCH, { mbrNo }, {}, onSuccess, onFail);
};
/**
* 장바구니 상품 추가 API
*/
export const insertMyinfoCart = (props) => (dispatch, getState) => {
const { mbrNo, patnrId, prdtId, prdtOpt, prodQty } = props;
const onSuccess = (response) => {
dlog('✅ insertMyinfoCart API 성공:', response.data.retCode);
// if (response.data?.retCode !== '0' && response.data.retCode !== 0) {
// derror("❌ retCode 에러:", response.data.retCode);
// derror("에러 메시지:", response.data.retMsg);
// return;
// }
if (response.data.retCode === 0) {
dispatch({
type: types.INSERT_MY_INFO_CART,
payload: response.data.data,
});
dispatch(getMyInfoCartSearch({ mbrNo }));
} else {
dispatch(showError(response.data.retCode, response.data.retMsg, false, null, null));
derror('❌ retCode 에러:', response.data.retCode);
derror('에러 메시지:', response.data.retMsg);
}
};
const onFail = (error) => {
derror('insertMyinfoCart OnFail: ', error);
};
TAxios(
dispatch,
getState,
'post',
URLS.INSERT_MY_INFO_CART,
{},
{ mbrNo, patnrId, prdtId, prdtOpt, prodQty },
onSuccess,
onFail
);
};
/**
* 장바구니 상품 삭제 API
*/
export const deleteMyinfoCart = (props) => (dispatch, getState) => {
const { mbrNo, patnrId, prdtId, prodSno } = props;
const onSuccess = (response) => {
dlog('deleteMyinfoCart onSuccess: ', response.data);
dispatch({
type: types.DELETE_MY_INFO_CART,
payload: response.data.data,
});
// 장바구니 목록 재조회
dispatch(getMyInfoCartSearch({ mbrNo }));
};
const onFail = (error) => {
derror('deleteMyinfoCart OnFail: ', error);
};
TAxios(
dispatch,
getState,
'post',
URLS.DELETE_MY_INFO_CART,
{},
{ mbrNo, patnrId, prdtId, prodSno },
onSuccess,
onFail
);
};
/**
* 장바구니 상품 전체 삭제
*/
export const deleteAllMyinfoCart = (props) => (dispatch, getState) => {
const { mbrNo } = props;
const onSuccess = (response) => {
dlog('deleteAllMyinfoCart onSuccess: ', response.data);
dispatch({
type: types.DELETE_ALL_MY_INFO_CART,
payload: response.data.data,
});
// 장바구니 목록 재조회
dispatch(getMyInfoCartSearch({ mbrNo }));
};
const onFail = (error) => {
derror('deleteAllMyinfoCart OnFail: ', error);
};
TAxios(
dispatch,
getState,
'post',
URLS.DELETE_ALL_MY_INFO_CART,
{},
{ mbrNo },
onSuccess,
onFail
);
};
/**
* 장바구니 상품 체크박스 토글
* @param {Object} item - 선택된 상품 정보
* @param {Boolean} isChecked - 선택 여부
*/
export const toggleCheckCart = (item, isChecked) => (dispatch) => {
dispatch({
type: types.TOGGLE_CHECK_CART,
payload: {
item: item,
isChecked: isChecked,
timestamp: Date.now(),
},
});
};
/**
* 장바구니 상품 수정
*/
export const updateMyinfoCart = (props) => (dispatch, getState) => {
const { mbrNo, patnrId, prdtId, prodQty, prodSno } = props;
const onSuccess = (response) => {
dlog('updateMyinfoCart onSuccess: ', response.data);
dispatch({
type: types.UPDATE_MY_INFO_CART,
payload: response.data.data,
});
// 장바구니 목록 재조회
dispatch(getMyInfoCartSearch({ mbrNo }));
};
const onFail = (error) => {
derror('updateMyinfoCart OnFail: ', error);
};
TAxios(
dispatch,
getState,
'post',
URLS.UPDATE_MY_INFO_CART,
{},
{ mbrNo, patnrId, prdtId, prodQty, prodSno },
onSuccess,
onFail
);
};
/**
* 장바구니에 상품 추가
* @param {Object} props - 장바구니 상품 정보
*/
export const addToCart = (props) => (dispatch, getState) => {
const { mbrNo, patnrId, prdtId, prodOptCdCval, prodQty, prdtOpt } = props;
const onSuccess = (response) => {
dlog('addToCart onSuccess: ', response.data);
dispatch({
type: types.ADD_TO_CART,
payload: response.data.data,
});
// 장바구니 목록 재조회
dispatch(getMyInfoCartSearch({ mbrNo }));
};
const onFail = (error) => {
derror('addToCart OnFail: ', error);
};
// API URL이 정의되어 있지 않은 경우 로컬 상태만 업데이트
if (!URLS.ADD_TO_CART) {
dwarn('ADD_TO_CART URL이 정의되지 않았습니다.');
dispatch({
type: types.ADD_TO_CART,
payload: { patnrId, prdtId, prodOptCdCval, prodQty, prdtOpt },
});
return;
}
TAxios(
dispatch,
getState,
'post',
URLS.ADD_TO_CART,
{},
{ mbrNo, patnrId, prdtId, prodOptCdCval, prodQty, prdtOpt },
onSuccess,
onFail
);
};
/**
* 장바구니에서 상품 제거
* @param {Object} props - { mbrNo, cartSno }
*/
export const removeFromCart = (props) => (dispatch, getState) => {
const { mbrNo, cartSno } = props;
const onSuccess = (response) => {
dlog('removeFromCart onSuccess: ', response.data);
dispatch({
type: types.REMOVE_FROM_CART,
payload: { cartSno },
});
// 장바구니 목록 재조회
dispatch(getMyInfoCartSearch({ mbrNo }));
};
const onFail = (error) => {
derror('removeFromCart OnFail: ', error);
};
if (!URLS.REMOVE_FROM_CART) {
dwarn('REMOVE_FROM_CART URL이 정의되지 않았습니다.');
dispatch({
type: types.REMOVE_FROM_CART,
payload: { cartSno },
});
return;
}
TAxios(
dispatch,
getState,
'delete',
URLS.REMOVE_FROM_CART,
{ mbrNo, cartSno },
{},
onSuccess,
onFail
);
};
/**
* 장바구니 상품 수량 업데이트
* @param {Object} props - { mbrNo, cartSno, prodQty }
*/
export const updateCartItem = (props) => (dispatch, getState) => {
const { mbrNo, cartSno, prodQty } = props;
const onSuccess = (response) => {
dlog('updateCartItem onSuccess: ', response.data);
dispatch({
type: types.UPDATE_CART_ITEM,
payload: { cartSno, prodQty },
});
// 장바구니 목록 재조회
dispatch(getMyInfoCartSearch({ mbrNo }));
};
const onFail = (error) => {
derror('updateCartItem OnFail: ', error);
};
if (!URLS.UPDATE_CART_ITEM) {
dwarn('UPDATE_CART_ITEM URL이 정의되지 않았습니다.');
dispatch({
type: types.UPDATE_CART_ITEM,
payload: { cartSno, prodQty },
});
return;
}
TAxios(
dispatch,
getState,
'put',
URLS.UPDATE_CART_ITEM,
{},
{ mbrNo, cartSno, prodQty },
onSuccess,
onFail
);
};
/**
* 장바구니 전체 비우기
*/
export const clearCart = () => (dispatch) => {
dispatch({
type: types.CLEAR_CART,
});
};