@lodashventure/medusa-campaign 1.4.23 → 1.4.24
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.medusa/server/src/api/admin/flash-sales/route.js +37 -3
- package/.medusa/server/src/api/middlewares/add-flash-sale-highlights.js +150 -0
- package/.medusa/server/src/api/middlewares.js +13 -2
- package/.medusa/server/src/api/store/campaigns/[id]/route.js +93 -1
- package/.medusa/server/src/api/store/campaigns/route.js +139 -4
- package/package.json +1 -1
- package/src/api/admin/flash-sales/route.ts +54 -2
- package/src/api/middlewares/add-flash-sale-highlights.ts +243 -0
- package/src/api/middlewares.ts +12 -1
- package/src/api/store/campaigns/[id]/route.ts +138 -0
- package/src/api/store/campaigns/route.ts +201 -3
|
@@ -73,9 +73,43 @@ const GET = async (req, res) => {
|
|
|
73
73
|
relations: ["promotions"],
|
|
74
74
|
});
|
|
75
75
|
console.log(`Found ${campaigns.length} campaigns from promotion service`);
|
|
76
|
+
const promotionUsageLimits = await customCampaignModuleService.listPromotionUsageLimits({
|
|
77
|
+
campaign_id: campaignIds,
|
|
78
|
+
});
|
|
79
|
+
const usageSummaryByCampaign = new Map();
|
|
80
|
+
for (const limit of promotionUsageLimits) {
|
|
81
|
+
const summary = usageSummaryByCampaign.get(limit.campaign_id) ?? {
|
|
82
|
+
product_count: 0,
|
|
83
|
+
active_product_count: 0,
|
|
84
|
+
total_limit: 0,
|
|
85
|
+
total_used: 0,
|
|
86
|
+
total_remaining: 0,
|
|
87
|
+
};
|
|
88
|
+
summary.product_count += 1;
|
|
89
|
+
summary.total_limit += limit.limit ?? 0;
|
|
90
|
+
summary.total_used += limit.used ?? 0;
|
|
91
|
+
if (typeof limit.limit === "number" && typeof limit.used === "number") {
|
|
92
|
+
const remaining = Math.max(limit.limit - limit.used, 0);
|
|
93
|
+
summary.total_remaining += remaining;
|
|
94
|
+
if (remaining > 0) {
|
|
95
|
+
summary.active_product_count += 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
usageSummaryByCampaign.set(limit.campaign_id, summary);
|
|
99
|
+
}
|
|
100
|
+
const campaignsWithUsage = campaigns.map((campaign) => ({
|
|
101
|
+
...campaign,
|
|
102
|
+
flash_sale_summary: usageSummaryByCampaign.get(campaign.id) ?? {
|
|
103
|
+
product_count: 0,
|
|
104
|
+
active_product_count: 0,
|
|
105
|
+
total_limit: 0,
|
|
106
|
+
total_used: 0,
|
|
107
|
+
total_remaining: 0,
|
|
108
|
+
},
|
|
109
|
+
}));
|
|
76
110
|
res.status(200).json({
|
|
77
|
-
campaigns,
|
|
78
|
-
count:
|
|
111
|
+
campaigns: campaignsWithUsage,
|
|
112
|
+
count: campaignsWithUsage.length,
|
|
79
113
|
limit: 20,
|
|
80
114
|
offset: 0,
|
|
81
115
|
});
|
|
@@ -93,4 +127,4 @@ const GET = async (req, res) => {
|
|
|
93
127
|
}
|
|
94
128
|
};
|
|
95
129
|
exports.GET = GET;
|
|
96
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL2FkbWluL2ZsYXNoLXNhbGVzL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLG1EQUErRTtBQUMvRSxxREFJbUM7QUFDbkMsc0VBQXlFO0FBQ3pFLDhDQUFvQjtBQUNwQixtR0FBOEY7QUFDOUYsa0hBQStHO0FBQy9HLHdFQUEyRTtBQUc5RCxRQUFBLDBCQUEwQixHQUFHLGFBQUMsQ0FBQyxNQUFNLENBQUM7SUFDakQsSUFBSSxFQUFFLGFBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLGtCQUFrQixDQUFDO0lBQzNDLFdBQVcsRUFBRSxhQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSx5QkFBeUIsQ0FBQztJQUN6RCxJQUFJLEVBQUUsYUFBQyxDQUFDLFVBQVUsQ0FBQyxxQ0FBZ0IsQ0FBQztJQUNwQyxTQUFTLEVBQUUsYUFBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEVBQUU7SUFDMUIsT0FBTyxFQUFFLGFBQUMsQ0FBQyxNQUFNLENBQUMsSUFBSSxFQUFFO0lBQ3hCLFFBQVEsRUFBRSxhQUFDO1NBQ1IsS0FBSyxDQUNKLGFBQUMsQ0FBQyxNQUFNLENBQUM7UUFDUCxPQUFPLEVBQUUsYUFBQyxDQUFDLE1BQU0sQ0FBQztZQUNoQixFQUFFLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRTtZQUNkLEtBQUssRUFBRSxhQUFDLENBQUMsTUFBTSxFQUFFO1NBQ2xCLENBQUM7UUFDRixZQUFZLEVBQUUsYUFBQyxDQUFDLElBQUksQ0FBQztZQUNuQixZQUFZO1NBQ2IsQ0FBQztRQUNGLGFBQWEsRUFBRSxhQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNoQyxLQUFLLEVBQUUsYUFBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FB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
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.addFlashSaleHighlights = addFlashSaleHighlights;
|
|
4
|
+
const framework_1 = require("@medusajs/framework");
|
|
5
|
+
const utils_1 = require("@medusajs/framework/utils");
|
|
6
|
+
const custom_campaigns_1 = require("../../modules/custom-campaigns");
|
|
7
|
+
const campaign_type_enum_1 = require("../../modules/custom-campaigns/types/campaign-type.enum");
|
|
8
|
+
async function addFlashSaleHighlights(req, res, next) {
|
|
9
|
+
try {
|
|
10
|
+
const originalJson = res.json.bind(res);
|
|
11
|
+
res.json = async function (payload) {
|
|
12
|
+
try {
|
|
13
|
+
const productIds = collectProductIds(payload);
|
|
14
|
+
if (productIds.length > 0) {
|
|
15
|
+
const highlightMap = await fetchFlashSaleHighlights(productIds);
|
|
16
|
+
if (payload?.product && payload.product.id) {
|
|
17
|
+
payload.product = enrichProductWithHighlight(payload.product, highlightMap.get(payload.product.id));
|
|
18
|
+
}
|
|
19
|
+
if (Array.isArray(payload?.products)) {
|
|
20
|
+
payload.products = payload.products.map((product) => enrichProductWithHighlight(product, product?.id ? highlightMap.get(product.id) : undefined));
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
catch (error) {
|
|
25
|
+
console.error("[Campaign] Failed to attach flash sale highlights:", error instanceof Error ? error.message : error);
|
|
26
|
+
}
|
|
27
|
+
return originalJson(payload);
|
|
28
|
+
};
|
|
29
|
+
next();
|
|
30
|
+
}
|
|
31
|
+
catch (middlewareError) {
|
|
32
|
+
console.error("[Campaign] addFlashSaleHighlights middleware error:", middlewareError);
|
|
33
|
+
next(middlewareError);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function collectProductIds(payload) {
|
|
37
|
+
const ids = new Set();
|
|
38
|
+
if (payload?.product?.id) {
|
|
39
|
+
ids.add(payload.product.id);
|
|
40
|
+
}
|
|
41
|
+
if (Array.isArray(payload?.products)) {
|
|
42
|
+
for (const product of payload.products) {
|
|
43
|
+
if (product?.id) {
|
|
44
|
+
ids.add(product.id);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return Array.from(ids);
|
|
49
|
+
}
|
|
50
|
+
async function fetchFlashSaleHighlights(productIds) {
|
|
51
|
+
const result = new Map();
|
|
52
|
+
if (productIds.length === 0) {
|
|
53
|
+
return result;
|
|
54
|
+
}
|
|
55
|
+
const customCampaignModuleService = framework_1.container.resolve(custom_campaigns_1.CUSTOM_CAMPAIGN_MODULE);
|
|
56
|
+
const [flashSaleTypes, promotionUsageLimits] = await Promise.all([
|
|
57
|
+
customCampaignModuleService.listCustomCampaignTypes({
|
|
58
|
+
type: campaign_type_enum_1.CampaignTypeEnum.FlashSale,
|
|
59
|
+
}),
|
|
60
|
+
customCampaignModuleService.listPromotionUsageLimits({
|
|
61
|
+
product_id: productIds,
|
|
62
|
+
}),
|
|
63
|
+
]);
|
|
64
|
+
const activeFlashSaleCampaignIds = new Set(flashSaleTypes
|
|
65
|
+
.filter((type) => !type.deleted_at)
|
|
66
|
+
.map((type) => type.campaign_id));
|
|
67
|
+
if (activeFlashSaleCampaignIds.size === 0) {
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
const relevantUsageLimits = promotionUsageLimits.filter((limit) => activeFlashSaleCampaignIds.has(limit.campaign_id));
|
|
71
|
+
if (relevantUsageLimits.length === 0) {
|
|
72
|
+
return result;
|
|
73
|
+
}
|
|
74
|
+
const campaignIds = Array.from(new Set(relevantUsageLimits.map((limit) => limit.campaign_id)));
|
|
75
|
+
const promotionService = framework_1.container.resolve(utils_1.Modules.PROMOTION);
|
|
76
|
+
const campaigns = await promotionService.listCampaigns({ id: campaignIds }, {
|
|
77
|
+
relations: ["promotions", "promotions.application_method"],
|
|
78
|
+
});
|
|
79
|
+
const now = new Date();
|
|
80
|
+
for (const campaign of campaigns) {
|
|
81
|
+
const startsAt = campaign.starts_at ? new Date(campaign.starts_at) : null;
|
|
82
|
+
const endsAt = campaign.ends_at ? new Date(campaign.ends_at) : null;
|
|
83
|
+
if ((startsAt && startsAt > now) || (endsAt && endsAt < now)) {
|
|
84
|
+
continue;
|
|
85
|
+
}
|
|
86
|
+
const campaignUsageLimits = relevantUsageLimits.filter((limit) => limit.campaign_id === campaign.id);
|
|
87
|
+
for (const promotion of campaign.promotions ?? []) {
|
|
88
|
+
if (!promotion?.application_method) {
|
|
89
|
+
continue;
|
|
90
|
+
}
|
|
91
|
+
const usageLimit = campaignUsageLimits.find((limit) => limit.promotion_id === promotion.id);
|
|
92
|
+
if (!usageLimit) {
|
|
93
|
+
continue;
|
|
94
|
+
}
|
|
95
|
+
const canComputeRemainder = typeof usageLimit.limit === "number" &&
|
|
96
|
+
typeof usageLimit.used === "number";
|
|
97
|
+
const remaining = canComputeRemainder
|
|
98
|
+
? Math.max(usageLimit.limit - usageLimit.used, 0)
|
|
99
|
+
: null;
|
|
100
|
+
const isSoldOut = canComputeRemainder && usageLimit.used >= usageLimit.limit;
|
|
101
|
+
const highlight = {
|
|
102
|
+
campaign_id: campaign.id,
|
|
103
|
+
campaign_identifier: campaign.campaign_identifier,
|
|
104
|
+
campaign_type: campaign_type_enum_1.CampaignTypeEnum.FlashSale,
|
|
105
|
+
name: campaign.name,
|
|
106
|
+
description: campaign.description,
|
|
107
|
+
starts_at: campaign.starts_at,
|
|
108
|
+
ends_at: campaign.ends_at,
|
|
109
|
+
discount_type: promotion.application_method.type,
|
|
110
|
+
discount_value: promotion.application_method.value,
|
|
111
|
+
max_quantity: promotion.application_method.max_quantity ?? null,
|
|
112
|
+
limit: usageLimit.limit,
|
|
113
|
+
used: usageLimit.used,
|
|
114
|
+
remaining,
|
|
115
|
+
is_sold_out: isSoldOut,
|
|
116
|
+
};
|
|
117
|
+
const currentHighlight = result.get(usageLimit.product_id);
|
|
118
|
+
if (!currentHighlight) {
|
|
119
|
+
result.set(usageLimit.product_id, highlight);
|
|
120
|
+
continue;
|
|
121
|
+
}
|
|
122
|
+
const currentEnds = currentHighlight.ends_at
|
|
123
|
+
? new Date(currentHighlight.ends_at)
|
|
124
|
+
: null;
|
|
125
|
+
const incomingEnds = highlight.ends_at ? new Date(highlight.ends_at) : null;
|
|
126
|
+
const shouldReplace =
|
|
127
|
+
// Prefer highlights that end sooner (urgency)
|
|
128
|
+
(incomingEnds && !currentEnds) ||
|
|
129
|
+
(incomingEnds &&
|
|
130
|
+
currentEnds &&
|
|
131
|
+
incomingEnds.getTime() < currentEnds.getTime()) ||
|
|
132
|
+
// Otherwise prefer higher discount value
|
|
133
|
+
((highlight.discount_value ?? 0) > (currentHighlight.discount_value ?? 0));
|
|
134
|
+
if (shouldReplace) {
|
|
135
|
+
result.set(usageLimit.product_id, highlight);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
}
|
|
141
|
+
function enrichProductWithHighlight(product, highlight) {
|
|
142
|
+
if (!product) {
|
|
143
|
+
return product;
|
|
144
|
+
}
|
|
145
|
+
return {
|
|
146
|
+
...product,
|
|
147
|
+
flash_sale: highlight ?? null,
|
|
148
|
+
};
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWRkLWZsYXNoLXNhbGUtaGlnaGxpZ2h0cy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3NyYy9hcGkvbWlkZGxld2FyZXMvYWRkLWZsYXNoLXNhbGUtaGlnaGxpZ2h0cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOztBQTRCQSx3REFpREM7QUE3RUQsbURBQWdEO0FBTWhELHFEQUFvRDtBQUNwRCxxRUFBd0U7QUFDeEUsZ0dBQTJGO0FBb0JwRixLQUFLLFVBQVUsc0JBQXNCLENBQzFDLEdBQWtCLEVBQ2xCLEdBQW1CLEVBQ25CLElBQXdCO0lBRXhCLElBQUksQ0FBQztRQUNILE1BQU0sWUFBWSxHQUFHLEdBQUcsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBRXZDLEdBQVcsQ0FBQyxJQUFJLEdBQUcsS0FBSyxXQUFXLE9BQVk7WUFDOUMsSUFBSSxDQUFDO2dCQUNILE1BQU0sVUFBVSxHQUFHLGlCQUFpQixDQUFDLE9BQU8sQ0FBQyxDQUFDO2dCQUU5QyxJQUFJLFVBQVUsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUM7b0JBQzFCLE1BQU0sWUFBWSxHQUFHLE1BQU0sd0JBQXdCLENBQUMsVUFBVSxDQUFDLENBQUM7b0JBRWhFLElBQUksT0FBTyxFQUFFLE9BQU8sSUFBSSxPQUFPLENBQUMsT0FBTyxDQUFDLEVBQUUsRUFBRSxDQUFDO3dCQUMzQyxPQUFPLENBQUMsT0FBTyxHQUFHLDBCQUEwQixDQUMxQyxPQUFPLENBQUMsT0FBTyxFQUNmLFlBQVksQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxFQUFFLENBQUMsQ0FDckMsQ0FBQztvQkFDSixDQUFDO29CQUVELElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsUUFBUSxDQUFDLEVBQUUsQ0FBQzt3QkFDckMsT0FBTyxDQUFDLFFBQVEsR0FBRyxPQUFPLENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxD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
|
|
@@ -5,9 +5,10 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
const framework_1 = require("@medusajs/framework");
|
|
7
7
|
const route_1 = require("./admin/flash-sales/route");
|
|
8
|
-
const route_2 = require("./admin/coupons/route");
|
|
9
8
|
const multer_1 = __importDefault(require("multer"));
|
|
9
|
+
const route_2 = require("./admin/coupons/route");
|
|
10
10
|
const route_3 = require("./store/customers/me/coupons/route");
|
|
11
|
+
const add_flash_sale_highlights_1 = require("./middlewares/add-flash-sale-highlights");
|
|
11
12
|
const upload = (0, multer_1.default)({
|
|
12
13
|
storage: multer_1.default.memoryStorage(),
|
|
13
14
|
});
|
|
@@ -77,5 +78,15 @@ exports.default = (0, framework_1.defineMiddlewares)([
|
|
|
77
78
|
matcher: "/store/customers/me/coupons",
|
|
78
79
|
middlewares: [(0, framework_1.validateAndTransformBody)(route_3.collectCouponSchema)],
|
|
79
80
|
},
|
|
81
|
+
{
|
|
82
|
+
methods: ["GET"],
|
|
83
|
+
matcher: "/store/products",
|
|
84
|
+
middlewares: [add_flash_sale_highlights_1.addFlashSaleHighlights],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
methods: ["GET"],
|
|
88
|
+
matcher: "/store/products/:id",
|
|
89
|
+
middlewares: [add_flash_sale_highlights_1.addFlashSaleHighlights],
|
|
90
|
+
},
|
|
80
91
|
]);
|
|
81
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
92
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWlkZGxld2FyZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvYXBpL21pZGRsZXdhcmVzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsbURBSTZCO0FBQzdCLHFEQUdtQztBQUNuQyxvREFBNEI7QUFDNUIsaURBRytCO0FBQy9CLDhEQUF5RTtBQUN6RSx1RkFBaUY7QUFFakYsTUFBTSxNQUFNLEdBQUcsSUFBQSxnQkFBTSxFQUFDO0lBQ3BCLE9BQU8sRUFBRSxnQkFBTSxDQUFDLGFBQWEsRUFBRTtDQUNoQyxDQUFDLENBQUM7QUFFSCxrQkFBZSxJQUFBLDZCQUFpQixFQUFDO0lBQy9CO1FBQ0UsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxvQkFBb0I7UUFDN0IsV0FBVyxFQUFFLENBQUMsSUFBQSxvQ0FBd0IsRUFBQyxrQ0FBaUMsQ0FBQyxDQUFDO0tBQzNFO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDaEIsT0FBTyxFQUFFLHdCQUF3QjtRQUNqQyxXQUFXLEVBQUUsQ0FBQyxJQUFBLG9DQUF3QixFQUFDLGtDQUFpQyxDQUFDLENBQUM7S0FDM0U7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixPQUFPLEVBQUUsb0JBQW9CO1FBQzdCLFdBQVcsRUFBRTtZQUNYLElBQUEscUNBQXlCLEVBQUMsMkJBQTBCLEVBQUU7Z0JBQ3BELFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxZQUFZLENBQUM7Z0JBQzdCLE1BQU0sRUFBRSxJQUFJO2FBQ2IsQ0FBQztTQUNIO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqQixPQUFPLEVBQUUsZ0JBQWdCO1FBQ3pCLFdBQVcsRUFBRTtZQUNYLElBQUEsb0NBQXdCLEVBQUMsa0NBQWlDLENBQUM7U0FDNUQ7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxvQkFBb0I7UUFDN0IsV0FBVyxFQUFFO1lBQ1gsSUFBQSxvQ0FBd0IsRUFBQyxrQ0FBaUMsQ0FBQztTQUM1RDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxLQUFLLENBQUM7UUFDaEIsT0FBTyxFQUFFLGdCQUFnQjtRQUN6QixXQUFXLEVBQUU7WUFDWCxJQUFBLHFDQUF5QixFQUFDLGdDQUErQixFQUFFO2dCQUN6RCxRQUFRLEVBQUUsQ0FBQyxHQUFHLEVBQUUsWUFBWSxDQUFDO2dCQUM3QixNQUFNLEVBQUUsSUFBSTthQUNiLENBQUM7U0FDSDtLQUNGO0lBQ0Q7UUFDRSxPQUFPLEVBQUUsQ0FBQyxNQUFNLENBQUM7UUFDakIsT0FBTyxFQUFFLDRCQUE0QjtRQUNyQyxXQUFXLEVBQUU7WUFDWCxhQUFhO1lBQ2IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUM7U0FDdEI7S0FDRjtJQUNEO1FBQ0UsT0FBTyxFQUFFLENBQUMsTUFBTSxDQUFDO1FBQ2pCLE9BQU8sRUFBRSxnQ0FBZ0M7UUFDekMsV0FBVyxFQUFFO1lBQ1gsYUFBYTtZQUNiLE1BQU0sQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDO1NBQ3RCO0tBQ0Y7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQztRQUNqQixPQUFPLEVBQUUsNkJBQTZCO1FBQ3RDLFdBQVcsRUFBRSxDQUFDLElBQUEsb0NBQXdCLEVBQUMsMkJBQTBCLENBQUMsQ0FBQztLQUNwRTtJQUNEO1FBQ0UsT0FBTyxFQUFFLENBQUMsS0FBSyxDQUFDO1FBQ2hCLE9BQU8sRUFBRSxpQkFBaUI7UUFDMUIsV0FBVyxFQUFFLENBQUMsa0RBQXNCLENBQUM7S0FDdEM7SUFDRDtRQUNFLE9BQU8sRUFBRSxDQUFDLEtBQUssQ0FBQztRQUNoQixPQUFPLEVBQUUscUJBQXFCO1FBQzlCLFdBQVcsRUFBRSxDQUFDLGtEQUFzQixDQUFDO0tBQ3RDO0NBQ0YsQ0FBQyxDQUFDIn0=
|
|
@@ -5,6 +5,16 @@ const framework_1 = require("@medusajs/framework");
|
|
|
5
5
|
const utils_1 = require("@medusajs/framework/utils");
|
|
6
6
|
const campaign_type_enum_1 = require("../../../../modules/custom-campaigns/types/campaign-type.enum");
|
|
7
7
|
const custom_campaigns_1 = require("../../../../modules/custom-campaigns");
|
|
8
|
+
const USABLE_PROMO_MODULE = "usable_promotion";
|
|
9
|
+
const PROMOTION_CACHE_MODULE = "promotion_cache";
|
|
10
|
+
const resolveOptional = (token) => {
|
|
11
|
+
try {
|
|
12
|
+
return framework_1.container.resolve(token);
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
};
|
|
8
18
|
const GET = async (req, res) => {
|
|
9
19
|
const { id } = req.params;
|
|
10
20
|
if (!id) {
|
|
@@ -173,6 +183,88 @@ const GET = async (req, res) => {
|
|
|
173
183
|
: null,
|
|
174
184
|
});
|
|
175
185
|
}
|
|
186
|
+
else if (campaignType === campaign_type_enum_1.CampaignTypeEnum.Coupon) {
|
|
187
|
+
const usablePromoService = resolveOptional(USABLE_PROMO_MODULE);
|
|
188
|
+
const promotionCacheService = resolveOptional(PROMOTION_CACHE_MODULE);
|
|
189
|
+
const customerId = req?.auth_context?.actor_id;
|
|
190
|
+
const campaignPromotions = await promotionService.listPromotions({
|
|
191
|
+
campaign_id: campaign.id,
|
|
192
|
+
}, {
|
|
193
|
+
relations: ["application_method"],
|
|
194
|
+
});
|
|
195
|
+
const promotions = campaignPromotions.filter((promotion) => promotion.status === "active" && !promotion.is_automatic);
|
|
196
|
+
const usablePromotions = usablePromoService
|
|
197
|
+
? await usablePromoService.listUsablePromotions({
|
|
198
|
+
promotion_id: promotions.map((promotion) => promotion.id),
|
|
199
|
+
})
|
|
200
|
+
: [];
|
|
201
|
+
const usableMap = new Map(usablePromotions.map((usable) => [usable.promotion_id, usable.enabled]));
|
|
202
|
+
const collectedMap = new Map();
|
|
203
|
+
if (customerId && promotionCacheService) {
|
|
204
|
+
await Promise.all(promotions.map(async (promotion) => {
|
|
205
|
+
try {
|
|
206
|
+
const cacheKey = `user:${customerId}:promotion:${promotion.id}`;
|
|
207
|
+
const collected = await promotionCacheService.exists(cacheKey);
|
|
208
|
+
collectedMap.set(promotion.id, collected);
|
|
209
|
+
}
|
|
210
|
+
catch (error) {
|
|
211
|
+
console.error(`[Campaign] Failed to resolve collected status for promotion ${promotion.id}:`, error);
|
|
212
|
+
}
|
|
213
|
+
}));
|
|
214
|
+
}
|
|
215
|
+
const coupons = promotions.map((promotion) => {
|
|
216
|
+
const isCollectable = usableMap.has(promotion.id)
|
|
217
|
+
? usableMap.get(promotion.id)
|
|
218
|
+
: true;
|
|
219
|
+
const isCollected = collectedMap.get(promotion.id) ?? false;
|
|
220
|
+
return {
|
|
221
|
+
id: promotion.id,
|
|
222
|
+
code: promotion.code,
|
|
223
|
+
discount_type: promotion.application_method?.type,
|
|
224
|
+
discount_value: promotion.application_method?.value,
|
|
225
|
+
allocation: promotion.application_method?.allocation,
|
|
226
|
+
target_type: promotion.application_method?.target_type,
|
|
227
|
+
currency_code: promotion.application_method?.currency_code,
|
|
228
|
+
is_collectable: isCollectable,
|
|
229
|
+
is_collected: isCollected,
|
|
230
|
+
collect_endpoint: "/store/customers/me/coupons",
|
|
231
|
+
collect_payload: {
|
|
232
|
+
coupon_id: promotion.id,
|
|
233
|
+
},
|
|
234
|
+
};
|
|
235
|
+
});
|
|
236
|
+
const collectableCount = coupons.filter((coupon) => coupon.is_collectable && !coupon.is_collected).length;
|
|
237
|
+
const collectedCount = coupons.filter((coupon) => coupon.is_collected).length;
|
|
238
|
+
res.status(200).json({
|
|
239
|
+
id: campaign.id,
|
|
240
|
+
name: campaign.name,
|
|
241
|
+
description: campaign.description,
|
|
242
|
+
type: campaignType,
|
|
243
|
+
starts_at: campaign.starts_at,
|
|
244
|
+
ends_at: campaign.ends_at,
|
|
245
|
+
coupons,
|
|
246
|
+
summary: {
|
|
247
|
+
type: "coupon",
|
|
248
|
+
coupon_count: coupons.length,
|
|
249
|
+
collectable_count: collectableCount,
|
|
250
|
+
collected_count: collectedCount,
|
|
251
|
+
},
|
|
252
|
+
campaign_detail: campaignDetail
|
|
253
|
+
? {
|
|
254
|
+
image_url: campaignDetail.image_url,
|
|
255
|
+
thumbnail_url: campaignDetail.thumbnail_url,
|
|
256
|
+
detail_content: campaignDetail.detail_content,
|
|
257
|
+
terms_and_conditions: campaignDetail.terms_and_conditions,
|
|
258
|
+
meta_title: campaignDetail.meta_title,
|
|
259
|
+
meta_description: campaignDetail.meta_description,
|
|
260
|
+
meta_keywords: campaignDetail.meta_keywords,
|
|
261
|
+
link_url: campaignDetail.link_url,
|
|
262
|
+
link_text: campaignDetail.link_text,
|
|
263
|
+
display_order: campaignDetail.display_order,
|
|
264
|
+
}
|
|
265
|
+
: null,
|
|
266
|
+
});
|
|
267
|
+
}
|
|
176
268
|
else {
|
|
177
269
|
throw new utils_1.MedusaError(utils_1.MedusaError.Types.INVALID_DATA, "Unknown campaign type");
|
|
178
270
|
}
|
|
@@ -186,4 +278,4 @@ const GET = async (req, res) => {
|
|
|
186
278
|
}
|
|
187
279
|
};
|
|
188
280
|
exports.GET = GET;
|
|
189
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhbXBhaWducy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUErRTtBQUMvRSxxREFJbUM7QUFDbkMsc0dBQWlHO0FBRWpHLDJFQUE4RTtBQUd2RSxNQUFNLEdBQUcsR0FBRyxLQUFLLEVBQ3RCLEdBQWtDLEVBQ2xDLEdBQW1CLEVBQ25CLEVBQUU7SUFDRixNQUFNLEVBQUUsRUFBRSxFQUFFLEdBQUcsR0FBRyxDQUFDLE1BQU0sQ0FBQztJQUUxQixJQUFJLENBQUMsRUFBRSxFQUFFLENBQUM7UUFDUixNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsWUFBWSxFQUM5Qix5QkFBeUIsQ0FDMUIsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEtBQUssR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxpQ0FBeUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNqRSxNQUFNLGNBQWMsR0FBRyxxQkFBUyxDQUFDLE9BQU8sQ0FBQyxlQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDMUQsTUFBTSwyQkFBMkIsR0FDL0IscUJBQVMsQ0FBQyxPQUFPLENBQThCLHlDQUFzQixDQUFDLENBQUM7SUFFekUsSUFBSSxDQUFDO1FBQ0gsTUFBTSxHQUFHLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUV2QiwrQ0FBK0M7UUFDL0MsTUFBTSxtQkFBbUIsR0FDdkIsTUFBTSwyQkFBMkIsQ0FBQyx1QkFBdUIsQ0FBQztZQUN4RCxXQUFXLEVBQUUsRUFBRTtTQUNoQixDQUFDLENBQUM7UUFFTCxJQUFJLG1CQUFtQixDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNyQyxNQUFNLElBQUksbUJBQVcsQ0FDbkIsbUJBQVcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUMzQixvQkFBb0IsRUFB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
|
|
281
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9zcmMvYXBpL3N0b3JlL2NhbXBhaWducy9baWRdL3JvdXRlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLG1EQUErRTtBQUMvRSxxREFJbUM7QUFDbkMsc0dBQWlHO0FBRWpHLDJFQUE4RTtBQW1COUUsTUFBTSxtQkFBbUIsR0FBRyxrQkFBa0IsQ0FBQztBQUMvQyxNQUFNLHNCQUFzQixHQUFHLGlCQUFpQixDQUFDO0FBRWpELE1BQU0sZUFBZSxHQUFHLENBQUksS0FBYSxFQUFZLEVBQUU7SUFDckQsSUFBSSxDQUFDO1FBQ0gsT0FBTyxxQkFBUyxDQUFDLE9BQU8sQ0FBSSxLQUFLLENBQUMsQ0FBQztJQUNyQyxDQUFDO0lBQUMsTUFBTSxDQUFDO1FBQ1AsT0FBTyxJQUFJLENBQUM7SUFDZCxDQUFDO0FBQ0gsQ0FBQyxDQUFDO0FBRUssTUFBTSxHQUFHLEdBQUcsS0FBSyxFQUN0QixHQUFrQyxFQUNsQyxHQUFtQixFQUNuQixFQUFFO0lBQ0YsTUFBTSxFQUFFLEVBQUUsRUFBRSxHQUFHLEdBQUcsQ0FBQyxNQUFNLENBQUM7SUFFMUIsSUFBSSxDQUFDLEVBQUUsRUFBRSxDQUFDO1FBQ1IsTUFBTSxJQUFJLG1CQUFXLENBQ25CLG1CQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksRUFDOUIseUJBQXlCLENBQzFCLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxLQUFLLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsaUNBQXlCLENBQUMsS0FBSyxDQUFDLENBQUM7SUFDakUsTUFBTSxjQUFjLEdBQUcscUJBQVMsQ0FBQyxPQUFPLENBQUMsZUFBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO0lBQzFELE1BQU0sMkJBQTJCLEdBQy9CLHFCQUFTLENBQUMsT0FBTyxDQUE4Qix5Q0FBc0IsQ0FBQyxDQUFDO0lBRXpFLElBQUksQ0FBQztRQUNILE1BQU0sR0FBRyxH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
|