From 364c6a157aad2d44866786d5bffe743f2ee751de Mon Sep 17 00:00:00 2001 From: Dev TWIN0906 Date: Thu, 15 May 2025 13:08:17 +0900 Subject: [PATCH] =?UTF-8?q?=EC=83=81=ED=92=88=EB=94=94=ED=85=8C=EC=9D=BC?= =?UTF-8?q?=ED=8E=98=EC=9D=B4=EC=A7=80=20sbm=20=ED=81=B4=EB=A6=AD=20?= =?UTF-8?q?=EB=B0=8F=20sms=20=EC=A0=84=EC=86=A1=EC=8B=9C=20=EC=83=81?= =?UTF-8?q?=ED=92=88=EC=A0=95=EB=B3=B4=EC=88=98=EC=A7=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/MobileSend/MobileSendPopUp.jsx | 21 ++++++++++++--- com.twin.app.shoptime/src/utils/Config.js | 2 ++ .../src/views/DetailPanel/DetailPanel.jsx | 1 + .../SingleProduct/SingleProduct.jsx | 25 +++++++++++++++-- .../DetailPanel/ThemeProduct/ShowProduct.jsx | 25 ++++++++++++++++- .../UnableProduct/UnableProduct.jsx | 27 ++++++++++++++++--- 6 files changed, 91 insertions(+), 10 deletions(-) diff --git a/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx index d26b3594..d33b4fc3 100644 --- a/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx +++ b/com.twin.app.shoptime/src/components/MobileSend/MobileSendPopUp.jsx @@ -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; } diff --git a/com.twin.app.shoptime/src/utils/Config.js b/com.twin.app.shoptime/src/utils/Config.js index 65d62883..1306133c 100644 --- a/com.twin.app.shoptime/src/utils/Config.js +++ b/com.twin.app.shoptime/src/utils/Config.js @@ -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" }; diff --git a/com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx b/com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx index da598659..8254c1cd 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/DetailPanel.jsx @@ -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} diff --git a/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleProduct.jsx b/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleProduct.jsx index a9da1e8e..0dcad529 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleProduct.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/SingleProduct/SingleProduct.jsx @@ -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; } diff --git a/com.twin.app.shoptime/src/views/DetailPanel/ThemeProduct/ShowProduct.jsx b/com.twin.app.shoptime/src/views/DetailPanel/ThemeProduct/ShowProduct.jsx index de21ac55..57879d9e 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/ThemeProduct/ShowProduct.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/ThemeProduct/ShowProduct.jsx @@ -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], diff --git a/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableProduct.jsx b/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableProduct.jsx index a2a0063c..553900ba 100644 --- a/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableProduct.jsx +++ b/com.twin.app.shoptime/src/views/DetailPanel/UnableProduct/UnableProduct.jsx @@ -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; }