@chevre/domain 21.20.0-alpha.2 → 21.20.0-alpha.22
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/example/src/chevre/onAssetTransactionStatusChanged.ts +36 -0
- package/example/src/chevre/retryTasks.ts +39 -0
- package/example/src/chevre/searchOrders.ts +13 -15
- package/example/src/chevre/searchSlicedAcceptedOffersByOrderNumber.ts +28 -0
- package/example/src/chevre/sendOrder.ts +37 -0
- package/example/src/chevre/transaction/processAcceptOffer.ts +48 -0
- package/example/src/chevre/transaction/processPlaceOrder.ts +82 -53
- package/lib/chevre/repo/acceptedOffer.d.ts +21 -1
- package/lib/chevre/repo/acceptedOffer.js +32 -2
- package/lib/chevre/repo/action.d.ts +13 -7
- package/lib/chevre/repo/action.js +33 -11
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +1 -1
- package/lib/chevre/repo/mongoose/schemas/order.js +20 -11
- package/lib/chevre/repo/order.js +28 -9
- package/lib/chevre/repo/orderInTransaction.d.ts +27 -0
- package/lib/chevre/repo/orderInTransaction.js +77 -0
- package/lib/chevre/repo/task.d.ts +0 -2
- package/lib/chevre/repo/task.js +56 -46
- package/lib/chevre/repo/transaction.d.ts +1 -1
- package/lib/chevre/repository.d.ts +5 -0
- package/lib/chevre/repository.js +15 -2
- package/lib/chevre/service/assetTransaction/pay.d.ts +0 -10
- package/lib/chevre/service/assetTransaction/pay.js +4 -4
- package/lib/chevre/service/code.js +1 -1
- package/lib/chevre/service/delivery.js +2 -2
- package/lib/chevre/service/event/createEvent.js +1 -1
- package/lib/chevre/service/event.js +2 -2
- package/lib/chevre/service/moneyTransfer.js +1 -1
- package/lib/chevre/service/notification.js +2 -5
- package/lib/chevre/service/offer/any.d.ts +29 -0
- package/lib/chevre/service/offer/any.js +55 -0
- package/lib/chevre/service/offer/event/authorize.d.ts +7 -0
- package/lib/chevre/service/offer/event/authorize.js +11 -0
- package/lib/chevre/service/offer/event/cancel.d.ts +2 -0
- package/lib/chevre/service/offer/event/cancel.js +12 -1
- package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -0
- package/lib/chevre/service/offer/event/voidTransaction.js +12 -5
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.d.ts +48 -0
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +133 -0
- package/lib/chevre/service/offer/eventServiceByCOA/cancel.d.ts +39 -0
- package/lib/chevre/service/offer/eventServiceByCOA/cancel.js +58 -0
- package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.d.ts +25 -0
- package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +156 -0
- package/lib/chevre/service/offer/eventServiceByCOA.d.ts +4 -89
- package/lib/chevre/service/offer/eventServiceByCOA.js +7 -292
- package/lib/chevre/service/offer/moneyTransfer/authorize.d.ts +6 -1
- package/lib/chevre/service/offer/moneyTransfer/authorize.js +2 -1
- package/lib/chevre/service/offer/moneyTransfer/returnMoneyTransfer.js +1 -1
- package/lib/chevre/service/offer/moneyTransfer/settleTransaction.js +1 -1
- package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +1 -1
- package/lib/chevre/service/offer/product.js +1 -1
- package/lib/chevre/service/order/confirmPayTransaction.js +3 -3
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +11 -1
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +113 -5
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered/factory.js +18 -19
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.js +38 -25
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +11 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.js +45 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.d.ts +14 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.js +37 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +10 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +86 -0
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +51 -36
- package/lib/chevre/service/order/onOrderStatusChanged.d.ts +3 -1
- package/lib/chevre/service/order/onOrderStatusChanged.js +5 -1
- package/lib/chevre/service/order/placeOrder.d.ts +2 -0
- package/lib/chevre/service/order/placeOrder.js +28 -29
- package/lib/chevre/service/order/returnOrder.js +25 -16
- package/lib/chevre/service/order/sendOrder.d.ts +5 -0
- package/lib/chevre/service/order/sendOrder.js +68 -30
- package/lib/chevre/service/payment/any.d.ts +6 -8
- package/lib/chevre/service/payment/any.js +46 -10
- package/lib/chevre/service/payment/creditCard.d.ts +9 -8
- package/lib/chevre/service/payment/creditCard.js +102 -133
- package/lib/chevre/service/payment/faceToFace.d.ts +0 -4
- package/lib/chevre/service/payment/movieTicket/checkByIdentifier.d.ts +0 -2
- package/lib/chevre/service/payment/movieTicket/checkByIdentifier.js +1 -0
- package/lib/chevre/service/payment/movieTicket/validation.d.ts +0 -2
- package/lib/chevre/service/payment/movieTicket.d.ts +0 -6
- package/lib/chevre/service/payment/movieTicket.js +1 -1
- package/lib/chevre/service/payment/paymentCard.d.ts +0 -2
- package/lib/chevre/service/payment/paymentCard.js +6 -6
- package/lib/chevre/service/payment.js +1 -1
- package/lib/chevre/service/product.js +1 -1
- package/lib/chevre/service/reserve/cancelReservation.js +2 -2
- package/lib/chevre/service/reserve/confirmReservation.js +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.d.ts +1 -1
- package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +4 -4
- package/lib/chevre/service/reserve/useReservation.d.ts +1 -2
- package/lib/chevre/service/reserve/useReservation.js +4 -4
- package/lib/chevre/service/reserve/verifyToken4reservation.js +2 -0
- package/lib/chevre/service/task/confirmRegisterServiceTransaction.js +1 -1
- package/lib/chevre/service/task/confirmReserveTransaction.d.ts +4 -1
- package/lib/chevre/service/task/confirmReserveTransaction.js +42 -3
- package/lib/chevre/service/task/onResourceUpdated/onResourceDeleted.js +7 -7
- package/lib/chevre/service/task/placeOrder.js +9 -10
- package/lib/chevre/service/task/returnOrder.js +0 -3
- package/lib/chevre/service/task/returnPayTransaction.js +1 -1
- package/lib/chevre/service/task/returnReserveTransaction.js +1 -1
- package/lib/chevre/service/task/sendOrder.js +8 -4
- package/lib/chevre/service/task/voidPayTransaction.js +2 -2
- package/lib/chevre/service/task/voidReserveTransaction.js +8 -12
- package/lib/chevre/service/transaction/deleteTransaction.js +1 -1
- package/lib/chevre/service/transaction/moneyTransfer.js +1 -5
- package/lib/chevre/service/transaction/placeOrderInProgress/potentialActions.js +18 -13
- package/lib/chevre/service/transaction/placeOrderInProgress.js +2 -2
- package/lib/chevre/service/transaction/returnOrder/preStart.d.ts +32 -0
- package/lib/chevre/service/transaction/returnOrder/preStart.js +632 -0
- package/lib/chevre/service/transaction/returnOrder.d.ts +8 -6
- package/lib/chevre/service/transaction/returnOrder.js +4 -616
- package/lib/chevre/settings.d.ts +3 -1
- package/lib/chevre/settings.js +7 -2
- package/package.json +3 -3
|
@@ -9,10 +9,12 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
9
9
|
});
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
-
exports.paymentDue2Processing = exports.onAssetTransactionStatusChanged = void 0;
|
|
12
|
+
exports.processing2inTransit = exports.paymentDue2Processing = exports.onAssetTransactionStatusChanged = void 0;
|
|
13
13
|
const findPlaceOrderTransaction_1 = require("./findPlaceOrderTransaction");
|
|
14
14
|
const onOrderStatusChanged_1 = require("./onOrderStatusChanged");
|
|
15
15
|
const factory = require("../../factory");
|
|
16
|
+
const settings_1 = require("../../settings");
|
|
17
|
+
// tslint:disable-next-line:max-func-body-length
|
|
16
18
|
function onAssetTransactionStatusChanged(params) {
|
|
17
19
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
18
20
|
var _a, _b, _c, _d, _e;
|
|
@@ -21,10 +23,10 @@ function onAssetTransactionStatusChanged(params) {
|
|
|
21
23
|
}
|
|
22
24
|
switch (params.object.status) {
|
|
23
25
|
case factory.transactionStatusType.Confirmed:
|
|
26
|
+
const orderNumber = (_a = params.purpose) === null || _a === void 0 ? void 0 : _a.orderNumber;
|
|
27
|
+
const confirmationNumber = (_b = params.purpose) === null || _b === void 0 ? void 0 : _b.confirmationNumber;
|
|
24
28
|
switch (params.object.typeOf) {
|
|
25
29
|
case factory.assetTransactionType.Pay:
|
|
26
|
-
const orderNumber = (_a = params.purpose) === null || _a === void 0 ? void 0 : _a.orderNumber;
|
|
27
|
-
const confirmationNumber = (_b = params.purpose) === null || _b === void 0 ? void 0 : _b.confirmationNumber;
|
|
28
30
|
// 確定時の決済方法区分指定(2023-08-29~)
|
|
29
31
|
const specifiedPaymentMethodIdentifire = (_e = (_d = (_c = params.object) === null || _c === void 0 ? void 0 : _c.object) === null || _d === void 0 ? void 0 : _d.paymentMethod) === null || _e === void 0 ? void 0 : _e.identifier;
|
|
30
32
|
if (typeof specifiedPaymentMethodIdentifire === 'string' && specifiedPaymentMethodIdentifire.length > 0) {
|
|
@@ -48,6 +50,34 @@ function onAssetTransactionStatusChanged(params) {
|
|
|
48
50
|
}
|
|
49
51
|
}
|
|
50
52
|
break;
|
|
53
|
+
case 'COAReserveTransaction':
|
|
54
|
+
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
55
|
+
// 基本的に1注文に1予約番号なのでdeliverable = true
|
|
56
|
+
const deliverable = true;
|
|
57
|
+
if (deliverable) {
|
|
58
|
+
yield processing2inTransit({
|
|
59
|
+
project: { id: params.project.id },
|
|
60
|
+
// confirmationNumber,
|
|
61
|
+
orderNumber,
|
|
62
|
+
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
63
|
+
})(repos);
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
break;
|
|
67
|
+
case factory.assetTransactionType.Reserve:
|
|
68
|
+
if (typeof orderNumber === 'string' && typeof confirmationNumber === 'string') {
|
|
69
|
+
// ReserveTransactionのステータス検証
|
|
70
|
+
const deliverable = yield isDeliverable({ project: { id: params.project.id }, orderNumber })(repos);
|
|
71
|
+
if (deliverable) {
|
|
72
|
+
yield processing2inTransit({
|
|
73
|
+
project: { id: params.project.id },
|
|
74
|
+
// confirmationNumber,
|
|
75
|
+
orderNumber,
|
|
76
|
+
useOnOrderStatusChanged: params.useOnOrderStatusChanged
|
|
77
|
+
})(repos);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
break;
|
|
51
81
|
default:
|
|
52
82
|
// no op
|
|
53
83
|
}
|
|
@@ -150,14 +180,15 @@ function paymentDue2Processing(params) {
|
|
|
150
180
|
}
|
|
151
181
|
catch (error) {
|
|
152
182
|
let throwsError = true;
|
|
153
|
-
//
|
|
183
|
+
// すでにステータスが進行していた場合、OrderPaymentDue->OrderProcessingの処理自体は成功しているので、後処理を続行する
|
|
154
184
|
order = yield repos.order.findByOrderNumber({
|
|
155
185
|
orderNumber: params.orderNumber,
|
|
156
186
|
project: { id: params.project.id },
|
|
157
187
|
inclusion: [],
|
|
158
188
|
exclusion: ['acceptedOffers']
|
|
159
189
|
});
|
|
160
|
-
if (order.orderStatus === factory.orderStatus.
|
|
190
|
+
if (order.orderStatus === factory.orderStatus.OrderInTransit
|
|
191
|
+
|| order.orderStatus === factory.orderStatus.OrderDelivered
|
|
161
192
|
|| order.orderStatus === factory.orderStatus.OrderReturned) {
|
|
162
193
|
throwsError = false;
|
|
163
194
|
}
|
|
@@ -230,3 +261,80 @@ function cancelOrderIfExist(params) {
|
|
|
230
261
|
}
|
|
231
262
|
});
|
|
232
263
|
}
|
|
264
|
+
function isDeliverable(params) {
|
|
265
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
266
|
+
// 注文のreservationNumberを取得
|
|
267
|
+
const reservationNumbers = yield repos.acceptedOffer.distinctValues({ orderNumber: { $in: [params.orderNumber] } }, 'acceptedOffers.itemOffered.reservationNumber');
|
|
268
|
+
// ReserveTransactionのステータス検証
|
|
269
|
+
let allReserveTransactionConfirmed = false;
|
|
270
|
+
if (reservationNumbers.length > 0) {
|
|
271
|
+
// console.log('is deliverable?...', params.orderNumber, reservationNumbers);
|
|
272
|
+
const referencedReserveTransactions = yield repos.assetTransaction.search({
|
|
273
|
+
project: { id: { $eq: params.project.id } },
|
|
274
|
+
typeOf: factory.assetTransactionType.Reserve,
|
|
275
|
+
transactionNumber: { $in: reservationNumbers }
|
|
276
|
+
}, ['status']);
|
|
277
|
+
// console.log('referencedReserveTransactions:', referencedReserveTransactions);
|
|
278
|
+
allReserveTransactionConfirmed =
|
|
279
|
+
referencedReserveTransactions.length === reservationNumbers.length
|
|
280
|
+
&& referencedReserveTransactions.every(({ status }) => status === factory.transactionStatusType.Confirmed);
|
|
281
|
+
}
|
|
282
|
+
else {
|
|
283
|
+
allReserveTransactionConfirmed = true;
|
|
284
|
+
}
|
|
285
|
+
return allReserveTransactionConfirmed;
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
function processing2inTransit(params) {
|
|
289
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
290
|
+
// const placeOrderTransaction = await findPlaceOrderTransaction({
|
|
291
|
+
// project: { id: params.project.id },
|
|
292
|
+
// confirmationNumber: params.confirmationNumber,
|
|
293
|
+
// orderNumber: params.orderNumber
|
|
294
|
+
// })({ transaction: repos.transaction });
|
|
295
|
+
let order = yield repos.order.findByOrderNumber({
|
|
296
|
+
orderNumber: params.orderNumber,
|
|
297
|
+
project: { id: params.project.id },
|
|
298
|
+
inclusion: [],
|
|
299
|
+
exclusion: ['acceptedOffers']
|
|
300
|
+
});
|
|
301
|
+
try {
|
|
302
|
+
if (settings_1.USE_ORDER_IN_TRANSIT) {
|
|
303
|
+
order = yield repos.order.changeStatus({
|
|
304
|
+
project: { id: order.project.id },
|
|
305
|
+
orderNumber: params.orderNumber,
|
|
306
|
+
orderStatus: factory.orderStatus.OrderInTransit,
|
|
307
|
+
previousOrderStatus: factory.orderStatus.OrderProcessing
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
catch (error) {
|
|
312
|
+
let throwsError = true;
|
|
313
|
+
// すでにステータスが進行していた場合、OrderProcessing->OrderInTransitの処理自体は成功しているので、後処理を続行する
|
|
314
|
+
order = yield repos.order.findByOrderNumber({
|
|
315
|
+
orderNumber: params.orderNumber,
|
|
316
|
+
project: { id: params.project.id },
|
|
317
|
+
inclusion: [],
|
|
318
|
+
exclusion: ['acceptedOffers']
|
|
319
|
+
});
|
|
320
|
+
if (order.orderStatus === factory.orderStatus.OrderDelivered
|
|
321
|
+
|| order.orderStatus === factory.orderStatus.OrderReturned) {
|
|
322
|
+
throwsError = false;
|
|
323
|
+
}
|
|
324
|
+
if (throwsError) {
|
|
325
|
+
throw error;
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
if (params.useOnOrderStatusChanged) {
|
|
329
|
+
yield (0, onOrderStatusChanged_1.onOrderInTransit)({
|
|
330
|
+
order: Object.assign(Object.assign({}, order), { orderStatus: (settings_1.USE_ORDER_IN_TRANSIT)
|
|
331
|
+
? factory.orderStatus.OrderInTransit
|
|
332
|
+
: factory.orderStatus.OrderProcessing })
|
|
333
|
+
// placeOrderTransaction
|
|
334
|
+
})({
|
|
335
|
+
task: repos.task
|
|
336
|
+
});
|
|
337
|
+
}
|
|
338
|
+
});
|
|
339
|
+
}
|
|
340
|
+
exports.processing2inTransit = processing2inTransit;
|
|
@@ -86,25 +86,24 @@ function createOnOrderSentTasksByTransaction(params) {
|
|
|
86
86
|
};
|
|
87
87
|
}));
|
|
88
88
|
}
|
|
89
|
-
//
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
}
|
|
89
|
+
// createSendEmailMessageTaskIfNotExistへ移行(2024-01-12~)
|
|
90
|
+
// if (Array.isArray(potentialActions.sendEmailMessage)) {
|
|
91
|
+
// potentialActions.sendEmailMessage.forEach((s) => {
|
|
92
|
+
// const sendEmailMessageTask: factory.task.IAttributes<factory.taskName.SendEmailMessage> = {
|
|
93
|
+
// project: s.project,
|
|
94
|
+
// name: factory.taskName.SendEmailMessage,
|
|
95
|
+
// status: factory.taskStatus.Ready,
|
|
96
|
+
// runsAt: now, // なるはやで実行
|
|
97
|
+
// remainingNumberOfTries: 3,
|
|
98
|
+
// numberOfTried: 0,
|
|
99
|
+
// executionResults: [],
|
|
100
|
+
// data: {
|
|
101
|
+
// actionAttributes: s
|
|
102
|
+
// }
|
|
103
|
+
// };
|
|
104
|
+
// taskAttributes.push(sendEmailMessageTask);
|
|
105
|
+
// });
|
|
106
|
+
// }
|
|
108
107
|
}
|
|
109
108
|
return taskAttributes;
|
|
110
109
|
}
|
|
@@ -14,6 +14,7 @@ exports.onOrderDelivered = void 0;
|
|
|
14
14
|
* 注文ステータス変更時処理
|
|
15
15
|
*/
|
|
16
16
|
const createDebug = require("debug");
|
|
17
|
+
const util = require("util");
|
|
17
18
|
const factory = require("../../../factory");
|
|
18
19
|
const factory_1 = require("./onOrderDelivered/factory");
|
|
19
20
|
const debug = createDebug('chevre-domain:service:order');
|
|
@@ -22,43 +23,55 @@ function onOrderDelivered(params) {
|
|
|
22
23
|
var _a, _b, _c, _d, _e;
|
|
23
24
|
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
24
25
|
let tasks = [];
|
|
26
|
+
const sendOrderPotentialActions = (_e = (_d = (_c = (_b = (_a = params.placeOrderTransaction) === null || _a === void 0 ? void 0 : _a.potentialActions) === null || _b === void 0 ? void 0 : _b.order) === null || _c === void 0 ? void 0 : _c.potentialActions) === null || _d === void 0 ? void 0 : _d.sendOrder) === null || _e === void 0 ? void 0 : _e.potentialActions;
|
|
25
27
|
switch (params.order.orderStatus) {
|
|
26
28
|
case factory.orderStatus.OrderDelivered:
|
|
27
29
|
tasks = [
|
|
28
30
|
...(0, factory_1.createInformTasks)(params.order),
|
|
29
|
-
// 取引のpotentialActionsを適用(2023-08-17~)
|
|
30
31
|
...(0, factory_1.createOnOrderSentTasksByTransaction)({
|
|
31
|
-
potentialActions:
|
|
32
|
+
potentialActions: sendOrderPotentialActions
|
|
32
33
|
})
|
|
33
34
|
];
|
|
34
|
-
// プロダクト登録プロセスロック解除
|
|
35
|
-
try {
|
|
36
|
-
const placeOrderTransaction = params.placeOrderTransaction;
|
|
37
|
-
if (typeof (placeOrderTransaction === null || placeOrderTransaction === void 0 ? void 0 : placeOrderTransaction.id) === 'string') {
|
|
38
|
-
// 廃止(2023-12-07~)
|
|
39
|
-
// プロダクト登録プロセスロック解除(orderからproductIdを抽出する)
|
|
40
|
-
// const productIds4unlock = params.order.acceptedOffers
|
|
41
|
-
// .filter((o) => o.itemOffered.typeOf === factory.permit.PermitType.Permit
|
|
42
|
-
// && typeof o.itemOffered.issuedThrough?.id === 'string'
|
|
43
|
-
// && o.itemOffered.issuedThrough.id.length > 0)
|
|
44
|
-
// .map((o) => String((<factory.order.IPermit>o.itemOffered).issuedThrough?.id));
|
|
45
|
-
// await Promise.all(productIds4unlock.map(async (productId) => {
|
|
46
|
-
// await processUnlockRegisterMembershipService({
|
|
47
|
-
// agent: { id: String(params.order.customer.id) },
|
|
48
|
-
// product: { id: productId },
|
|
49
|
-
// purpose: { typeOf: placeOrderTransaction.typeOf, id: placeOrderTransaction.id }
|
|
50
|
-
// })(repos);
|
|
51
|
-
// }));
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
catch (error) {
|
|
55
|
-
throw error;
|
|
56
|
-
}
|
|
57
35
|
break;
|
|
58
36
|
default:
|
|
59
37
|
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
60
38
|
}
|
|
61
39
|
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
40
|
+
switch (params.order.orderStatus) {
|
|
41
|
+
case factory.orderStatus.OrderDelivered:
|
|
42
|
+
yield createSendEmailMessageTaskIfNotExist({
|
|
43
|
+
potentialActions: sendOrderPotentialActions
|
|
44
|
+
})(repos);
|
|
45
|
+
break;
|
|
46
|
+
default:
|
|
47
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
48
|
+
}
|
|
62
49
|
});
|
|
63
50
|
}
|
|
64
51
|
exports.onOrderDelivered = onOrderDelivered;
|
|
52
|
+
function createSendEmailMessageTaskIfNotExist(params) {
|
|
53
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
54
|
+
var _a;
|
|
55
|
+
const sendEmailMessageActions = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.sendEmailMessage;
|
|
56
|
+
const now = new Date();
|
|
57
|
+
if (Array.isArray(sendEmailMessageActions)) {
|
|
58
|
+
yield Promise.all(sendEmailMessageActions.map((sendEmailMessageAction, index) => __awaiter(this, void 0, void 0, function* () {
|
|
59
|
+
const taskIdentifier = util.format('%s:%s:%s:%s:%s:%s', sendEmailMessageAction.project.id, factory.taskName.SendEmailMessage, sendEmailMessageAction.purpose.typeOf, sendEmailMessageAction.purpose.orderNumber, factory.orderStatus.OrderDelivered, index);
|
|
60
|
+
const sendEmailMessageTask = {
|
|
61
|
+
identifier: taskIdentifier,
|
|
62
|
+
project: sendEmailMessageAction.project,
|
|
63
|
+
name: factory.taskName.SendEmailMessage,
|
|
64
|
+
status: factory.taskStatus.Ready,
|
|
65
|
+
runsAt: now,
|
|
66
|
+
remainingNumberOfTries: 10,
|
|
67
|
+
numberOfTried: 0,
|
|
68
|
+
executionResults: [],
|
|
69
|
+
data: {
|
|
70
|
+
actionAttributes: sendEmailMessageAction
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
yield repos.task.createIfNotExistByIdentifier(sendEmailMessageTask, { emitImmediately: true });
|
|
74
|
+
})));
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as factory from '../../../../factory';
|
|
2
|
+
declare function createNextSendOrderTasks(params: {
|
|
3
|
+
order: Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
|
|
4
|
+
acceptedOffers: {
|
|
5
|
+
limit: number;
|
|
6
|
+
page: number;
|
|
7
|
+
};
|
|
8
|
+
orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
9
|
+
};
|
|
10
|
+
}): (import("@chevre/factory/lib/task").IAttributes | import("@chevre/factory/lib/task/confirmMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/confirmRegisterService").IAttributes | import("@chevre/factory/lib/task/confirmPayTransaction").IAttributes | import("@chevre/factory/lib/task/confirmRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/confirmReserveTransaction").IAttributes | import("@chevre/factory/lib/task/createEvent").IAttributes | import("@chevre/factory/lib/task/deleteTransaction").IAttributes | import("@chevre/factory/lib/task/givePointAward").IAttributes | import("@chevre/factory/lib/task/onAssetTransactionStatusChanged").IAttributes | import("@chevre/factory/lib/task/onAuthorizationCreated").IAttributes | import("@chevre/factory/lib/task/onEventChanged").IAttributes | import("@chevre/factory/lib/task/onResourceUpdated").IAttributes | import("@chevre/factory/lib/task/onOrderPaymentCompleted").IAttributes | import("@chevre/factory/lib/task/placeOrder").IAttributes | import("@chevre/factory/lib/task/returnOrder").IAttributes | import("@chevre/factory/lib/task/returnMoneyTransfer").IAttributes | import("@chevre/factory/lib/task/returnPayTransaction").IAttributes | import("@chevre/factory/lib/task/returnPointAward").IAttributes | import("@chevre/factory/lib/task/returnReserveTransaction").IAttributes | import("@chevre/factory/lib/task/sendEmailMessage").IAttributes | import("@chevre/factory/lib/task/sendOrder").IAttributes | import("@chevre/factory/lib/task/syncScreeningRooms").IAttributes | import("@chevre/factory/lib/task/triggerWebhook").IAttributes | import("@chevre/factory/lib/task/useReservation").IAttributes | import("@chevre/factory/lib/task/voidMoneyTransferTransaction").IAttributes | import("@chevre/factory/lib/task/voidPayTransaction").IAttributes | import("@chevre/factory/lib/task/voidRegisterServiceTransaction").IAttributes | import("@chevre/factory/lib/task/voidReserveTransaction").IAttributes)[];
|
|
11
|
+
export { createNextSendOrderTasks };
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createNextSendOrderTasks = void 0;
|
|
4
|
+
const factory = require("../../../../factory");
|
|
5
|
+
const order_1 = require("../../../../factory/order");
|
|
6
|
+
function createNextSendOrderTasks(params) {
|
|
7
|
+
const now = new Date();
|
|
8
|
+
const taskAttributes = [];
|
|
9
|
+
const maskedCustomer = (0, order_1.createMaskedCustomer)({ customer: params.order.customer }, { noProfile: true });
|
|
10
|
+
const simpleOrder = {
|
|
11
|
+
typeOf: params.order.typeOf,
|
|
12
|
+
seller: {
|
|
13
|
+
id: params.order.seller.id,
|
|
14
|
+
typeOf: params.order.seller.typeOf,
|
|
15
|
+
name: params.order.seller.name
|
|
16
|
+
},
|
|
17
|
+
// mask
|
|
18
|
+
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
19
|
+
orderNumber: params.order.orderNumber,
|
|
20
|
+
price: params.order.price,
|
|
21
|
+
priceCurrency: params.order.priceCurrency,
|
|
22
|
+
orderDate: params.order.orderDate
|
|
23
|
+
};
|
|
24
|
+
const sendOrderObject = Object.assign(Object.assign({}, simpleOrder), { acceptedOffers: {
|
|
25
|
+
limit: params.order.acceptedOffers.limit,
|
|
26
|
+
page: params.order.acceptedOffers.page + 1
|
|
27
|
+
} });
|
|
28
|
+
const sendOrderTaskData = {
|
|
29
|
+
project: params.order.project,
|
|
30
|
+
object: Object.assign(Object.assign({}, sendOrderObject), { confirmationNumber: params.order.confirmationNumber, previousOrderStatus: params.order.orderStatus })
|
|
31
|
+
};
|
|
32
|
+
const sendOrderTask = {
|
|
33
|
+
project: params.order.project,
|
|
34
|
+
name: factory.taskName.SendOrder,
|
|
35
|
+
status: factory.taskStatus.Ready,
|
|
36
|
+
runsAt: now,
|
|
37
|
+
remainingNumberOfTries: 10,
|
|
38
|
+
numberOfTried: 0,
|
|
39
|
+
executionResults: [],
|
|
40
|
+
data: sendOrderTaskData
|
|
41
|
+
};
|
|
42
|
+
taskAttributes.push(sendOrderTask);
|
|
43
|
+
return taskAttributes;
|
|
44
|
+
}
|
|
45
|
+
exports.createNextSendOrderTasks = createNextSendOrderTasks;
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
declare function onOrderDeliveredPartially(params: {
|
|
4
|
+
order: Pick<factory.order.IOrder, 'confirmationNumber' | 'project' | 'typeOf' | 'seller' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'customer' | 'id'> & {
|
|
5
|
+
acceptedOffers: {
|
|
6
|
+
limit: number;
|
|
7
|
+
page: number;
|
|
8
|
+
};
|
|
9
|
+
orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
10
|
+
};
|
|
11
|
+
}): (repos: {
|
|
12
|
+
task: TaskRepo;
|
|
13
|
+
}) => Promise<void>;
|
|
14
|
+
export { onOrderDeliveredPartially };
|
|
@@ -0,0 +1,37 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.onOrderDeliveredPartially = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文ステータス変更時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const factory_1 = require("./onOrderDeliveredPartially/factory");
|
|
19
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
20
|
+
// type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'project' | 'typeOf' | 'potentialActions'>;
|
|
21
|
+
function onOrderDeliveredPartially(params) {
|
|
22
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
23
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
24
|
+
let tasks = [];
|
|
25
|
+
switch (params.order.orderStatus) {
|
|
26
|
+
case factory.orderStatus.OrderInTransit:
|
|
27
|
+
case factory.orderStatus.OrderProcessing:
|
|
28
|
+
// 次の配送タスクを作成
|
|
29
|
+
tasks = (0, factory_1.createNextSendOrderTasks)({ order: params.order });
|
|
30
|
+
break;
|
|
31
|
+
default:
|
|
32
|
+
throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
|
|
33
|
+
}
|
|
34
|
+
yield repos.task.saveMany(tasks, { emitImmediately: true });
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
exports.onOrderDeliveredPartially = onOrderDeliveredPartially;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
|
+
import * as factory from '../../../factory';
|
|
3
|
+
declare function onOrderInTransit(params: {
|
|
4
|
+
order: Omit<factory.order.IOrder, 'orderStatus'> & {
|
|
5
|
+
orderStatus: factory.orderStatus.OrderProcessing | factory.orderStatus.OrderInTransit;
|
|
6
|
+
};
|
|
7
|
+
}): (repos: {
|
|
8
|
+
task: TaskRepo;
|
|
9
|
+
}) => Promise<void>;
|
|
10
|
+
export { onOrderInTransit };
|
|
@@ -0,0 +1,86 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.onOrderInTransit = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* 注文処理時処理
|
|
15
|
+
*/
|
|
16
|
+
const createDebug = require("debug");
|
|
17
|
+
const factory = require("../../../factory");
|
|
18
|
+
const order_1 = require("../../../factory/order");
|
|
19
|
+
const settings_1 = require("../../../settings");
|
|
20
|
+
// import {
|
|
21
|
+
// IExternalOrder
|
|
22
|
+
// } from './onOrderProcessing/factory';
|
|
23
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
24
|
+
// type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'typeOf' | 'potentialActions'>;
|
|
25
|
+
function onOrderInTransit(params) {
|
|
26
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
|
|
28
|
+
// let tasks: factory.task.IAttributes<factory.taskName>[] = [];
|
|
29
|
+
// await repos.task.saveMany(tasks, { emitImmediately: true });
|
|
30
|
+
switch (params.order.orderStatus) {
|
|
31
|
+
case factory.orderStatus.OrderInTransit:
|
|
32
|
+
case factory.orderStatus.OrderProcessing:
|
|
33
|
+
// 冗長なsendOrderタスク作成を回避(2023-08-25~)
|
|
34
|
+
yield createSendOrderTransactionTaskIfNotExist({
|
|
35
|
+
order: params.order
|
|
36
|
+
// potentialActions: params.placeOrderTransaction?.potentialActions?.order?.potentialActions
|
|
37
|
+
})(repos);
|
|
38
|
+
break;
|
|
39
|
+
default:
|
|
40
|
+
}
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
exports.onOrderInTransit = onOrderInTransit;
|
|
44
|
+
function createSendOrderTransactionTaskIfNotExist(params) {
|
|
45
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
46
|
+
const now = new Date();
|
|
47
|
+
const maskedCustomer = (0, order_1.createMaskedCustomer)({ customer: params.order.customer }, { noProfile: true });
|
|
48
|
+
const simpleOrder = {
|
|
49
|
+
typeOf: params.order.typeOf,
|
|
50
|
+
seller: {
|
|
51
|
+
id: params.order.seller.id,
|
|
52
|
+
typeOf: params.order.seller.typeOf,
|
|
53
|
+
name: params.order.seller.name
|
|
54
|
+
},
|
|
55
|
+
// mask
|
|
56
|
+
customer: { typeOf: maskedCustomer.typeOf, id: maskedCustomer.id },
|
|
57
|
+
orderNumber: params.order.orderNumber,
|
|
58
|
+
price: params.order.price,
|
|
59
|
+
priceCurrency: params.order.priceCurrency,
|
|
60
|
+
orderDate: params.order.orderDate
|
|
61
|
+
};
|
|
62
|
+
const sendOrderObject = Object.assign(Object.assign({}, simpleOrder), { acceptedOffers: {
|
|
63
|
+
limit: settings_1.DELIVER_ORDER_LIMIT,
|
|
64
|
+
page: 1 // page1から配送
|
|
65
|
+
} });
|
|
66
|
+
const sendOrderTaskData = {
|
|
67
|
+
project: params.order.project,
|
|
68
|
+
object: Object.assign(Object.assign({}, sendOrderObject), { confirmationNumber: params.order.confirmationNumber, previousOrderStatus: params.order.orderStatus })
|
|
69
|
+
};
|
|
70
|
+
const taskIdentifier = `${sendOrderTaskData.project.id}:${factory.taskName.SendOrder}:${sendOrderTaskData.object.typeOf}:${sendOrderTaskData.object.orderNumber}`;
|
|
71
|
+
const sendOrderTask = {
|
|
72
|
+
identifier: taskIdentifier,
|
|
73
|
+
project: params.order.project,
|
|
74
|
+
name: factory.taskName.SendOrder,
|
|
75
|
+
status: factory.taskStatus.Ready,
|
|
76
|
+
runsAt: now,
|
|
77
|
+
remainingNumberOfTries: 10,
|
|
78
|
+
numberOfTried: 0,
|
|
79
|
+
executionResults: [],
|
|
80
|
+
data: sendOrderTaskData
|
|
81
|
+
};
|
|
82
|
+
debug('processing createSendOrderTaskIfNotExist...', sendOrderTask);
|
|
83
|
+
// await repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
|
|
84
|
+
yield repos.task.createIfNotExistByIdentifier(sendOrderTask, { emitImmediately: true });
|
|
85
|
+
});
|
|
86
|
+
}
|