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

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.235",
3
+ "version": "1.0.236",
4
4
  "description": "正向订单服务Nodejs客户端",
5
5
  "main": "index.js",
6
6
  "scripts": {
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __importDefault = (this && this.__importDefault) || function (mod) {
12
+ return (mod && mod.__esModule) ? mod : { "default": mod };
13
+ };
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ jest.mock('../../http', () => ({ callApi: jest.fn() }));
16
+ const http_1 = require("../../http");
17
+ const pos_1 = require("vitality-meta/enums/pos");
18
+ const user_1 = __importDefault(require("./user"));
19
+ const mockedCallApi = http_1.callApi;
20
+ describe('getOrderSettlementFacts', () => {
21
+ beforeEach(() => mockedCallApi.mockReset());
22
+ it.each([0, 2])('返回原始结算事实,保留 %s 份且不要求 attributes block', (remainQuantity) => __awaiter(void 0, void 0, void 0, function* () {
23
+ const facts = {
24
+ orderId: 'order-1',
25
+ status: pos_1.TradeOrderStatusEnum.SUCCEED,
26
+ remainQuantity,
27
+ };
28
+ mockedCallApi.mockResolvedValue(facts);
29
+ const request = { id: 'order-1' };
30
+ yield expect(user_1.default.getOrderSettlementFacts(request)).resolves.toBe(facts);
31
+ expect(mockedCallApi).toHaveBeenCalledWith(expect.stringMatching(/\/query\/user\/get-order-settlement-facts$/), request);
32
+ }));
33
+ it('未完结状态原样返回,由消费者决定重试', () => __awaiter(void 0, void 0, void 0, function* () {
34
+ const facts = { orderId: 'order-1', status: pos_1.TradeOrderStatusEnum.FULFILLING, remainQuantity: 1 };
35
+ mockedCallApi.mockResolvedValue(facts);
36
+ yield expect(user_1.default.getOrderSettlementFacts({ id: 'order-1' })).resolves.toEqual(facts);
37
+ }));
38
+ it('查询失败不使用零份数或缓存结果兜底', () => __awaiter(void 0, void 0, void 0, function* () {
39
+ const error = new Error('upstream unavailable');
40
+ mockedCallApi.mockRejectedValue(error);
41
+ yield expect(user_1.default.getOrderSettlementFacts({ id: 'order-1' })).rejects.toBe(error);
42
+ }));
43
+ });
@@ -3,6 +3,10 @@ import * as DTO from '../../../types';
3
3
  /** QueryByWeb 命名空间 */
4
4
  export declare namespace Service {
5
5
  namespace Request {
6
+ interface getOrderSettlementFacts {
7
+ /** 订单id */
8
+ id: string;
9
+ }
6
10
  interface getOrderById<K> {
7
11
  /** 订单id */
8
12
  id: string;
@@ -965,6 +969,13 @@ export declare namespace Service {
965
969
  }
966
970
  }
967
971
  namespace Response {
972
+ /** 查询时主库同一快照中的状态与主 ITEM 剩余份数,不是完结时快照。 */
973
+ interface getOrderSettlementFacts {
974
+ orderId: string;
975
+ status: PosConstants.TradeOrderStatusEnum;
976
+ /** 首个匹配主 ITEM 的剩余份数;无主 ITEM SKU 时取首个匹配商品行,零为有效值。 */
977
+ remainQuantity: number;
978
+ }
968
979
  interface mgetUserOrderCountList {
969
980
  /** 用户id: 数量 */
970
981
  [unionId: string]: number;
@@ -1296,6 +1307,12 @@ export declare namespace Service {
1296
1307
  }
1297
1308
  /** 用户维度查询 */
1298
1309
  interface QueryByUserController {
1310
+ /**
1311
+ * 查询当前主库结算事实,绕过缓存。调用方仅在 SUCCEED 时入账,入账后不因退款调整。
1312
+ * 未完结订单原样返回状态;不存在或份数缺失/非法时抛错,不以零兜底。
1313
+ * @path /query/user/get-order-settlement-facts
1314
+ */
1315
+ getOrderSettlementFacts(request: Request.getOrderSettlementFacts): Promise<Response.getOrderSettlementFacts>;
1299
1316
  /**
1300
1317
  * list开票记录
1301
1318
  * @returns 开票记录
@@ -3,6 +3,7 @@ import { Service } from './types';
3
3
  import * as DTO from '../../../types';
4
4
  declare class QueryByUserService extends BaseService implements Service.QueryByUserController {
5
5
  protected prefixUrl: string;
6
+ getOrderSettlementFacts(request: Service.Request.getOrderSettlementFacts): Promise<Service.Response.getOrderSettlementFacts>;
6
7
  listOrderInvoiceCount(request: Service.Request.getOrderInvoiceRequest): Promise<number>;
7
8
  listOrderInvoice(request: Service.Request.getOrderInvoiceRequest): Promise<DTO.IPositiveOrderInvoice[]>;
8
9
  getOrderInvoiceByOrderId(request: any): Promise<DTO.IPositiveOrderInvoice>;
@@ -20,6 +20,9 @@ class QueryByUserService extends service_1.default {
20
20
  super(...arguments);
21
21
  this.prefixUrl = '/query/user';
22
22
  }
23
+ getOrderSettlementFacts(request) {
24
+ return (0, http_1.callApi)(this.getApiUrl(this.getOrderSettlementFacts), request);
25
+ }
23
26
  listOrderInvoiceCount(request) {
24
27
  return (0, http_1.callApi)(this.getApiUrl(this.listOrderInvoiceCount), request);
25
28
  }