@be-link/ecommerce-promotion-service-node-sdk 0.1.61 → 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 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
- benefitClaims?: Array<{
89
- benefitId: string;
90
- benefitSubType: ENUM.MEMBER_ENUM.BENEFIT_SUB_TYPE;
91
- claimStatus: ENUM.MEMBER_ENUM.BENEFIT_CLAIM_STATUS;
92
- selectedCouponId?: string;
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
- type getBenefitStatusByUserId = Entity.BenefitStatus;
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 */
@@ -127,8 +127,6 @@ export declare namespace Service {
127
127
  interface claimMemberBenefit {
128
128
  /** 用户ID */
129
129
  userId: string;
130
- /** 会员订单号 */
131
- orderNo: string;
132
130
  /** 权益ID */
133
131
  benefitId: string;
134
132
  /** 券权益选择的券ID */
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@be-link/ecommerce-promotion-service-node-sdk",
3
- "version": "0.1.61",
3
+ "version": "0.1.62",
4
4
  "description": "EcommercePromotionService Node.js SDK",
5
5
  "main": "index.js",
6
6
  "types": "index.d.ts",
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
+ }