[Log] IF-LGSP-LOG-108, 결제 페이지 진입 이력 반영
This commit is contained in:
@@ -124,6 +124,10 @@ export const getUrlByLogTpNo = (logTpNo) => {
|
||||
case LOG_TP_NO.ORDER_CHANGE:
|
||||
return URLS.LOG_ORDER_CHANGE;
|
||||
|
||||
// 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;
|
||||
|
||||
@@ -1150,49 +1150,131 @@ export default function useLogService() {
|
||||
[dispatch, entryMenuRef, nowMenuRef]
|
||||
);
|
||||
|
||||
/**
|
||||
* 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 수량
|
||||
*/
|
||||
const sendLogPaymentEntry = useCallback(
|
||||
(params) => {
|
||||
const {
|
||||
cartTpSno,
|
||||
// cpnSno,
|
||||
// cpnTtl,
|
||||
dcAftrPrc,
|
||||
dcBefPrc,
|
||||
// lgCatCd,
|
||||
// lgCatNm,
|
||||
patncNm,
|
||||
patnrId,
|
||||
prodId,
|
||||
prodNm,
|
||||
qty,
|
||||
} = params;
|
||||
|
||||
if (
|
||||
!cartTpSno ||
|
||||
// !cpnSno ||
|
||||
// !cpnTtl ||
|
||||
!dcAftrPrc ||
|
||||
!dcBefPrc ||
|
||||
// !lgCatCd ||
|
||||
// !lgCatNm ||
|
||||
!patncNm ||
|
||||
!patnrId ||
|
||||
!prodId ||
|
||||
!prodNm ||
|
||||
!qty
|
||||
) {
|
||||
console.error("sendLogPaymentEntry invalid params", params);
|
||||
return;
|
||||
}
|
||||
|
||||
const newParams = {
|
||||
...params,
|
||||
entryMenu: entryMenuRef.current,
|
||||
logTpNo: LOG_TP_NO.PAYMENT_ENTRY,
|
||||
nowMenu: nowMenuRef.current,
|
||||
};
|
||||
|
||||
dispatch(postLog(newParams));
|
||||
},
|
||||
[dispatch, entryMenuRef, nowMenuRef]
|
||||
);
|
||||
|
||||
/**
|
||||
* IF-LGSP-LOG-109 / 결제 완료 이력
|
||||
*
|
||||
* (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호") ----------- productList?.mbrId + "_" + productList?.prdtId + "_" + productList?.prodSno
|
||||
* (M) cartTpSno 장바구니 구분 일련번호 ("사용자ID_상품ID_일련번호")
|
||||
*
|
||||
* (M) cpnSno 쿠폰 일련번호 ----------- String(productList?.prdtCoupon[0]?.cpnCdSeq)
|
||||
* (M) cpnSno 쿠폰 일련번호
|
||||
*
|
||||
* (M) cpnTtl 쿠폰 제목 ----------- productList?.prdtCoupon[0]?.cpnTpNm
|
||||
* (M) cpnTtl 쿠폰 제목
|
||||
*
|
||||
* (M) dcAftrPrc 할인 후 가격 ----------- productList?.priceInfo.split('|')[3]
|
||||
* (M) dcAftrPrc 할인 후 가격
|
||||
*
|
||||
* (M) dcBefPrc 할인 전 가격 ----------- productList?.priceInfo.split('|')[0]
|
||||
* (M) dcBefPrc 할인 전 가격
|
||||
*
|
||||
* (M) entryMenu 진입 메뉴 ----------- entryMenu.current
|
||||
* (M) entryMenu 진입 메뉴
|
||||
*
|
||||
* (M) lgCatCd 카테고리 코드 ----------- productList?.catCd ?? ""
|
||||
* (M) lgCatCd 카테고리 코드
|
||||
*
|
||||
* (M) lgCatNm 카테고리 이름 ----------- productList?.catNm ?? ""
|
||||
* (M) lgCatNm 카테고리 이름
|
||||
*
|
||||
* (M) logTpNo 로그 타입 넘버 ----------- "901"
|
||||
* (M) logTpNo 로그 타입 넘버
|
||||
*
|
||||
* (M) nowMenu 현재 메뉴 ----------- nowMenuRef.current
|
||||
* (M) nowMenu 현재 메뉴
|
||||
*
|
||||
* (M) patncNm 파트너 이름 ----------- productList?.patncNm
|
||||
* (M) patncNm 파트너 이름
|
||||
*
|
||||
* (M) patnrId 파트너 아이디 ----------- productList?.patnrId
|
||||
* (M) patnrId 파트너 아이디
|
||||
*
|
||||
* (M) prodId 상품 아이디 ----------- productList?.prdtId
|
||||
* (M) prodId 상품 아이디
|
||||
*
|
||||
* (M) prodNm 상품 이름 ----------- productList?.prdtNm
|
||||
* (M) prodNm 상품 이름
|
||||
*
|
||||
* (O) prodOptSno 상품 옵션 일련번호 ----------- String(productList?.prodSno) ?? ""
|
||||
* (O) prodOptSno 상품 옵션 일련번호
|
||||
*
|
||||
* (M) qty 수량 ----------- productList?.prodQty
|
||||
* (M) qty 수량
|
||||
*
|
||||
* (M) usrNo 사용자 번호 ----------- productList?.mbrNo
|
||||
* (M) usrNo 사용자 번호
|
||||
*/
|
||||
const sendLogPaymentComplete = useCallback(
|
||||
(params) => {
|
||||
const {
|
||||
cartTpSno,
|
||||
cpnSno,
|
||||
cpnTtl,
|
||||
// cpnSno,
|
||||
// cpnTtl,
|
||||
dcAftrPrc,
|
||||
dcBefPrc,
|
||||
// lgCatCd,
|
||||
@@ -1207,8 +1289,8 @@ export default function useLogService() {
|
||||
|
||||
if (
|
||||
!cartTpSno ||
|
||||
!cpnSno ||
|
||||
!cpnTtl ||
|
||||
// !cpnSno ||
|
||||
// !cpnTtl ||
|
||||
!dcAftrPrc ||
|
||||
!dcBefPrc ||
|
||||
// !lgCatCd ||
|
||||
@@ -1313,6 +1395,7 @@ export default function useLogService() {
|
||||
sendLogLgAccountLogin,
|
||||
sendLogOrderBtnClick,
|
||||
sendLogOrderChange,
|
||||
sendLogPaymentEntry,
|
||||
sendLogPaymentComplete,
|
||||
sendLogFeaturedBrands,
|
||||
};
|
||||
|
||||
@@ -21,13 +21,16 @@ export const couponReducer = (state = initialState, action) => {
|
||||
(item) => item.cpnTpNm === "Partner"
|
||||
);
|
||||
|
||||
const shoptiemCoupon = action.payload.couponInfo.filter(
|
||||
const shoptimeCoupon = action.payload.couponInfo.filter(
|
||||
(item) => item.cpnTpNm === "ShopTime"
|
||||
);
|
||||
|
||||
return {
|
||||
...state,
|
||||
productCouponSearchData: { partnerCoupon, shoptiemCoupon },
|
||||
productCouponSearchData: {
|
||||
partnerCoupon,
|
||||
shoptimeCoupon: shoptimeCoupon,
|
||||
},
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
@@ -224,6 +224,8 @@ export const LOG_TP_NO = {
|
||||
|
||||
ORDER_CHANGE: "703",
|
||||
|
||||
PAYMENT_ENTRY: "900",
|
||||
|
||||
PAYMENT_COMPLETE: "901",
|
||||
};
|
||||
|
||||
|
||||
@@ -38,8 +38,8 @@ import InformationContainer from "./container/InformationContainer";
|
||||
import OrderItemsSideBar from "./container/OrderItemsSideBar";
|
||||
import SummaryContainer from "./container/SummaryCotainer";
|
||||
|
||||
export default function CheckOutPanel() {
|
||||
const { sendLogGNB } = useLogService();
|
||||
export default function CheckOutPanel({ panelInfo }) {
|
||||
const { sendLogGNB, sendLogPaymentEntry } = useLogService();
|
||||
const dispatch = useDispatch();
|
||||
const panels = useSelector((state) => state.panels.panels);
|
||||
const { userNumber } = useSelector(
|
||||
@@ -285,6 +285,12 @@ export default function CheckOutPanel() {
|
||||
[orderSideBarOpen, offerSideBarOpen, dispatch]
|
||||
);
|
||||
|
||||
const doSendLogPaymentEntry = useCallback(() => {
|
||||
if (panelInfo?.logInfo) {
|
||||
sendLogPaymentEntry(panelInfo.logInfo);
|
||||
}
|
||||
}, [panelInfo?.logInfo]);
|
||||
|
||||
return (
|
||||
<>
|
||||
<TPanel
|
||||
@@ -308,6 +314,7 @@ export default function CheckOutPanel() {
|
||||
handleTermsClick={handleTermsClick}
|
||||
currSign={currSign}
|
||||
currSignLoc={currSignLoc}
|
||||
doSendLogPaymentEntry={doSendLogPaymentEntry}
|
||||
/>
|
||||
<InformationContainer
|
||||
toggleOrderSideBar={toggleOrderSideBar}
|
||||
|
||||
@@ -73,13 +73,13 @@ export default function PinCodeInput({
|
||||
|
||||
const { setupPinUrl } = getQRCodeUrl({ serverType, countryCode });
|
||||
|
||||
const logProductInfo = useMemo(() => {
|
||||
const logInfo = useMemo(() => {
|
||||
if (productList) {
|
||||
console.log("pyh productList", productList);
|
||||
return {
|
||||
cartTpSno: `${productList?.mbrId}_${productList?.prdtId}_${productList?.prodSno}`,
|
||||
cpnSno: `${productList?.prdtCoupon[0]?.cpnCdSeq}`,
|
||||
cpnTtl: productList?.prdtCoupon[0]?.cpnTpNm,
|
||||
cpnSno: `${productList?.prdtCoupon[0]?.cpnCdSeq}` ?? "",
|
||||
cpnTtl: productList?.prdtCoupon[0]?.cpnTpNm ?? "",
|
||||
dcAftrPrc: productList?.priceInfo.split("|")[1],
|
||||
dcBefPrc: productList?.priceInfo.split("|")[0],
|
||||
lgCatCd: productList?.catCd ?? "",
|
||||
@@ -88,7 +88,7 @@ export default function PinCodeInput({
|
||||
patnrId: productList?.patnrId,
|
||||
prodId: productList?.prdtId,
|
||||
prodNm: productList?.prdtNm,
|
||||
prodOptSno: `${productList?.prodSno}` ?? "",
|
||||
prodOptSno: productList?.prdtOpt[0]?.prodOptSno ?? "",
|
||||
qty: productList?.prodQty,
|
||||
usrNo: productList?.mbrNo,
|
||||
};
|
||||
@@ -226,7 +226,7 @@ export default function PinCodeInput({
|
||||
panelInfo: {
|
||||
orderInfo: response.data.data,
|
||||
auctProdYn: auctProdYn,
|
||||
logProductInfo: logProductInfo,
|
||||
logInfo: logInfo,
|
||||
},
|
||||
})
|
||||
);
|
||||
@@ -260,7 +260,7 @@ export default function PinCodeInput({
|
||||
isMounted,
|
||||
auctProdYn,
|
||||
dispatch,
|
||||
logProductInfo,
|
||||
logInfo,
|
||||
setIsOrderSuccessful,
|
||||
]);
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@ export default function SummaryContainer({
|
||||
handleTermsClick,
|
||||
currSign,
|
||||
currSignLoc,
|
||||
doSendLogPaymentEntry,
|
||||
}) {
|
||||
const dispatch = useDispatch();
|
||||
|
||||
@@ -43,8 +44,11 @@ export default function SummaryContainer({
|
||||
];
|
||||
|
||||
const handleClickOrder = useCallback(() => {
|
||||
if (doSendLogPaymentEntry) {
|
||||
doSendLogPaymentEntry();
|
||||
}
|
||||
setPlaceOrderPopup(true);
|
||||
}, [setPlaceOrderPopup]);
|
||||
}, [doSendLogPaymentEntry, setPlaceOrderPopup]);
|
||||
|
||||
return (
|
||||
<Container className={css.container}>
|
||||
|
||||
@@ -49,15 +49,15 @@ export default function ConfirmPanel({ spotlightId }) {
|
||||
totDlvrAmt,
|
||||
} = panelInfo?.orderInfo || {};
|
||||
const auctProdYn = panelInfo?.auctProdYn || {};
|
||||
const logProductInfo = panelInfo?.logProductInfo || {};
|
||||
const logInfo = panelInfo?.logInfo || {};
|
||||
|
||||
useEffect(() => {
|
||||
sendLogGNB(Config.LOG_MENU.CHECKOUT_ORDER_COMPLETE);
|
||||
|
||||
if (logProductInfo && Object.keys(logProductInfo).length > 0) {
|
||||
sendLogPaymentComplete(logProductInfo);
|
||||
if (logInfo && Object.keys(logInfo).length > 0) {
|
||||
setTimeout(() => sendLogPaymentComplete(logInfo));
|
||||
}
|
||||
}, [logProductInfo, sendLogGNB, sendLogPaymentComplete]);
|
||||
}, [logInfo, sendLogGNB, sendLogPaymentComplete]);
|
||||
|
||||
const handleCancel = useCallback((e) => {
|
||||
if (e && typeof e.preventDefault === "function") {
|
||||
|
||||
@@ -32,6 +32,7 @@ import TPopUp from "../../../components/TPopUp/TPopUp";
|
||||
import TQRCode from "../../../components/TQRCode/TQRCode";
|
||||
import TScroller from "../../../components/TScroller/TScroller";
|
||||
import TVirtualGridList from "../../../components/TVirtualGridList/TVirtualGridList";
|
||||
import useLogService from "../../../hooks/useLogService";
|
||||
import usePriceInfo from "../../../hooks/usePriceInfo";
|
||||
import * as Config from "../../../utils/Config";
|
||||
import { $L, getQRCodeUrl } from "../../../utils/helperMethods";
|
||||
@@ -59,16 +60,17 @@ export default function SingleOption({
|
||||
selectedIndex,
|
||||
type,
|
||||
}) {
|
||||
const { sendLogPaymentEntry } = useLogService();
|
||||
const dispatch = useDispatch();
|
||||
const productOptionInfos = useSelector((state) => state.product.prdtOptInfo);
|
||||
const productData = useSelector((state) => state.main.productData);
|
||||
const { partnerCoupon, shoptiemCoupon } = useSelector(
|
||||
const { partnerCoupon, shoptimeCoupon } = useSelector(
|
||||
(state) => state.coupon.productCouponSearchData
|
||||
);
|
||||
const { popupVisible, activePopup } = useSelector(
|
||||
(state) => state.common.popup
|
||||
);
|
||||
const { userNumber } = useSelector(
|
||||
const { userId, userNumber } = useSelector(
|
||||
(state) => state.common.appStatus.loginUserData
|
||||
);
|
||||
|
||||
@@ -104,17 +106,65 @@ export default function SingleOption({
|
||||
prdtId: selectedPrdtId,
|
||||
});
|
||||
|
||||
const logInfo = useMemo(() => {
|
||||
if (productData && userId) {
|
||||
let couponInfo;
|
||||
|
||||
if (partnerCoupon && partnerCoupon.length > 0) {
|
||||
couponInfo = partnerCoupon[0];
|
||||
}
|
||||
|
||||
if (shoptimeCoupon && shoptimeCoupon.length > 0) {
|
||||
couponInfo = shoptimeCoupon[0];
|
||||
}
|
||||
|
||||
const { catCd, catNm, patncNm, patnrId, prdtId, prdtNm, priceInfo } =
|
||||
productData;
|
||||
const { cpnSno, cpnTtl } = couponInfo || {};
|
||||
const prodOptSno =
|
||||
(productOptionInfos &&
|
||||
productOptionInfos.length > 0 &&
|
||||
productOptionInfos[0]?.prodOptSno) ||
|
||||
"";
|
||||
|
||||
return {
|
||||
cartTpSno: `${userId}_${prdtId}`, // pyh todo, add _prdtSno
|
||||
cpnSno: String(cpnSno) ?? "",
|
||||
cpnTtl: cpnTtl ?? "",
|
||||
dcAftrPrc: priceInfo.split("|")[1],
|
||||
dcBefPrc: priceInfo.split("|")[0],
|
||||
lgCatCd: catCd ?? "",
|
||||
lgCatNm: catNm ?? "",
|
||||
patncNm,
|
||||
patnrId,
|
||||
prodId: prdtId,
|
||||
prodNm: prdtNm,
|
||||
prodOptSno: prodOptSno,
|
||||
qty: String(quantity),
|
||||
};
|
||||
}
|
||||
|
||||
return {};
|
||||
}, [
|
||||
partnerCoupon,
|
||||
productData,
|
||||
productOptionInfos,
|
||||
quantity,
|
||||
shoptimeCoupon,
|
||||
userId,
|
||||
]);
|
||||
|
||||
useEffect(() => {
|
||||
const newPromotions = [];
|
||||
if (partnerCoupon && partnerCoupon.length > 0) {
|
||||
newPromotions.push($L("SPECIAL PROMOTION"));
|
||||
}
|
||||
if (shoptiemCoupon && shoptiemCoupon.length > 0) {
|
||||
if (shoptimeCoupon && shoptimeCoupon.length > 0) {
|
||||
newPromotions.push($L("SHOPTIME PROMOTION"));
|
||||
}
|
||||
|
||||
setPromotions(newPromotions);
|
||||
}, [partnerCoupon, shoptiemCoupon]);
|
||||
}, [partnerCoupon, shoptimeCoupon]);
|
||||
|
||||
useEffect(() => {
|
||||
dispatch(
|
||||
@@ -277,9 +327,11 @@ export default function SingleOption({
|
||||
dispatch(
|
||||
pushPanel({
|
||||
name: Config.panel_names.CHECKOUT_PANEL,
|
||||
panelInfo: {},
|
||||
panelInfo: { logInfo },
|
||||
})
|
||||
);
|
||||
|
||||
sendLogPaymentEntry(logInfo);
|
||||
}
|
||||
} else {
|
||||
dispatch(setShowPopup(Config.ACTIVE_POPUP.qrPopup));
|
||||
@@ -352,7 +404,7 @@ export default function SingleOption({
|
||||
dispatch(setShowPopup(Config.ACTIVE_POPUP.loginPopup));
|
||||
return;
|
||||
} else if (promotion === "SHOPTIME PROMOTION") {
|
||||
setSelectedCoupon(shoptiemCoupon);
|
||||
setSelectedCoupon(shoptimeCoupon);
|
||||
} else if (promotion === "SPECIAL PROMOTION") {
|
||||
setSelectedCoupon(partnerCoupon);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user