@be-link/pos-cli-nodejs 1.0.234 → 1.0.235

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@be-link/pos-cli-nodejs",
3
- "version": "1.0.234",
3
+ "version": "1.0.235",
4
4
  "description": "正向订单服务Nodejs客户端",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -17,6 +17,45 @@ jest.mock('../../http', () => ({
17
17
  callApi: (...args) => mockCallApi(...args),
18
18
  }));
19
19
  const service_1 = __importDefault(require("./service"));
20
+ describe('OrderCoreService.sceneInfo advisorShare passthrough', () => {
21
+ beforeEach(() => {
22
+ mockCallApi.mockReset().mockResolvedValue({ tradeOrderId: 'order-1' });
23
+ });
24
+ const sceneInfo = {
25
+ scene1: '',
26
+ scene2: '',
27
+ appScene: 0,
28
+ advisorShare: { advisorId: '', cardId: 'card-1', shareAt: 0 },
29
+ };
30
+ it.each([
31
+ ['省略', undefined],
32
+ ['空对象', {}],
33
+ ['空字符串', { advisorId: '' }],
34
+ ['零时间戳', { shareAt: 0 }],
35
+ ['完整对象', { advisorId: 'advisor-1', cardId: 'card-1', shareAt: 123 }],
36
+ ])('orderCreate 透传 %s advisorShare', (_label, advisorShare) => __awaiter(void 0, void 0, void 0, function* () {
37
+ const request = {
38
+ basicInfo: {
39
+ sceneInfo: Object.assign({ scene1: '', scene2: '', appScene: 0 }, (advisorShare === undefined ? {} : { advisorShare })),
40
+ },
41
+ };
42
+ yield service_1.default.orderCreate(request);
43
+ expect(mockCallApi).toHaveBeenCalledWith(expect.stringMatching(/\/core\/order-create$/), request);
44
+ expect(mockCallApi.mock.calls[0][1].basicInfo.sceneInfo.advisorShare).toBe(advisorShare);
45
+ }));
46
+ it.each([
47
+ ['orderCreate', 'order-create', false],
48
+ ['storeOrderCreate', 'store-order-create', false],
49
+ ['orderCreateV2', 'order-create-v2', false],
50
+ ['depositOrderCreate', 'deposit-order-create', false],
51
+ ['depositOrderComplete', 'deposit-order-complete', true],
52
+ ])('%s 原样透传分享信息', (method, path, isComplete) => __awaiter(void 0, void 0, void 0, function* () {
53
+ const request = Object.assign({ basicInfo: { sceneInfo } }, (isComplete ? { depositOrderId: 'deposit-1' } : {}));
54
+ yield service_1.default[method](request);
55
+ expect(mockCallApi).toHaveBeenCalledWith(expect.stringMatching(new RegExp(`/core/${path}$`)), request);
56
+ expect(mockCallApi.mock.calls[0][1].basicInfo.sceneInfo.advisorShare).toBe(sceneInfo.advisorShare);
57
+ }));
58
+ });
20
59
  describe('OrderCoreService.acknowledgeAutoConfirmedOrder', () => {
21
60
  beforeEach(() => {
22
61
  mockCallApi.mockReset().mockResolvedValue(undefined);
@@ -42,14 +42,7 @@ export declare namespace Service {
42
42
  /** 实际支付 */
43
43
  actuallyPaidFee: number;
44
44
  /** 交易场景 */
45
- sceneInfo: {
46
- /** 场景1 */
47
- scene1: string;
48
- /** 场景2 */
49
- scene2: string;
50
- /** app场景 */
51
- appScene: number;
52
- };
45
+ sceneInfo: DTO.IOrderCreateSceneInfo;
53
46
  /** 用户订单备注 */
54
47
  orderNote?: string;
55
48
  /** 来源人Id */
@@ -140,14 +133,7 @@ export declare namespace Service {
140
133
  /** 实际支付 */
141
134
  actuallyPaidFee: number;
142
135
  /** 交易场景 */
143
- sceneInfo: {
144
- /** 场景1 */
145
- scene1: string;
146
- /** 场景2 */
147
- scene2: string;
148
- /** app场景 */
149
- appScene: number;
150
- };
136
+ sceneInfo: DTO.IOrderCreateSceneInfo;
151
137
  /** 用户openId */
152
138
  openId: string;
153
139
  /** 来源人Id */
@@ -433,11 +419,7 @@ export declare namespace Service {
433
419
  liveRoomId: string;
434
420
  /** 实付金额(等于定金金额,单位:分) */
435
421
  actuallyPaidFee: number;
436
- sceneInfo?: {
437
- scene1: string;
438
- scene2: string;
439
- appScene: number;
440
- };
422
+ sceneInfo?: DTO.IOrderCreateSceneInfo;
441
423
  fromUnionId?: string;
442
424
  fromUserRole?: string;
443
425
  /** 预订人手机号 */
package/types.d.ts CHANGED
@@ -8,6 +8,24 @@ import { ItemInfoProxy } from './utils/posProxy/itemInfoProxy';
8
8
  import { SkuInfoProxy } from './utils/posProxy/skuInfoProxy';
9
9
  import { VenueInfoProxy } from './utils/posProxy/venueInfoProxy';
10
10
  import { ComboInfoProxy } from './utils/posProxy/comboInfoProxy';
11
+ /** 顾问分享信息;字段可省略,允许空字符串,是否有有效旅顾归属由业务判定。 */
12
+ export interface IAdvisorShareInfo {
13
+ advisorId?: string;
14
+ cardId?: string;
15
+ shareAt?: number;
16
+ }
17
+ /** 订单场景信息(查询结果允许历史订单缺少场景层级)。 */
18
+ export interface IOrderSceneInfo {
19
+ scene1?: string;
20
+ scene2?: string;
21
+ appScene: number;
22
+ advisorShare?: IAdvisorShareInfo;
23
+ }
24
+ /** 创建订单时必须提供一级、二级场景。 */
25
+ export interface IOrderCreateSceneInfo extends IOrderSceneInfo {
26
+ scene1: string;
27
+ scene2: string;
28
+ }
11
29
  /**
12
30
  * 订单正向结构
13
31
  */
@@ -59,14 +77,7 @@ export interface IPositiveOrder {
59
77
  /** 快照:关联主单ID */
60
78
  rootOrderId: string;
61
79
  /** 快照:下单场景信息 */
62
- sceneInfo: {
63
- /** 一级场景 */
64
- scene1?: string;
65
- /** 二级场景 */
66
- scene2?: string;
67
- /** 小程序场景值 */
68
- appScene: number;
69
- };
80
+ sceneInfo: IOrderSceneInfo;
70
81
  /** 联系人信息 */
71
82
  contactInfo: {
72
83
  /** 姓名 */
package/types.test.js CHANGED
@@ -8,6 +8,42 @@ const isAutoConfirmedOrder = 1;
8
8
  const isSupplierAcknowledged = 0;
9
9
  // @ts-expect-error 原始订单结构中的布尔属性统一映射为数值
10
10
  const invalidIsAutoConfirmedOrder = true;
11
+ // These assignments and @ts-expect-error checks run through tsc/ts-jest, not just Jest assertions.
12
+ const advisorShare = { advisorId: '', cardId: '', shareAt: 0 };
13
+ const createScene = { scene1: '', scene2: '', appScene: 0, advisorShare };
14
+ const createV2Scene = createScene;
15
+ const depositScene = createScene;
16
+ const completeScene = createScene;
17
+ const storedScene = { appScene: 0, advisorShare: {} };
18
+ const legacyScene = { scene1: '', scene2: '', appScene: 0 };
19
+ const legacyStoredScene = { appScene: 0 };
20
+ const optionalDepositScene = undefined;
21
+ // @ts-expect-error Share timestamps must be numeric.
22
+ const invalidShareAt = { shareAt: '123' };
23
+ // @ts-expect-error null is not a supported share value.
24
+ const invalidNullShare = { advisorId: null };
25
+ // @ts-expect-error null is not a supported scene share value.
26
+ const invalidSceneShare = { appScene: 0, advisorShare: null };
27
+ // @ts-expect-error New order requests still require scene1.
28
+ const invalidCreateScene = { scene2: '', appScene: 0 };
29
+ // @ts-expect-error Deposit creation still requires scene2 if sceneInfo is present.
30
+ const invalidDepositScene = { scene1: '', appScene: 0 };
31
+ describe('订单场景类型', () => {
32
+ it('支持空串、部分分享信息与历史订单场景', () => {
33
+ expect(createV2Scene.advisorShare).toBe(advisorShare);
34
+ expect(depositScene.advisorShare).toBe(advisorShare);
35
+ expect(completeScene.advisorShare).toBe(advisorShare);
36
+ expect(storedScene.advisorShare).toEqual({});
37
+ expect(legacyScene.advisorShare).toBeUndefined();
38
+ expect(legacyStoredScene.scene1).toBeUndefined();
39
+ expect(optionalDepositScene).toBeUndefined();
40
+ expect(invalidShareAt.shareAt).toBe('123');
41
+ expect(invalidNullShare.advisorId).toBeNull();
42
+ expect(invalidSceneShare.advisorShare).toBeNull();
43
+ expect(invalidCreateScene.scene1).toBeUndefined();
44
+ expect(invalidDepositScene.scene2).toBeUndefined();
45
+ });
46
+ });
11
47
  describe('订单属性类型', () => {
12
48
  it('IPositiveAttributes 声明布尔字段,IRawOrderStructure 映射为数值字段', () => {
13
49
  expect(positiveAttributes.isAutoConfirmedOrder).toBe(true);