(function(){
let w = window.innerWidth;
function setHeaderCssVar() {
const headerEle = document.getElementById('shoplaza-section-header');
if(!headerEle){ return };
document.body.style.setProperty('--window-height', `${window.innerHeight}px`);
document.body.style.setProperty('--header-height', `${headerEle.clientHeight}px`);
const mdScorllHideEle = headerEle.querySelector('.header__mobile .header__scroll_hide');
if (mdScorllHideEle) {
document.body.style.setProperty('--header-scroll-hide-height-md', `${mdScorllHideEle.clientHeight}px`);
}
const pcScorllHideEle = headerEle.querySelector('.header__desktop .header__scroll_hide');
if (pcScorllHideEle) {
document.body.style.setProperty('--header-scroll-hide-height-pc', `${pcScorllHideEle.clientHeight}px`);
}
}
function handlResize() {
if(w == window.innerWidth){return};
w = window.innerWidth;
setHeaderCssVar();
};
function init(){
setHeaderCssVar();
window.removeEventListener('resize', window._theme_header_listener)
window._theme_header_listener = handlResize;
window.addEventListener('resize', window._theme_header_listener);
}
init();
})();
Congratulations to the Winners of Journalsay 3rd Anniversary Lucky Draw!🎉🥳
Jun 13, 2024
by journalsay
Dear Journalsay Customers and Friends😊,
We are thrilled to have celebrated Journalsay 3rd anniversary with all of you through this exciting lucky draw event🎂. Over the course of nearly a month, thousands of customers purchased their lucky draw tickets, giving themselves a chance to win🤞.
The following is the process and results of our lottery👇👇
Congratulations again to all the winners! 🎊The Journalsay team will contact you shortly to arrange for prize distribution.
We wholeheartedly thank every customer who participated in this event. It is your support that has allowed Journalsay to reach this milestone. Let's look forward to Journalsay next years, which will surely bring more exciting surprises!🎁
Finally, we wish you all happiness and happy shopping. 😘Until our next event!🌷
Spent to reach next tier : ${data.next_tier?.name}
Reached maximum level
${function(){
let progress = 0;
if (!data.next_tier) progress = 100;
else if (data.member?.current_progress && data.next_tier?.threshold) progress = (data.member.current_progress/data.next_tier.threshold)*100;
return `
`
}()}
Spent
discount
${data[1].campaign?.name} >
= discount on your order
${function(){
const earnCampaigns = data[0].campaigns;
const memberDetail = data[2].member;
if (!memberDetail) return '';
const closed = data[3];
const hasBirthDayPlan = earnCampaigns.find((item) => item.campaign.event_type === 'enter_birthday');
const hasPhonePlan = earnCampaigns.find((item) => item.campaign.event_type === 'enter_phone_number');
let content = null;
if (hasBirthDayPlan && hasPhonePlan && !memberDetail.birthday && !memberDetail.phone) {
content=`Complete your phone number and birthday to get `;
} else if (hasBirthDayPlan && !memberDetail.birthday) {
content=`Fill in your birthday to get `;
} else if (hasPhonePlan && !memberDetail.phone) {
content=`Fill in your phone number to get `;
}
return (!closed && content && memberDetail) ? `
${function(){
const {discount_type, obtain_product} = coupon.campaign.reward.discount_code_activity || {};
let value = '';
let unit = '';
if (discount_type === 'fixed_amount' || obtain_product?.obtain_type === 'fixed_amount') {
return `
`;
}
if (discount_type === 'percentage' || obtain_product?.obtain_type === 'percentage') {
return `
`;
}
if (discount_type === 'buy_x_get_y' && obtain_product?.obtain_type === 'free') {
return `
`;
}
if (discount_type === 'free_shipping') {
return `
`;
}
}()}
${function(){
const {discount_type, prerequisite_value, prerequisite_type, obtain_product} = coupon.campaign.reward.discount_code_activity || {};
if (discount_type !== 'buy_x_get_y') {
return `${coupon.campaign.name}`;
}
return '';
}()}
${function(){
const {discount_type, prerequisite_value, prerequisite_type, obtain_product} = coupon.campaign.reward.discount_code_activity || {};
if (discount_type === 'buy_x_get_y') {
const x = prerequisite_value;
const y = obtain_product.product_count;
const obtain_value = obtain_product.obtain_value;
if(obtain_product.obtain_type === 'free') {
if (prerequisite_type === 'quantity') {
return `Buy ${x} Get ${y} Free`;
} else if (prerequisite_type === 'subtotal') {
return `Buy Get ${y} Free`;
}
}
if(obtain_product.obtain_type === 'percentage') {
if (prerequisite_type === 'quantity') {
return `Buy ${x}, get ${y} at ${obtain_value}% OFF`;
} else if (prerequisite_type === 'subtotal') {
return `Buy , get ${y} at ${obtain_value}% OFF`;
}
}
if(obtain_product.obtain_type === 'fixed_amount') {
if (prerequisite_type === 'quantity') {
return `Buy ${x} get ${y} with off each`;
} else if (prerequisite_type === 'subtotal') {
return `Buy get ${y} with off each`;
}
}
}
return '';
}()}
Redeem
`;
}()}
Your Benefits (${data.current_tier.benefits.length})
${function() {
const {benefits} = data.current_tier;
const result = [];
for (let i = 0; i < benefits.length; i += 4) {
result.push(benefits.slice(i, i + 4));
}
return `
${function(){
if (data.campaign.event_type === 'successful_order') {
return `
Get:
for every
spent
`
}
return `
Get:
`
}()}
${function(){
const formatTimeStr = (execution_schedule) => {
const { type, effective_started_at, effective_ended_at, months, days } = execution_schedule;
if (type === 'time_range' && !(effective_started_at && effective_ended_at)) {
return 'Valid for Long Term';
}
if (type === 'time_range' && effective_started_at && effective_ended_at) {
return `
-
`
}
if (type === 'weekly') {
const time = days.map((d) => {
switch(d) {
case "1": return "Monday";
case "2": return "Tuesday";
case "3": return "Wednesday";
case "4": return "Thursday";
case "5": return "Friday";
case "6": return "Saturday";
case "0": return "Sunday";
}
});
return `Effective ${time} (Weekly)`;
}
if (type === 'monthly') {
const isFullMonth = months.length === 12;
const monthStr = months.map((value) => {
switch(value) {
case "1": return "January";
case "2": return "February";
case "3": return "March";
case "4": return "April";
case "5": return "May";
case "6": return "June";
case "7": return "July";
case "8": return "August";
case "9": return "September";
case "10": return "October";
case "11": return "November";
case "12": return "December";
}
}).join(' ');
const dayStr = days.map((value) => {
switch(value) {
case "1": return "1st";
case "2": return "2nd";
case "3": return "3rd";
case "4": return "4th";
case "5": return "5th";
case "6": return "6th";
case "7": return "7th";
case "8": return "8th";
case "9": return "9th";
case "10": return "10th";
case "11": return "11th";
case "12": return "12th";
case "13": return "13th";
case "14": return "14th";
case "15": return "15th";
case "16": return "16th";
case "17": return "17th";
case "18": return "18th";
case "19": return "19th";
case "20": return "20th";
case "21": return "21st";
case "22": return "22nd";
case "23": return "23rd";
case "24": return "24th";
case "25": return "25th";
case "26": return "26th";
case "27": return "27th";
case "28": return "28th";
case "29": return "29th";
case "30": return "30th";
case "31": return "31st";
}
}).join(' ');
if (isFullMonth) return `Effective ${dayStr} (Monthly)`; // 每月
return `Effective ${dayStr} (Valid only in ${monthStr})`;
}
};
return formatTimeStr(data.campaign.execution_schedule);
}()}
${function(){
if (data.campaign.campaign_rule.order_condition?.min_order_paid === "0") {
return `Order payment of any amount`
} else {
return `Order payment amount ()`
}
}()}
Purchase any item with order amount
The order contains:
Available :
${function(){
return new Intl.NumberFormat().format(data.point.active_amount)
}()}
Frozen :
${function(){
return new Intl.NumberFormat().format(data.point.frozen_amount)
}()}
${function(){
let date = 'Never expires';
if (data.expired_at) {
date = ``;
}
return `Valid Until: ${date}`;
}()}
${function(){
switch(data.resource_type) {
case 'become_member': return `Bonus for joining the club.`;
case 'enter_phone_number': return `Bonus for completing mobile phone filling`;
case 'enter_birthday': return `Bonus for completing birthday filling`;
case 'successful_order': return `Bonus for completing payment of ${data.data.order_id} order`;
case 'order_returned': return `Deduction of for refund of ${data.data.order_id} order`;
case 'discount_code_received': return `Deduction of for redeeming ${data.data.campaign_name} benefit`;
case 'coupon_received': return `Deduction of for redeeming ${data.data.coupon_title} coupon`;
case 'expired': return `Expired`;
case 'upgrade_benefit': return `Bonus for member rights and interests`;
case 'periodic_benefit': return `Bonus for member rights and interests`;
case 'birthday_benefit': return `Bonus for birthday blessings`;
case 'import_member_points': return `Manually add points`;
case 'deduction': return `Redeem for off order ${data.data.order_id}`;
case 'deduction_returned': return `Refund for order ${data.data.order_id}`;
case 'member_migrate': return `System upgrade updates balance`;
default: '';
}
}()}
${function(){
const {discount_type, obtain_product} = coupon.campaign.reward.discount_code_activity || {};
let value = '';
let unit = '';
if (discount_type === 'fixed_amount' || obtain_product?.obtain_type === 'fixed_amount') {
return `
`;
}
if (discount_type === 'percentage' || obtain_product?.obtain_type === 'percentage') {
return `
`;
}
if (discount_type === 'buy_x_get_y' && obtain_product?.obtain_type === 'free') {
return `
`;
}
if (discount_type === 'free_shipping') {
return `
`;
}
}()}
${function(){
const {discount_type, prerequisite_value, prerequisite_type, obtain_product} = coupon.campaign.reward.discount_code_activity || {};
if (discount_type !== 'buy_x_get_y') {
return `${coupon.campaign.name}`;
}
return '';
}()}
${function(){
const {discount_type, prerequisite_value, prerequisite_type, obtain_product} = coupon.campaign.reward.discount_code_activity || {};
if (discount_type === 'buy_x_get_y') {
const x = prerequisite_value;
const y = obtain_product.product_count;
const obtain_value = obtain_product.obtain_value;
if(obtain_product.obtain_type === 'free') {
if (prerequisite_type === 'quantity') {
return `Buy ${x} Get ${y} Free`;
} else if (prerequisite_type === 'subtotal') {
return `Buy Get ${y} Free`;
}
}
if(obtain_product.obtain_type === 'percentage') {
if (prerequisite_type === 'quantity') {
return `Buy ${x}, get ${y} at ${obtain_value}% OFF`;
} else if (prerequisite_type === 'subtotal') {
return `Buy , get ${y} at ${obtain_value}% OFF`;
}
}
if(obtain_product.obtain_type === 'fixed_amount') {
if (prerequisite_type === 'quantity') {
return `Buy ${x} get ${y} with off each`;
} else if (prerequisite_type === 'subtotal') {
return `Buy get ${y} with off each`;
}
}
}
return '';
}()}
`;
}()}
Get discount code
${function(){
const {discount_type, discount_value, prerequisite_value, prerequisite_type, obtain_product, max_free_shipping} = data[0].campaign?.reward.discount_code_activity || {};
let value = '';
let unit = '';
if (discount_type === 'fixed_amount') {
value = ``;
}
if (discount_type === 'percentage') {
value = `${parseInt(discount_value)}%`;
unit = `OFF`;
}
if (discount_type === 'free_shipping') {
if (max_free_shipping !== -1) {
value = `
FREESHIPPING`;
unit = `Up to `;
} else {
value = `FREE`;
unit = `SHIPPING`;
}
}
if (discount_type === 'buy_x_get_y') {
const x = prerequisite_value;
const y = obtain_product.product_count;
const obtain_value = obtain_product.obtain_value;
if(obtain_product.obtain_type === 'free') {
value = `FREE`;
unit = `PRODUCT`;
}
if(obtain_product.obtain_type === 'percentage') {
value = `${obtain_value}%`;
unit = `OFF`;
}
if(obtain_product.obtain_type === 'fixed_amount') {
value = ``;
}
}
return `${value}${unit}`;
}()}
${data[0].campaign?.name}
${function(){
const { prerequisite_type, prerequisite_value } = data[0].campaign?.reward.discount_code_activity || {};
if (prerequisite_type === 'none') {
return `No threshold`;
}
if (prerequisite_type === 'quantity') {
return `The order is available when it contains at least ${parseInt(prerequisite_value)} items`;
}
if (prerequisite_type === 'subtotal') {
return `Available when the order amount exceeds `;
}
}()}
It will cost to redeem the coupon. Are you sure you want to redeem it?
Get discount code
Congratulations! You have received a discount code
Available when paying for an order
${function(){
const {discount_type, discount_value, prerequisite_value, prerequisite_type, obtain_product, max_free_shipping} = data[0].campaign?.reward.discount_code_activity || {};
let value = '';
let unit = '';
if (discount_type === 'fixed_amount') {
value = ``;
}
if (discount_type === 'percentage') {
value = `${parseInt(discount_value)}%`;
unit = `OFF`;
}
if (discount_type === 'free_shipping') {
if (max_free_shipping !== -1) {
value = `
FREESHIPPING`;
unit = `Up to `;
} else {
value = `FREE`;
unit = `SHIPPING`;
}
}
if (discount_type === 'buy_x_get_y') {
const x = prerequisite_value;
const y = obtain_product.product_count;
const obtain_value = obtain_product.obtain_value;
if(obtain_product.obtain_type === 'free') {
value = `FREE`;
unit = `PRODUCT`;
}
if(obtain_product.obtain_type === 'percentage') {
value = `${obtain_value}%`;
unit = `OFF`;
}
if(obtain_product.obtain_type === 'fixed_amount') {
value = ``;
}
}
return `${value}${unit}`;
}()}
Discount
${function(){
const { discount_code_activity } = data[0].campaign?.reward || data[0].benefit?.reward || {};
const { discount_type, obtain_product, discount_value } = discount_code_activity;
if (discount_type === 'fixed_amount') {
return `
`
}
if (discount_type === 'percentage') {
return `
${parseInt(discount_value)}% OFF
`
}
if (discount_type === 'free_shipping') {
return `
FREE SHIPPING
`
}
return '';
}()}
${function(){
const {discount_type, prerequisite_value, prerequisite_type, obtain_product} = data[0].campaign?.reward.discount_code_activity || data[0].benefit?.reward.discount_code_activity || {};
if (discount_type === 'buy_x_get_y') {
const x = prerequisite_value;
const y = obtain_product.product_count;
const obtain_value = obtain_product.obtain_value;
if(obtain_product.obtain_type === 'free') {
if (prerequisite_type === 'quantity') {
return `Buy ${x} Get ${y} Free`;
} else if (prerequisite_type === 'subtotal') {
return `Buy Get ${y} Free`;
}
}
if(obtain_product.obtain_type === 'percentage') {
if (prerequisite_type === 'quantity') {
return `Buy ${x}, get ${y} at ${obtain_value}% OFF`;
} else if (prerequisite_type === 'subtotal') {
return `Buy , get ${y} at ${obtain_value}% OFF`;
}
}
if(obtain_product.obtain_type === 'fixed_amount') {
if (prerequisite_type === 'quantity') {
return `Buy ${x} get ${y} with off each`;
} else if (prerequisite_type === 'subtotal') {
return `Buy get ${y} with off each`;
}
}
}
return '';
}()}
${function(){
const { prerequisite_type, prerequisite_value, discount_type, obtain_product } = data[0].campaign?.reward.discount_code_activity || data[0].benefit?.reward.discount_code_activity || {};
if (discount_type === 'buy_x_get_y') {
let x_content = '';
let y_content = '';
const x = prerequisite_value;
const {obtain_value, obtain_type} = obtain_product;
if (prerequisite_type === 'quantity') {
x_content = `Purchase the following items for a total of ${x} items`;
} else if (prerequisite_type === 'subtotal') {
x_content = `Purchase the following items for a total of `;
}
if (obtain_type === 'free') {
y_content = `Get for free`;
} else if (obtain_type === 'percentage') {
y_content = `${obtain_value}% OFF on the purchase of the following items`;
} else if (obtain_type === 'fixed_amount') {
y_content = `The following items are discounted by each`;
}
return `
${x_content}
${y_content}
`;
}
if (prerequisite_type === 'none') {
return `No threshold`;
}
if (prerequisite_type === 'quantity') {
return `The order is available when it contains at least ${parseInt(prerequisite_value)} items`;
}
if (prerequisite_type === 'subtotal') {
return `Available when the order amount exceeds `;
}
}()}
${function(){
const {obtain_type, obtain_value, prerequisite_type, prerequisite_value} = data;
if (prerequisite_type === 'quantity') {
return `Purchase the following items for a total of ${prerequisite_value} items`;
} else if (prerequisite_type === 'subtotal') {
return `Purchase the following items for a total of `;
}
if (obtain_type === 'free') {
return `Get for free`;
} else if (obtain_type === 'percentage') {
return `${obtain_value}% OFF on the purchase of the following items`;
} else if (obtain_type === 'fixed_amount') {
return `The following items are discounted by each`;
}
return `Products participating in the points activity`;
}()}
The minimum discount unit is cents, and the calculated points are rounded up.
Points Refund Policy for Returns:
Full refund: All points returned.
Partial refund: Points refunded proportionally.
Order-only refund: No points refunded.
Points will not be refunded upon return.Selected points are frozen upon order creation and released upon cancellation
loading...
${function(){
let content = '';
switch(data.status || data) {
case 'COUPON_RECEIVE_INSUFFICIENT_POINTS_ERROR': return `
Insufficient
`;
case 'COUPON_RECEIVE_NOT_IN_TIME_ERROR':
case 'COUPON_NOT_FOUND_ERROR':
case 'CAMPAIGN_NOT_FOUND_ERROR': content='Points benefit does not exist. Please refresh the page';break;
case 'COUPON_RECEIVE_NOT_ELIGIBLE_ERROR':
case 'COUPON_RECEIVE_UPPER_LIMIT_ERROR':
case 'COUPON_RECEIVE_FAILED_ERROR': content='redemption failed. Please refresh the page and try again.';break;
case 'COUPON_RECEIVE_NO_STOCK_ERROR': content='The coupon has been redeemed!';break;
case 'LOYALTY_SERVER_UNAUTHORIZED': content='Please log in to your account!';break;
case 'LOYALTY_SERVER_CUSTOMER_NOT_FOUND_ERROR': content='User error detected. Please refresh the page and try again~';break;
case 'INVALID_PHONE_NUMBER_ERROR': content='Please enter a valid phone';break;
default: content='The network is abnormal or the system is busy, please refresh the page and try again~';
}
return `
`
}()}