상품디테일페이지 sbm 클릭 및 sms 전송시 상품정보수집

This commit is contained in:
Dev TWIN0906
2025-05-15 13:08:17 +09:00
parent 8252717175
commit 364c6a157a
6 changed files with 91 additions and 10 deletions

View File

@@ -36,8 +36,8 @@ import {
clearCurationCoupon,
setEventIssueReq,
} from "../../actions/eventActions";
import { sendLogShopByMobile } from "../../actions/logActions";
import { ACTIVE_POPUP, LOG_TP_NO } from "../../utils/Config";
import { sendLogShopByMobile, sendLogTotalRecommend } from "../../actions/logActions";
import { ACTIVE_POPUP, LOG_CONTEXT_NAME, LOG_MESSAGE_ID, LOG_TP_NO } from "../../utils/Config";
import {
$L,
decryptPhoneNumber,
@@ -85,6 +85,7 @@ export default function MobileSendPopUp({
hotelDtlUrl,
shopByMobileLogRef,
spotlightId,
patncNm,
}) {
const dispatch = useDispatch();
const deviceInfo = useSelector((state) => state.device.deviceInfo);
@@ -103,7 +104,7 @@ export default function MobileSendPopUp({
);
const popupVisible = useSelector((state) => state.common.popup.popupVisible);
const nowMenu = useSelector((state) => state.common.menu.nowMenu);
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
const [inputDisabled, setInputDisabled] = useState(true);
const [mobileNumber, setMobileNumber] = useState("");
const [recentSentNumber, setRecentSentNumber] = useState([]);
@@ -382,6 +383,9 @@ export default function MobileSendPopUp({
if (smsTpCd === "APP00204") {
params = { ...params, curationId };
}
dispatch(sendSms(params));
}
// EVT00101 & APP00207(welcome) EVT00103 & APP00209 (welcome+Prizes) : smsTpCd 값을 받지 않음
@@ -431,6 +435,15 @@ export default function MobileSendPopUp({
regDeviceInfoRetCode === 0 ||
curationCouponSuccess === 0
) {
const logParams = {
status: 'send',
entryMenu: entryMenu,
nowMenu: nowMenu,
partner: patncNm,
contextName: LOG_CONTEXT_NAME.SHOPBYMOBILE,
messageId: LOG_MESSAGE_ID.SMB
}
dispatch(sendLogTotalRecommend(logParams));
if (shopByMobileLogRef) {
let params = {
...shopByMobileLogRef.current,
@@ -439,7 +452,7 @@ export default function MobileSendPopUp({
mbphNoFlag: "Y",
trmsAgrFlag: "Y",
};
dispatch(sendLogShopByMobile(params));
shopByMobileLogRef.current = null;
}

View File

@@ -588,6 +588,7 @@ export const LOG_CONTEXT_NAME = {
PINCODE: "shoptime.pincode",
YOUMAYLIKE: "shoptime.youmayalsolike",
SHOW: "shoptime.show",
SHOPBYMOBILE: "shoptime.shopbymobile",
};
export const LOG_MESSAGE_ID = {
@@ -597,4 +598,5 @@ export const LOG_MESSAGE_ID = {
CONTENTCLICK: "AL_PAGE_CONTENT_CLICK",
SHOWVIEW: "AL_SHOW_VIEW_CHANGE",
SHELF: "AL_SHELF_LIST_SHOWN",
SMB: "AL_SBM"
};

View File

@@ -521,6 +521,7 @@ export default function DetailPanel({ panelInfo, isOnTop, spotlightId }) {
onClose={handleSMSonClose}
title={$L("Send a purchase link for this item via SMS")}
subTitle={mobileSendPopUpSubtitle}
patncNm={productData?.patncNm}
productImg={mobileSendPopUpProductImg}
patnrId={panelInfo?.patnrId}
prdtId={panelInfo?.prdtId}

View File

@@ -9,8 +9,9 @@ import {
sendLogGNB,
sendLogProductDetail,
sendLogShopByMobile,
sendLogTotalRecommend,
} from "../../../actions/logActions";
import { LOG_MENU, LOG_TP_NO } from "../../../utils/Config";
import { LOG_CONTEXT_NAME, LOG_MENU, LOG_MESSAGE_ID, LOG_TP_NO } from "../../../utils/Config";
import {
formatGMTString,
formatLocalDateTime,
@@ -41,6 +42,7 @@ export default function SingleProduct({
const productData = useSelector((state) => state.main.productData);
const nowMenu = useSelector((state) => state.common.menu.nowMenu);
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
const entryMenuRef = useRef(null);
@@ -106,6 +108,26 @@ export default function SingleProduct({
}, [productData]);
const handleMobileSendPopupOpen = useCallback(() => {
if (productData && Object.keys(productData).length > 0) {
const regularPrice = productData?.priceInfo?.split("|")[0];
const discountPrice = productData?.priceInfo?.split("|")[1];
const discountRate = productData?.priceInfo?.split("|")[4];
const logParams = {
status: 'open',
entryMenu: entryMenu,
nowMenu: nowMenu,
partner: productData?.patncNm,
productId: productData?.prdtId,
productTitle: productData?.prdtNm,
price: discountRate ? discountPrice : regularPrice,
brand: productData?.brndNm,
discount: discountRate,
category: productData?.catNm,
contextName: LOG_CONTEXT_NAME.SHOPBYMOBILE,
messageId: LOG_MESSAGE_ID.SMB
}
dispatch(sendLogTotalRecommend(logParams))
}
if (productData && Object.keys(productData).length > 0) {
const params = {
befPrice: productData?.priceInfo?.split("|")[0],
@@ -133,7 +155,6 @@ export default function SingleProduct({
trmsAgrFlag: "N",
tsvFlag: productData?.todaySpclFlag ?? "",
};
dispatch(sendLogShopByMobile(params));
shopByMobileLogRef.current = params;
}

View File

@@ -9,8 +9,9 @@ import {
sendLogGNB,
sendLogProductDetail,
sendLogShopByMobile,
sendLogTotalRecommend,
} from "../../../actions/logActions";
import { LOG_MENU, LOG_TP_NO } from "../../../utils/Config";
import { LOG_CONTEXT_NAME, LOG_MENU, LOG_MESSAGE_ID, LOG_TP_NO } from "../../../utils/Config";
import {
formatGMTString,
formatLocalDateTime,
@@ -46,6 +47,8 @@ export default function ShowOption({
const webOSVersion = useSelector(
(state) => state.common.appStatus.webOSVersion
);
const nowMenu = useSelector((state) => state.common.menu.nowMenu);
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
const detailLogParamsRef = useRef(null);
const timerRef = useRef(null);
@@ -157,6 +160,26 @@ export default function ShowOption({
}, [productData]);
const handleMobileSendPopupOpen = useCallback(() => {
if (productData && Object.keys(productData).length > 0) {
const regularPrice = productData?.priceInfo?.split("|")[0];
const discountPrice = productData?.priceInfo?.split("|")[1];
const discountRate = productData?.priceInfo?.split("|")[4];
const logParams = {
status: 'open',
entryMenu: entryMenu,
nowMenu: nowMenu,
partner: productData?.patncNm,
productId: productData?.prdtId,
productTitle: productData?.prdtNm,
price: discountRate ? discountPrice : regularPrice,
brand: productData?.brndNm,
discount: discountRate,
category: productData?.catNm,
contextName: LOG_CONTEXT_NAME.SHOPBYMOBILE,
messageId: LOG_MESSAGE_ID.SMB
}
dispatch(sendLogTotalRecommend(logParams))
}
if (showProductInfo && Object.keys(showProductInfo).length > 0) {
const params = {
befPrice: showProductInfo?.priceInfo?.split("|")[0],

View File

@@ -9,8 +9,9 @@ import {
sendLogGNB,
sendLogProductDetail,
sendLogShopByMobile,
sendLogTotalRecommend,
} from "../../../actions/logActions";
import { LOG_MENU, LOG_TP_NO } from "../../../utils/Config";
import { LOG_CONTEXT_NAME, LOG_MENU, LOG_MESSAGE_ID, LOG_TP_NO } from "../../../utils/Config";
import {
formatGMTString,
formatLocalDateTime,
@@ -39,7 +40,7 @@ export default function UnableProduct({
const productData = useSelector((state) => state.main.productData);
const nowMenu = useSelector((state) => state.common.menu.nowMenu);
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
const entryMenuRef = useRef(null);
const isProductSoldOut = useMemo(() => {
@@ -104,6 +105,26 @@ export default function UnableProduct({
}, [productData]);
const handleMobileSendPopupOpen = useCallback(() => {
if (productData && Object.keys(productData).length > 0) {
const regularPrice = productData?.priceInfo?.split("|")[0];
const discountPrice = productData?.priceInfo?.split("|")[1];
const discountRate = productData?.priceInfo?.split("|")[4];
const logParams = {
status: 'open',
entryMenu: entryMenu,
nowMenu: nowMenu,
partner: productData?.patncNm,
productId: productData?.prdtId,
productTitle: productData?.prdtNm,
price: discountRate ? discountPrice : regularPrice,
brand: productData?.brndNm,
discount: discountRate,
category: productData?.catNm,
contextName: LOG_CONTEXT_NAME.SHOPBYMOBILE,
messageId: LOG_MESSAGE_ID.SMB
}
dispatch(sendLogTotalRecommend(logParams))
}
if (productData && Object.keys(productData).length > 0) {
const params = {
befPrice: productData?.priceInfo?.split("|")[0],
@@ -131,7 +152,7 @@ export default function UnableProduct({
trmsAgrFlag: "N",
tsvFlag: productData?.todaySpclFlag ?? "",
};
console.log('###params is unableProduct', params);
dispatch(sendLogShopByMobile(params));
shopByMobileLogRef.current = params;
}