Merge branch 'develop' of gitlab.t-win.kr:ifheone/shoptime into develop

This commit is contained in:
dongyoungKo
2025-05-15 14:32:04 +09:00
6 changed files with 91 additions and 10 deletions

View File

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

View File

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

View File

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

View File

@@ -9,8 +9,9 @@ import {
sendLogGNB, sendLogGNB,
sendLogProductDetail, sendLogProductDetail,
sendLogShopByMobile, sendLogShopByMobile,
sendLogTotalRecommend,
} from "../../../actions/logActions"; } 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 { import {
formatGMTString, formatGMTString,
formatLocalDateTime, formatLocalDateTime,
@@ -41,6 +42,7 @@ export default function SingleProduct({
const productData = useSelector((state) => state.main.productData); const productData = useSelector((state) => state.main.productData);
const nowMenu = useSelector((state) => state.common.menu.nowMenu); const nowMenu = useSelector((state) => state.common.menu.nowMenu);
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
const entryMenuRef = useRef(null); const entryMenuRef = useRef(null);
@@ -106,6 +108,26 @@ export default function SingleProduct({
}, [productData]); }, [productData]);
const handleMobileSendPopupOpen = useCallback(() => { 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) { if (productData && Object.keys(productData).length > 0) {
const params = { const params = {
befPrice: productData?.priceInfo?.split("|")[0], befPrice: productData?.priceInfo?.split("|")[0],
@@ -133,7 +155,6 @@ export default function SingleProduct({
trmsAgrFlag: "N", trmsAgrFlag: "N",
tsvFlag: productData?.todaySpclFlag ?? "", tsvFlag: productData?.todaySpclFlag ?? "",
}; };
dispatch(sendLogShopByMobile(params)); dispatch(sendLogShopByMobile(params));
shopByMobileLogRef.current = params; shopByMobileLogRef.current = params;
} }

View File

@@ -9,8 +9,9 @@ import {
sendLogGNB, sendLogGNB,
sendLogProductDetail, sendLogProductDetail,
sendLogShopByMobile, sendLogShopByMobile,
sendLogTotalRecommend,
} from "../../../actions/logActions"; } 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 { import {
formatGMTString, formatGMTString,
formatLocalDateTime, formatLocalDateTime,
@@ -46,6 +47,8 @@ export default function ShowOption({
const webOSVersion = useSelector( const webOSVersion = useSelector(
(state) => state.common.appStatus.webOSVersion (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 detailLogParamsRef = useRef(null);
const timerRef = useRef(null); const timerRef = useRef(null);
@@ -157,6 +160,26 @@ export default function ShowOption({
}, [productData]); }, [productData]);
const handleMobileSendPopupOpen = useCallback(() => { 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) { if (showProductInfo && Object.keys(showProductInfo).length > 0) {
const params = { const params = {
befPrice: showProductInfo?.priceInfo?.split("|")[0], befPrice: showProductInfo?.priceInfo?.split("|")[0],

View File

@@ -9,8 +9,9 @@ import {
sendLogGNB, sendLogGNB,
sendLogProductDetail, sendLogProductDetail,
sendLogShopByMobile, sendLogShopByMobile,
sendLogTotalRecommend,
} from "../../../actions/logActions"; } 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 { import {
formatGMTString, formatGMTString,
formatLocalDateTime, formatLocalDateTime,
@@ -39,7 +40,7 @@ export default function UnableProduct({
const productData = useSelector((state) => state.main.productData); const productData = useSelector((state) => state.main.productData);
const nowMenu = useSelector((state) => state.common.menu.nowMenu); const nowMenu = useSelector((state) => state.common.menu.nowMenu);
const entryMenu = useSelector((state) => state.common.menu.entryMenu);
const entryMenuRef = useRef(null); const entryMenuRef = useRef(null);
const isProductSoldOut = useMemo(() => { const isProductSoldOut = useMemo(() => {
@@ -104,6 +105,26 @@ export default function UnableProduct({
}, [productData]); }, [productData]);
const handleMobileSendPopupOpen = useCallback(() => { 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) { if (productData && Object.keys(productData).length > 0) {
const params = { const params = {
befPrice: productData?.priceInfo?.split("|")[0], befPrice: productData?.priceInfo?.split("|")[0],
@@ -131,7 +152,7 @@ export default function UnableProduct({
trmsAgrFlag: "N", trmsAgrFlag: "N",
tsvFlag: productData?.todaySpclFlag ?? "", tsvFlag: productData?.todaySpclFlag ?? "",
}; };
console.log('###params is unableProduct', params);
dispatch(sendLogShopByMobile(params)); dispatch(sendLogShopByMobile(params));
shopByMobileLogRef.current = params; shopByMobileLogRef.current = params;
} }