[Log] IF-LGSP-LOG-108, 결제 페이지 진입 이력 반영

This commit is contained in:
younghoon100.park
2024-07-09 17:57:29 +09:00
parent 51d350732e
commit 5fa56efce0
9 changed files with 197 additions and 42 deletions

View File

@@ -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;

View File

@@ -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,
};

View File

@@ -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,
},
};
}
}

View File

@@ -224,6 +224,8 @@ export const LOG_TP_NO = {
ORDER_CHANGE: "703",
PAYMENT_ENTRY: "900",
PAYMENT_COMPLETE: "901",
};

View File

@@ -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}

View File

@@ -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,
]);

View File

@@ -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}>

View File

@@ -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") {

View File

@@ -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);
}