@chevre/domain 25.0.0-alpha.2 → 25.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/emailMessageBuilder.d.ts +10 -4
- package/lib/chevre/emailMessageBuilder.js +48 -73
- package/lib/chevre/repo/acceptedOffer.d.ts +1 -5
- package/lib/chevre/repo/acceptedOffer.js +5 -5
- package/lib/chevre/repo/acceptedOfferInReserve.d.ts +1 -5
- package/lib/chevre/repo/acceptedOfferInReserve.js +4 -4
- package/lib/chevre/repo/emailMessage.d.ts +18 -9
- package/lib/chevre/repo/emailMessage.js +26 -36
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.d.ts +1 -3
- package/lib/chevre/repo/factory/acceptedOffer/reserveTransaction2itemOffered.js +2 -3
- package/lib/chevre/repo/mongoose/schemas/emailMessages.d.ts +9 -1
- package/lib/chevre/repo/mongoose/schemas/emailMessages.js +5 -20
- package/lib/chevre/repo/mongoose/schemas/order.d.ts +4 -0
- package/lib/chevre/repo/mongoose/schemas/order.js +11 -110
- package/lib/chevre/repo/mongoose/schemas/setting.d.ts +0 -6
- package/lib/chevre/repo/order.d.ts +3 -7
- package/lib/chevre/repo/order.js +56 -26
- package/lib/chevre/repo/orderInTransaction.d.ts +50 -33
- package/lib/chevre/repo/orderInTransaction.js +109 -73
- package/lib/chevre/repo/orderNumber.d.ts +4 -0
- package/lib/chevre/repo/orderNumber.js +32 -60
- package/lib/chevre/repo/passport.d.ts +5 -2
- package/lib/chevre/repo/task.d.ts +1 -1
- package/lib/chevre/repo/transaction/placeOrder.d.ts +1 -6
- package/lib/chevre/repo/transaction/placeOrder.js +37 -26
- package/lib/chevre/repo/transaction.d.ts +6 -2
- package/lib/chevre/repo/transaction.js +6 -2
- package/lib/chevre/service/assetTransaction/reserve/start.d.ts +0 -2
- package/lib/chevre/service/offer/any.d.ts +3 -8
- package/lib/chevre/service/offer/any.js +7 -6
- package/lib/chevre/service/offer/event/authorize/processStartReserve4chevre.d.ts +0 -2
- package/lib/chevre/service/offer/event/authorize.d.ts +0 -4
- package/lib/chevre/service/offer/event/authorize.js +5 -6
- package/lib/chevre/service/offer/event/voidTransaction.js +29 -17
- package/lib/chevre/service/offer/event/voidTransactionByActionId.js +16 -12
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +0 -6
- package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +10 -12
- package/lib/chevre/service/offer/eventServiceByCOA/authorize/factory.d.ts +1 -1
- package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +7 -7
- package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +21 -17
- package/lib/chevre/service/order/deleteOrder.d.ts +6 -10
- package/lib/chevre/service/order/deleteOrder.js +8 -49
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderCancelled/factory.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially/factory.d.ts +1 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.d.ts +4 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderPaymentDue.js +1 -26
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderReturned/factory.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +3 -2
- package/lib/chevre/service/order/placeOrder/factory.d.ts +1 -1
- package/lib/chevre/service/order/placeOrder/factory.js +10 -8
- package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.d.ts +1 -3
- package/lib/chevre/service/order/placeOrder/voidAcceptedOfferIfNecessary.js +3 -15
- package/lib/chevre/service/order/placeOrder.js +6 -6
- package/lib/chevre/service/order.d.ts +1 -2
- package/lib/chevre/service/order.js +1 -5
- package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.d.ts +2 -4
- package/lib/chevre/service/payment/any/authorize/fixOrderAsNeeded.js +4 -6
- package/lib/chevre/service/payment/any/authorize.d.ts +2 -0
- package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +0 -4
- package/lib/chevre/service/payment/any/publishPaymentUrl.js +5 -8
- package/lib/chevre/service/reserve/findByCode.js +1 -1
- package/lib/chevre/service/reserve/searchByOrder.js +1 -1
- package/lib/chevre/service/task/acceptCOAOffer.js +8 -10
- package/lib/chevre/service/task/authorizePayment.js +2 -6
- package/lib/chevre/service/task/confirmReserveTransaction.js +1 -1
- package/lib/chevre/service/task/deleteTransaction.js +0 -8
- package/lib/chevre/service/task/payment/payByTask.js +1 -1
- package/lib/chevre/service/task/publishPaymentUrl.js +6 -9
- package/lib/chevre/service/taskHandler.js +0 -1
- package/lib/chevre/service/transaction/deleteTransaction.d.ts +8 -14
- package/lib/chevre/service/transaction/deleteTransaction.js +11 -117
- package/lib/chevre/service/transaction/placeOrder/confirm/factory/result.d.ts +7 -2
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.d.ts +3 -3
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js +8 -23
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.d.ts +3 -3
- package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions.js +1 -6
- package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -7
- package/lib/chevre/service/transaction/placeOrder/confirm.js +42 -36
- package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.d.ts +5 -0
- package/lib/chevre/service/transaction/placeOrder/issueOrderNumberIfNotExist.js +37 -23
- package/lib/chevre/service/transaction/placeOrder/start/factory.d.ts +19 -4
- package/lib/chevre/service/transaction/placeOrder/start/factory.js +23 -12
- package/lib/chevre/service/transaction/placeOrder/start.d.ts +9 -4
- package/lib/chevre/service/transaction/placeOrder/start.js +18 -1
- package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +0 -4
- package/lib/chevre/service/transaction/placeOrder/updateAgent.js +20 -22
- package/lib/chevre/service/transaction/placeOrder.d.ts +1 -2
- package/lib/chevre/service/transaction/placeOrder.js +1 -3
- package/lib/chevre/service/transaction/returnOrder/potentialActions/returnPaymentMethod.js +2 -37
- package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.d.ts +2 -2
- package/lib/chevre/service/transaction/returnOrder/potentialActions/sendEmailMessage.js +3 -18
- package/lib/chevre/service/transaction/returnOrder/potentialActions.d.ts +0 -1
- package/lib/chevre/service/transaction/returnOrder/potentialActions.js +0 -4
- package/lib/chevre/service/transaction/returnOrder/preStart.js +1 -1
- package/lib/chevre/service/transaction/returnOrder.d.ts +0 -2
- package/lib/chevre/service/transaction/returnOrder.js +13 -12
- package/lib/chevre/service/validation/validateOrder.js +1 -1
- package/lib/chevre/service.d.ts +0 -2
- package/lib/chevre/service.js +0 -2
- package/package.json +2 -2
- package/lib/chevre/factory/order.d.ts +0 -2
- package/lib/chevre/factory/order.js +0 -5
- package/lib/chevre/service/order/placeOrderWithoutTransaction.d.ts +0 -22
- package/lib/chevre/service/order/placeOrderWithoutTransaction.js +0 -51
- package/lib/chevre/service/task/deletePerson.d.ts +0 -6
- package/lib/chevre/service/task/deletePerson.js +0 -465
|
@@ -3,35 +3,29 @@ import type { AcceptedOfferRepo } from '../../repo/acceptedOffer';
|
|
|
3
3
|
import type { AccountingReportRepo } from '../../repo/accountingReport';
|
|
4
4
|
import type { ActionRepo } from '../../repo/action';
|
|
5
5
|
import type { AssetTransactionRepo } from '../../repo/assetTransaction';
|
|
6
|
-
import type { EventRepo } from '../../repo/event';
|
|
7
6
|
import type { MessageRepo } from '../../repo/message';
|
|
8
7
|
import type { NoteRepo } from '../../repo/note';
|
|
9
8
|
import type { OrderRepo } from '../../repo/order';
|
|
10
|
-
import type { OwnershipInfoRepo } from '../../repo/ownershipInfo';
|
|
11
9
|
import type { ReservationRepo } from '../../repo/reservation';
|
|
12
|
-
import type { SettingRepo } from '../../repo/setting';
|
|
13
|
-
import type { TaskRepo } from '../../repo/task';
|
|
14
10
|
import type { TransactionRepo } from '../../repo/transaction';
|
|
15
11
|
import type { PlaceOrderRepo } from '../../repo/transaction/placeOrder';
|
|
16
12
|
import type { ReturnOrderRepo } from '../../repo/transaction/returnOrder';
|
|
17
|
-
|
|
18
|
-
* 取引に関わるリソースを削除する
|
|
19
|
-
* 冪等性を確保すること
|
|
20
|
-
*/
|
|
21
|
-
export declare function deleteTransaction(params: factory.task.IData<factory.taskName.DeleteTransaction>): (repos: {
|
|
13
|
+
interface IDeleteTransactionRepos {
|
|
22
14
|
acceptedOffer: AcceptedOfferRepo;
|
|
23
15
|
accountingReport: AccountingReportRepo;
|
|
24
16
|
action: ActionRepo;
|
|
25
17
|
assetTransaction: AssetTransactionRepo;
|
|
26
|
-
event: EventRepo;
|
|
27
18
|
message: MessageRepo;
|
|
28
19
|
note: NoteRepo;
|
|
29
20
|
order: OrderRepo;
|
|
30
|
-
ownershipInfo: OwnershipInfoRepo;
|
|
31
21
|
reservation: ReservationRepo;
|
|
32
|
-
setting: SettingRepo;
|
|
33
|
-
task: TaskRepo;
|
|
34
22
|
transaction: TransactionRepo;
|
|
35
23
|
placeOrder: PlaceOrderRepo;
|
|
36
24
|
returnOrder: ReturnOrderRepo;
|
|
37
|
-
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 取引に関わるリソースを削除する
|
|
28
|
+
* 冪等性を確保すること
|
|
29
|
+
*/
|
|
30
|
+
export declare function deleteTransaction(params: factory.task.IData<factory.taskName.DeleteTransaction>): (repos: IDeleteTransactionRepos) => Promise<void>;
|
|
31
|
+
export {};
|
|
@@ -11,118 +11,15 @@ const deleteOrder_1 = require("../order/deleteOrder");
|
|
|
11
11
|
function deleteTransaction(params) {
|
|
12
12
|
return async (repos) => {
|
|
13
13
|
if (params.object.specifyingMethod === factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.AgentId) {
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
throw new factory_1.factory.errors.NotImplemented('deleteTransaction by agentId discontinued'); // discontinue(2026-06-28~)
|
|
15
|
+
// // transaction.agent.id指定による取引削除に対応(2023-06-30~)
|
|
16
|
+
// await createDeleteTransactionTasksByAgentId(params)(repos);
|
|
16
17
|
}
|
|
17
18
|
else {
|
|
18
19
|
await deleteTransactionById(params)(repos);
|
|
19
20
|
}
|
|
20
21
|
};
|
|
21
22
|
}
|
|
22
|
-
function createDeleteTransactionTasksByAgentId(params) {
|
|
23
|
-
return async (repos) => {
|
|
24
|
-
if (params.object.specifyingMethod !== factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.AgentId) {
|
|
25
|
-
throw new factory_1.factory.errors.Argument('object.specifyingMethod', `must be ${factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.AgentId}`);
|
|
26
|
-
}
|
|
27
|
-
const agentIdSpecified = params.object.agent.id;
|
|
28
|
-
// agentIdによる全取引についてDeleteTransactionタスクを作成する
|
|
29
|
-
if (typeof agentIdSpecified === 'string' && agentIdSpecified.length > 0) {
|
|
30
|
-
const transactionTypeOf = params.object.typeOf;
|
|
31
|
-
let transactions;
|
|
32
|
-
if (transactionTypeOf === factory_1.factory.transactionType.PlaceOrder) {
|
|
33
|
-
transactions = await repos.placeOrder.findPlaceOrderTransactions({
|
|
34
|
-
project: { id: { $eq: params.object.project.id } },
|
|
35
|
-
agent: {
|
|
36
|
-
ids: [agentIdSpecified],
|
|
37
|
-
typeOf: factory_1.factory.personType.Person
|
|
38
|
-
},
|
|
39
|
-
typeOf: transactionTypeOf,
|
|
40
|
-
inclusion: ['typeOf', 'startDate', 'endDate', 'object', 'project']
|
|
41
|
-
});
|
|
42
|
-
}
|
|
43
|
-
else if (transactionTypeOf === factory_1.factory.transactionType.ReturnOrder) {
|
|
44
|
-
transactions = await repos.returnOrder.findReturnOrderTransactions({
|
|
45
|
-
project: { id: { $eq: params.object.project.id } },
|
|
46
|
-
agent: {
|
|
47
|
-
ids: [agentIdSpecified],
|
|
48
|
-
typeOf: factory_1.factory.personType.Person
|
|
49
|
-
},
|
|
50
|
-
typeOf: transactionTypeOf,
|
|
51
|
-
inclusion: ['typeOf', 'startDate', 'endDate', 'object', 'project']
|
|
52
|
-
});
|
|
53
|
-
}
|
|
54
|
-
else {
|
|
55
|
-
throw new factory_1.factory.errors.NotImplemented(`${transactionTypeOf} not implemented`);
|
|
56
|
-
}
|
|
57
|
-
const deleteAt = new Date();
|
|
58
|
-
let deleteTransactionTasks;
|
|
59
|
-
switch (transactionTypeOf) {
|
|
60
|
-
case factory_1.factory.transactionType.PlaceOrder:
|
|
61
|
-
deleteTransactionTasks = transactions.map((transaction) => {
|
|
62
|
-
return {
|
|
63
|
-
project: transaction.project,
|
|
64
|
-
name: factory_1.factory.taskName.DeleteTransaction,
|
|
65
|
-
status: factory_1.factory.taskStatus.Ready,
|
|
66
|
-
runsAt: deleteAt,
|
|
67
|
-
remainingNumberOfTries: 3,
|
|
68
|
-
numberOfTried: 0,
|
|
69
|
-
executionResults: [],
|
|
70
|
-
data: {
|
|
71
|
-
object: {
|
|
72
|
-
specifyingMethod: factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.Id,
|
|
73
|
-
id: transaction.id,
|
|
74
|
-
object: {
|
|
75
|
-
...(typeof transaction.object.confirmationNumber === 'string')
|
|
76
|
-
? { confirmationNumber: transaction.object.confirmationNumber }
|
|
77
|
-
: undefined,
|
|
78
|
-
...(typeof transaction.object.orderNumber === 'string')
|
|
79
|
-
? { orderNumber: transaction.object.orderNumber }
|
|
80
|
-
: undefined
|
|
81
|
-
},
|
|
82
|
-
project: transaction.project,
|
|
83
|
-
startDate: transaction.startDate,
|
|
84
|
-
typeOf: transaction.typeOf,
|
|
85
|
-
...(transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
};
|
|
89
|
-
});
|
|
90
|
-
break;
|
|
91
|
-
case factory_1.factory.transactionType.ReturnOrder:
|
|
92
|
-
deleteTransactionTasks = transactions.map((transaction) => {
|
|
93
|
-
return {
|
|
94
|
-
project: transaction.project,
|
|
95
|
-
name: factory_1.factory.taskName.DeleteTransaction,
|
|
96
|
-
status: factory_1.factory.taskStatus.Ready,
|
|
97
|
-
runsAt: deleteAt,
|
|
98
|
-
remainingNumberOfTries: 3,
|
|
99
|
-
numberOfTried: 0,
|
|
100
|
-
executionResults: [],
|
|
101
|
-
data: {
|
|
102
|
-
object: {
|
|
103
|
-
specifyingMethod: factory_1.factory.action.update.deleteAction.ObjectAsTransactionSpecifyingMethod.Id,
|
|
104
|
-
id: transaction.id,
|
|
105
|
-
object: {
|
|
106
|
-
order: transaction.object.order
|
|
107
|
-
},
|
|
108
|
-
project: transaction.project,
|
|
109
|
-
startDate: transaction.startDate,
|
|
110
|
-
typeOf: transaction.typeOf,
|
|
111
|
-
...(transaction.endDate !== undefined) ? { endDate: transaction.endDate } : undefined
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
};
|
|
115
|
-
});
|
|
116
|
-
break;
|
|
117
|
-
default:
|
|
118
|
-
throw new factory_1.factory.errors.NotImplemented(`${transactionTypeOf} not implemented`);
|
|
119
|
-
}
|
|
120
|
-
if (deleteTransactionTasks.length > 0) {
|
|
121
|
-
await repos.task.saveMany(deleteTransactionTasks, { emitImmediately: true });
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
23
|
function deleteTransactionById(params) {
|
|
127
24
|
return async (repos) => {
|
|
128
25
|
if (typeof params.object.specifyingMethod === 'string'
|
|
@@ -133,7 +30,7 @@ function deleteTransactionById(params) {
|
|
|
133
30
|
if (typeof deletingTransactionId !== 'string' || deletingTransactionId.length === 0) {
|
|
134
31
|
throw new factory_1.factory.errors.ArgumentNull('object.id');
|
|
135
32
|
}
|
|
136
|
-
let deletingOrderNumberByTask;
|
|
33
|
+
// let deletingOrderNumberByTask: string | undefined;
|
|
137
34
|
let transaction;
|
|
138
35
|
if (params.object.typeOf === factory_1.factory.transactionType.PlaceOrder) {
|
|
139
36
|
transaction = (await repos.placeOrder.findPlaceOrderTransactions({
|
|
@@ -141,7 +38,7 @@ function deleteTransactionById(params) {
|
|
|
141
38
|
typeOf: params.object.typeOf,
|
|
142
39
|
inclusion: ['typeOf', 'project', 'status']
|
|
143
40
|
})).shift();
|
|
144
|
-
deletingOrderNumberByTask = params.object.object.orderNumber;
|
|
41
|
+
// deletingOrderNumberByTask = params.object.object.orderNumber;
|
|
145
42
|
}
|
|
146
43
|
else if (params.object.typeOf === factory_1.factory.transactionType.ReturnOrder) {
|
|
147
44
|
transaction = (await repos.returnOrder.findReturnOrderTransactions({
|
|
@@ -191,18 +88,15 @@ function deleteTransactionById(params) {
|
|
|
191
88
|
case factory_1.factory.transactionStatusType.Expired:
|
|
192
89
|
break;
|
|
193
90
|
case factory_1.factory.transactionStatusType.Confirmed: {
|
|
194
|
-
//
|
|
195
|
-
//
|
|
196
|
-
// if (typeof deletingOrder?.orderNumber === 'string') {
|
|
91
|
+
// identifierによる削除に変更(2026-06-28~)
|
|
92
|
+
// if (typeof deletingOrderNumberByTask === 'string') {
|
|
197
93
|
// await deleteOrder({
|
|
198
|
-
// object:
|
|
94
|
+
// object: { orderNumber: deletingOrderNumberByTask }
|
|
199
95
|
// })(repos);
|
|
200
96
|
// }
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
})(repos);
|
|
205
|
-
}
|
|
97
|
+
await (0, deleteOrder_1.deleteOrder)({
|
|
98
|
+
object: { identifier: transaction.id }
|
|
99
|
+
})(repos);
|
|
206
100
|
break;
|
|
207
101
|
}
|
|
208
102
|
default:
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { factory } from '../../../../../factory';
|
|
2
|
+
type IOrderAsResult = Pick<factory.order.IOrder, 'confirmationNumber' | 'orderDate' | 'orderNumber' | 'price' | 'priceCurrency' | 'typeOf'> & {
|
|
3
|
+
orderStatus: factory.orderStatus.OrderPaymentDue;
|
|
4
|
+
identifier?: never;
|
|
5
|
+
url?: never;
|
|
6
|
+
};
|
|
2
7
|
/**
|
|
3
8
|
* 注文取引結果としての注文を生成する
|
|
4
9
|
*/
|
|
@@ -6,5 +11,5 @@ declare function createOrderAsResult(params: {
|
|
|
6
11
|
orderNumber: string;
|
|
7
12
|
orderDate: Date;
|
|
8
13
|
price: number;
|
|
9
|
-
}):
|
|
10
|
-
export { createOrderAsResult };
|
|
14
|
+
}): IOrderAsResult;
|
|
15
|
+
export { createOrderAsResult, IOrderAsResult };
|
package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.d.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { factory } from '../../../../../factory';
|
|
2
2
|
import type { ISetting } from '../../../../../repo/setting';
|
|
3
|
+
import type { IOrderAsResult } from '../factory/result';
|
|
3
4
|
export declare function createSendEmailMessageActions(params: {
|
|
4
|
-
order:
|
|
5
|
+
order: IOrderAsResult & {
|
|
5
6
|
confirmationNumber: string;
|
|
6
7
|
orderStatus: factory.orderStatus;
|
|
7
8
|
price: number;
|
|
@@ -9,10 +10,9 @@ export declare function createSendEmailMessageActions(params: {
|
|
|
9
10
|
typeOf: factory.order.OrderType;
|
|
10
11
|
};
|
|
11
12
|
customer: factory.order.ICustomer;
|
|
12
|
-
seller: factory.order.ISeller
|
|
13
|
+
seller: Pick<factory.order.ISeller, 'name' | 'typeOf'>;
|
|
13
14
|
paymentMethods: factory.order.IReferencedInvoice[];
|
|
14
15
|
potentialActions?: factory.transaction.placeOrder.IPotentialActionsParams;
|
|
15
|
-
emailMessage?: factory.creativeWork.message.email.ICreativeWork;
|
|
16
16
|
}, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<{
|
|
17
17
|
emailMessages: factory.action.transfer.send.message.email.IObjectAsEmailMessage[];
|
|
18
18
|
sendEmailMessageActions: factory.transaction.placeOrder.IPotentialSendEmailMessageAction[];
|
package/lib/chevre/service/transaction/placeOrder/confirm/potentialActions/sendEmailMessage.js
CHANGED
|
@@ -3,34 +3,28 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.createSendEmailMessageActions = createSendEmailMessageActions;
|
|
4
4
|
const emailMessageBuilder_1 = require("../../../../../emailMessageBuilder");
|
|
5
5
|
const factory_1 = require("../../../../../factory");
|
|
6
|
-
async function createSendEmailMessageActions(params,
|
|
7
|
-
// settings: Settings
|
|
8
|
-
setting) {
|
|
6
|
+
async function createSendEmailMessageActions(params, setting) {
|
|
9
7
|
// 注文配送メール送信設定
|
|
10
8
|
const emailMessages = [];
|
|
11
|
-
// const sendEmailMessageActions: factory.action.transfer.send.message.email.IAttributes[] = [];
|
|
12
9
|
const sendEmailMessageActions = [];
|
|
13
|
-
// const sendActionPurpose: factory.action.transfer.send.message.email.IPurpose = {
|
|
14
|
-
// typeOf: params.order.typeOf,
|
|
15
|
-
// orderNumber: params.order.orderNumber,
|
|
16
|
-
// price: params.order.price,
|
|
17
|
-
// priceCurrency: params.order.priceCurrency,
|
|
18
|
-
// orderDate: params.order.orderDate
|
|
19
|
-
// };
|
|
20
10
|
const sendEmailMessageOnOrderSentParams = params.potentialActions?.order?.potentialActions?.sendOrder?.potentialActions?.sendEmailMessage;
|
|
21
11
|
if (Array.isArray(sendEmailMessageOnOrderSentParams)) {
|
|
12
|
+
// pugテンプレートに渡す変数を最小化(2026-06-19~)
|
|
22
13
|
const orderAsCreateEmailParams = {
|
|
23
|
-
...params.order,
|
|
14
|
+
// ...params.order,
|
|
15
|
+
// paymentMethods: params.paymentMethods
|
|
24
16
|
customer: params.customer,
|
|
25
17
|
seller: params.seller,
|
|
26
|
-
|
|
18
|
+
orderNumber: params.order.orderNumber,
|
|
19
|
+
confirmationNumber: params.order.confirmationNumber,
|
|
20
|
+
price: params.order.price
|
|
27
21
|
};
|
|
28
22
|
await Promise.all(sendEmailMessageOnOrderSentParams.map(async (s, index) => {
|
|
29
23
|
const emailMessage = await (0, emailMessageBuilder_1.createSendOrderMessage)({
|
|
30
24
|
order: orderAsCreateEmailParams,
|
|
31
25
|
index,
|
|
32
26
|
...(s.object !== undefined) ? { email: s.object } : undefined,
|
|
33
|
-
...(params.emailMessage !== undefined) ? { emailMessage: params.emailMessage } : undefined
|
|
27
|
+
// ...(params.emailMessage !== undefined) ? { emailMessage: params.emailMessage } : undefined
|
|
34
28
|
}, setting);
|
|
35
29
|
emailMessages.push(emailMessage);
|
|
36
30
|
// 送信アクション最適化に対応(2024-04-29~)
|
|
@@ -40,16 +34,7 @@ setting) {
|
|
|
40
34
|
};
|
|
41
35
|
// optimize(2024-05-07~)
|
|
42
36
|
sendEmailMessageActions.push({
|
|
43
|
-
// project: params.order.project,
|
|
44
|
-
// typeOf: factory.actionType.SendAction,
|
|
45
37
|
object: sendEmailMessageActionObject
|
|
46
|
-
// agent: params.order.project,
|
|
47
|
-
// recipient: {
|
|
48
|
-
// typeOf: params.order.customer.typeOf,
|
|
49
|
-
// id: params.order.customer.id
|
|
50
|
-
// },
|
|
51
|
-
// potentialActions: {},
|
|
52
|
-
// purpose: sendActionPurpose
|
|
53
38
|
});
|
|
54
39
|
}));
|
|
55
40
|
}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
import { factory } from '../../../../factory';
|
|
2
2
|
import type { ISetting } from '../../../../repo/setting';
|
|
3
|
+
import { IOrderAsResult } from './factory/result';
|
|
3
4
|
/**
|
|
4
5
|
* 取引のポストアクションを作成する
|
|
5
6
|
*/
|
|
6
7
|
export declare function createPotentialActions(params: {
|
|
7
|
-
order:
|
|
8
|
+
order: IOrderAsResult & {
|
|
8
9
|
confirmationNumber: string;
|
|
9
10
|
orderStatus: factory.orderStatus.OrderPaymentDue;
|
|
10
11
|
price: number;
|
|
@@ -12,10 +13,9 @@ export declare function createPotentialActions(params: {
|
|
|
12
13
|
typeOf: factory.order.OrderType;
|
|
13
14
|
};
|
|
14
15
|
customer: factory.order.ICustomer;
|
|
15
|
-
seller: factory.order.ISeller
|
|
16
|
+
seller: Pick<factory.order.ISeller, 'name' | 'typeOf'>;
|
|
16
17
|
paymentMethods: factory.order.IReferencedInvoice[];
|
|
17
18
|
potentialActions?: factory.transaction.placeOrder.IPotentialActionsParams;
|
|
18
|
-
emailMessage?: factory.creativeWork.message.email.ICreativeWork;
|
|
19
19
|
}, setting: Pick<ISetting, 'defaultSenderEmail'>): Promise<{
|
|
20
20
|
potentialActions: factory.transaction.placeOrder.IPotentialActions;
|
|
21
21
|
emailMessages: factory.creativeWork.message.email.ICreativeWork[];
|
|
@@ -5,14 +5,9 @@ const sendEmailMessage_1 = require("./potentialActions/sendEmailMessage");
|
|
|
5
5
|
/**
|
|
6
6
|
* 取引のポストアクションを作成する
|
|
7
7
|
*/
|
|
8
|
-
async function createPotentialActions(params,
|
|
9
|
-
// settings: Settings
|
|
10
|
-
setting) {
|
|
8
|
+
async function createPotentialActions(params, setting) {
|
|
11
9
|
// 注文処理開始メール送信設定
|
|
12
10
|
const { emailMessages, sendEmailMessageActions } = await (0, sendEmailMessage_1.createSendEmailMessageActions)(params, setting);
|
|
13
|
-
// const sendOrderActionAttributes: factory.transaction.placeOrder.IPotentialSendOrderAction = {
|
|
14
|
-
// potentialActions: { sendEmailMessage: sendEmailMessageActions }
|
|
15
|
-
// };
|
|
16
11
|
return {
|
|
17
12
|
emailMessages,
|
|
18
13
|
potentialActions: {
|
|
@@ -4,7 +4,6 @@ import type { AuthorizeOfferActionRepo } from '../../../repo/action/authorizeOff
|
|
|
4
4
|
import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
|
|
5
5
|
import type { AuthorizationRepo } from '../../../repo/authorization';
|
|
6
6
|
import type { ConfirmationNumberRepo } from '../../../repo/confirmationNumber';
|
|
7
|
-
import type { EmailMessageRepo } from '../../../repo/emailMessage';
|
|
8
7
|
import type { MessageRepo } from '../../../repo/message';
|
|
9
8
|
import type { OrderInTransactionRepo } from '../../../repo/orderInTransaction';
|
|
10
9
|
import type { ProjectRepo } from '../../../repo/project';
|
|
@@ -12,13 +11,13 @@ import type { SettingRepo } from '../../../repo/setting';
|
|
|
12
11
|
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
13
12
|
import { factory } from '../../../factory';
|
|
14
13
|
import { PlaceOrderFactory } from '../../../factory/transaction';
|
|
14
|
+
import { IOrderAsResult } from './confirm/factory/result';
|
|
15
15
|
interface IConfirmOperationRepos {
|
|
16
16
|
acceptPayAction: AcceptPayActionRepo;
|
|
17
17
|
authorizePaymentMethodAction: AuthorizePaymentMethodActionRepo;
|
|
18
18
|
authorizeOfferAction: AuthorizeOfferActionRepo;
|
|
19
19
|
assetTransaction: AssetTransactionRepo;
|
|
20
20
|
authorization: AuthorizationRepo;
|
|
21
|
-
emailMessage?: EmailMessageRepo;
|
|
22
21
|
message: MessageRepo;
|
|
23
22
|
project: ProjectRepo;
|
|
24
23
|
placeOrder: PlaceOrderRepo;
|
|
@@ -40,14 +39,10 @@ interface IConfirmOptions {
|
|
|
40
39
|
* 注文における最大CreditCardIF決済方法数
|
|
41
40
|
*/
|
|
42
41
|
maxNumCreditCardPaymentMethod: number;
|
|
43
|
-
/**
|
|
44
|
-
* 取引ドキュメントのresult.order,result,numAcceptedOffersを保管しないオプション(2026-06-15~)
|
|
45
|
-
*/
|
|
46
|
-
disableResultOrder: boolean;
|
|
47
42
|
}
|
|
48
43
|
type IConfirmParams = PlaceOrderFactory.IConfirmParams;
|
|
49
44
|
interface IConfirmResult {
|
|
50
|
-
order: Pick<
|
|
45
|
+
order: Pick<IOrderAsResult, 'confirmationNumber' | 'orderNumber'>;
|
|
51
46
|
customer: factory.order.ICustomer;
|
|
52
47
|
code?: string;
|
|
53
48
|
/**
|
|
@@ -19,16 +19,17 @@ const debug = (0, debug_1.default)('chevre-domain:service:transaction');
|
|
|
19
19
|
/**
|
|
20
20
|
* 進行中でない取引を処理する
|
|
21
21
|
*/
|
|
22
|
-
function processTransactionNotInProgress(
|
|
22
|
+
function processTransactionNotInProgress(params) {
|
|
23
23
|
return async (repos) => {
|
|
24
|
+
const { transaction, orderNumber } = params;
|
|
24
25
|
if (transaction.status === factory_1.factory.transactionStatusType.Confirmed) {
|
|
25
|
-
const resultCustomer = await repos.orderInTransaction.
|
|
26
|
-
|
|
26
|
+
const resultCustomer = await repos.orderInTransaction.findCustomerByOrderIdentifier({
|
|
27
|
+
identifier: transaction.id
|
|
27
28
|
});
|
|
28
29
|
// if (resultCustomer === undefined) {
|
|
29
30
|
// throw new factory.errors.Internal('resultCustomer undefined'); // impossible process
|
|
30
31
|
// }
|
|
31
|
-
const { confirmationNumber
|
|
32
|
+
const { confirmationNumber } = transaction.object;
|
|
32
33
|
// Confirmedの取引であればobjectには必ず存在するはず
|
|
33
34
|
if (typeof confirmationNumber !== 'string' || typeof orderNumber !== 'string'
|
|
34
35
|
|| confirmationNumber === '' || orderNumber === '') {
|
|
@@ -62,30 +63,30 @@ function confirm(params, options) {
|
|
|
62
63
|
object: { orderDate: params.result.order.orderDate }
|
|
63
64
|
})(repos);
|
|
64
65
|
const transaction = await repos.placeOrder.findPlaceOrderById({ typeOf: factory_1.factory.transactionType.PlaceOrder, id: params.id }, ['typeOf', 'project', 'status', 'agent', 'seller', 'object', 'result']);
|
|
65
|
-
|
|
66
|
+
// 注文ドキュメントから注文番号を参照(取引開始時に発行済の前提)(2026-06-26~)
|
|
67
|
+
const orderNumber = await repos.orderInTransaction.findOrderNumberByIdentifier({
|
|
68
|
+
identifier: params.id,
|
|
69
|
+
project: { id: transaction.project.id }
|
|
70
|
+
}, { onlyPlaceOrder: false } // すでに取引確定済かもしれないのでfalse
|
|
71
|
+
);
|
|
72
|
+
const confirmResult = await processTransactionNotInProgress({ transaction, orderNumber })(repos);
|
|
66
73
|
if (confirmResult !== undefined) {
|
|
67
74
|
return confirmResult;
|
|
68
75
|
}
|
|
69
76
|
if (typeof params.agent?.id === 'string' && transaction.agent.id !== params.agent.id) {
|
|
70
77
|
throw new factory_1.factory.errors.Forbidden('Transaction not yours');
|
|
71
78
|
}
|
|
72
|
-
// 注文番号は興行オファー承認時に発行済のはず(2026-06-16~)
|
|
73
|
-
const orderNumber = transaction.object.orderNumber;
|
|
74
|
-
if (typeof orderNumber !== 'string' || orderNumber === '') {
|
|
75
|
-
|
|
76
|
-
}
|
|
79
|
+
// // 注文番号は興行オファー承認時に発行済のはず(2026-06-16~)
|
|
80
|
+
// const orderNumber = transaction.object.orderNumber;
|
|
81
|
+
// if (typeof orderNumber !== 'string' || orderNumber === '') {
|
|
82
|
+
// throw new factory.errors.Argument('transactionId', 'orderNumber not issued');
|
|
83
|
+
// }
|
|
77
84
|
// 取引に対する全ての承認アクションをマージ
|
|
78
85
|
const completedAuthorizeActions = await searchAuthorizeActions(params)(repos);
|
|
79
86
|
let acceptPayActions = [];
|
|
80
87
|
if (typeof transaction.object.paymentMethods?.paymentMethodId === 'string') {
|
|
81
88
|
acceptPayActions = await searchAcceptPayActions(params)(repos);
|
|
82
89
|
}
|
|
83
|
-
// 注文番号は興行オファー承認時に発行済のはずなので、ここは不要(承認オファーなしの注文は存在しえない)(2026-06-16~)
|
|
84
|
-
// const orderNumber = await issueOrderNumberIfNotExist({
|
|
85
|
-
// project: { id: transaction.project.id },
|
|
86
|
-
// id: transaction.id,
|
|
87
|
-
// object: { orderDate: params.result.order.orderDate }
|
|
88
|
-
// })(repos);
|
|
89
90
|
// 必要あらば注文コード発行(2024-02-05~)
|
|
90
91
|
let code;
|
|
91
92
|
const publishCodeExpiresInSeconds = options.publishCodeExpiresInSeconds;
|
|
@@ -107,8 +108,9 @@ function confirm(params, options) {
|
|
|
107
108
|
// authorizeProductOfferActions,
|
|
108
109
|
serialNumbers } = dissolveAuthorizeActions(completedAuthorizeActions);
|
|
109
110
|
// orderInTransactionから検索する(2024-03-04~)
|
|
110
|
-
const acceptedOffers = (await repos.orderInTransaction.
|
|
111
|
-
orderNumber,
|
|
111
|
+
const acceptedOffers = (await repos.orderInTransaction.findAcceptedOffersWithPriceByIdentifier({
|
|
112
|
+
// orderNumber,
|
|
113
|
+
identifier: transaction.id,
|
|
112
114
|
project: { id: transaction.project.id }
|
|
113
115
|
}))
|
|
114
116
|
.filter(({ serialNumber }) => typeof serialNumber === 'string' && serialNumbers.includes(serialNumber));
|
|
@@ -125,7 +127,7 @@ function confirm(params, options) {
|
|
|
125
127
|
}
|
|
126
128
|
// retrieve customer from orderInTransaction(2024-06-24~)
|
|
127
129
|
// let customer: factory.order.ICustomer = createCustomer({ transaction });
|
|
128
|
-
const customer = await repos.orderInTransaction.
|
|
130
|
+
const customer = await repos.orderInTransaction.findCustomerByOrderIdentifier({ identifier: transaction.id });
|
|
129
131
|
const seller = (0, factory_2.createSeller)({ transaction });
|
|
130
132
|
const { paymentMethods, placingOrder, result, eventId, reservationIds } = createResult({
|
|
131
133
|
...params,
|
|
@@ -136,17 +138,18 @@ function confirm(params, options) {
|
|
|
136
138
|
acceptedOffers, payTransactions, customer,
|
|
137
139
|
...(typeof code === 'string') ? { code } : undefined
|
|
138
140
|
}, options);
|
|
139
|
-
//
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
141
|
+
// discontinue emailMessageRepo
|
|
142
|
+
// // デフォルトEメールメッセージを検索
|
|
143
|
+
// let emailMessageOnOrderSent: factory.creativeWork.message.email.ICreativeWork | undefined;
|
|
144
|
+
// if (repos.emailMessage !== undefined) {
|
|
145
|
+
// const searchEmailMessagesResult = await repos.emailMessage.search({
|
|
146
|
+
// limit: 1,
|
|
147
|
+
// page: 1,
|
|
148
|
+
// project: { id: { $eq: transaction.project.id } },
|
|
149
|
+
// about: { identifier: { $eq: factory.creativeWork.message.email.AboutIdentifier.OnOrderSent } }
|
|
150
|
+
// });
|
|
151
|
+
// emailMessageOnOrderSent = searchEmailMessagesResult.shift();
|
|
152
|
+
// }
|
|
150
153
|
// ポストアクションを作成
|
|
151
154
|
const setting = await repos.setting.findOne({ project: { id: { $eq: '*' } } }, ['defaultSenderEmail']);
|
|
152
155
|
if (typeof setting?.defaultSenderEmail !== 'string') {
|
|
@@ -160,7 +163,7 @@ function confirm(params, options) {
|
|
|
160
163
|
// order: orderWithAcceptedOffers, // 現時点でcreateEmailMessageでorder.acceptedOffersを使用している(2024-02-06~)
|
|
161
164
|
// transaction: transaction,
|
|
162
165
|
...(params.potentialActions !== undefined) ? { potentialActions: params.potentialActions } : undefined,
|
|
163
|
-
...(emailMessageOnOrderSent !== undefined) ? { emailMessage: emailMessageOnOrderSent } : undefined
|
|
166
|
+
// ...(emailMessageOnOrderSent !== undefined) ? { emailMessage: emailMessageOnOrderSent } : undefined
|
|
164
167
|
},
|
|
165
168
|
// settings
|
|
166
169
|
setting);
|
|
@@ -174,7 +177,10 @@ function confirm(params, options) {
|
|
|
174
177
|
await repos.placeOrder.confirmPlaceOrder({
|
|
175
178
|
typeOf: transaction.typeOf,
|
|
176
179
|
id: transaction.id,
|
|
177
|
-
object: {
|
|
180
|
+
object: {
|
|
181
|
+
orderDate: params.result.order.orderDate,
|
|
182
|
+
orderNumber
|
|
183
|
+
},
|
|
178
184
|
result: result,
|
|
179
185
|
potentialActions: potentialActions
|
|
180
186
|
});
|
|
@@ -373,10 +379,10 @@ function createResult(params, options) {
|
|
|
373
379
|
result: {
|
|
374
380
|
authorizeActions, // 追加(2024-01-17~)
|
|
375
381
|
...(typeof params.code === 'string') ? { code: params.code } : undefined,
|
|
376
|
-
...((!options.disableResultOrder) && { order: orderAsResult }), //
|
|
377
|
-
...((!options.disableResultOrder) && {
|
|
378
|
-
|
|
379
|
-
}) //
|
|
382
|
+
// ...((!options.disableResultOrder) && { order: orderAsResult }), // 完全廃止(2026-06-26~)
|
|
383
|
+
// ...((!options.disableResultOrder) && {
|
|
384
|
+
// numAcceptedOffers: params.acceptedOffers.length,
|
|
385
|
+
// }) // 完全廃止(2026-06-26~)
|
|
380
386
|
},
|
|
381
387
|
...(typeof eventId === 'string') ? { eventId } : undefined,
|
|
382
388
|
...(Array.isArray(reservationIds)) ? { reservationIds } : undefined
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { OrderInTransactionRepo, IOrderInTransaction } from '../../../repo/orderInTransaction';
|
|
1
2
|
import type { OrderNumberRepo } from '../../../repo/orderNumber';
|
|
2
3
|
import type { ProjectRepo } from '../../../repo/project';
|
|
3
4
|
import type { PlaceOrderRepo } from '../../../repo/transaction/placeOrder';
|
|
@@ -15,9 +16,13 @@ declare function issueOrderNumberIfNotExist(params: {
|
|
|
15
16
|
object: {
|
|
16
17
|
orderDate: Date;
|
|
17
18
|
};
|
|
19
|
+
creatingOrderInTransaction: Pick<IOrderInTransaction, 'broker' | 'seller' | 'customer'>;
|
|
20
|
+
}, options: {
|
|
21
|
+
saveOrderNumberInPlaceOrderInProgress: boolean;
|
|
18
22
|
}): (repos: {
|
|
19
23
|
project: ProjectRepo;
|
|
20
24
|
placeOrder: PlaceOrderRepo;
|
|
25
|
+
orderInTransaction: OrderInTransactionRepo;
|
|
21
26
|
orderNumber: OrderNumberRepo;
|
|
22
27
|
}) => Promise<string>;
|
|
23
28
|
export { issueOrderNumberIfNotExist };
|
|
@@ -5,40 +5,54 @@ const factory_1 = require("../../../factory");
|
|
|
5
5
|
/**
|
|
6
6
|
* 未発行であれば、注文番号を発行して取引に保管する
|
|
7
7
|
*/
|
|
8
|
-
function issueOrderNumberIfNotExist(params) {
|
|
8
|
+
function issueOrderNumberIfNotExist(params, options) {
|
|
9
9
|
return async (repos) => {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
//
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
//
|
|
10
|
+
const { saveOrderNumberInPlaceOrderInProgress } = options;
|
|
11
|
+
// // 1. 最初のチェック
|
|
12
|
+
// let orderNumber = await repos.placeOrder.findInProgressOrderNumberById({ id: params.id });
|
|
13
|
+
// // すでに発行済であれば何もしない
|
|
14
|
+
// if (typeof orderNumber === 'string') {
|
|
15
|
+
// return orderNumber;
|
|
16
|
+
// }
|
|
17
|
+
// 新注文番号発行
|
|
17
18
|
const { alternateName } = await repos.project.findAlternateNameById({ id: params.project.id });
|
|
18
19
|
if (typeof alternateName !== 'string') {
|
|
19
20
|
throw new factory_1.factory.errors.NotFound('project.alternateName');
|
|
20
21
|
}
|
|
21
|
-
// 3. 番号発行
|
|
22
22
|
const issuedOrderNumber = await repos.orderNumber.issueOrderNumber({
|
|
23
23
|
project: { alternateName },
|
|
24
24
|
orderDate: params.object.orderDate
|
|
25
25
|
});
|
|
26
|
-
//
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
orderNumber: issuedOrderNumber
|
|
26
|
+
// 注文ドキュメント作成
|
|
27
|
+
await repos.orderInTransaction.createPlaceOrderIfNotExists({
|
|
28
|
+
...params.creatingOrderInTransaction,
|
|
29
|
+
orderNumber: issuedOrderNumber,
|
|
30
|
+
project: { id: params.project.id, typeOf: factory_1.factory.organizationType.Project },
|
|
31
|
+
identifier: params.id,
|
|
30
32
|
});
|
|
31
|
-
//
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
33
|
+
// 注文ドキュメント(存在するはず)から注文番号を参照
|
|
34
|
+
const orderNumber = await repos.orderInTransaction.findOrderNumberByIdentifier({
|
|
35
|
+
identifier: params.id,
|
|
36
|
+
project: { id: params.project.id }
|
|
37
|
+
}, { onlyPlaceOrder: true });
|
|
38
|
+
if (saveOrderNumberInPlaceOrderInProgress) {
|
|
39
|
+
// 取引に保管を試みる
|
|
40
|
+
await repos.placeOrder.saveOrderNumberIfNotExist({
|
|
41
|
+
id: params.id,
|
|
42
|
+
orderNumber
|
|
43
|
+
});
|
|
41
44
|
}
|
|
45
|
+
// // 5. 書き込めたなら、自分が発行した番号が「真実」
|
|
46
|
+
// if (modifiedCount === 1) {
|
|
47
|
+
// return issuedOrderNumber;
|
|
48
|
+
// }
|
|
49
|
+
// // 6. 競合が発生した場合(他者が先に書き込んだ場合)
|
|
50
|
+
// // DBにある「正解」を再取得して返す
|
|
51
|
+
// const orderNumber = await repos.placeOrder.findInProgressOrderNumberById({ id: params.id });
|
|
52
|
+
// if (typeof orderNumber !== 'string') {
|
|
53
|
+
// // ここを通るのは、他者が保存した直後に取引がキャンセル/削除された等の極めて稀なケース
|
|
54
|
+
// throw new factory.errors.Internal('OrderNumber conflict: failed to retrieve existing number');
|
|
55
|
+
// }
|
|
42
56
|
return orderNumber;
|
|
43
57
|
};
|
|
44
58
|
}
|