@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.
Files changed (177) hide show
  1. package/lib/chevre/repo/action/acceptCOAOffer.d.ts +23 -0
  2. package/lib/chevre/repo/action/acceptCOAOffer.js +64 -0
  3. package/lib/chevre/repo/action/acceptPay.d.ts +8 -0
  4. package/lib/chevre/repo/action/acceptPay.js +13 -0
  5. package/lib/chevre/repo/action/actionProcess.d.ts +115 -0
  6. package/lib/chevre/repo/action/actionProcess.js +293 -0
  7. package/lib/chevre/repo/action/authorizeOffer.d.ts +21 -0
  8. package/lib/chevre/repo/action/authorizeOffer.js +85 -0
  9. package/lib/chevre/repo/action/checkMovieTicket.d.ts +111 -0
  10. package/lib/chevre/repo/action/checkMovieTicket.js +200 -0
  11. package/lib/chevre/repo/action/checkThing.d.ts +8 -0
  12. package/lib/chevre/repo/action/checkThing.js +13 -0
  13. package/lib/chevre/repo/action.d.ts +9 -249
  14. package/lib/chevre/repo/action.js +308 -708
  15. package/lib/chevre/repo/aggregateAction.d.ts +102 -0
  16. package/lib/chevre/repo/aggregateAction.js +379 -0
  17. package/lib/chevre/repo/mongoose/schemas/transaction.js +31 -0
  18. package/lib/chevre/repo/orderInTransaction.d.ts +8 -0
  19. package/lib/chevre/repo/orderInTransaction.js +16 -2
  20. package/lib/chevre/repo/orderNumber.d.ts +3 -2
  21. package/lib/chevre/repo/orderNumber.js +23 -28
  22. package/lib/chevre/repo/transaction/moneyTransfer.d.ts +61 -0
  23. package/lib/chevre/repo/transaction/moneyTransfer.js +379 -0
  24. package/lib/chevre/repo/transaction/placeOrder.d.ts +140 -0
  25. package/lib/chevre/repo/transaction/placeOrder.js +528 -0
  26. package/lib/chevre/repo/transaction/returnOrder.d.ts +45 -0
  27. package/lib/chevre/repo/transaction/returnOrder.js +341 -0
  28. package/lib/chevre/repo/transaction.d.ts +1 -125
  29. package/lib/chevre/repo/transaction.js +726 -632
  30. package/lib/chevre/repository.d.ts +49 -0
  31. package/lib/chevre/repository.js +107 -2
  32. package/lib/chevre/service/aggregation/system.d.ts +10 -10
  33. package/lib/chevre/service/aggregation/system.js +9 -9
  34. package/lib/chevre/service/assetTransaction/pay/check.d.ts +5 -4
  35. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.d.ts +5 -2
  36. package/lib/chevre/service/assetTransaction/pay/publishPaymentUrl.js +3 -3
  37. package/lib/chevre/service/assetTransaction/pay/start/factory.d.ts +51 -3
  38. package/lib/chevre/service/assetTransaction/pay/start/factory.js +58 -21
  39. package/lib/chevre/service/assetTransaction/pay/start/preStart/fixPaymentService.d.ts +10 -0
  40. package/lib/chevre/service/assetTransaction/pay/start/preStart/fixPaymentService.js +88 -0
  41. package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.d.ts +55 -0
  42. package/lib/chevre/service/assetTransaction/pay/start/processAuthorize.js +56 -0
  43. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.d.ts +3 -1
  44. package/lib/chevre/service/assetTransaction/pay/start/processAuthorizeMovieTicket.js +1 -11
  45. package/lib/chevre/service/assetTransaction/pay/start.d.ts +2 -0
  46. package/lib/chevre/service/assetTransaction/pay/start.js +8 -132
  47. package/lib/chevre/service/notification/triggerWebhook.d.ts +7 -6
  48. package/lib/chevre/service/offer/event/authorize.d.ts +2 -2
  49. package/lib/chevre/service/offer/event/authorize.js +3 -3
  50. package/lib/chevre/service/offer/event/issueEventOfferTicket.d.ts +2 -2
  51. package/lib/chevre/service/offer/event/issueEventOfferTicket.js +1 -1
  52. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.d.ts +0 -2
  53. package/lib/chevre/service/offer/event/voidTransaction/processVoidTransaction4chevre.js +1 -0
  54. package/lib/chevre/service/offer/event/voidTransaction.d.ts +2 -2
  55. package/lib/chevre/service/offer/event/voidTransaction.js +2 -2
  56. package/lib/chevre/service/offer/event/voidTransactionByActionId.d.ts +3 -3
  57. package/lib/chevre/service/offer/event/voidTransactionByActionId.js +2 -2
  58. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.d.ts +16 -5
  59. package/lib/chevre/service/offer/eventServiceByCOA/acceptOffer.js +7 -7
  60. package/lib/chevre/service/offer/eventServiceByCOA/authorize.d.ts +6 -4
  61. package/lib/chevre/service/offer/eventServiceByCOA/authorize.js +3 -10
  62. package/lib/chevre/service/offer/eventServiceByCOA/authorizeByAcceptAction.js +21 -13
  63. package/lib/chevre/service/offer/eventServiceByCOA/changeOffers.js +19 -10
  64. package/lib/chevre/service/offer/eventServiceByCOA/findAcceptAction.d.ts +2 -2
  65. package/lib/chevre/service/offer/moneyTransfer/authorize.d.ts +2 -2
  66. package/lib/chevre/service/offer/moneyTransfer/authorize.js +6 -3
  67. package/lib/chevre/service/offer/moneyTransfer/voidTransaction.d.ts +2 -2
  68. package/lib/chevre/service/offer/moneyTransfer/voidTransaction.js +4 -1
  69. package/lib/chevre/service/offer/product.d.ts +3 -3
  70. package/lib/chevre/service/offer/product.js +4 -4
  71. package/lib/chevre/service/order/confirmPayTransaction.d.ts +0 -2
  72. package/lib/chevre/service/order/confirmPayTransaction.js +1 -0
  73. package/lib/chevre/service/order/findPlaceOrderTransaction.d.ts +2 -2
  74. package/lib/chevre/service/order/findPlaceOrderTransaction.js +1 -1
  75. package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.d.ts +16 -0
  76. package/lib/chevre/service/order/onAssetTransactionStatusChanged/isDeliverable.js +97 -0
  77. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.d.ts +21 -0
  78. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionCanceled.js +86 -0
  79. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.d.ts +22 -0
  80. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onPayTransactionConfirmed.js +112 -0
  81. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.d.ts +22 -0
  82. package/lib/chevre/service/order/onAssetTransactionStatusChanged/onReserveTransactionConfirmed.js +74 -0
  83. package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.d.ts +25 -0
  84. package/lib/chevre/service/order/onAssetTransactionStatusChanged/paymentDue2Processing.js +111 -0
  85. package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.d.ts +16 -0
  86. package/lib/chevre/service/order/onAssetTransactionStatusChanged/processing2inTransit.js +74 -0
  87. package/lib/chevre/service/order/onAssetTransactionStatusChanged.d.ts +8 -30
  88. package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +37 -348
  89. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDelivered.d.ts +6 -7
  90. package/lib/chevre/service/order/onOrderStatusChanged/onOrderDeliveredPartially.d.ts +6 -5
  91. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.d.ts +7 -6
  92. package/lib/chevre/service/order/onOrderStatusChanged/onOrderInTransit.js +1 -1
  93. package/lib/chevre/service/order/payOrder.d.ts +2 -2
  94. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.d.ts +2 -2
  95. package/lib/chevre/service/order/placeOrder/createPlacingOrderFromExistingTransaction.js +1 -1
  96. package/lib/chevre/service/order/placeOrder.d.ts +13 -12
  97. package/lib/chevre/service/order/returnOrder.d.ts +2 -2
  98. package/lib/chevre/service/order/returnOrder.js +1 -1
  99. package/lib/chevre/service/order/sendOrder.d.ts +6 -6
  100. package/lib/chevre/service/order/sendOrder.js +10 -8
  101. package/lib/chevre/service/order.d.ts +3 -6
  102. package/lib/chevre/service/order.js +3 -9
  103. package/lib/chevre/service/payment/any/{fixOrderAsNeeded.d.ts → authorize/fixOrderAsNeeded.d.ts} +6 -6
  104. package/lib/chevre/service/payment/any/{fixOrderAsNeeded.js → authorize/fixOrderAsNeeded.js} +5 -8
  105. package/lib/chevre/service/payment/any/authorize/fixTransactionNumber.d.ts +3 -3
  106. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.d.ts +3 -3
  107. package/lib/chevre/service/payment/any/authorize/handlePrePublishedPaymentMethodIdOnAuthorizing.js +1 -1
  108. package/lib/chevre/service/payment/any/authorize.d.ts +92 -0
  109. package/lib/chevre/service/payment/any/authorize.js +225 -0
  110. package/lib/chevre/service/payment/any/findAcceptAction.d.ts +43 -0
  111. package/lib/chevre/service/payment/any/findAcceptAction.js +94 -0
  112. package/lib/chevre/service/payment/any/findAuthorizeAction.d.ts +41 -0
  113. package/lib/chevre/service/payment/any/findAuthorizeAction.js +83 -0
  114. package/lib/chevre/service/payment/any/findCheckAction.d.ts +45 -0
  115. package/lib/chevre/service/payment/any/findCheckAction.js +89 -0
  116. package/lib/chevre/service/payment/any/invalidatePaymentUrl.d.ts +28 -0
  117. package/lib/chevre/service/payment/any/invalidatePaymentUrl.js +185 -0
  118. package/lib/chevre/service/payment/any/onPayActionCompleted.d.ts +7 -3
  119. package/lib/chevre/service/payment/any/onPayActionCompleted.js +3 -0
  120. package/lib/chevre/service/payment/any/processVoidPayTransaction.d.ts +29 -0
  121. package/lib/chevre/service/payment/any/processVoidPayTransaction.js +125 -0
  122. package/lib/chevre/service/payment/any/publishPaymentUrl/fixTransactionNumberOnPublishPaymentUrl.d.ts +2 -2
  123. package/lib/chevre/service/payment/any/publishPaymentUrl.d.ts +66 -0
  124. package/lib/chevre/service/payment/any/publishPaymentUrl.js +133 -0
  125. package/lib/chevre/service/payment/any/voidPayTransaction.d.ts +31 -0
  126. package/lib/chevre/service/payment/any/voidPayTransaction.js +38 -0
  127. package/lib/chevre/service/payment/any.d.ts +8 -305
  128. package/lib/chevre/service/payment/any.js +17 -857
  129. package/lib/chevre/service/payment/movieTicket/authorize.d.ts +2 -0
  130. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.d.ts +3 -3
  131. package/lib/chevre/service/payment/movieTicket/checkMovieTicket.js +3 -3
  132. package/lib/chevre/service/payment/movieTicket/validation.d.ts +11 -10
  133. package/lib/chevre/service/payment/movieTicket/validation.js +19 -15
  134. package/lib/chevre/service/report/telemetry.d.ts +4 -0
  135. package/lib/chevre/service/report/telemetry.js +7 -12
  136. package/lib/chevre/service/task/acceptCOAOffer.js +11 -6
  137. package/lib/chevre/service/task/authorizePayment.js +6 -2
  138. package/lib/chevre/service/task/checkMovieTicket.js +3 -3
  139. package/lib/chevre/service/task/checkResource.js +2 -2
  140. package/lib/chevre/service/task/confirmPayTransaction.js +2 -2
  141. package/lib/chevre/service/task/deleteTransaction.js +7 -1
  142. package/lib/chevre/service/task/onAssetTransactionStatusChanged.js +4 -2
  143. package/lib/chevre/service/task/onOrderPaymentCompleted.js +2 -2
  144. package/lib/chevre/service/task/payment/payByTask.d.ts +14 -12
  145. package/lib/chevre/service/task/placeOrder.js +6 -4
  146. package/lib/chevre/service/task/publishPaymentUrl.js +8 -4
  147. package/lib/chevre/service/task/returnOrder.js +4 -4
  148. package/lib/chevre/service/task/returnPayTransaction.js +4 -3
  149. package/lib/chevre/service/task/sendOrder.js +4 -4
  150. package/lib/chevre/service/task/voidMoneyTransferTransaction.js +6 -3
  151. package/lib/chevre/service/task/voidPayTransaction.js +4 -2
  152. package/lib/chevre/service/task/voidRegisterServiceTransaction.js +3 -3
  153. package/lib/chevre/service/task/voidReserveTransaction.js +4 -3
  154. package/lib/chevre/service/transaction/deleteTransaction.d.ts +6 -0
  155. package/lib/chevre/service/transaction/deleteTransaction.js +56 -14
  156. package/lib/chevre/service/transaction/moneyTransfer.d.ts +5 -5
  157. package/lib/chevre/service/transaction/moneyTransfer.js +5 -5
  158. package/lib/chevre/service/transaction/placeOrder/confirm.d.ts +2 -2
  159. package/lib/chevre/service/transaction/placeOrder/confirm.js +10 -9
  160. package/lib/chevre/service/transaction/placeOrder/exportTasksById.d.ts +7 -6
  161. package/lib/chevre/service/transaction/placeOrder/exportTasksById.js +1 -1
  162. package/lib/chevre/service/transaction/placeOrder/{publishOrderNumberIfNotExist.d.ts → issueOrderNumberIfNotExist.d.ts} +4 -4
  163. package/lib/chevre/service/transaction/placeOrder/{publishOrderNumberIfNotExist.js → issueOrderNumberIfNotExist.js} +21 -13
  164. package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.d.ts +2 -2
  165. package/lib/chevre/service/transaction/placeOrder/publishConfirmationNumberIfNotExist.js +3 -3
  166. package/lib/chevre/service/transaction/placeOrder/start.d.ts +3 -3
  167. package/lib/chevre/service/transaction/placeOrder/start.js +2 -2
  168. package/lib/chevre/service/transaction/placeOrder/updateAgent.d.ts +23 -0
  169. package/lib/chevre/service/transaction/placeOrder/updateAgent.js +126 -0
  170. package/lib/chevre/service/transaction/placeOrder.d.ts +2 -1
  171. package/lib/chevre/service/transaction/placeOrder.js +3 -1
  172. package/lib/chevre/service/transaction/returnOrder/preStart.d.ts +1 -1
  173. package/lib/chevre/service/transaction/returnOrder.d.ts +16 -14
  174. package/lib/chevre/service/transaction/returnOrder.js +4 -4
  175. package/lib/chevre/service/transaction.d.ts +9 -21
  176. package/lib/chevre/service/transaction.js +5 -111
  177. package/package.json +4 -8
