@chevre/domain 24.0.0-alpha.2 → 24.0.0-alpha.21
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/lib/chevre/repo/action/acceptCOAOffer.d.ts +23 -0
- package/lib/chevre/repo/action/acceptCOAOffer.js +64 -0
- package/lib/chevre/repo/action/acceptPay.d.ts +8 -0
- package/lib/chevre/repo/action/acceptPay.js +13 -0
- package/lib/chevre/repo/action/actionProcess.d.ts +115 -0
- package/lib/chevre/repo/action/actionProcess.js +293 -0
- package/lib/chevre/repo/action/authorizeOffer.d.ts +21 -0
- package/lib/chevre/repo/action/authorizeOffer.js +85 -0
- package/lib/chevre/repo/action/checkMovieTicket.d.ts +111 -0
- package/lib/chevre/repo/action/checkMovieTicket.js +200 -0
- package/lib/chevre/repo/action/checkThing.d.ts +8 -0
- package/lib/chevre/repo/action/checkThing.js +13 -0
- package/lib/chevre/repo/action.d.ts +9 -249
- package/lib/chevre/repo/action.js +308 -708
- package/lib/chevre/repo/aggregateAction.d.ts +102 -0
- package/lib/chevre/repo/aggregateAction.js +379 -0
- package/lib/chevre/repo/mongoose/schemas/transaction.js +31 -0
- package/lib/chevre/repo/orderInTransaction.d.ts +8 -0
- package/lib/chevre/repo/orderInTransaction.js +16 -2
- package/lib/chevre/repo/orderNumber.d.ts +3 -2
- package/lib/chevre/repo/orderNumber.js +23 -28
- package/lib/chevre/repo/transaction/moneyTransfer.d.ts +61 -0
- package/lib/chevre/repo/transaction/moneyTransfer.js +379 -0
- package/lib/chevre/repo/transaction/placeOrder.d.ts +140 -0
- package/lib/chevre/repo/transaction/placeOrder.js +528 -0
- package/lib/chevre/repo/transaction/returnOrder.d.ts +45 -0
- package/lib/chevre/repo/transaction/returnOrder.js +341 -0
- package/lib/chevre/repo/transaction.d.ts +1 -125
- package/lib/chevre/repo/transaction.js +726 -632
- package/lib/chevre/repository.d.ts +49 -0
- package/lib/chevre/repository.js +107 -2
- package/lib/chevre/service/aggregation/system.d.ts +10 -10
- package/lib/chevre/service/aggregation/system.js +9 -9
- package/lib/chevre/service/assetTransaction/pay/check.d.ts +5 -4
- package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.d.ts +5 -2
- package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.js +3 -3
- package/lib/chevre/service/assetTransaction/pay/start/factory.d.ts +51 -3
- package/lib/chevre/service/assetTransaction/pay/start/factory.js +58 -21
- package/lib/chevre/service/assetTransaction/pay/start/preStart/fixPaymentService.d.ts +10 -0
- package/lib/chevre/service/assetTransaction/pay/start/preStart/fixPaymentService.js +88 -0
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.d.ts +55 -0
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.js +56 -0
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.d.ts +3 -1
- package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.js +1 -11
- package/lib/chevre/service/assetTransaction/pay/start.d.ts +2 -0
- package/lib/chevre/service/assetTransaction/pay/start.js +8 -132
- package/lib/chevre/service/notification/triggerWebhook.d.ts +7 -6
- package/lib/chevre/service/offer/event/authorize.d.ts +2 -2
- package/lib/chevre/service/offer/event/authorize.js +3 -3
- package/lib/chevre/service/offer/event/issueEventOfferTicket.d.ts +2 -2
- package/lib/chevre/service/offer/event/issueEventOfferTicket.js +1 -1
- package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.d.ts +0 -2
- package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.js +1 -0
- package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -2
- package/lib/chevre/service/offer/event/voidTransaction.js +2 -2
- package/lib/chevre/service/offer/event/voidTransactionByActionId.d.ts +3 -3
- package/lib/chevre/service/offer/event/voidTransactionByActionId.js +2 -2
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +16 -5
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +7 -7
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.d.ts +6 -4
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +3 -10
- package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.js +21 -13
- package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +19 -10
- package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.d.ts +2 -2
- package/lib/chevre/service/offer/moneyTransfer/authorize.d.ts +2 -2
- package/lib/chevre/service/offer/moneyTransfer/authorize.js +6 -3
- package/lib/chevre/service/offer/moneyTransfer/voidTransaction.d.ts +2 -2
- package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +4 -1
- package/lib/chevre/service/offer/product.d.ts +3 -3
- package/lib/chevre/service/offer/product.js +4 -4
- package/lib/chevre/service/order/confirmPayTransaction.d.ts +0 -2
- package/lib/chevre/service/order/confirmPayTransaction.js +1 -0
- package/lib/chevre/service/order/findPlaceOrderTransaction.d.ts +2 -2
- package/lib/chevre/service/order/findPlaceOrderTransaction.js +1 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.d.ts +16 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.js +97 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.d.ts +21 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.js +86 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts +22 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.js +112 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.d.ts +22 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.js +74 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.d.ts +25 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.js +111 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.d.ts +16 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.js +74 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +8 -30
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +37 -348
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +6 -7
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.d.ts +6 -5
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +7 -6
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +1 -1
- package/lib/chevre/service/order/payOrder.d.ts +2 -2
- package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.d.ts +2 -2
- package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +1 -1
- package/lib/chevre/service/order/placeOrder.d.ts +13 -12
- package/lib/chevre/service/order/returnOrder.d.ts +2 -2
- package/lib/chevre/service/order/returnOrder.js +1 -1
- package/lib/chevre/service/order/sendOrder.d.ts +6 -6
- package/lib/chevre/service/order/sendOrder.js +10 -8
- package/lib/chevre/service/order.d.ts +3 -6
- package/lib/chevre/service/order.js +3 -9
- package/lib/chevre/service/payment/any/{fixOrderAsNeeded.d.ts → authorize/fixOrderAsNeeded.d.ts} +6 -6
- package/lib/chevre/service/payment/any/{fixOrderAsNeeded.js → authorize/fixOrderAsNeeded.js} +5 -8
- package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.d.ts +3 -3
- package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts +3 -3
- package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +1 -1
- package/lib/chevre/service/payment/any/authorize.d.ts +92 -0
- package/lib/chevre/service/payment/any/authorize.js +225 -0
- package/lib/chevre/service/payment/any/findAcceptAction.d.ts +43 -0
- package/lib/chevre/service/payment/any/findAcceptAction.js +94 -0
- package/lib/chevre/service/payment/any/findAuthorizeAction.d.ts +41 -0
- package/lib/chevre/service/payment/any/findAuthorizeAction.js +83 -0
- package/lib/chevre/service/payment/any/findCheckAction.d.ts +45 -0
- package/lib/chevre/service/payment/any/findCheckAction.js +89 -0
- package/lib/chevre/service/payment/any/invalidatePaymentUrl.d.ts +28 -0
- package/lib/chevre/service/payment/any/invalidatePaymentUrl.js +185 -0
- package/lib/chevre/service/payment/any/onPayActionCompleted.d.ts +7 -3
- package/lib/chevre/service/payment/any/onPayActionCompleted.js +3 -0
- package/lib/chevre/service/payment/any/processVoidPayTransaction.d.ts +29 -0
- package/lib/chevre/service/payment/any/processVoidPayTransaction.js +125 -0
- package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.d.ts +2 -2
- package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +66 -0
- package/lib/chevre/service/payment/any/publishPaymentUrl.js +133 -0
- package/lib/chevre/service/payment/any/voidPayTransaction.d.ts +31 -0
- package/lib/chevre/service/payment/any/voidPayTransaction.js +38 -0
- package/lib/chevre/service/payment/any.d.ts +8 -305
- package/lib/chevre/service/payment/any.js +17 -857
- package/lib/chevre/service/payment/movieTicket/authorize.d.ts +2 -0
- package/lib/chevre/service/payment/movieTicket/checkMovieTicket.d.ts +3 -3
- package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +3 -3
- package/lib/chevre/service/payment/movieTicket/validation.d.ts +11 -10
- package/lib/chevre/service/payment/movieTicket/validation.js +19 -15
- package/lib/chevre/service/report/telemetry.d.ts +4 -0
- package/lib/chevre/service/report/telemetry.js +7 -12
- package/lib/chevre/service/task/acceptCOAOffer.js +11 -6
- package/lib/chevre/service/task/authorizePayment.js +6 -2
- package/lib/chevre/service/task/checkMovieTicket.js +3 -3
- package/lib/chevre/service/task/checkResource.js +2 -2
- package/lib/chevre/service/task/confirmPayTransaction.js +2 -2
- package/lib/chevre/service/task/deleteTransaction.js +7 -1
- package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +4 -2
- package/lib/chevre/service/task/onOrderPaymentCompleted.js +2 -2
- package/lib/chevre/service/task/payment/payByTask.d.ts +14 -12
- package/lib/chevre/service/task/placeOrder.js +6 -4
- package/lib/chevre/service/task/publishPaymentUrl.js +8 -4
- package/lib/chevre/service/task/returnOrder.js +4 -4
- package/lib/chevre/service/task/returnPayTransaction.js +4 -3
- package/lib/chevre/service/task/sendOrder.js +4 -4
- package/lib/chevre/service/task/voidMoneyTransferTransaction.js +6 -3
- package/lib/chevre/service/task/voidPayTransaction.js +4 -2
- package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -3
- package/lib/chevre/service/task/voidReserveTransaction.js +4 -3
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +6 -0
- package/lib/chevre/service/transaction/deleteTransaction.js +56 -14
- package/lib/chevre/service/transaction/moneyTransfer.d.ts +5 -5
- package/lib/chevre/service/transaction/moneyTransfer.js +5 -5
- package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -2
- package/lib/chevre/service/transaction/placeOrder/confirm.js +10 -9
- package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +7 -6
- package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +1 -1
- package/lib/chevre/service/transaction/placeOrder/{publishOrderNumberIfNotExist.d.ts → issueOrderNumberIfNotExist.d.ts} +4 -4
- package/lib/chevre/service/transaction/placeOrder/{publishOrderNumberIfNotExist.js → issueOrderNumberIfNotExist.js} +21 -13
- package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.d.ts +2 -2
- package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.js +3 -3
- package/lib/chevre/service/transaction/placeOrder/start.d.ts +3 -3
- package/lib/chevre/service/transaction/placeOrder/start.js +2 -2
- package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +23 -0
- package/lib/chevre/service/transaction/placeOrder/updateAgent.js +126 -0
- package/lib/chevre/service/transaction/placeOrder.d.ts +2 -1
- package/lib/chevre/service/transaction/placeOrder.js +3 -1
- package/lib/chevre/service/transaction/returnOrder/preStart.d.ts +1 -1
- package/lib/chevre/service/transaction/returnOrder.d.ts +16 -14
- package/lib/chevre/service/transaction/returnOrder.js +4 -4
- package/lib/chevre/service/transaction.d.ts +9 -21
- package/lib/chevre/service/transaction.js +5 -111
- package/package.json +4 -8
|
@@ -34,11 +34,6 @@ const setting_1 = require("./mongoose/schemas/setting");
|
|
|
34
34
|
const transactionNumber_2 = require("./mongoose/schemas/transactionNumber");
|
|
35
35
|
const transactionNumberCounter_1 = require("./transactionNumberCounter");
|
|
36
36
|
const ORDER_NUMBER_SEPARATOR = '-';
|
|
37
|
-
const defaultVersioningForceProjects = [
|
|
38
|
-
'HMX',
|
|
39
|
-
'SMT',
|
|
40
|
-
'KOJ'
|
|
41
|
-
];
|
|
42
37
|
/**
|
|
43
38
|
* 注文番号リポジトリ
|
|
44
39
|
*/
|
|
@@ -59,16 +54,23 @@ class OrderNumberRepo {
|
|
|
59
54
|
// return orderNumber;
|
|
60
55
|
// }
|
|
61
56
|
/**
|
|
62
|
-
*
|
|
57
|
+
* 注文日時から新しい注文番号を発行する
|
|
58
|
+
* グローバルユニークである前提
|
|
63
59
|
*/
|
|
64
|
-
async
|
|
65
|
-
const { fpeSecret, version, validFrom
|
|
60
|
+
async issueOrderNumber(params) {
|
|
61
|
+
const { fpeSecret, version, validFrom
|
|
62
|
+
// versioningForceProjects
|
|
63
|
+
// versioningExceptionProjects
|
|
64
|
+
} = await this.findSetting();
|
|
66
65
|
const timestamp = (0, moment_timezone_1.default)(params.orderDate)
|
|
67
66
|
.valueOf()
|
|
68
67
|
.toString();
|
|
68
|
+
// const projectPrefix = params.project.alternateName
|
|
69
|
+
// .toUpperCase();
|
|
69
70
|
const projectPrefix = params.project.alternateName
|
|
70
|
-
.toUpperCase();
|
|
71
|
-
const dataFeedIdentifier = `${projectPrefix}:${timestamp}`;
|
|
71
|
+
.toUpperCase().at(0);
|
|
72
|
+
// const dataFeedIdentifier = `${projectPrefix}:${timestamp}`;
|
|
73
|
+
const dataFeedIdentifier = timestamp; // reconsider increment scope(2026-02-21~)
|
|
72
74
|
const dataFeedExpires = (0, moment_timezone_1.default)(params.orderDate)
|
|
73
75
|
.add(1, 'minute') // ミリ秒でカウントしていくので、注文日時後1分で十分
|
|
74
76
|
.toDate();
|
|
@@ -78,18 +80,12 @@ class OrderNumberRepo {
|
|
|
78
80
|
expires: dataFeedExpires
|
|
79
81
|
});
|
|
80
82
|
let orderNumber;
|
|
81
|
-
|
|
82
|
-
.isSameOrBefore(params.orderDate))
|
|
83
|
-
// versioningForceProjectsであれば強制的にversioning(2026-02-05~)
|
|
84
|
-
|| versioningForceProjects.includes(projectPrefix);
|
|
85
|
-
// versioningExceptionProjectsであれば強制的にversioning不使用(2026-02-10~)
|
|
86
|
-
if (versioningExceptionProjects.includes(projectPrefix)) {
|
|
87
|
-
useVersioning = false;
|
|
88
|
-
}
|
|
83
|
+
const useVersioning = (validFrom instanceof Date && (0, moment_timezone_1.default)(validFrom)
|
|
84
|
+
.isSameOrBefore(params.orderDate));
|
|
89
85
|
if (typeof fpeSecret === 'string' && typeof version === 'string' && useVersioning) {
|
|
90
86
|
const transactionFactory = new transactionNumber_1.TransactionNumberFactory({ fpeSecret, version });
|
|
91
87
|
orderNumber = transactionFactory.generate(timestamp, incrReply);
|
|
92
|
-
orderNumber = `${projectPrefix
|
|
88
|
+
orderNumber = `${projectPrefix}${orderNumber}`; // 桁数をversion0に合わせるためにエイリアスの1文字目のみを採用
|
|
93
89
|
orderNumber = `${[
|
|
94
90
|
orderNumber.slice(0, 4),
|
|
95
91
|
orderNumber.slice(4, 11),
|
|
@@ -138,11 +134,11 @@ class OrderNumberRepo {
|
|
|
138
134
|
.exec();
|
|
139
135
|
if (setting === null || setting.orderNumber === undefined) {
|
|
140
136
|
return {
|
|
141
|
-
|
|
142
|
-
|
|
137
|
+
// versioningForceProjects: []
|
|
138
|
+
// versioningExceptionProjects: []
|
|
143
139
|
};
|
|
144
140
|
}
|
|
145
|
-
const { fpeSecret, version, validFrom
|
|
141
|
+
const { fpeSecret, version, validFrom } = setting.orderNumber;
|
|
146
142
|
if (typeof fpeSecret !== 'string' || fpeSecret === '') {
|
|
147
143
|
throw new factory.errors.NotFound('setting.orderNumber.secret');
|
|
148
144
|
}
|
|
@@ -153,12 +149,11 @@ class OrderNumberRepo {
|
|
|
153
149
|
throw new factory.errors.NotFound('setting.orderNumber.validFrom must be Date');
|
|
154
150
|
}
|
|
155
151
|
return {
|
|
156
|
-
fpeSecret, version, validFrom
|
|
157
|
-
versioningForceProjects: [
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
]
|
|
161
|
-
versioningExceptionProjects: (Array.isArray(versioningExceptionProjects)) ? versioningExceptionProjects : []
|
|
152
|
+
fpeSecret, version, validFrom
|
|
153
|
+
// versioningForceProjects: [
|
|
154
|
+
// ...(Array.isArray(versioningForceProjects)) ? versioningForceProjects : []
|
|
155
|
+
// ]
|
|
156
|
+
// versioningExceptionProjects: (Array.isArray(versioningExceptionProjects)) ? versioningExceptionProjects : []
|
|
162
157
|
};
|
|
163
158
|
}
|
|
164
159
|
}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import type { Connection, FilterQuery } from 'mongoose';
|
|
2
|
+
import * as factory from '../../factory';
|
|
3
|
+
type IKeyOfProjection = keyof Pick<factory.transaction.ITransaction<factory.transactionType.MoneyTransfer>, 'agent' | 'endDate' | 'expires' | 'project' | 'startDate' | 'status' | 'typeOf'> | Exclude<keyof factory.transaction.ITransaction<factory.transactionType.MoneyTransfer>, 'id'>;
|
|
4
|
+
type IOmittedFieldsInProgress = 'tasksExportAction' | 'tasksExportedAt' | 'tasksExportationStatus';
|
|
5
|
+
export type IMoneyTransferTransactionInProgress = Omit<factory.transaction.moneyTransfer.ITransaction, IOmittedFieldsInProgress>;
|
|
6
|
+
type IStartedTransactionFields = 'expires' | 'id' | 'startDate' | 'status';
|
|
7
|
+
export type IStartedTransaction = Pick<factory.transaction.ITransaction<factory.transactionType>, IStartedTransactionFields>;
|
|
8
|
+
/**
|
|
9
|
+
* 通貨転送取引リポジトリ
|
|
10
|
+
*/
|
|
11
|
+
export declare class MoneyTransferRepo {
|
|
12
|
+
private readonly transactionModel;
|
|
13
|
+
constructor(connection: Connection);
|
|
14
|
+
static CREATE_MONGO_CONDITIONS(params: factory.transaction.ISearchConditions<factory.transactionType.MoneyTransfer>): FilterQuery<import("@chevre/factory/lib/assetTransaction/cancelReservation").ITransaction | import("@chevre/factory/lib/assetTransaction/moneyTransfer").ITransaction | import("@chevre/factory/lib/assetTransaction/pay").ITransaction | import("@chevre/factory/lib/assetTransaction/refund").ITransaction | import("@chevre/factory/lib/assetTransaction/registerService").ITransaction | import("@chevre/factory/lib/assetTransaction/reserve").ITransaction>[];
|
|
15
|
+
/**
|
|
16
|
+
* 取引を開始する
|
|
17
|
+
*/
|
|
18
|
+
startMoneyTransfer(params: factory.transaction.IStartParams<factory.transactionType.MoneyTransfer>): Promise<IStartedTransaction>;
|
|
19
|
+
/**
|
|
20
|
+
* 特定取引検索
|
|
21
|
+
*/
|
|
22
|
+
findMoneyTransferById(params: {
|
|
23
|
+
typeOf: factory.transactionType.MoneyTransfer;
|
|
24
|
+
id: string;
|
|
25
|
+
}, inclusion: IKeyOfProjection[]): Promise<factory.transaction.ITransaction<factory.transactionType.MoneyTransfer>>;
|
|
26
|
+
/**
|
|
27
|
+
* 進行中の取引を取得する
|
|
28
|
+
*/
|
|
29
|
+
findMoneyTransferInProgressById(params: {
|
|
30
|
+
typeOf: factory.transactionType.MoneyTransfer;
|
|
31
|
+
id: string;
|
|
32
|
+
}, inclusion: IKeyOfProjection[]): Promise<IMoneyTransferTransactionInProgress>;
|
|
33
|
+
/**
|
|
34
|
+
* 取引を確定する
|
|
35
|
+
*/
|
|
36
|
+
confirmMoneyTransfer(params: {
|
|
37
|
+
typeOf: factory.transactionType.MoneyTransfer;
|
|
38
|
+
id: string;
|
|
39
|
+
result: factory.transaction.IResult<factory.transactionType.MoneyTransfer>;
|
|
40
|
+
potentialActions: factory.transaction.IPotentialActions<factory.transactionType.MoneyTransfer>;
|
|
41
|
+
}): Promise<void>;
|
|
42
|
+
/**
|
|
43
|
+
* 取引を中止する
|
|
44
|
+
*/
|
|
45
|
+
cancelMoneyTransfer(params: {
|
|
46
|
+
typeOf: factory.transactionType.MoneyTransfer;
|
|
47
|
+
id: string;
|
|
48
|
+
}): Promise<void>;
|
|
49
|
+
countMoneyTransfer(params: factory.transaction.ISearchConditions<factory.transactionType.MoneyTransfer>): Promise<{
|
|
50
|
+
count: number;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* 取引を検索する
|
|
54
|
+
*/
|
|
55
|
+
findMoneyTransferTransactions(params: factory.transaction.ISearchConditions<factory.transactionType.MoneyTransfer> & {
|
|
56
|
+
inclusion: IKeyOfProjection[];
|
|
57
|
+
}): Promise<(Pick<factory.transaction.ITransaction<factory.transactionType.MoneyTransfer>, IKeyOfProjection> & {
|
|
58
|
+
id: string;
|
|
59
|
+
})[]>;
|
|
60
|
+
}
|
|
61
|
+
export {};
|
|
@@ -0,0 +1,379 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || function (mod) {
|
|
19
|
+
if (mod && mod.__esModule) return mod;
|
|
20
|
+
var result = {};
|
|
21
|
+
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
|
|
22
|
+
__setModuleDefault(result, mod);
|
|
23
|
+
return result;
|
|
24
|
+
};
|
|
25
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
26
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
27
|
+
};
|
|
28
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
29
|
+
exports.MoneyTransferRepo = void 0;
|
|
30
|
+
const moment_1 = __importDefault(require("moment"));
|
|
31
|
+
const transaction_1 = require("../../eventEmitter/transaction");
|
|
32
|
+
const factory = __importStar(require("../../factory"));
|
|
33
|
+
const settings_1 = require("../../settings");
|
|
34
|
+
const transaction_2 = require("../mongoose/schemas/transaction");
|
|
35
|
+
const AVAILABLE_PROJECT_FIELDS = [
|
|
36
|
+
'project',
|
|
37
|
+
'status',
|
|
38
|
+
'typeOf',
|
|
39
|
+
'agent',
|
|
40
|
+
'recipient',
|
|
41
|
+
'seller',
|
|
42
|
+
'error',
|
|
43
|
+
'result',
|
|
44
|
+
'object',
|
|
45
|
+
'expires',
|
|
46
|
+
'startDate',
|
|
47
|
+
'endDate',
|
|
48
|
+
'tasksExportAction',
|
|
49
|
+
'potentialActions',
|
|
50
|
+
// 'instrument'
|
|
51
|
+
];
|
|
52
|
+
/**
|
|
53
|
+
* 通貨転送取引リポジトリ
|
|
54
|
+
*/
|
|
55
|
+
class MoneyTransferRepo {
|
|
56
|
+
transactionModel;
|
|
57
|
+
constructor(connection) {
|
|
58
|
+
this.transactionModel = connection.model(transaction_2.modelName, (0, transaction_2.createSchema)());
|
|
59
|
+
}
|
|
60
|
+
static CREATE_MONGO_CONDITIONS(params) {
|
|
61
|
+
if (params.typeOf !== factory.transactionType.MoneyTransfer) {
|
|
62
|
+
throw new factory.errors.Argument('typeOf', `must be ${factory.transactionType.MoneyTransfer}`);
|
|
63
|
+
}
|
|
64
|
+
const andConditions = [];
|
|
65
|
+
const projectIdEq = params.project?.id?.$eq;
|
|
66
|
+
if (typeof projectIdEq === 'string') {
|
|
67
|
+
andConditions.push({ 'project.id': { $eq: projectIdEq } });
|
|
68
|
+
}
|
|
69
|
+
if (typeof params.typeOf === 'string') {
|
|
70
|
+
andConditions.push({ typeOf: { $eq: params.typeOf } });
|
|
71
|
+
}
|
|
72
|
+
if (params.startFrom !== undefined) {
|
|
73
|
+
andConditions.push({
|
|
74
|
+
startDate: { $gte: params.startFrom }
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
if (params.startThrough !== undefined) {
|
|
78
|
+
andConditions.push({
|
|
79
|
+
startDate: { $lte: params.startThrough }
|
|
80
|
+
});
|
|
81
|
+
}
|
|
82
|
+
if (params.endFrom !== undefined) {
|
|
83
|
+
andConditions.push({
|
|
84
|
+
endDate: {
|
|
85
|
+
$exists: true,
|
|
86
|
+
$gte: params.endFrom
|
|
87
|
+
}
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
if (params.endThrough !== undefined) {
|
|
91
|
+
andConditions.push({
|
|
92
|
+
endDate: {
|
|
93
|
+
$exists: true,
|
|
94
|
+
$lt: params.endThrough
|
|
95
|
+
}
|
|
96
|
+
});
|
|
97
|
+
}
|
|
98
|
+
if (Array.isArray(params.ids)) {
|
|
99
|
+
andConditions.push({
|
|
100
|
+
_id: { $in: params.ids }
|
|
101
|
+
});
|
|
102
|
+
}
|
|
103
|
+
if (Array.isArray(params.statuses)) {
|
|
104
|
+
andConditions.push({ status: { $in: params.statuses } });
|
|
105
|
+
}
|
|
106
|
+
const statusIn = params.status?.$in;
|
|
107
|
+
if (Array.isArray(statusIn)) {
|
|
108
|
+
andConditions.push({ status: { $in: statusIn } });
|
|
109
|
+
}
|
|
110
|
+
if (params.agent !== undefined) {
|
|
111
|
+
if (params.agent.typeOf !== undefined) {
|
|
112
|
+
andConditions.push({
|
|
113
|
+
'agent.typeOf': {
|
|
114
|
+
$exists: true,
|
|
115
|
+
$eq: params.agent.typeOf
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
}
|
|
119
|
+
if (Array.isArray(params.agent.ids)) {
|
|
120
|
+
andConditions.push({
|
|
121
|
+
'agent.id': {
|
|
122
|
+
$exists: true,
|
|
123
|
+
$in: params.agent.ids
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
if (Array.isArray(params.agent.identifiers)) {
|
|
128
|
+
andConditions.push({
|
|
129
|
+
'agent.identifier': {
|
|
130
|
+
$exists: true,
|
|
131
|
+
$in: params.agent.identifiers
|
|
132
|
+
}
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
const tasksExportActionStatusIn = params.tasksExportAction?.actionStatus?.$in;
|
|
137
|
+
if (Array.isArray(tasksExportActionStatusIn)) {
|
|
138
|
+
andConditions.push({ 'tasksExportAction.actionStatus': { $exists: true, $in: tasksExportActionStatusIn } });
|
|
139
|
+
}
|
|
140
|
+
const tasksExportActionStatusEq = params.tasksExportAction?.actionStatus?.$eq;
|
|
141
|
+
if (typeof tasksExportActionStatusEq === 'string') {
|
|
142
|
+
andConditions.push({ 'tasksExportAction.actionStatus': { $exists: true, $eq: tasksExportActionStatusEq } });
|
|
143
|
+
}
|
|
144
|
+
switch (params.typeOf) {
|
|
145
|
+
case factory.transactionType.PlaceOrder:
|
|
146
|
+
throw new factory.errors.NotImplemented(`use PlaceOrderRepo`);
|
|
147
|
+
case factory.transactionType.ReturnOrder:
|
|
148
|
+
throw new factory.errors.NotImplemented(`use ReturnOrderRepo`);
|
|
149
|
+
default:
|
|
150
|
+
}
|
|
151
|
+
return andConditions;
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* 取引を開始する
|
|
155
|
+
*/
|
|
156
|
+
// public async startNoPlaceOrder<
|
|
157
|
+
async startMoneyTransfer(params) {
|
|
158
|
+
const status = factory.transactionStatusType.InProgress;
|
|
159
|
+
const tasksExportAction = { actionStatus: factory.actionStatusType.PotentialActionStatus };
|
|
160
|
+
// const tasksExportationStatus = factory.transactionTasksExportationStatus.Unexported; // discontinue(2024-06-20~)
|
|
161
|
+
const startDate = new Date();
|
|
162
|
+
// let expires: Date;
|
|
163
|
+
const { typeOf } = params;
|
|
164
|
+
const expires = params.expires;
|
|
165
|
+
let creatingTransaction;
|
|
166
|
+
if (typeOf === factory.transactionType.MoneyTransfer) {
|
|
167
|
+
const { agent, project, object, seller, recipient } = params;
|
|
168
|
+
creatingTransaction = {
|
|
169
|
+
status, startDate, expires, typeOf, tasksExportAction,
|
|
170
|
+
agent, project, seller, object, recipient
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
else {
|
|
174
|
+
throw new factory.errors.NotImplemented(`${typeOf} not implemented`);
|
|
175
|
+
}
|
|
176
|
+
// reimplemnt with insertMany(2024-05-30~)
|
|
177
|
+
const result = await this.transactionModel.insertMany(creatingTransaction, { rawResult: true });
|
|
178
|
+
const id = result.insertedIds?.[0]?.toHexString();
|
|
179
|
+
if (typeof id !== 'string') {
|
|
180
|
+
throw new factory.errors.Internal('transaction not saved');
|
|
181
|
+
}
|
|
182
|
+
// 取引開始時にも取引イベントエミッター連携(2024-03-21~)
|
|
183
|
+
transaction_1.transactionEventEmitter.emitTransactionStatusChanged({ id, typeOf, status });
|
|
184
|
+
return { expires, id, startDate, status }; // minimize response(2024-05-30~)
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* 特定取引検索
|
|
188
|
+
*/
|
|
189
|
+
async findMoneyTransferById(params, inclusion // make required(2024-05-31~)
|
|
190
|
+
) {
|
|
191
|
+
let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
|
|
192
|
+
if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
193
|
+
positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
|
|
194
|
+
}
|
|
195
|
+
else {
|
|
196
|
+
throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
|
|
197
|
+
}
|
|
198
|
+
const projection = {
|
|
199
|
+
_id: 0,
|
|
200
|
+
id: { $toString: '$_id' },
|
|
201
|
+
...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
|
|
202
|
+
};
|
|
203
|
+
const doc = await this.transactionModel.findOne({
|
|
204
|
+
_id: { $eq: params.id },
|
|
205
|
+
typeOf: { $eq: params.typeOf }
|
|
206
|
+
}, projection)
|
|
207
|
+
.lean() // 2024-08-26~
|
|
208
|
+
.exec();
|
|
209
|
+
if (doc === null) {
|
|
210
|
+
throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} not found`);
|
|
211
|
+
}
|
|
212
|
+
return doc;
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* 進行中の取引を取得する
|
|
216
|
+
*/
|
|
217
|
+
async findMoneyTransferInProgressById(params, inclusion // make required(2024-05-29~)
|
|
218
|
+
) {
|
|
219
|
+
let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
|
|
220
|
+
if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
221
|
+
positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
|
|
222
|
+
}
|
|
223
|
+
else {
|
|
224
|
+
throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
|
|
225
|
+
}
|
|
226
|
+
const projection = {
|
|
227
|
+
_id: 0,
|
|
228
|
+
id: { $toString: '$_id' },
|
|
229
|
+
...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
|
|
230
|
+
};
|
|
231
|
+
const filter = {
|
|
232
|
+
_id: { $eq: params.id },
|
|
233
|
+
typeOf: { $eq: params.typeOf },
|
|
234
|
+
status: { $eq: factory.transactionStatusType.InProgress },
|
|
235
|
+
// expiresを条件に追加(2023-05-12~),
|
|
236
|
+
expires: { $gt: new Date() }
|
|
237
|
+
};
|
|
238
|
+
const doc = await this.transactionModel.findOne(filter, projection)
|
|
239
|
+
.lean() // 2024-08-26~
|
|
240
|
+
.exec();
|
|
241
|
+
if (doc === null) {
|
|
242
|
+
throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
|
|
243
|
+
}
|
|
244
|
+
return doc;
|
|
245
|
+
}
|
|
246
|
+
/**
|
|
247
|
+
* 取引を確定する
|
|
248
|
+
*/
|
|
249
|
+
// public async confirmNoPlaceOrder<
|
|
250
|
+
async confirmMoneyTransfer(params) {
|
|
251
|
+
const endDate = new Date();
|
|
252
|
+
const doc = await this.transactionModel.findOneAndUpdate({
|
|
253
|
+
_id: { $eq: params.id },
|
|
254
|
+
typeOf: { $eq: params.typeOf },
|
|
255
|
+
status: { $eq: factory.transactionStatusType.InProgress },
|
|
256
|
+
expires: { $gt: endDate } // add expires(2025-02-27~)
|
|
257
|
+
}, {
|
|
258
|
+
status: factory.transactionStatusType.Confirmed, // ステータス変更
|
|
259
|
+
endDate,
|
|
260
|
+
// 'object.authorizeActions': params.authorizeActions,
|
|
261
|
+
result: params.result, // resultを更新
|
|
262
|
+
potentialActions: params.potentialActions // resultを更新
|
|
263
|
+
}, {
|
|
264
|
+
new: true,
|
|
265
|
+
projection: { _id: 1 }
|
|
266
|
+
})
|
|
267
|
+
.lean()
|
|
268
|
+
.exec();
|
|
269
|
+
// NotFoundであれば取引状態確認
|
|
270
|
+
if (doc === null) {
|
|
271
|
+
const { expires, status } = await this.findMoneyTransferById({ typeOf: params.typeOf, id: params.id }, ['expires', 'status']);
|
|
272
|
+
if (status === factory.transactionStatusType.Confirmed) {
|
|
273
|
+
// すでに確定済の場合スルー
|
|
274
|
+
}
|
|
275
|
+
else if (status === factory.transactionStatusType.Expired) {
|
|
276
|
+
throw new factory.errors.Argument('Transaction id', 'Already expired');
|
|
277
|
+
}
|
|
278
|
+
else if (status === factory.transactionStatusType.Canceled) {
|
|
279
|
+
throw new factory.errors.Argument('Transaction id', 'Already canceled');
|
|
280
|
+
}
|
|
281
|
+
else {
|
|
282
|
+
if ((0, moment_1.default)(expires)
|
|
283
|
+
.isSameOrBefore((0, moment_1.default)(endDate))) {
|
|
284
|
+
throw new factory.errors.Argument('Transaction id', 'potentially expired');
|
|
285
|
+
}
|
|
286
|
+
throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
|
|
290
|
+
id: params.id,
|
|
291
|
+
typeOf: params.typeOf,
|
|
292
|
+
status: factory.transactionStatusType.Confirmed
|
|
293
|
+
});
|
|
294
|
+
}
|
|
295
|
+
/**
|
|
296
|
+
* 取引を中止する
|
|
297
|
+
*/
|
|
298
|
+
async cancelMoneyTransfer(params) {
|
|
299
|
+
const endDate = new Date();
|
|
300
|
+
// 進行中ステータスの取引を中止する
|
|
301
|
+
const doc = await this.transactionModel.findOneAndUpdate({
|
|
302
|
+
typeOf: params.typeOf,
|
|
303
|
+
_id: params.id,
|
|
304
|
+
status: factory.transactionStatusType.InProgress
|
|
305
|
+
}, {
|
|
306
|
+
status: factory.transactionStatusType.Canceled,
|
|
307
|
+
endDate: endDate
|
|
308
|
+
}, {
|
|
309
|
+
new: true,
|
|
310
|
+
projection: { _id: 1 }
|
|
311
|
+
})
|
|
312
|
+
.lean()
|
|
313
|
+
.exec();
|
|
314
|
+
// NotFoundであれば取引状態確認
|
|
315
|
+
if (doc === null) {
|
|
316
|
+
const { status } = await this.findMoneyTransferById(params, ['status']);
|
|
317
|
+
if (status === factory.transactionStatusType.Canceled) {
|
|
318
|
+
// すでに中止済の場合スルー
|
|
319
|
+
}
|
|
320
|
+
else if (status === factory.transactionStatusType.Expired) {
|
|
321
|
+
throw new factory.errors.Argument('Transaction id', 'Transaction already expired');
|
|
322
|
+
}
|
|
323
|
+
else if (status === factory.transactionStatusType.Confirmed) {
|
|
324
|
+
throw new factory.errors.Argument('Transaction id', 'Confirmed transaction unable to cancel');
|
|
325
|
+
}
|
|
326
|
+
else {
|
|
327
|
+
throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
|
|
331
|
+
id: params.id,
|
|
332
|
+
typeOf: params.typeOf,
|
|
333
|
+
status: factory.transactionStatusType.Canceled
|
|
334
|
+
});
|
|
335
|
+
}
|
|
336
|
+
async countMoneyTransfer(params) {
|
|
337
|
+
const { limit } = params;
|
|
338
|
+
const conditions = MoneyTransferRepo.CREATE_MONGO_CONDITIONS(params);
|
|
339
|
+
const query = this.transactionModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {});
|
|
340
|
+
if (typeof limit === 'number' && limit >= 0) {
|
|
341
|
+
query.limit(limit);
|
|
342
|
+
}
|
|
343
|
+
const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
344
|
+
.exec();
|
|
345
|
+
return { count };
|
|
346
|
+
}
|
|
347
|
+
/**
|
|
348
|
+
* 取引を検索する
|
|
349
|
+
*/
|
|
350
|
+
async findMoneyTransferTransactions(params) {
|
|
351
|
+
const { inclusion } = params;
|
|
352
|
+
const conditions = MoneyTransferRepo.CREATE_MONGO_CONDITIONS(params);
|
|
353
|
+
let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
|
|
354
|
+
if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
355
|
+
positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
|
|
356
|
+
}
|
|
357
|
+
const projection = {
|
|
358
|
+
_id: 0,
|
|
359
|
+
id: { $toString: '$_id' },
|
|
360
|
+
...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
|
|
361
|
+
};
|
|
362
|
+
const query = this.transactionModel.find((conditions.length > 0) ? { $and: conditions } : {})
|
|
363
|
+
.select(projection);
|
|
364
|
+
if (typeof params.limit === 'number' && params.limit > 0) {
|
|
365
|
+
const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
|
|
366
|
+
query.limit(params.limit)
|
|
367
|
+
.skip(params.limit * (page - 1));
|
|
368
|
+
}
|
|
369
|
+
if (params.sort?.startDate !== undefined) {
|
|
370
|
+
query.sort({ startDate: params.sort.startDate });
|
|
371
|
+
}
|
|
372
|
+
// const explainResult = await (<any>query).explain();
|
|
373
|
+
// console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
|
|
374
|
+
return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
375
|
+
.lean()
|
|
376
|
+
.exec();
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
exports.MoneyTransferRepo = MoneyTransferRepo;
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
import type { Connection, FilterQuery } from 'mongoose';
|
|
2
|
+
import * as factory from '../../factory';
|
|
3
|
+
type IKeyOfProjection = 'agent' | 'endDate' | 'expires' | 'project' | 'startDate' | 'status' | 'typeOf' | 'instrument' | 'object' | 'seller' | 'result' | 'potentialActions' | 'error' | 'tasksExportAction';
|
|
4
|
+
export type ITransactionInProgress = Pick<factory.transaction.placeOrder.ITransaction, IKeyOfProjection> & {
|
|
5
|
+
/**
|
|
6
|
+
* 取引ID
|
|
7
|
+
* 常にprojectされる
|
|
8
|
+
*/
|
|
9
|
+
id: string;
|
|
10
|
+
};
|
|
11
|
+
export type IPlaceOrder = Pick<factory.transaction.placeOrder.ITransaction, IKeyOfProjection> & {
|
|
12
|
+
/**
|
|
13
|
+
* 取引ID
|
|
14
|
+
* 常にprojectされる
|
|
15
|
+
*/
|
|
16
|
+
id: string;
|
|
17
|
+
};
|
|
18
|
+
type IStartedPlaceOrderFields = 'expires' | 'id' | 'startDate' | 'status';
|
|
19
|
+
export type IStartedPlaceOrder = Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, IStartedPlaceOrderFields>;
|
|
20
|
+
/**
|
|
21
|
+
* 注文取引リポジトリ
|
|
22
|
+
*/
|
|
23
|
+
export declare class PlaceOrderRepo {
|
|
24
|
+
private readonly transactionModel;
|
|
25
|
+
constructor(connection: Connection);
|
|
26
|
+
static CREATE_MONGO_CONDITIONS(params: factory.transaction.ISearchConditions<factory.transactionType.PlaceOrder>): FilterQuery<import("@chevre/factory/lib/transaction/placeOrder").ITransaction>[];
|
|
27
|
+
countPlaceOrder(params: factory.transaction.ISearchConditions<factory.transactionType.PlaceOrder>): Promise<{
|
|
28
|
+
count: number;
|
|
29
|
+
}>;
|
|
30
|
+
/**
|
|
31
|
+
* 取引を検索する
|
|
32
|
+
*/
|
|
33
|
+
findPlaceOrderTransactions(params: factory.transaction.ISearchConditions<factory.transactionType.PlaceOrder> & {
|
|
34
|
+
inclusion: IKeyOfProjection[];
|
|
35
|
+
}): Promise<(Pick<factory.transaction.ITransaction<factory.transactionType.PlaceOrder>, IKeyOfProjection> & {
|
|
36
|
+
id: string;
|
|
37
|
+
})[]>;
|
|
38
|
+
/**
|
|
39
|
+
* 進行中取引に保管された採用済決済方法を検索する
|
|
40
|
+
*/
|
|
41
|
+
findInProgressPaymentMethodId(params: {
|
|
42
|
+
id: string;
|
|
43
|
+
}): Promise<factory.transaction.placeOrder.IPaymentMethodByPaymentUrl | undefined>;
|
|
44
|
+
/**
|
|
45
|
+
* 取引の注文番号を検索する
|
|
46
|
+
*/
|
|
47
|
+
findInProgressOrderNumberById(params: {
|
|
48
|
+
id: string;
|
|
49
|
+
}): Promise<string | undefined>;
|
|
50
|
+
/**
|
|
51
|
+
* 取引の確認番号を検索する
|
|
52
|
+
*/
|
|
53
|
+
findInProgressConfirmationNumberById(params: {
|
|
54
|
+
id: string;
|
|
55
|
+
status: {
|
|
56
|
+
$in: factory.transactionStatusType[];
|
|
57
|
+
};
|
|
58
|
+
}): Promise<string | undefined>;
|
|
59
|
+
/**
|
|
60
|
+
* 取引期限変更
|
|
61
|
+
*/
|
|
62
|
+
updateExpires(params: {
|
|
63
|
+
typeOf: factory.transactionType.PlaceOrder;
|
|
64
|
+
id: string;
|
|
65
|
+
expires: Date;
|
|
66
|
+
}): Promise<void>;
|
|
67
|
+
/**
|
|
68
|
+
* 取引オブジェクトを更新
|
|
69
|
+
* 注文名称など
|
|
70
|
+
*/
|
|
71
|
+
updateObject(params: {
|
|
72
|
+
typeOf: factory.transactionType.PlaceOrder;
|
|
73
|
+
id: string;
|
|
74
|
+
object?: {
|
|
75
|
+
name?: string;
|
|
76
|
+
};
|
|
77
|
+
}): Promise<void>;
|
|
78
|
+
/**
|
|
79
|
+
* 特定の進行中取引を更新する(汎用)
|
|
80
|
+
*/
|
|
81
|
+
findByIdAndUpdateInProgress(params: {
|
|
82
|
+
id: string;
|
|
83
|
+
update: {
|
|
84
|
+
$set?: {
|
|
85
|
+
'object.paymentMethods'?: factory.transaction.placeOrder.IPaymentMethodByPaymentUrl;
|
|
86
|
+
};
|
|
87
|
+
};
|
|
88
|
+
}): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* 進行中取引のobjectに注文番号を保管する
|
|
91
|
+
*/
|
|
92
|
+
saveOrderNumberIfNotExist(params: {
|
|
93
|
+
id: string;
|
|
94
|
+
orderNumber: string;
|
|
95
|
+
}): Promise<{
|
|
96
|
+
modifiedCount: number;
|
|
97
|
+
}>;
|
|
98
|
+
saveConfirmationNumberIfNotExist(params: {
|
|
99
|
+
id: string;
|
|
100
|
+
status: {
|
|
101
|
+
$in: factory.transactionStatusType[];
|
|
102
|
+
};
|
|
103
|
+
confirmationNumber: string;
|
|
104
|
+
}): Promise<void>;
|
|
105
|
+
/**
|
|
106
|
+
* 進行中の注文取引を取得する
|
|
107
|
+
*/
|
|
108
|
+
findPlaceOrderInProgressById(params: {
|
|
109
|
+
typeOf: factory.transactionType.PlaceOrder;
|
|
110
|
+
id: string;
|
|
111
|
+
}, inclusion: IKeyOfProjection[]): Promise<ITransactionInProgress>;
|
|
112
|
+
/**
|
|
113
|
+
* 特定注文取引参照
|
|
114
|
+
*/
|
|
115
|
+
findPlaceOrderById(params: {
|
|
116
|
+
typeOf: factory.transactionType.PlaceOrder;
|
|
117
|
+
id: string;
|
|
118
|
+
}, inclusion: IKeyOfProjection[]): Promise<IPlaceOrder>;
|
|
119
|
+
/**
|
|
120
|
+
* 取引を開始する
|
|
121
|
+
*/
|
|
122
|
+
startPlaceOrder(params: factory.transaction.IStartParams<factory.transactionType.PlaceOrder>): Promise<IStartedPlaceOrder>;
|
|
123
|
+
/**
|
|
124
|
+
* 取引を確定する
|
|
125
|
+
*/
|
|
126
|
+
confirmPlaceOrder(params: {
|
|
127
|
+
typeOf: factory.transactionType.PlaceOrder;
|
|
128
|
+
id: string;
|
|
129
|
+
result: factory.transaction.IResult<factory.transactionType.PlaceOrder>;
|
|
130
|
+
potentialActions: factory.transaction.IPotentialActions<factory.transactionType.PlaceOrder>;
|
|
131
|
+
}): Promise<void>;
|
|
132
|
+
/**
|
|
133
|
+
* 取引を中止する
|
|
134
|
+
*/
|
|
135
|
+
cancelPlaceOrder(params: {
|
|
136
|
+
typeOf: factory.transactionType.PlaceOrder;
|
|
137
|
+
id: string;
|
|
138
|
+
}): Promise<void>;
|
|
139
|
+
}
|
|
140
|
+
export {};
|