@be-link/ecommerce-promotion-service-node-sdk 0.1.60 → 0.1.62
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/enum.d.ts +9 -0
- package/enum.js +10 -0
- package/index.d.ts +1 -0
- package/index.js +3 -1
- package/modules/benefit/service.js +3 -3
- package/modules/benefit/types.d.ts +89 -9
- package/modules/member/types.d.ts +0 -2
- package/package.json +1 -1
- package/utils/http.d.ts +5 -0
- package/utils/http.js +9 -0
package/enum.d.ts
CHANGED
|
@@ -537,6 +537,15 @@ export declare namespace ENUM {
|
|
|
537
537
|
SKIPPED = "\u8DF3\u8FC7",
|
|
538
538
|
NOT_NEEDED = "\u65E0\u9700\u56DE\u6536"
|
|
539
539
|
}
|
|
540
|
+
/**
|
|
541
|
+
* 会员权益链路(按用户查可领权益列表是否有促销侧记录;调用方约定传入已是会员的 userId)
|
|
542
|
+
*/
|
|
543
|
+
enum MEMBER_BENEFIT_CHAIN_TYPE {
|
|
544
|
+
/** 新会员:有可展示的 MemberBenefitRecord */
|
|
545
|
+
NEW = "NEW",
|
|
546
|
+
/** 老会员:无 MemberBenefitRecord(历史开通链路) */
|
|
547
|
+
LEGACY = "LEGACY"
|
|
548
|
+
}
|
|
540
549
|
}
|
|
541
550
|
namespace TASK_ENUM {
|
|
542
551
|
/** 任务状态 */
|
package/enum.js
CHANGED
|
@@ -608,6 +608,16 @@ var ENUM;
|
|
|
608
608
|
RECOVERY_STATUS_CHINESE["SKIPPED"] = "\u8DF3\u8FC7";
|
|
609
609
|
RECOVERY_STATUS_CHINESE["NOT_NEEDED"] = "\u65E0\u9700\u56DE\u6536";
|
|
610
610
|
})(RECOVERY_STATUS_CHINESE = MEMBER_ENUM.RECOVERY_STATUS_CHINESE || (MEMBER_ENUM.RECOVERY_STATUS_CHINESE = {}));
|
|
611
|
+
/**
|
|
612
|
+
* 会员权益链路(按用户查可领权益列表是否有促销侧记录;调用方约定传入已是会员的 userId)
|
|
613
|
+
*/
|
|
614
|
+
let MEMBER_BENEFIT_CHAIN_TYPE;
|
|
615
|
+
(function (MEMBER_BENEFIT_CHAIN_TYPE) {
|
|
616
|
+
/** 新会员:有可展示的 MemberBenefitRecord */
|
|
617
|
+
MEMBER_BENEFIT_CHAIN_TYPE["NEW"] = "NEW";
|
|
618
|
+
/** 老会员:无 MemberBenefitRecord(历史开通链路) */
|
|
619
|
+
MEMBER_BENEFIT_CHAIN_TYPE["LEGACY"] = "LEGACY";
|
|
620
|
+
})(MEMBER_BENEFIT_CHAIN_TYPE = MEMBER_ENUM.MEMBER_BENEFIT_CHAIN_TYPE || (MEMBER_ENUM.MEMBER_BENEFIT_CHAIN_TYPE = {}));
|
|
611
621
|
})(MEMBER_ENUM = ENUM.MEMBER_ENUM || (ENUM.MEMBER_ENUM = {}));
|
|
612
622
|
let TASK_ENUM;
|
|
613
623
|
(function (TASK_ENUM) {
|
package/index.d.ts
CHANGED
|
@@ -16,4 +16,5 @@ export { memberService } from './modules/member/service';
|
|
|
16
16
|
export type { Service as MemberServiceTypes } from './modules/member/types';
|
|
17
17
|
export { benefitService } from './modules/benefit/service';
|
|
18
18
|
export type { Service as BenefitServiceTypes } from './modules/benefit/types';
|
|
19
|
+
export { destroyHttpAgents } from './utils/http';
|
|
19
20
|
export { ENUM as PROMOTION_ENUM } from './enum';
|
package/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.PROMOTION_ENUM = exports.benefitService = exports.memberService = exports.taskService = exports.jobService = exports.pointsMallService = exports.pricingCalculationService = exports.configService = exports.couponService = exports.awardService = void 0;
|
|
3
|
+
exports.PROMOTION_ENUM = exports.destroyHttpAgents = exports.benefitService = exports.memberService = exports.taskService = exports.jobService = exports.pointsMallService = exports.pricingCalculationService = exports.configService = exports.couponService = exports.awardService = void 0;
|
|
4
4
|
var service_1 = require("./modules/award/service");
|
|
5
5
|
Object.defineProperty(exports, "awardService", { enumerable: true, get: function () { return service_1.awardService; } });
|
|
6
6
|
var service_2 = require("./modules/coupon/service");
|
|
@@ -19,6 +19,8 @@ var service_8 = require("./modules/member/service");
|
|
|
19
19
|
Object.defineProperty(exports, "memberService", { enumerable: true, get: function () { return service_8.memberService; } });
|
|
20
20
|
var service_9 = require("./modules/benefit/service");
|
|
21
21
|
Object.defineProperty(exports, "benefitService", { enumerable: true, get: function () { return service_9.benefitService; } });
|
|
22
|
+
var http_1 = require("./utils/http");
|
|
23
|
+
Object.defineProperty(exports, "destroyHttpAgents", { enumerable: true, get: function () { return http_1.destroyHttpAgents; } });
|
|
22
24
|
// 服务.模块.枚举名称.枚举值 示例: AWARD_ENUM.DISTRIBUTION_CHANNEL.ORDER
|
|
23
25
|
var enum_1 = require("./enum");
|
|
24
26
|
Object.defineProperty(exports, "PROMOTION_ENUM", { enumerable: true, get: function () { return enum_1.ENUM; } });
|
|
@@ -104,17 +104,17 @@ __decorate([
|
|
|
104
104
|
__param(0, (0, tsoa_1.Body)())
|
|
105
105
|
], BenefitService.prototype, "listConfigsByTemplate", null);
|
|
106
106
|
__decorate([
|
|
107
|
-
(0, tsoa_1.OperationId)('
|
|
107
|
+
(0, tsoa_1.OperationId)('查询会员订单权益状态,给交易侧b端查询使用'),
|
|
108
108
|
(0, tsoa_1.Post)('get-benefit-status'),
|
|
109
109
|
__param(0, (0, tsoa_1.Body)())
|
|
110
110
|
], BenefitService.prototype, "getBenefitStatus", null);
|
|
111
111
|
__decorate([
|
|
112
|
-
(0, tsoa_1.OperationId)('
|
|
112
|
+
(0, tsoa_1.OperationId)('按用户查询当前会员权益状态,给c端查询使用'),
|
|
113
113
|
(0, tsoa_1.Post)('get-benefit-status-by-user-id'),
|
|
114
114
|
__param(0, (0, tsoa_1.Body)())
|
|
115
115
|
], BenefitService.prototype, "getBenefitStatusByUserId", null);
|
|
116
116
|
__decorate([
|
|
117
|
-
(0, tsoa_1.OperationId)('按城市查询黑钻模板ID'),
|
|
117
|
+
(0, tsoa_1.OperationId)('按城市查询黑钻模板ID,给c端查询使用'),
|
|
118
118
|
(0, tsoa_1.Post)('get-black-diamond-template-id-by-city'),
|
|
119
119
|
__param(0, (0, tsoa_1.Body)())
|
|
120
120
|
], BenefitService.prototype, "getBlackDiamondTemplateIdByCity", null);
|
|
@@ -67,6 +67,62 @@ export declare namespace Service {
|
|
|
67
67
|
/** 删除时间(时间戳,毫秒,0 表示未删除) */
|
|
68
68
|
deletedAt: number;
|
|
69
69
|
}
|
|
70
|
+
/** 核销券关联商品快照(商品中心字段裁剪) */
|
|
71
|
+
interface BenefitVerifyProductSnapshot {
|
|
72
|
+
productId: string;
|
|
73
|
+
productName: string;
|
|
74
|
+
mainImg: string;
|
|
75
|
+
pickType?: string;
|
|
76
|
+
dispatchType?: string;
|
|
77
|
+
status?: string;
|
|
78
|
+
needVerify?: number;
|
|
79
|
+
verifyPeriod?: {
|
|
80
|
+
startDate?: number;
|
|
81
|
+
endDate?: number;
|
|
82
|
+
payAfterDay?: number;
|
|
83
|
+
type?: number;
|
|
84
|
+
};
|
|
85
|
+
targetSkuId?: string;
|
|
86
|
+
targetSkuCode?: string;
|
|
87
|
+
targetSkuAttrs?: Array<{
|
|
88
|
+
attrName: string;
|
|
89
|
+
attrValue: string;
|
|
90
|
+
}>;
|
|
91
|
+
price?: number;
|
|
92
|
+
memberPrice?: number;
|
|
93
|
+
strikethroughPrice?: number;
|
|
94
|
+
skuStatus?: string;
|
|
95
|
+
skuListSummary?: Array<{
|
|
96
|
+
skuId: string;
|
|
97
|
+
skuCode: string;
|
|
98
|
+
attrs: Array<{
|
|
99
|
+
attrName: string;
|
|
100
|
+
attrValue: string;
|
|
101
|
+
}>;
|
|
102
|
+
price: number;
|
|
103
|
+
memberPrice: number;
|
|
104
|
+
strikethroughPrice?: number;
|
|
105
|
+
status: string;
|
|
106
|
+
}>;
|
|
107
|
+
}
|
|
108
|
+
/** 单个候选券对应的商品信息 */
|
|
109
|
+
interface BenefitCouponVerifyOption {
|
|
110
|
+
/** 候选券模板ID(用于和商品建立关联) */
|
|
111
|
+
couponTemplateId: string;
|
|
112
|
+
product: BenefitVerifyProductSnapshot | null;
|
|
113
|
+
productFetchError?: string;
|
|
114
|
+
}
|
|
115
|
+
/** 一条券权益(N 选 1 核销券)的展示数据 */
|
|
116
|
+
interface BenefitCouponBenefitDetail {
|
|
117
|
+
benefitId: string;
|
|
118
|
+
claimStatus: ENUM.MEMBER_ENUM.BENEFIT_CLAIM_STATUS;
|
|
119
|
+
/**
|
|
120
|
+
* 用户已选择的券模板 ID(与领取接口 couponId 一致,未选为空串时不返回)
|
|
121
|
+
*/
|
|
122
|
+
selectedCouponTemplateId?: string;
|
|
123
|
+
/** 候选券对应的商品信息 */
|
|
124
|
+
verifyOptions: BenefitCouponVerifyOption[];
|
|
125
|
+
}
|
|
70
126
|
/** 会员订单权益状态 */
|
|
71
127
|
interface BenefitStatus {
|
|
72
128
|
/** 积分权益状态 */
|
|
@@ -84,13 +140,30 @@ export declare namespace Service {
|
|
|
84
140
|
hotelTravel?: {
|
|
85
141
|
status: string;
|
|
86
142
|
};
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
143
|
+
}
|
|
144
|
+
/** 按用户查询当前权益状态的列表项(与会员权益列表结构对齐) */
|
|
145
|
+
interface BenefitStatusByUserIdItem {
|
|
146
|
+
id: string;
|
|
147
|
+
bizKey: string;
|
|
148
|
+
userId: string;
|
|
149
|
+
orderNo: string;
|
|
150
|
+
membershipType: string;
|
|
151
|
+
benefitType: string;
|
|
152
|
+
benefitSubType: ENUM.MEMBER_ENUM.BENEFIT_SUB_TYPE;
|
|
153
|
+
status: string;
|
|
154
|
+
failReason: string;
|
|
155
|
+
benefitId: string;
|
|
156
|
+
claimStatus: ENUM.MEMBER_ENUM.BENEFIT_CLAIM_STATUS;
|
|
157
|
+
selectedCouponId: string;
|
|
158
|
+
templateId: string;
|
|
159
|
+
couponCandidateIds: string[];
|
|
160
|
+
expireAt: number;
|
|
161
|
+
extra: Record<string, unknown>;
|
|
162
|
+
createdAt: number;
|
|
163
|
+
updatedAt: number;
|
|
164
|
+
deletedAt: number;
|
|
165
|
+
/** 仅券权益返回:候选券对应商品信息 */
|
|
166
|
+
verifyOptions?: BenefitCouponVerifyOption[];
|
|
94
167
|
}
|
|
95
168
|
}
|
|
96
169
|
namespace Request {
|
|
@@ -312,8 +385,15 @@ export declare namespace Service {
|
|
|
312
385
|
type listConfigsByTemplate = Entity.BenefitConfig[];
|
|
313
386
|
/** 会员订单权益状态 */
|
|
314
387
|
type getBenefitStatus = Entity.BenefitStatus;
|
|
315
|
-
/**
|
|
316
|
-
|
|
388
|
+
/** 按用户查询当前会员权益状态(权益列表结构) */
|
|
389
|
+
interface getBenefitStatusByUserId {
|
|
390
|
+
orderNo: string;
|
|
391
|
+
list: Entity.BenefitStatusByUserIdItem[];
|
|
392
|
+
/**
|
|
393
|
+
* 权益链路:约定传入已是会员的 userId;list 有数据=新会员,无数据=老会员
|
|
394
|
+
*/
|
|
395
|
+
memberBenefitChainType: ENUM.MEMBER_ENUM.MEMBER_BENEFIT_CHAIN_TYPE;
|
|
396
|
+
}
|
|
317
397
|
/** 按城市查询黑钻模板ID */
|
|
318
398
|
interface getBlackDiamondTemplateIdByCity {
|
|
319
399
|
/** 模板ID */
|
package/package.json
CHANGED
package/utils/http.d.ts
CHANGED
|
@@ -9,3 +9,8 @@ declare module '@fastify/request-context' {
|
|
|
9
9
|
}
|
|
10
10
|
}
|
|
11
11
|
export declare function callApi<T extends (...args: any[]) => Promise<any>>(url: string, request?: Parameters<T>[0]): Promise<Awaited<ReturnType<T>>>;
|
|
12
|
+
/**
|
|
13
|
+
* 优雅退出时,销毁所有 HTTP/HTTPS Agent 连接池
|
|
14
|
+
* 确保所有 socket 被正确关闭,防止进程 hang 住
|
|
15
|
+
*/
|
|
16
|
+
export declare function destroyHttpAgents(): void;
|
package/utils/http.js
CHANGED
|
@@ -4,6 +4,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.callApi = callApi;
|
|
7
|
+
exports.destroyHttpAgents = destroyHttpAgents;
|
|
7
8
|
const axios_1 = __importDefault(require("axios"));
|
|
8
9
|
const uuid_1 = require("uuid");
|
|
9
10
|
const axios_retry_1 = __importDefault(require("axios-retry"));
|
|
@@ -106,3 +107,11 @@ async function callApi(url, request) {
|
|
|
106
107
|
const responseData = response.data;
|
|
107
108
|
return responseData.data;
|
|
108
109
|
}
|
|
110
|
+
/**
|
|
111
|
+
* 优雅退出时,销毁所有 HTTP/HTTPS Agent 连接池
|
|
112
|
+
* 确保所有 socket 被正确关闭,防止进程 hang 住
|
|
113
|
+
*/
|
|
114
|
+
function destroyHttpAgents() {
|
|
115
|
+
httpAgent.destroy();
|
|
116
|
+
httpsAgent.destroy();
|
|
117
|
+
}
|