🕐 커밋 시간: 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 컴포넌트 아키텍처 개선
1559 lines
35 KiB
JavaScript
1559 lines
35 KiB
JavaScript
import { countryCode, URLS } from '../api/apiConfig';
|
|
import { TLogEvent } from '../api/TLogEvent';
|
|
import { LOG_MENU, LOG_TP_NO } from '../utils/Config';
|
|
import { formatGMTString, getTimeDifferenceByMilliseconds } from '../utils/helperMethods';
|
|
import { setGNBMenu, setSecondLayerInfo } from './commonActions';
|
|
import { createDebugHelpers } from '../utils/debug';
|
|
|
|
// 디버그 헬퍼 설정
|
|
const DEBUG_MODE = false;
|
|
const { dlog, dwarn, derror } = createDebugHelpers(DEBUG_MODE);
|
|
|
|
export const getUrlByLogTpNo = (logTpNo) => {
|
|
switch (logTpNo) {
|
|
// IG-LGSP-LOG-001 / Live 시청 이력
|
|
case LOG_TP_NO.LIVE.HOME:
|
|
case LOG_TP_NO.LIVE.FEATURED_BRANDS:
|
|
case LOG_TP_NO.LIVE.FULL:
|
|
case LOG_TP_NO.LIVE.ITEM_DETAIL:
|
|
return URLS.LOG_LIVE;
|
|
|
|
// IG-LGSP-LOG-002 / VOD 시청 이력
|
|
case LOG_TP_NO.VOD.FULL_VOD:
|
|
case LOG_TP_NO.VOD.POPULAR_SHOWS_AND_HOT_PICKS:
|
|
case LOG_TP_NO.VOD.FEATURED_BRANDS_VOD: // no cases
|
|
case LOG_TP_NO.VOD.HOME_VOD:
|
|
case LOG_TP_NO.VOD.ITEM_DETAIL_VOD:
|
|
case LOG_TP_NO.VOD.FULL_MEDIA:
|
|
case LOG_TP_NO.VOD.ITEM_DETAIL_MEDIA:
|
|
return URLS.LOG_VOD;
|
|
|
|
// IF-LGSP-LOG-003 / Curation View 이력
|
|
case LOG_TP_NO.CURATION.HOT_PICKS:
|
|
case LOG_TP_NO.CURATION.SHOWROOM:
|
|
case LOG_TP_NO.CURATION.ON_SALE:
|
|
case LOG_TP_NO.CURATION.HOME:
|
|
case LOG_TP_NO.CURATION.CATEGORY:
|
|
return URLS.LOG_CURATION;
|
|
|
|
// IF-LGSP-LOG-004 / Entry 이력
|
|
case LOG_TP_NO.SECOND_LAYER:
|
|
return URLS.LOG_SECOND_LAYER;
|
|
|
|
// IF-LGSP-LOG-005 / GNB 클릭 이력
|
|
case LOG_TP_NO.GNB:
|
|
return URLS.LOG_GNB;
|
|
|
|
// IF-LGSP-LOG-006 / 상품 상세 이력
|
|
case LOG_TP_NO.PRODUCT.PRODUCT_DETAIL:
|
|
case LOG_TP_NO.PRODUCT.GROUP_DETAIL:
|
|
case LOG_TP_NO.PRODUCT.BILLING_PRODUCT_DETAIL:
|
|
case LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE:
|
|
return URLS.LOG_PRODUCT;
|
|
|
|
// IF-LGSP-LOG-007 / Detail 상세 이력
|
|
case LOG_TP_NO.DETAIL.THEME_DETAIL:
|
|
case LOG_TP_NO.DETAIL.TRAVEL_DETAIL:
|
|
case LOG_TP_NO.DETAIL.DETAIL_BUTTON_CLICK:
|
|
return URLS.LOG_DETAIL;
|
|
|
|
// IF-LGSP-LOG-008 / Shop by mobile 이력
|
|
case LOG_TP_NO.SHOP_BY_MOBILE.SHOP_BY_MOBILE:
|
|
case LOG_TP_NO.SHOP_BY_MOBILE.AGREE_AND_SEND:
|
|
case LOG_TP_NO.SHOP_BY_MOBILE.QR_CODE_REDIRECT_AND_CREATE_TRACKING_LOG:
|
|
return URLS.LOG_SHOP_BY_MOBILE;
|
|
|
|
// IF-LGSP-LOG-009 / Partners 클릭 이력
|
|
case LOG_TP_NO.PARTNERS:
|
|
return URLS.LOG_PARTNERS;
|
|
|
|
// IF-LGSP-LOG-010 / Reminder - Alert On/Off
|
|
case LOG_TP_NO.MY_PAGE_ALERT_FLAG:
|
|
return URLS.LOG_MY_PAGE_ALERT_FLAG;
|
|
|
|
// IF-LGSP-LOG-011 / My Page Delete 버튼 클릭 이력
|
|
case LOG_TP_NO.MY_PAGE_MY_DELETE:
|
|
return URLS.LOG_MY_PAGE_MY_DELETE;
|
|
|
|
// IF-LGSP-LOG-012 / My Page Notice View
|
|
case LOG_TP_NO.MY_PAGE_NOTICE:
|
|
return URLS.LOG_MY_PAGE_NOTICE;
|
|
|
|
// IF-LGSP-LOG-013 / 검색 이력
|
|
case LOG_TP_NO.SEARCH:
|
|
return URLS.LOG_SEARCH;
|
|
|
|
// IF-LGSP-LOG-014 / 검색 결과 클릭 이력
|
|
case LOG_TP_NO.SEARCH_CLICK:
|
|
return URLS.LOG_SEARCH_CLICK;
|
|
|
|
// IF-LGSP-LOG-015 / Upcoming On/Off
|
|
case LOG_TP_NO.UPCOMING_FLAG:
|
|
return URLS.LOG_UPCOMING_FLAG;
|
|
|
|
// IF-LGSP-LOG-017 / 알람 팝업
|
|
case LOG_TP_NO.ALARM_POP:
|
|
return URLS.LOG_ALARM_POP;
|
|
|
|
// IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭
|
|
case LOG_TP_NO.ALARM_CLICK.BROADCAST:
|
|
case LOG_TP_NO.ALARM_CLICK.KEYWORD:
|
|
return URLS.LOG_ALARM_CLICK;
|
|
|
|
// IF-LGSP-LOG-020 / 테마 상품 상세 이력 → 테마 상품 클릭 이력
|
|
case LOG_TP_NO.THEME_PRODUCT:
|
|
return URLS.LOG_THEME_PRODUCT;
|
|
|
|
// IF-LGSP-LOG-100 / IF-LGSP-LOG-100 / TOP contents 노출 이력
|
|
case LOG_TP_NO.TOP_CONTENTS.VIEW:
|
|
case LOG_TP_NO.TOP_CONTENTS.CLICK:
|
|
return URLS.LOG_TOP_CONTENTS;
|
|
|
|
// IF-LGSP-LOG-110 / Featured Brands View 이력
|
|
case LOG_TP_NO.BRANDS:
|
|
return URLS.LOG_BRANDS;
|
|
|
|
// IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력
|
|
case LOG_TP_NO.TERMS.AGREE:
|
|
case LOG_TP_NO.TERMS.DO_NOT_AGREE:
|
|
case LOG_TP_NO.TERMS.TEARMS_CONDITIONS:
|
|
case LOG_TP_NO.TERMS.PRIVACY_POLICY:
|
|
return URLS.LOG_TERMS;
|
|
|
|
// IF-LGSP-LOG-102 / LG Account 로그인 이력
|
|
case LOG_TP_NO.LG_ACCOUNT_LOGIN:
|
|
return URLS.LOG_ACCOUNT_LOGIN;
|
|
|
|
// IF-LGSP-LOG-103 / Order 화면 버튼 클릭 이력
|
|
case LOG_TP_NO.ORDER_BTN_CLICK:
|
|
return URLS.LOG_ORDER_BTN_CLICK;
|
|
|
|
// IF-LGSP-LOG-104 / Order 취소/반품/교환 이력
|
|
case LOG_TP_NO.ORDER_CHANGE:
|
|
return URLS.LOG_ORDER_CHANGE;
|
|
|
|
// IF-LGSP-LOG-105 / 쿠폰 사용 이력
|
|
case LOG_TP_NO.COUPON_USE:
|
|
return URLS.LOG_COUPON_USE;
|
|
|
|
// IF-LGSP-LOG-108 / 결제 페이지 진입 이력
|
|
case LOG_TP_NO.PAYMENT_ENTRY:
|
|
return URLS.LOG_PAYMENT_ENTRY;
|
|
|
|
// IF-LGSP-LOG-109 / 결제 완료 이력
|
|
case LOG_TP_NO.PAYMENT_COMPLETE:
|
|
return URLS.LOG_PAYMENT_COMPLETE;
|
|
|
|
// IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력
|
|
case LOG_TP_NO.MY_INFO_EDIT:
|
|
return URLS.LOG_MY_INFO_EDIT;
|
|
|
|
// IF-LGSP-LOG-112 / Check out 화면 버튼 클릭 이력
|
|
case LOG_TP_NO.CHECKOUT_BTN_CLICK:
|
|
return URLS.LOG_CHECKOUT_BTN_CLICK;
|
|
|
|
default:
|
|
return;
|
|
}
|
|
};
|
|
|
|
export const postTotalLog = (params, url) => (dispatch, getState) => {
|
|
const onSuccess = (response) => {
|
|
// dlog("#Total Log onSuccess.....", response);
|
|
};
|
|
|
|
const onFail = (error) => {
|
|
// derror("totalLog onFail...", error);
|
|
};
|
|
|
|
TLogEvent(
|
|
dispatch,
|
|
getState,
|
|
'post',
|
|
URLS.LOG_TOTAL_RECOMMEND,
|
|
{},
|
|
params,
|
|
onSuccess,
|
|
onFail,
|
|
true
|
|
);
|
|
};
|
|
|
|
export const postLog = (params, url) => (dispatch, getState) => {
|
|
const { logTpNo } = params;
|
|
|
|
const onSuccess = (response) => {
|
|
// dlog(
|
|
// `postLog onSuccess logTpNo ${logTpNo}`,
|
|
// JSON.parse(response.config.data)
|
|
// );
|
|
};
|
|
|
|
const onFail = (error) => {
|
|
derror('postLog onFail', error);
|
|
};
|
|
|
|
TLogEvent(
|
|
dispatch,
|
|
getState,
|
|
'post',
|
|
url ?? getUrlByLogTpNo(logTpNo),
|
|
{},
|
|
params,
|
|
onSuccess,
|
|
onFail
|
|
);
|
|
};
|
|
|
|
/**
|
|
* deepLink 수신 상태 모니터
|
|
*
|
|
* (?) deeplinkId 딥 링크 아이디
|
|
*
|
|
* (?) flag 딥 링크 여부
|
|
*/
|
|
export const sendLogDeepLinkFlag = (params) => (dispatch, getState) => {
|
|
const { deeplinkId, flag } = params;
|
|
dispatch(postLog({ deeplinkId, flag }, URLS.LOG_DEEPLINK));
|
|
};
|
|
|
|
/**
|
|
* IG-LGSP-LOG-001 / Live 시청 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 네임
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 쇼 아이디
|
|
*
|
|
* (M) showNm 쇼 네임
|
|
*
|
|
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
|
|
*
|
|
* (M) watchEndDt 시청 종료 시간
|
|
*
|
|
* (M) watchStrtDt 시청 시작 시간
|
|
*/
|
|
export const sendLogLive = (params, callback) => (dispatch, getState) => {
|
|
const { logTpNo, patncNm, patnrId, showId, watchStrtDt } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!logTpNo || !patncNm || !patnrId || !showId || !watchStrtDt) {
|
|
dlog('[sendLogLive] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: params?.entryMenu ?? entryMenu,
|
|
nowMenu: params?.nowMenu ?? nowMenu,
|
|
watchEndDt: params?.watchEndDt ?? formatGMTString(new Date()),
|
|
};
|
|
|
|
if (getTimeDifferenceByMilliseconds(watchStrtDt, newParams.watchEndDt)) {
|
|
dispatch(postLog(newParams));
|
|
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* IG-LGSP-LOG-002 / VOD 시청 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 방송 아이디 (media case: prdtId)
|
|
*
|
|
* (M) showNm 방송 이름 (media case: prdtNm)
|
|
*
|
|
* (O) vdoTpNm 영상 가로 세로 여부 ("Vertical" or "Horizontal")
|
|
*
|
|
* (M) watchEndDt 시청 종료 시간
|
|
*
|
|
* (M) watchStrtDt 시청 시작 시간
|
|
*/
|
|
export const sendLogVOD = (params, callback) => (dispatch, getState) => {
|
|
const { logTpNo, showId, watchStrtDt } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!logTpNo || !watchStrtDt) {
|
|
dlog('[sendLogLive] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
if (
|
|
(logTpNo === LOG_TP_NO.VOD.FULL_VOD ||
|
|
logTpNo === LOG_TP_NO.VOD.POPULAR_SHOWS_AND_HOT_PICKS ||
|
|
logTpNo === LOG_TP_NO.VOD.FEATURED_BRANDS_VOD ||
|
|
logTpNo === LOG_TP_NO.VOD.HOME_VOD ||
|
|
logTpNo === LOG_TP_NO.VOD.ITEM_DETAIL_VOD) &&
|
|
!showId
|
|
) {
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: params?.entryMenu ?? entryMenu,
|
|
nowMenu: params?.nowMenu ?? nowMenu,
|
|
watchEndDt: params?.watchEndDt ?? formatGMTString(new Date()),
|
|
};
|
|
|
|
if (getTimeDifferenceByMilliseconds(watchStrtDt, newParams.watchEndDt)) {
|
|
dispatch(postLog(newParams));
|
|
|
|
if (callback) {
|
|
callback();
|
|
}
|
|
}
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-003 / Curations View 이력
|
|
*
|
|
* (O) cnttTpNm 컨텐츠 타입 네임 "show" / "item"
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 네임
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) expsOrd 노출 순서
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 네임
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (O) patncNm 파트너 네임
|
|
*
|
|
* (O) patnrId 파트너 아이디
|
|
*
|
|
* (O) sortTpNm 정렬 타입 네임 "popular" / "new"
|
|
*/
|
|
export const sendLogCuration = (params) => (dispatch, getState) => {
|
|
const { logTpNo } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!logTpNo) {
|
|
dlog('[sendLogCuration] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
cnttTpNm: params.cnttTpNm ?? '',
|
|
curationId: params.curationId ?? '',
|
|
curationNm: params.curationNm ?? '',
|
|
entryMenu: entryMenu,
|
|
expsOrd: params.expsOrd ?? '',
|
|
lgCatCd: params.lgCatCd ?? '',
|
|
lgCatNm: params.lgCatNm ?? '',
|
|
logTpNo: params.logTpNo ?? '',
|
|
linkTpCd: params.linkTpCd ?? '',
|
|
nowMenu: nowMenu,
|
|
patncNm: params.patncNm ?? '',
|
|
patnrId: params.patnrId ?? '',
|
|
sortTpNm: params.sortTpNm ?? '',
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-004 / Entry 이력
|
|
*
|
|
* (M) clientIP 클라이언트 아이피 (server)
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) x-device-language 디바이스 언어 (server)
|
|
*
|
|
*/
|
|
export const sendLogSecondLayer = (params) => (dispatch, getState) => {
|
|
const secondLayerInfo = getState().common.secondLayerInfo;
|
|
|
|
if (secondLayerInfo && Object.keys(secondLayerInfo).length === 0) {
|
|
return;
|
|
}
|
|
|
|
dispatch(postLog(params));
|
|
dispatch(setSecondLayerInfo({}));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-005 / GNB 클릭 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) inDt 진입 시간
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) menuMovSno 메뉴 이동 일련번호
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) outDt 진출 시간
|
|
*/
|
|
export const sendLogGNB = (menu) => (dispatch, getState) => {
|
|
const { menuMovSno, nowMenu } = getState().common.menu;
|
|
const secondLayerInfo = getState().common.secondLayerInfo;
|
|
|
|
if (!menu) {
|
|
dlog('[sendLogGNB] invalid params', menu);
|
|
return;
|
|
}
|
|
|
|
if (
|
|
![LOG_MENU.SEARCH_SEARCH, LOG_MENU.SEARCH_RESULT, LOG_MENU.SEARCH_BEST_SELLER].includes(menu)
|
|
) {
|
|
if (menu === nowMenu || !menuMovSno) {
|
|
return;
|
|
}
|
|
}
|
|
|
|
const newParams = {
|
|
entryMenu: nowMenu, // previous nowMenu
|
|
inDt: formatGMTString(new Date()),
|
|
logTpNo: LOG_TP_NO.GNB,
|
|
menuMovSno: `${menuMovSno}`,
|
|
nowMenu: menu,
|
|
outDt: '',
|
|
};
|
|
|
|
dispatch(setGNBMenu(menu));
|
|
dispatch(postLog(newParams));
|
|
|
|
if ([1].includes(menuMovSno) && secondLayerInfo && Object.keys(secondLayerInfo).length > 0) {
|
|
dispatch(
|
|
sendLogSecondLayer({
|
|
...secondLayerInfo,
|
|
entryMenu: nowMenu,
|
|
nowMenu: menu,
|
|
})
|
|
);
|
|
dispatch(
|
|
sendLogDeepLinkFlag({
|
|
deeplinkId: secondLayerInfo.deeplinkId,
|
|
flag: secondLayerInfo.deeplinkId ? 'Y' : 'N',
|
|
})
|
|
);
|
|
}
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-006 / 상품 상세 이력
|
|
*
|
|
* (M) befPrice 할인 전 가격
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) expsOrd 노출 순번
|
|
*
|
|
* (O) inDt 진입 시간
|
|
*
|
|
* (M) lastPrice 할인 후 가격
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (O) outDt 진출 시간
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prdtId 상품 아이디
|
|
*
|
|
* (M) prdtNm 상품 이름
|
|
*
|
|
* (O) revwGrd 별점
|
|
*
|
|
* (M) rewdAplyFlag 리워드 적용 여부
|
|
*
|
|
* (M) tsvFlag TSV 여부
|
|
*/
|
|
export const sendLogProductDetail = (params) => (dispatch, getState) => {
|
|
const { logTpNo } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
const menu = logTpNo === LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE ? entryMenu : params?.entryMenu;
|
|
|
|
const outDt =
|
|
logTpNo === LOG_TP_NO.PRODUCT.PRODUCT_DETAIL_IMAGE ? '' : formatGMTString(new Date());
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: menu,
|
|
nowMenu: nowMenu,
|
|
outDt,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-007 / Detail 상세 이력
|
|
*
|
|
* (O) curationId 큐레이션 아이디 (Theme의 경우 M, Hotel의 경우 O)
|
|
*
|
|
* (O) curationNm 큐레이션 이름 (Theme의 경우 M, Hotel의 경우 O)
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) inDt 진입 시간
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (O) outDt 진출 시간
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*/
|
|
export const sendLogDetail = (params) => (dispatch, getState) => {
|
|
const { logTpNo, patncNm, patnrId } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!logTpNo || !patncNm || !patnrId) {
|
|
dlog('[sendLogDetail] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const outDt = logTpNo === LOG_TP_NO.DETAIL.DETAIL_BUTTON_CLICK ? '' : formatGMTString(new Date());
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
nowMenu: nowMenu,
|
|
outDt,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-008 / Shop by mobile 이력
|
|
*
|
|
* (M) befPrice 할인 전 가격
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) evntId 이벤트 아이디
|
|
*
|
|
* (O) evntNm 이벤트 이름
|
|
*
|
|
* (M) lastPrice 할인 후 가격
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) liveFlag 라이브 여부
|
|
*
|
|
* (O) locDt 디바이스 로컬 일시
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) mbphNoFlag 전화 번호 여부 (모바일 폰 넘버 플래그)
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) prdtId 상품 아이디
|
|
*
|
|
* (O) prdtNm 상품 이름
|
|
*
|
|
* (O) revwGrd 별점 (리뷰 그레이드)
|
|
*
|
|
* (M) rewdAplyFlag 리워드 적용 여부
|
|
*
|
|
* (M) shopByMobileFlag 샵 바이 모바일 여부
|
|
*
|
|
* (M) shopTpNm 샵 바이 모바일 타입 이름
|
|
*
|
|
* (O) showId 방송 아이디
|
|
*
|
|
* (O) showNm 방송 이름
|
|
*
|
|
* (M) trmsAgrFlag 약관 동의 여부
|
|
*
|
|
* (M) tsvFlag TSV 여부
|
|
*/
|
|
export const sendLogShopByMobile = (params) => (dispatch, getState) => {
|
|
const { logTpNo } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-009 / Partners 클릭 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*/
|
|
export const sendLogPartners = (params) => (dispatch, getState) => {
|
|
const { patncNm, patnrId } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!patncNm || !patnrId) {
|
|
dlog('[sendLogPartners] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.PARTNERS,
|
|
nowMenu: nowMenu,
|
|
patncNm,
|
|
patnrId,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-010 / Reminder - Alert On/Off
|
|
*
|
|
* (M) alertFlag 설정 여부, On / Off
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
export const sendLogMyPageAlertFlag = (params) => (dispatch, getState) => {
|
|
const { alertFlag } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!alertFlag) {
|
|
dlog('[sendLogMyPageAlertFlag] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
alertFlag,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.MY_PAGE_ALERT_FLAG,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-011 / My Page Delete 버튼 클릭 이력
|
|
*
|
|
* (M) cnt 삭제 개수
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
export const sendLogMyPageMyDelete = (params) => (dispatch, getState) => {
|
|
const { cnt } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!cnt) {
|
|
dlog('[sendLogMyPageMyDelete] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.MY_PAGE_MY_DELETE,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-012 / My Page Notice View
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) itemId Notice/FAQ 등록 번호
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMneu 현재 메뉴
|
|
*
|
|
* (M) title Notice/FAQ 제목
|
|
*/
|
|
export const sendLogMyPageNotice = (params) => (dispatch, getState) => {
|
|
const { itemId, title } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!itemId || !title) {
|
|
dlog('[sendLogNoticeView] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.MY_PAGE_NOTICE,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-013 / 검색 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) inputFlag 입력 구분, keyword / input
|
|
*
|
|
* (M) itemCnt 상춤 개수
|
|
*
|
|
* (M) keyword 검색어
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) showCnt 영상 개수
|
|
*
|
|
* (M) themeCnt 테마 개수
|
|
*/
|
|
export const sendLogSearch = (params) => (dispatch, getState) => {
|
|
const { inputFlag, itemCnt, keyword, showCnt, themeCnt } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!inputFlag || !itemCnt || !keyword || !showCnt || !themeCnt) {
|
|
dlog('[sendLogSearch] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.SEARCH,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-014 / 검색 결과 클릭 이력
|
|
*
|
|
* (O) curationId 큐레이션 아이디
|
|
*
|
|
* (O) curationNm 큐레이션 이름
|
|
*
|
|
* (O) dcAfPrice 할인후 가격
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) keyword 검색어
|
|
*
|
|
* (O) lgCatNm LG 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) prdtId 상품 아이디
|
|
*
|
|
* (O) prdtNm 상품 이름
|
|
*
|
|
* (O) showId 방송 아이디
|
|
*
|
|
* (O) showNm 방송 이름
|
|
*/
|
|
export const sendLogSearchClick = (params) => (dispatch, getState) => {
|
|
const { keyword, patncNm, patnrId } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!keyword || !patncNm || !patnrId) {
|
|
dlog('[sendLogSearchClick] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
curationId: params?.curationId ?? '',
|
|
curationNm: params?.curationNm ?? '',
|
|
dcAfPrice: params?.dcAfPrice ?? '',
|
|
entryMenu: entryMenu,
|
|
keyword,
|
|
lgCatNm: params?.lgCatNm ?? '',
|
|
logTpNo: LOG_TP_NO.SEARCH_CLICK,
|
|
nowMenu: nowMenu,
|
|
patncNm,
|
|
patnrId,
|
|
prdtId: params?.prdtId ?? '',
|
|
prdtNm: params?.prdtNm ?? '',
|
|
showId: params?.showId ?? '',
|
|
showNm: params?.showNm ?? '',
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-015 / Upcoming On/Off
|
|
*
|
|
* (M) alertFlag 알림 설정 여부 On/Off
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) hstNm 호스트 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) remainSec 남은 시간(초)
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
export const sendLogUpcomingFlag = (params) => (dispatch, getState) => {
|
|
const { items } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!items) {
|
|
dlog('[sendLogUpcomingFlag] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.UPCOMING_FLAG,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-017 / 알람 팝업
|
|
*
|
|
* (M) alarmDt 알람 방생 시간
|
|
*
|
|
* (M) alarmType 알람 유형 Upcoming/Keyword
|
|
*
|
|
* (M) cnt 키워드 개수
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) hstNm 호스트 이름
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
export const sendLogAlarmPop = (params) => (dispatch, getState) => {
|
|
const { alarmDt, alarmType, cnt, patncNm, patnrId, showId, showNm } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!alarmDt || !alarmType || !cnt || !patncNm || !patnrId || !showId || !showNm) {
|
|
dlog('[sendLogAlarmPop] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
hstNm: params?.hstNm ?? '',
|
|
lgCatCd: params?.lgCatCd ?? '',
|
|
lgCatNm: params?.lgCatNm ?? '',
|
|
logTpNo: LOG_TP_NO.ALARM_POP,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-018 / 알람 팝업 OK/NO 클릭
|
|
*
|
|
* (M) alarmDt 알람 발생 시간
|
|
*
|
|
* (M) alarmType 알람 유형 Upcoming/Keyword
|
|
*
|
|
* (M) clickFlag 클릭 유형 Ok/No
|
|
*
|
|
* (M) cnt 키워드 개수
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (O) hstNm 호스트 이름
|
|
*
|
|
* (M) keywordList 키워드 리스트(콤마 구분자)
|
|
*
|
|
* (O) lgCatCd 카테고리 코드
|
|
*
|
|
* (O) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) showId 방송 아이디
|
|
*
|
|
* (M) showNm 방송 이름
|
|
*/
|
|
export const sendLogAlarmClick = (params) => (dispatch, getState) => {
|
|
const { alarmDt, alarmType, clickFlag, cnt, logTpNo, patnrId, showId } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!alarmDt || !alarmType || !clickFlag || !cnt || !logTpNo || !patnrId || !showId) {
|
|
dlog('[sendLogAlarmClick] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
hstNm: params?.hstNm ?? '',
|
|
lgCatCd: params?.lgCatCd ?? '',
|
|
lgCatNm: params?.lgCatNm ?? '',
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-020 / 테마 상품 클릭 이력
|
|
*
|
|
* (M) befPrice 할인 전 가격
|
|
*
|
|
* (M) curationId 큐레이션 아이디
|
|
*
|
|
* (M) curationNm 큐레이션 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) lastPrice 할인 후 가격
|
|
*
|
|
* (M) lgCatCd 카테고리 코드
|
|
*
|
|
* (M) lgCatNm 카테고리 이름
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prdtExpsOrd 상품 노출 순번
|
|
*
|
|
* (M) prdtId 상품 아이디
|
|
*
|
|
* (M) prdtNm 상품 이름
|
|
*
|
|
* (M) rewdAplyFlag 리워드 적용 여부
|
|
*
|
|
* (M) shelfExpsOrd 쉘프 노출 순번
|
|
*
|
|
* (M) shelfId 쉘프 아이디
|
|
*
|
|
* (M) shelfNm 쉘프 이름
|
|
*
|
|
* (M) tsvFlag TSV 여부
|
|
*/
|
|
export const sendLogThemeProduct = (params) => (dispatch, getState) => {
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.THEME_PRODUCT,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-100 / TOP contents 노출 이력
|
|
*
|
|
* (M) banrNo 배너 번호
|
|
*
|
|
* (O) banrTpNm 배너 유형 이름, Vertical / Horizontal
|
|
*
|
|
* (M) contId 컨텐츠 아이디
|
|
*
|
|
* (M) contNm 컨텐츠 이름
|
|
*
|
|
* (M) contTpNm 컨텐츠 타입 이름, live / image / Today's deals
|
|
*
|
|
* (M) dspyTpNm 디스플레이 유형 이름, Random / Rolling
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) expsOrd 노출 순서
|
|
*
|
|
* (M) inDt 진입 시간
|
|
*
|
|
* (O) linkTpCd 딥링크 타입
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) outDt 진출 시간
|
|
*
|
|
* (O) patncNm 파트너 이름
|
|
*
|
|
* (O) patnrId 파트너 아이디
|
|
*
|
|
* (M) tmplCd 템플릿 코드 DSP002 01~03
|
|
*/
|
|
export const sendLogTopContents = (params) => (dispatch, getState) => {
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: params?.entryMenu ?? entryMenu,
|
|
outDt: formatGMTString(new Date()),
|
|
nowMenu: params?.nowMenu ?? nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-101 / 약관 동의, 미동의 클릭 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
export const sendLogTerms = (params) => (dispatch, getState) => {
|
|
const { logTpNo } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!logTpNo) {
|
|
dlog('[sendLogTerms] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
entryMenu: entryMenu,
|
|
logTpNo,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-102 / LG Account 로그인 이력
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) lginTpNm 로그인 타입 이름 TV/ShopTime
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) usrNo 사용자 번호
|
|
*/
|
|
export const sendLogLgAccountLogin = (params) => (dispatch, getState) => {
|
|
const { lginTpNm, usrNo } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!lginTpNm || !usrNo) {
|
|
dlog('[sendLogLgAccountLogin] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.LG_ACCOUNT_LOGIN,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-103 / Order 화면 버튼 클릭 이력
|
|
*
|
|
* (M) btnNm 버튼 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
*/
|
|
export const sendLogOrderBtnClick = (params) => (dispatch, getState) => {
|
|
const { btnNm } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!btnNm) {
|
|
dlog('[sendLogOrderBtnClick] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.ORDER_BTN_CLICK,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-104 / Order 취소/반품/교환 이력 (반품/교환 삭제)
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) reqRsn 요청 사유
|
|
*
|
|
* (M) reqTpNm 요청 유형 이름 ("Cancel", "Return", "Exchange")
|
|
*
|
|
*/
|
|
export const sendLogOrderChange = (params) => (dispatch, getState) => {
|
|
const { reqRsn, reqTpNm } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!reqRsn || !reqTpNm) {
|
|
dlog('[sendLogOrderChange] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.ORDER_CHANGE,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-105 / 쿠폰 사용 이력
|
|
*
|
|
* (M) cpnSno 쿠폰 일련 번호
|
|
*
|
|
* (M) cpnTtl 쿠폰 제목
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) lgCatCd 카테고리 코드
|
|
*
|
|
* (M) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prodId 상품 아이디
|
|
*
|
|
* (M) prodNm 상품 이름
|
|
*/
|
|
export const sendLogCouponUse = (params) => (dispatch, getState) => {
|
|
// const {} = params
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
// if() {
|
|
// dlog('[sendLogCouponUse] invalid params', params)
|
|
// }
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.COUPON_USE,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
// dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-108 / 결제 페이지 진입 이력
|
|
*
|
|
* (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호")
|
|
*
|
|
* (M) cpnSno 쿠폰 일련번호
|
|
*
|
|
* (M) cpnTtl 쿠폰 제목
|
|
*
|
|
* (M) dcAftrPrc 할인 후 가격
|
|
*
|
|
* (M) dcBefPrc 할인 전 가격
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) lgCatCd 카테고리 코드
|
|
*
|
|
* (M) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prodId 상품 아이디
|
|
*
|
|
* (M) prodNm 상품 이름
|
|
*
|
|
* (M) prodOptSno 상품 옵션 일련번호
|
|
*
|
|
* (M) qty 수량
|
|
*/
|
|
export const sendLogPaymentEntry = (params) => (dispatch, getState) => {
|
|
const { cartTpSno, dcAftrPrc, dcBefPrc, patncNm, patnrId, prodId, prodNm, qty } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!cartTpSno || !dcAftrPrc || !dcBefPrc || !patncNm || !patnrId || !prodId || !prodNm || !qty) {
|
|
dlog('[sendLogPaymentEntry] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.PAYMENT_ENTRY,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-109 / 결제 완료 이력
|
|
*
|
|
* (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호")
|
|
*
|
|
* (M) cpnSno 쿠폰 일련번호
|
|
*
|
|
* (M) cpnTtl 쿠폰 제목
|
|
*
|
|
* (M) dcAftrPrc 할인 후 가격
|
|
*
|
|
* (M) dcBefPrc 할인 전 가격
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) lgCatCd 카테고리 코드
|
|
*
|
|
* (M) lgCatNm 카테고리 이름
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 이름
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (M) prodId 상품 아이디
|
|
*
|
|
* (M) prodNm 상품 이름
|
|
*
|
|
* (O) prodOptSno 상품 옵션 일련번호
|
|
*
|
|
* (M) qty 수량
|
|
*
|
|
* (M) usrNo 사용자 번호
|
|
*/
|
|
export const sendLogPaymentComplete = (params) => (dispatch, getState) => {
|
|
const { cartTpSno, dcAftrPrc, dcBefPrc, patncNm, patnrId, prodId, prodNm, qty, usrNo } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (
|
|
!cartTpSno ||
|
|
!dcAftrPrc ||
|
|
!dcBefPrc ||
|
|
!patncNm ||
|
|
!patnrId ||
|
|
!prodId ||
|
|
!prodNm ||
|
|
!qty ||
|
|
!usrNo
|
|
) {
|
|
dlog('[sendLogPaymentComplete] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.PAYMENT_COMPLETE,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-110 / Featured Brands View 이력
|
|
*
|
|
* (O) catCd 파트너사 카테고리 코드
|
|
*
|
|
* (O) catNm 파트너사 카테고리 네임
|
|
*
|
|
* (O) crtrId 크리에이터 아이디
|
|
*
|
|
* (O) crtrNm 크리에이터 네임
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*
|
|
* (M) patncNm 파트너 네임
|
|
*
|
|
* (M) patnrId 파트너 아이디
|
|
*
|
|
* (O) srsId 시리즈 아이디
|
|
*
|
|
* (O) srsNm 시리즈 이름
|
|
*/
|
|
export const sendLogFeaturedBrands = (params) => (dispatch, getState) => {
|
|
const { patncNm, patnrId } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!patncNm || !patnrId) {
|
|
dlog('[sendLogFeaturedBrands] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
catCd: params.catCd ?? '',
|
|
catNm: params.catNm ?? '',
|
|
crtrId: params.crtrId ?? '',
|
|
crtrNm: params.crtrNm ?? '',
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.BRANDS,
|
|
nowMenu: nowMenu,
|
|
patncNm,
|
|
patnrId,
|
|
srsId: params.srsId ?? '',
|
|
srsNm: params.srsNm ?? '',
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
/**
|
|
* IF-LGSP-LOG-111 / 카드, 주소 ADD/EDIT 이력
|
|
*
|
|
* (M) btnNm 버튼 이름
|
|
*
|
|
* (M) etnryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
export const sendLogMyInfoEdit = (params) => (dispatch, getState) => {
|
|
const { btnNm } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!btnNm) {
|
|
dlog('[sendLogMyInfoEdit] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.MY_INFO_EDIT,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
/**
|
|
* IF-LGSP-LOG-112 / Check out 화면 버튼 클릭 이력
|
|
*
|
|
* (M) btnNm 버튼 이름
|
|
*
|
|
* (M) entryMenu 진입 메뉴
|
|
*
|
|
* (M) logTpNo 로그 타입 넘버
|
|
*
|
|
* (M) nowMenu 현재 메뉴
|
|
*/
|
|
export const sendLogCheckOutBtnClick = (params) => (dispatch, getState) => {
|
|
const { btnNm } = params;
|
|
const { entryMenu, nowMenu } = getState().common.menu;
|
|
|
|
if (!btnNm) {
|
|
dlog('[sendLogCheckOutBtnClick] invalid params', params);
|
|
return;
|
|
}
|
|
|
|
const newParams = {
|
|
...params,
|
|
entryMenu: entryMenu,
|
|
logTpNo: LOG_TP_NO.CHECKOUT_BTN_CLICK,
|
|
nowMenu: nowMenu,
|
|
};
|
|
|
|
dispatch(postLog(newParams));
|
|
};
|
|
|
|
// IF-LGSP-LOG-200 / 통합 추천 로그
|
|
|
|
export const sendLogTotalRecommend = (params) => (dispatch, getState) => {
|
|
let localMacAddress;
|
|
|
|
const { entryMenu } = getState().common.menu;
|
|
const macAddress = getState().common.macAddress;
|
|
const userNumber = getState().common.appStatus.loginUserData.userNumber;
|
|
|
|
const macAddr = macAddress?.wired ? macAddress?.wired : macAddress?.wifi;
|
|
|
|
if (typeof window === 'object' && !window.PalmSystem) {
|
|
localMacAddress = '00:1A:2B:3C:4D:5E';
|
|
}
|
|
|
|
const logCreateTime = new Date().toISOString();
|
|
|
|
// dlog("#params", params);
|
|
|
|
const newParams = {
|
|
...params,
|
|
userNumber: userNumber,
|
|
macAddr: macAddr ? macAddr : localMacAddress,
|
|
entryMenu: entryMenu ? entryMenu : 'APP',
|
|
logCreateTime,
|
|
};
|
|
|
|
dispatch(postTotalLog(newParams));
|
|
};
|