@@ -0,0 +1,341 @@
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.ReturnOrderRepo = 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 ReturnOrderRepo {
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.ReturnOrder) {
62
+ throw new factory.errors.Argument('typeOf', `must be ${factory.transactionType.ReturnOrder}`);
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
+ if (params.object !== undefined) {
145
+ if (params.object.order !== undefined) {
146
+ if (Array.isArray(params.object.order.orderNumbers)) {
147
+ andConditions.push({
148
+ 'object.order.orderNumber': {
149
+ $exists: true,
150
+ $in: params.object.order.orderNumbers
151
+ }
152
+ });
153
+ }
154
+ }
155
+ }
156
+ return andConditions;
157
+ }
158
+ async countReturnOrder(params) {
159
+ const { limit } = params;
160
+ const conditions = ReturnOrderRepo.CREATE_MONGO_CONDITIONS(params);
161
+ const query = this.transactionModel.countDocuments((conditions.length > 0) ? { $and: conditions } : {});
162
+ if (typeof limit === 'number' && limit >= 0) {
163
+ query.limit(limit);
164
+ }
165
+ const count = await query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
166
+ .exec();
167
+ return { count };
168
+ }
169
+ /**
170
+ * 取引を検索する
171
+ */
172
+ async findReturnOrderTransactions(params) {
173
+ const { inclusion } = params;
174
+ const conditions = ReturnOrderRepo.CREATE_MONGO_CONDITIONS(params);
175
+ let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
176
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
177
+ positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
178
+ }
179
+ const projection = {
180
+ _id: 0,
181
+ id: { $toString: '$_id' },
182
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
183
+ };
184
+ // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: AnyExpression } = {};
185
+ // if (Array.isArray(params.inclusion) && params.inclusion.length > 0) {
186
+ // params.inclusion.forEach((field) => {
187
+ // projection[field] = 1;
188
+ // });
189
+ // } else {
190
+ // projection = {
191
+ // __v: 0,
192
+ // createdAt: 0,
193
+ // updatedAt: 0
194
+ // };
195
+ // }
196
+ const query = this.transactionModel.find((conditions.length > 0) ? { $and: conditions } : {})
197
+ .select(projection);
198
+ if (typeof params.limit === 'number' && params.limit > 0) {
199
+ const page = (typeof params.page === 'number' && params.page > 0) ? params.page : 1;
200
+ query.limit(params.limit)
201
+ .skip(params.limit * (page - 1));
202
+ }
203
+ if (params.sort?.startDate !== undefined) {
204
+ query.sort({ startDate: params.sort.startDate });
205
+ }
206
+ // const explainResult = await (<any>query).explain();
207
+ // console.log(explainResult[0].executionStats.allPlansExecution.map((e: any) => e.executionStages.inputStage));
208
+ return query.setOptions({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
209
+ .lean()
210
+ .exec();
211
+ }
212
+ /**
213
+ * 取引を開始する
214
+ */
215
+ async startReturnOrder(params) {
216
+ const status = factory.transactionStatusType.InProgress;
217
+ const tasksExportAction = { actionStatus: factory.actionStatusType.PotentialActionStatus };
218
+ // const tasksExportationStatus = factory.transactionTasksExportationStatus.Unexported; // discontinue(2024-06-20~)
219
+ const startDate = new Date();
220
+ let expires;
221
+ const { typeOf } = params;
222
+ // expiresInSecondsの指定があれば優先して適用する(2022-11-25~)
223
+ if (typeof params.expiresInSeconds === 'number' && params.expiresInSeconds > 0) {
224
+ expires = (0, moment_1.default)(startDate)
225
+ .add(params.expiresInSeconds, 'seconds')
226
+ .toDate();
227
+ }
228
+ else {
229
+ throw new factory.errors.ArgumentNull('expiresInSeconds');
230
+ }
231
+ let creatingTransaction;
232
+ if (typeOf === factory.transactionType.ReturnOrder) {
233
+ const { agent, project, object, seller } = params;
234
+ creatingTransaction = {
235
+ status, startDate, expires, typeOf, tasksExportAction,
236
+ agent, project, seller, object
237
+ };
238
+ }
239
+ else {
240
+ throw new factory.errors.NotImplemented(`${typeOf} not implemented`);
241
+ }
242
+ // reimplemnt with insertMany(2024-05-30~)
243
+ const result = await this.transactionModel.insertMany(creatingTransaction, { rawResult: true });
244
+ const id = result.insertedIds?.[0]?.toHexString();
245
+ if (typeof id !== 'string') {
246
+ throw new factory.errors.Internal('transaction not saved');
247
+ }
248
+ // 取引開始時にも取引イベントエミッター連携(2024-03-21~)
249
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({ id, typeOf, status });
250
+ return { expires, id, startDate, status }; // minimize response(2024-05-30~)
251
+ }
252
+ /**
253
+ * 特定取引検索
254
+ */
255
+ async findReturnOrderById(params, inclusion // make required(2024-05-31~)
256
+ ) {
257
+ let positiveProjectionFields = AVAILABLE_PROJECT_FIELDS;
258
+ if (Array.isArray(inclusion) && inclusion.length > 0) {
259
+ positiveProjectionFields = positiveProjectionFields.filter((key) => inclusion.includes(key));
260
+ }
261
+ else {
262
+ throw new factory.errors.NotImplemented('inclusion must be specified'); // 2024-08-26~
263
+ }
264
+ const projection = {
265
+ _id: 0,
266
+ id: { $toString: '$_id' },
267
+ ...Object.fromEntries(positiveProjectionFields.map((key) => ([key, 1])))
268
+ };
269
+ // let projection: { [key in (IKeyOfProjection<T> | '__v' | 'createdAt' | 'updatedAt')]?: AnyExpression } = {};
270
+ // if (Array.isArray(inclusion) && inclusion.length > 0) {
271
+ // inclusion.forEach((field) => {
272
+ // projection[field] = 1;
273
+ // });
274
+ // } else {
275
+ // projection = {
276
+ // __v: 0,
277
+ // createdAt: 0,
278
+ // updatedAt: 0
279
+ // };
280
+ // }
281
+ const doc = await this.transactionModel.findOne({
282
+ _id: { $eq: params.id },
283
+ typeOf: { $eq: params.typeOf }
284
+ }, projection)
285
+ .lean() // 2024-08-26~
286
+ .exec();
287
+ if (doc === null) {
288
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} not found`);
289
+ }
290
+ return doc;
291
+ }
292
+ /**
293
+ * 取引を確定する
294
+ */
295
+ async confirmReturnOrder(params) {
296
+ const endDate = new Date();
297
+ const doc = await this.transactionModel.findOneAndUpdate({
298
+ _id: { $eq: params.id },
299
+ typeOf: { $eq: params.typeOf },
300
+ status: { $eq: factory.transactionStatusType.InProgress },
301
+ expires: { $gt: endDate } // add expires(2025-02-27~)
302
+ }, {
303
+ status: factory.transactionStatusType.Confirmed, // ステータス変更
304
+ endDate,
305
+ // 'object.authorizeActions': params.authorizeActions,
306
+ result: params.result, // resultを更新
307
+ potentialActions: params.potentialActions // resultを更新
308
+ }, {
309
+ new: true,
310
+ projection: { _id: 1 }
311
+ })
312
+ .lean()
313
+ .exec();
314
+ // NotFoundであれば取引状態確認
315
+ if (doc === null) {
316
+ const { expires, status } = await this.findReturnOrderById({ typeOf: params.typeOf, id: params.id }, ['expires', 'status']);
317
+ if (status === factory.transactionStatusType.Confirmed) {
318
+ // すでに確定済の場合スルー
319
+ }
320
+ else if (status === factory.transactionStatusType.Expired) {
321
+ throw new factory.errors.Argument('Transaction id', 'Already expired');
322
+ }
323
+ else if (status === factory.transactionStatusType.Canceled) {
324
+ throw new factory.errors.Argument('Transaction id', 'Already canceled');
325
+ }
326
+ else {
327
+ if ((0, moment_1.default)(expires)
328
+ .isSameOrBefore((0, moment_1.default)(endDate))) {
329
+ throw new factory.errors.Argument('Transaction id', 'potentially expired');
330
+ }
331
+ throw new factory.errors.NotFound(this.transactionModel.modelName, `${params.typeOf} ${factory.transactionStatusType.InProgress} not found`);
332
+ }
333
+ }
334
+ transaction_1.transactionEventEmitter.emitTransactionStatusChanged({
335
+ id: params.id,
336
+ typeOf: params.typeOf,
337
+ status: factory.transactionStatusType.Confirmed
338
+ });
339
+ }
340
+ }
341
+ exports.ReturnOrderRepo = ReturnOrderRepo;
@@ -1,6 +1,5 @@
1
- import type { Connection, FilterQuery } from 'mongoose';
1
+ import type { Connection } from 'mongoose';
2
2
  import * as factory from '../factory';
3
- type IKeyOfProjection<T extends factory.transactionType> = keyof Pick<factory.transaction.ITransaction<factory.transactionType>, 'agent' | 'endDate' | 'expires' | 'project' | 'startDate' | 'status' | 'typeOf'> | Exclude<keyof factory.transaction.ITransaction<T>, 'id'>;
4
3
  interface IAggregationByStatus {
5
4
  transactionCount: number;
6
5
  avgDuration: number;
@@ -18,95 +17,12 @@ interface IStatus {
18
17
  export interface IAggregatePlaceOrder {
19
18
  statuses: IStatus[];
20
19
  }
21
- type IOmittedFieldsInProgress = 'tasksExportAction' | 'tasksExportedAt' | 'tasksExportationStatus';
22
- export type ITransactionInProgress<T extends factory.transactionType> = T extends factory.transactionType.MoneyTransfer ? Omit<factory.transaction.moneyTransfer.ITransaction, IOmittedFieldsInProgress> : T extends factory.transactionType.PlaceOrder ? Omit<factory.transaction.placeOrder.ITransaction, IOmittedFieldsInProgress> : T extends factory.transactionType.ReturnOrder ? Omit<factory.transaction.returnOrder.ITransaction, IOmittedFieldsInProgress> : never;
23
- type IStartedTransactionFields = 'expires' | 'id' | 'startDate' | 'status';
24
- export type IStartedTransaction = Pick<factory.transaction.ITransaction<factory.transactionType>, IStartedTransactionFields>;
25
20
  /**
26
21
  * 取引リポジトリ
27
22
  */
28
23
  export declare class TransactionRepo {
29
24
  private readonly transactionModel;
30
25
  constructor(connection: Connection);
31
- static CREATE_MONGO_CONDITIONS(params: factory.transaction.ISearchConditions<factory.transactionType>): 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>[];
32
- /**
33
- * 取引を開始する
34
- */
35
- start<T extends factory.transactionType>(params: factory.transaction.IStartParams<T>): Promise<IStartedTransaction>;
36
- /**
37
- * 特定取引検索
38
- */
39
- projectFieldsById<T extends factory.transactionType>(params: {
40
- typeOf: T;
41
- id: string;
42
- }, inclusion: IKeyOfProjection<T>[]): Promise<factory.transaction.ITransaction<T>>;
43
- /**
44
- * 進行中の取引を取得する
45
- */
46
- projectFieldsInProgressById<T extends factory.transactionType>(params: {
47
- typeOf: T;
48
- id: string;
49
- }, inclusion: IKeyOfProjection<T>[]): Promise<ITransactionInProgress<T>>;
50
- /**
51
- * 進行中取引に保管された採用済決済方法を検索する
52
- */
53
- findInProgressPaymentMethodId(params: {
54
- id: string;
55
- }): Promise<factory.transaction.placeOrder.IPaymentMethodByPaymentUrl | undefined>;
56
- /**
57
- * 取引の注文番号を検索する
58
- */
59
- findInProgressOrderNumberById(params: {
60
- id: string;
61
- }): Promise<string | undefined>;
62
- /**
63
- * 取引の確認番号を検索する
64
- */
65
- findInProgressConfirmationNumberById(params: {
66
- id: string;
67
- status: {
68
- $in: factory.transactionStatusType[];
69
- };
70
- }): Promise<string | undefined>;
71
- /**
72
- * 取引進行者プロフィールを更新
73
- */
74
- updateAgent<T extends factory.transactionType>(params: {
75
- typeOf: T;
76
- id: string;
77
- agent: Pick<factory.transaction.IAgent, 'id'>;
78
- object?: {
79
- customer?: factory.order.ICustomer;
80
- };
81
- }): Promise<void>;
82
- /**
83
- * 取引期限変更
84
- */
85
- updateExpires<T extends factory.transactionType>(params: {
86
- typeOf: T;
87
- id: string;
88
- expires: Date;
89
- }): Promise<void>;
90
- /**
91
- * 取引オブジェクトを更新
92
- * 注文名称など
93
- */
94
- updateObject<T extends factory.transactionType>(params: {
95
- typeOf: T;
96
- id: string;
97
- object?: {
98
- name?: string;
99
- };
100
- }): Promise<void>;
101
- /**
102
- * 取引を確定する
103
- */
104
- confirm<T extends factory.transactionType>(params: {
105
- typeOf: T;
106
- id: string;
107
- result: factory.transaction.IResult<T>;
108
- potentialActions: factory.transaction.IPotentialActions<T>;
109
- }): Promise<void>;
110
26
  countPotentiallyExportTasks(params: {
111
27
  endDate: {
112
28
  $lt: Date;
@@ -192,46 +108,6 @@ export declare class TransactionRepo {
192
108
  };
193
109
  limit: number;
194
110
  }): Promise<Pick<factory.transaction.ITransaction<factory.transactionType>, 'id' | 'typeOf'>[]>;
195
- /**
196
- * 取引を中止する
197
- */
198
- cancel<T extends factory.transactionType>(params: {
199
- typeOf: T;
200
- id: string;
201
- }): Promise<void>;
202
- count<T extends factory.transactionType>(params: factory.transaction.ISearchConditions<T>): Promise<{
203
- count: number;
204
- }>;
205
- /**
206
- * 取引を検索する
207
- */
208
- projectFields<T extends factory.transactionType, F extends IKeyOfProjection<T>>(params: factory.transaction.ISearchConditions<T> & {
209
- inclusion: F[];
210
- }): Promise<(Pick<factory.transaction.ITransaction<T>, F> & {
211
- id: string;
212
- })[]>;
213
- /**
214
- * 特定の進行中取引を更新する(汎用)
215
- */
216
- findByIdAndUpdateInProgress(params: {
217
- id: string;
218
- update: {
219
- $set?: {
220
- 'object.paymentMethods'?: factory.transaction.placeOrder.IPaymentMethodByPaymentUrl;
221
- };
222
- };
223
- }): Promise<void>;
224
- saveOrderNumberIfNotExist(params: {
225
- id: string;
226
- orderNumber: string;
227
- }): Promise<void>;
228
- saveConfirmationNumberIfNotExist(params: {
229
- id: string;
230
- status: {
231
- $in: factory.transactionStatusType[];
232
- };
233
- confirmationNumber: string;
234
- }): Promise<void>;
235
111
  findByIdAndDelete(params: {
236
112
  id: string;
237
113
  }): Promise<void>;