@chevre/domain 21.27.0-alpha.9 → 21.27.0

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 (58) hide show
  1. package/example/src/chevre/{aggregateEventReservation.ts → aggregation/aggregateEventReservation.ts} +2 -3
  2. package/example/src/chevre/aggregation/aggregateOffersOnEvent.ts +82 -0
  3. package/example/src/chevre/{aggregateAllEvents.ts → aggregation/createAggregateEventTasks.ts} +26 -13
  4. package/example/src/chevre/aggregation/searchAggregateReservations.ts +33 -0
  5. package/example/src/chevre/searchEvents.ts +4 -4
  6. package/example/src/chevre/transaction/processPlaceOrder.ts +1 -2
  7. package/example/src/chevre/unsetUnnecessaryFields.ts +4 -4
  8. package/lib/chevre/credentials.d.ts +7 -0
  9. package/lib/chevre/credentials.js +10 -6
  10. package/lib/chevre/repo/action.d.ts +2 -2
  11. package/lib/chevre/repo/action.js +64 -49
  12. package/lib/chevre/repo/aggregateReservation.d.ts +68 -0
  13. package/lib/chevre/repo/aggregateReservation.js +135 -0
  14. package/lib/chevre/repo/event.d.ts +16 -14
  15. package/lib/chevre/repo/event.js +62 -20
  16. package/lib/chevre/repo/mongoose/schemas/action.js +18 -0
  17. package/lib/chevre/repo/mongoose/schemas/aggregateReservation.d.ts +5 -0
  18. package/lib/chevre/repo/mongoose/schemas/aggregateReservation.js +84 -0
  19. package/lib/chevre/repo/mongoose/schemas/event.js +1 -1
  20. package/lib/chevre/repo/offer.d.ts +5 -0
  21. package/lib/chevre/repository.d.ts +5 -0
  22. package/lib/chevre/repository.js +15 -2
  23. package/lib/chevre/service/aggregation/event/aggregateOffers.d.ts +31 -0
  24. package/lib/chevre/service/aggregation/event/aggregateOffers.js +290 -0
  25. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.d.ts +3 -4
  26. package/lib/chevre/service/aggregation/event/aggregateScreeningEvent.js +33 -238
  27. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.d.ts +2 -0
  28. package/lib/chevre/service/aggregation/event/aggregateUseActionsOnEvent.js +19 -15
  29. package/lib/chevre/service/aggregation/event/findEventOffers.d.ts +2 -2
  30. package/lib/chevre/service/aggregation/event/findEventOffers.js +0 -2
  31. package/lib/chevre/service/aggregation/event.d.ts +2 -1
  32. package/lib/chevre/service/aggregation/event.js +3 -1
  33. package/lib/chevre/service/assetTransaction/pay.d.ts +4 -1
  34. package/lib/chevre/service/assetTransaction/pay.js +53 -27
  35. package/lib/chevre/service/assetTransaction/reserve.js +2 -1
  36. package/lib/chevre/service/event.js +16 -23
  37. package/lib/chevre/service/notification.js +0 -102
  38. package/lib/chevre/service/offer/onEventChanged.d.ts +25 -0
  39. package/lib/chevre/service/offer/onEventChanged.js +232 -0
  40. package/lib/chevre/service/offer.d.ts +0 -40
  41. package/lib/chevre/service/offer.js +1 -184
  42. package/lib/chevre/service/payment/any.d.ts +4 -2
  43. package/lib/chevre/service/payment/any.js +76 -48
  44. package/lib/chevre/service/payment/creditCard.js +14 -7
  45. package/lib/chevre/service/payment/movieTicket/checkByIdentifier.js +1 -9
  46. package/lib/chevre/service/reserve/potentialActions/onReservationCanceled.js +2 -2
  47. package/lib/chevre/service/reserve/potentialActions/onReservationCheckedIn.js +2 -2
  48. package/lib/chevre/service/reserve/potentialActions/onReservationConfirmed.js +2 -2
  49. package/lib/chevre/service/reserve/potentialActions/onReservationUsed.js +2 -2
  50. package/lib/chevre/service/task/aggregateOffers.d.ts +7 -0
  51. package/lib/chevre/service/task/aggregateOffers.js +47 -0
  52. package/lib/chevre/service/task/aggregateScreeningEvent.js +0 -2
  53. package/lib/chevre/service/task/aggregateUseActionsOnEvent.js +2 -0
  54. package/lib/chevre/service/task/onEventChanged.js +2 -2
  55. package/lib/chevre/service/transaction/returnOrder/preStart.js +0 -18
  56. package/lib/chevre/settings.d.ts +1 -0
  57. package/lib/chevre/settings.js +2 -1
  58. package/package.json +3 -3
@@ -9,7 +9,7 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.createInformTasks = exports.createAggregateScreeningEventIfNotExist = exports.syncEventSeries2screeningEvents = exports.onEventChanged = exports.searchEventSeatOffersWithPaging = exports.addOffers2Seat = exports.product = exports.moneyTransfer = exports.eventServiceByCOA = exports.event = void 0;
12
+ exports.searchEventSeatOffersWithPaging = exports.addOffers2Seat = exports.product = exports.moneyTransfer = exports.eventServiceByCOA = exports.event = void 0;
13
13
  const moment = require("moment");
14
14
  const factory = require("../factory");
15
15
  const EventOfferService = require("./offer/event");
@@ -20,8 +20,6 @@ const MoneyTransferOfferService = require("./offer/moneyTransfer");
20
20
  exports.moneyTransfer = MoneyTransferOfferService;
21
21
  const ProductOfferService = require("./offer/product");
22
22
  exports.product = ProductOfferService;
23
- const settings_1 = require("../settings");
24
- const informEvents = settings_1.settings.onEventChanged.informEvent;
25
23
  /**
26
24
  * 座席にオファー情報を付加する
27
25
  */
@@ -127,184 +125,3 @@ function searchEventSeatOffersWithPaging(params) {
127
125
  });
128
126
  }
129
127
  exports.searchEventSeatOffersWithPaging = searchEventSeatOffersWithPaging;
130
- /**
131
- * イベント変更時処理
132
- */
133
- function onEventChanged(params) {
134
- return (repos) => __awaiter(this, void 0, void 0, function* () {
135
- if (params.id.length > 0) {
136
- // ScreeningEventであれば集計タスク
137
- if (params.typeOf === factory.eventType.ScreeningEvent) {
138
- yield createAggregateScreeningEventIfNotExist({
139
- project: { id: params.project.id },
140
- reservationFor: params.id.map((id) => {
141
- return { id };
142
- }),
143
- // 新規作成の場合は強制的に集計
144
- force: params.isNew,
145
- identifier: `onEventChanged`
146
- })(repos);
147
- }
148
- // 通知タスク作成(2023-06-08~)
149
- if (params.useInform === true) {
150
- yield createInformTasks({
151
- project: { id: params.project.id },
152
- ids: params.id,
153
- typeOf: params.typeOf
154
- })(repos);
155
- }
156
- if (params.useSync === true) {
157
- switch (params.typeOf) {
158
- case factory.eventType.ScreeningEventSeries:
159
- // 施設コンテンツを興行イベントへ同期(2023-07-28~)
160
- yield syncEventSeries2screeningEvents({
161
- project: { id: params.project.id },
162
- ids: params.id
163
- })(repos);
164
- break;
165
- default:
166
- // no op
167
- }
168
- }
169
- }
170
- });
171
- }
172
- exports.onEventChanged = onEventChanged;
173
- function syncEventSeries2screeningEvents(params) {
174
- return (repos) => __awaiter(this, void 0, void 0, function* () {
175
- const now = new Date();
176
- for (const eventSeriesId of params.ids) {
177
- yield repos.event.syncScreeningEventSeries2screeningEvents({
178
- project: { id: params.project.id },
179
- superEvent: { id: eventSeriesId },
180
- startDate: { $gte: now }
181
- });
182
- }
183
- });
184
- }
185
- exports.syncEventSeries2screeningEvents = syncEventSeries2screeningEvents;
186
- function createAggregateScreeningEventIfNotExist(params) {
187
- return (repos) => __awaiter(this, void 0, void 0, function* () {
188
- let aggregateTasks = [];
189
- const runsAt = new Date();
190
- const remainingNumberOfTries = 2;
191
- const project = {
192
- id: params.project.id, typeOf: factory.organizationType.Project
193
- };
194
- const nowInMilliseconds = Date.now();
195
- if (params.force) {
196
- aggregateTasks = params.reservationFor.map((reservationFor) => {
197
- const taskIdentifier = `${params.project.id}:${factory.taskName.AggregateScreeningEvent}:${reservationFor.id}:${params.identifier}:${nowInMilliseconds}`;
198
- return {
199
- identifier: taskIdentifier,
200
- project,
201
- name: factory.taskName.AggregateScreeningEvent,
202
- status: factory.taskStatus.Ready,
203
- runsAt,
204
- remainingNumberOfTries,
205
- numberOfTried: 0,
206
- executionResults: [],
207
- data: { typeOf: factory.eventType.ScreeningEvent, id: reservationFor.id }
208
- };
209
- });
210
- }
211
- else {
212
- for (const reservationFor of params.reservationFor) {
213
- // 冗長な作成を避ける
214
- const readyAggregateScreeningEventTaskDoc = yield repos.task.taskModel.findOne({
215
- 'project.id': { $eq: project.id },
216
- name: { $eq: factory.taskName.AggregateScreeningEvent },
217
- status: { $eq: factory.taskStatus.Ready },
218
- 'data.id': { $exists: true, $eq: reservationFor.id }
219
- }, { _id: 1 })
220
- .exec();
221
- if (readyAggregateScreeningEventTaskDoc === null) {
222
- const taskIdentifier = `${params.project.id}:${factory.taskName.AggregateScreeningEvent}:${reservationFor.id}:${params.identifier}:${nowInMilliseconds}`;
223
- aggregateTasks.push({
224
- identifier: taskIdentifier,
225
- project,
226
- name: factory.taskName.AggregateScreeningEvent,
227
- status: factory.taskStatus.Ready,
228
- runsAt,
229
- remainingNumberOfTries,
230
- numberOfTried: 0,
231
- executionResults: [],
232
- data: { typeOf: factory.eventType.ScreeningEvent, id: reservationFor.id }
233
- });
234
- }
235
- }
236
- }
237
- if (aggregateTasks.length > 0) {
238
- yield repos.task.saveMany(aggregateTasks, { emitImmediately: true });
239
- }
240
- });
241
- }
242
- exports.createAggregateScreeningEventIfNotExist = createAggregateScreeningEventIfNotExist;
243
- function createInformTasks(params) {
244
- return (repos) => __awaiter(this, void 0, void 0, function* () {
245
- let events4inform;
246
- if (params.typeOf === factory.eventType.Event) {
247
- events4inform = yield repos.event.search({
248
- id: { $in: params.ids },
249
- typeOf: params.typeOf
250
- }, [], [
251
- 'aggregateEntranceGate', 'aggregateOffer', 'aggregateReservation',
252
- 'remainingAttendeeCapacity', 'checkInCount', 'attendeeCount'
253
- ]);
254
- }
255
- else if (params.typeOf === factory.eventType.ScreeningEvent) {
256
- events4inform = yield repos.event.search({
257
- id: { $in: params.ids },
258
- typeOf: params.typeOf
259
- }, [], [
260
- 'aggregateEntranceGate', 'aggregateOffer', 'aggregateReservation',
261
- 'remainingAttendeeCapacity', 'checkInCount', 'attendeeCount'
262
- ]);
263
- }
264
- else {
265
- events4inform = yield repos.event.search({
266
- id: { $in: params.ids },
267
- typeOf: params.typeOf
268
- }, [], []);
269
- }
270
- if (events4inform.length > 0) {
271
- const taskRunsAt = new Date();
272
- const informTasks = [];
273
- informEvents === null || informEvents === void 0 ? void 0 : informEvents.forEach((informEvent) => {
274
- var _a;
275
- const informUrl = String((_a = informEvent.recipient) === null || _a === void 0 ? void 0 : _a.url);
276
- events4inform.forEach((event4inform) => {
277
- var _a;
278
- // _idは不要であり、存在すると予期せぬ影響を及ぼす可能性がある
279
- delete event4inform._id;
280
- const informActionAttributes = {
281
- agent: event4inform.project,
282
- object: event4inform,
283
- project: event4inform.project,
284
- recipient: {
285
- id: '',
286
- name: String((_a = informEvent.recipient) === null || _a === void 0 ? void 0 : _a.name),
287
- typeOf: factory.creativeWorkType.WebApplication,
288
- url: informUrl
289
- },
290
- typeOf: factory.actionType.InformAction
291
- };
292
- informTasks.push({
293
- project: event4inform.project,
294
- name: factory.taskName.TriggerWebhook,
295
- status: factory.taskStatus.Ready,
296
- runsAt: taskRunsAt,
297
- remainingNumberOfTries: 10,
298
- numberOfTried: 0,
299
- executionResults: [],
300
- data: informActionAttributes
301
- });
302
- });
303
- });
304
- if (informTasks.length > 0) {
305
- yield repos.task.saveMany(informTasks, { emitImmediately: true });
306
- }
307
- }
308
- });
309
- }
310
- exports.createInformTasks = createInformTasks;
@@ -66,6 +66,7 @@ interface IAuthorizeRepos {
66
66
  }
67
67
  type IAuthorizeOperation<T> = (repos: IAuthorizeRepos) => Promise<T>;
68
68
  interface IPublishPaymentUrlRepos {
69
+ action: ActionRepo;
69
70
  assetTransaction: AssetTransactionRepo;
70
71
  paymentAccepted: PaymentAcceptedRepo;
71
72
  paymentService: PaymentServiceRepo;
@@ -84,11 +85,12 @@ declare function publishPaymentUrl(params: {
84
85
  agent: {
85
86
  id: string;
86
87
  };
87
- object: factory.action.authorize.paymentMethod.any.IObject;
88
+ object: Pick<IObjectWithoutDetail, 'amount' | 'creditCard' | 'issuedThrough' | 'method' | 'paymentMethod'>;
88
89
  purpose: factory.action.authorize.paymentMethod.any.IPurpose;
89
90
  paymentServiceType: factory.service.paymentService.PaymentServiceType;
90
91
  location: factory.action.trade.pay.ILocation;
91
92
  }): IPublishPaymentUrlOperation<Pick<PayTransactionService.IPublishPaymentUrlResult, 'paymentMethodId' | 'paymentUrl'>>;
93
+ type IObjectWithoutDetail = factory.action.authorize.paymentMethod.any.IObjectWithoutDetail;
92
94
  /**
93
95
  * 決済承認
94
96
  */
@@ -99,7 +101,7 @@ declare function authorize(params: {
99
101
  agent: {
100
102
  id: string;
101
103
  };
102
- object: factory.action.authorize.paymentMethod.any.IObject;
104
+ object: IObjectWithoutDetail;
103
105
  purpose: factory.action.authorize.paymentMethod.any.IPurpose;
104
106
  paymentServiceType: factory.service.paymentService.PaymentServiceType;
105
107
  location?: factory.action.trade.pay.ILocation;
@@ -222,44 +222,55 @@ exports.processVoidPayTransaction = processVoidPayTransaction;
222
222
  */
223
223
  function publishPaymentUrl(params) {
224
224
  return (repos) => __awaiter(this, void 0, void 0, function* () {
225
- const transaction = yield repos.transaction.findInProgressById({ typeOf: params.purpose.typeOf, id: params.purpose.id });
226
- const paymentServiceType = params.paymentServiceType;
227
- // 取引番号生成
228
- const { transactionNumber } = yield repos.transactionNumber.publishByTimestamp({
229
- startDate: new Date()
230
- });
231
- let result;
232
- // URL発行
233
- const startParams = (0, factory_1.creatPayTransactionStartParams)({
234
- object: params.object,
235
- paymentServiceType,
236
- transaction: transaction,
237
- transactionNumber: transactionNumber,
238
- location: params.location
239
- });
240
- // result = await repos.payTransaction.publishPaymentUrl({ ...startParams, iss: params.iss });
241
- result = yield PayTransactionService.publishPaymentUrl(startParams)(repos);
242
- // 取引に保管
243
- const paymentMethodByPaymentUrl = {
244
- typeOf: params.object.paymentMethod,
245
- paymentMethodId: result.paymentMethodId,
246
- paymentUrl: result.paymentUrl,
247
- issuedThrough: { id: (typeof startParams.object.id === 'string') ? startParams.object.id : '' },
248
- // GMO IFを保管(2024-01-01~)
249
- entryTranArgs: result.entryTranArgs,
250
- entryTranResult: result.entryTranResult,
251
- execTranArgs: result.execTranArgs,
252
- execTranResult: result.execTranResult,
253
- paymentMethod: startParams.object.paymentMethod // 拡張(2024-01-04~)
254
- };
255
- yield repos.transaction.findByIdAndUpdateInProgress({
256
- id: transaction.id,
257
- update: { $set: { 'object.paymentMethods': paymentMethodByPaymentUrl } }
258
- });
259
- return {
260
- paymentMethodId: result.paymentMethodId,
261
- paymentUrl: result.paymentUrl
262
- };
225
+ try {
226
+ const transaction = yield repos.transaction.findInProgressById({ typeOf: params.purpose.typeOf, id: params.purpose.id });
227
+ const paymentServiceType = params.paymentServiceType;
228
+ // 取引番号生成
229
+ const { transactionNumber } = yield repos.transactionNumber.publishByTimestamp({
230
+ startDate: new Date()
231
+ });
232
+ let result;
233
+ // URL発行
234
+ const authorizeObject = Object.assign(Object.assign({}, params.object), { accountId: '', paymentMethodId: transactionNumber, typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment });
235
+ const startParams = (0, factory_1.creatPayTransactionStartParams)({
236
+ object: authorizeObject,
237
+ paymentServiceType,
238
+ transaction: transaction,
239
+ transactionNumber: transactionNumber,
240
+ location: params.location
241
+ });
242
+ result = yield PayTransactionService.publishPaymentUrl(startParams, { id: transaction.id })(repos);
243
+ // 取引に保管
244
+ const paymentMethodByPaymentUrl = {
245
+ typeOf: params.object.paymentMethod,
246
+ paymentMethodId: result.paymentMethodId,
247
+ paymentUrl: result.paymentUrl,
248
+ issuedThrough: { id: (typeof startParams.object.id === 'string') ? startParams.object.id : '' },
249
+ // GMO IFを保管(2024-01-01~)
250
+ entryTranArgs: result.entryTranArgs,
251
+ entryTranResult: result.entryTranResult,
252
+ execTranArgs: result.execTranArgs,
253
+ execTranResult: result.execTranResult,
254
+ paymentMethod: startParams.object.paymentMethod // 拡張(2024-01-04~)
255
+ };
256
+ yield repos.transaction.findByIdAndUpdateInProgress({
257
+ id: transaction.id,
258
+ update: { $set: { 'object.paymentMethods': paymentMethodByPaymentUrl } }
259
+ });
260
+ return {
261
+ paymentMethodId: result.paymentMethodId,
262
+ paymentUrl: result.paymentUrl
263
+ };
264
+ }
265
+ catch (error) {
266
+ // 複数対応(2024-03-27~)
267
+ if (Array.isArray(error)) {
268
+ throw error[0];
269
+ }
270
+ else {
271
+ throw error;
272
+ }
273
+ }
263
274
  });
264
275
  }
265
276
  exports.publishPaymentUrl = publishPaymentUrl;
@@ -318,7 +329,11 @@ function authorize(params) {
318
329
  const publishTransactionNumberResult = yield repos.transactionNumber.publishByTimestamp({ startDate: new Date() });
319
330
  transactionNumber = publishTransactionNumberResult.transactionNumber;
320
331
  }
321
- const authorizeObject = Object.assign(Object.assign(Object.assign({}, params.object), { paymentMethodId: transactionNumber, typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment }), (creditCard !== undefined) ? { creditCard } : undefined);
332
+ const { accountId } = yield fixAccountIdIfPossible({
333
+ object: params.object,
334
+ project: { id: transaction.project.id }
335
+ })({ action: repos.action });
336
+ const authorizeObject = Object.assign(Object.assign(Object.assign({}, params.object), { accountId, paymentMethodId: transactionNumber, typeOf: factory.action.authorize.paymentMethod.any.ResultType.Payment }), (creditCard !== undefined) ? { creditCard } : undefined);
322
337
  // 承認アクションを開始する
323
338
  const actionAttributes = {
324
339
  project: transaction.project,
@@ -346,10 +361,6 @@ function authorize(params) {
346
361
  const action = yield repos.action.start(actionAttributes);
347
362
  let payTransaction;
348
363
  try {
349
- const { accountId } = yield validateFromLocation({
350
- object: authorizeObject,
351
- project: { id: transaction.project.id }
352
- })({ action: repos.action });
353
364
  const startParams = (0, factory_1.creatPayTransactionStartParams)({
354
365
  accountId,
355
366
  object: authorizeObject,
@@ -384,15 +395,23 @@ function authorize(params) {
384
395
  })(repos);
385
396
  }
386
397
  }
387
- throw error;
398
+ // 複数対応(2024-03-27~)
399
+ if (Array.isArray(error)) {
400
+ throw error[0];
401
+ }
402
+ else {
403
+ throw error;
404
+ }
388
405
  }
389
- // アクションを完了
390
406
  const result = (0, factory_1.createAuthorizeResult)({ payTransaction, object: authorizeObject });
391
407
  yield repos.action.completeWithVoid({ typeOf: action.typeOf, id: action.id, result: result });
392
408
  return { id: action.id };
393
409
  });
394
410
  }
395
411
  exports.authorize = authorize;
412
+ /**
413
+ * 注文取引に保管された決済情報を承認しようとしている決済の整合性をを検証する
414
+ */
396
415
  function validatePaymentMethodByTransaction(params) {
397
416
  var _a, _b;
398
417
  const paymentServiceIdByObject = params.object.issuedThrough.id;
@@ -414,11 +433,16 @@ function validatePaymentMethodByTransaction(params) {
414
433
  throw new factory.errors.Argument('object.paymentMethod', 'paymentMethod must match the target of the paymentUrl');
415
434
  }
416
435
  }
417
- function validateFromLocation(params) {
436
+ /**
437
+ * 承認しようとしているobjectからaccountIdを決定する
438
+ */
439
+ function fixAccountIdIfPossible(params) {
418
440
  return (repos) => __awaiter(this, void 0, void 0, function* () {
419
441
  var _a, _b;
420
- let accountId = (_a = params.object) === null || _a === void 0 ? void 0 : _a.accountId;
421
- const fromLocation = (_b = params.object) === null || _b === void 0 ? void 0 : _b.fromLocation;
442
+ // let accountId = params.object?.accountId;
443
+ let accountId = '';
444
+ const fromLocation = (_a = params.object) === null || _a === void 0 ? void 0 : _a.fromLocation;
445
+ const movieTickets = (_b = params.object) === null || _b === void 0 ? void 0 : _b.movieTickets;
422
446
  // トークン化されたペイメントカード情報でリクエストされた場合、実ペイメントカード情報へ変換する
423
447
  if (typeof fromLocation === 'string') {
424
448
  const paymentCardOwnershipInfo = yield (0, code_1.verifyToken)({
@@ -434,6 +458,10 @@ function validateFromLocation(params) {
434
458
  }
435
459
  accountId = paymentCardOwnershipInfo.typeOfGood.identifier;
436
460
  }
461
+ // 購入番号管理番号をaccountIdにセット(2024-03-24~)
462
+ if (Array.isArray(movieTickets) && movieTickets.length > 0) {
463
+ accountId = movieTickets[0].identifier; // 決済カードidentifierは1つのみ許可の前提
464
+ }
437
465
  return { accountId };
438
466
  });
439
467
  }
@@ -47,9 +47,7 @@ function authorize(params, paymentServiceId, options) {
47
47
  if (typeof orderId !== 'string') {
48
48
  throw new factory.errors.ArgumentNull('transactionNumber');
49
49
  }
50
- // GMOオーソリ取得
51
50
  let authorizeResult;
52
- // let searchTradeResult: GMO.factory.credit.ISearchTradeResult | undefined;
53
51
  try {
54
52
  const pendingPaymentAgencyTransaction = options.pendingPaymentAgencyTransaction;
55
53
  const redirectUrl = (_c = pendingPaymentAgencyTransaction === null || pendingPaymentAgencyTransaction === void 0 ? void 0 : pendingPaymentAgencyTransaction.execTranResult) === null || _c === void 0 ? void 0 : _c.redirectUrl;
@@ -62,7 +60,6 @@ function authorize(params, paymentServiceId, options) {
62
60
  }
63
61
  else {
64
62
  authorizeResult = yield processAuthorizeCreditCard({
65
- // projectSettings: project.settings,
66
63
  shopId: shopId,
67
64
  shopPass: shopPass,
68
65
  returnUrls3ds,
@@ -75,15 +72,15 @@ function authorize(params, paymentServiceId, options) {
75
72
  }
76
73
  }
77
74
  catch (error) {
78
- throw handleAuthorizeError(error);
75
+ // アクション保管用のエラーと両方throw(2024-03-27~)
76
+ throw [handleAuthorizeError(error), error];
77
+ // throw handleAuthorizeError(error);
79
78
  }
80
79
  // クレジットカード詳細情報取得廃止(2024-03-19~)
81
80
  // const searchTrade4accountId = options?.searchTrade4accountId === true;
82
81
  // if (searchTrade4accountId) {
83
82
  // }
84
- return Object.assign({
85
- // accountId: (searchTradeResult !== undefined) ? searchTradeResult.cardNo : '',
86
- accountId: '', paymentMethodId: orderId, entryTranArgs: authorizeResult.entryTranArgs, entryTranResult: authorizeResult.entryTranResult, execTranArgs: authorizeResult.execTranArgs, execTranResult: authorizeResult.execTranResult }, (authorizeResult.secureTran2Result !== undefined) ? { secureTran2Result: authorizeResult.secureTran2Result } : undefined);
83
+ return Object.assign({ accountId: '', paymentMethodId: orderId, entryTranArgs: authorizeResult.entryTranArgs, entryTranResult: authorizeResult.entryTranResult, execTranArgs: authorizeResult.execTranArgs, execTranResult: authorizeResult.execTranResult }, (authorizeResult.secureTran2Result !== undefined) ? { secureTran2Result: authorizeResult.secureTran2Result } : undefined);
87
84
  });
88
85
  }
89
86
  exports.authorize = authorize;
@@ -202,6 +199,16 @@ function handleAuthorizeError(error) {
202
199
  // const uri: string | undefined = error.requestOptions?.uri;
203
200
  handledError = new factory.errors.GatewayTimeout(`Gateway Timeout. name:${error.name} type:${error.type} message:${error.message}`);
204
201
  }
202
+ else if (error.name === 'AbortError') {
203
+ // タイムアウト設定によって中止されたリクエストの場合
204
+ // AbortErrorハンドリング(2024-03-27~)
205
+ // {
206
+ // "type": "aborted",
207
+ // "message": "The user aborted a request.",
208
+ // "name": "AbortError"
209
+ // }
210
+ handledError = new factory.errors.GatewayTimeout(`Gateway Timeout. name:${error.name} type:${error.type} message:${error.message}`);
211
+ }
205
212
  // 決済代行側が4xxを返却した場合
206
213
  if (typeof error.code === 'number' && error.code < http_status_1.INTERNAL_SERVER_ERROR) {
207
214
  handledError = new factory.errors.Argument('payment', `bad request code:${error.code} message:${error.message}`);
@@ -87,16 +87,8 @@ function checkByIdentifier(params) {
87
87
  const authService = new surfrock.service.auth.AuthService({
88
88
  endpoint: String(availableChannel.serviceUrl),
89
89
  auth: mvtkReserveAuthClient
90
- }, { timeout: credentials_1.credentials.movieticketReserve.timeout });
90
+ }, { timeout: credentials_1.credentials.movieticketReserve.timeoutCheck });
91
91
  purchaseNumberAuthResult = yield authService.purchaseNumberAuth(purchaseNumberAuthIn);
92
- // 決済カード配列に成形
93
- // const movieTickets = purchaseNumberAuthResult2movieTickets({
94
- // screeningEvent: params.screeningEvent,
95
- // paymentMethodType,
96
- // knyknrNoInfoIn,
97
- // purchaseNumberAuthResult
98
- // });
99
- // return { purchaseNumberAuthIn, purchaseNumberAuthResult, movieTickets };
100
92
  return { purchaseNumberAuthIn, purchaseNumberAuthResult };
101
93
  });
102
94
  }
@@ -15,7 +15,7 @@ exports.onReservationCanceled = void 0;
15
15
  */
16
16
  const factory = require("../../../factory");
17
17
  const settings_1 = require("../../../settings");
18
- const offer_1 = require("../../offer");
18
+ const onEventChanged_1 = require("../../offer/onEventChanged");
19
19
  const factory_1 = require("../factory");
20
20
  const informReservations = settings_1.settings.onReservationStatusChanged.informReservation;
21
21
  function onReservationCanceled(
@@ -94,7 +94,7 @@ reservationFor) {
94
94
  }
95
95
  if (typeof (reservationFor === null || reservationFor === void 0 ? void 0 : reservationFor.id) === 'string') {
96
96
  // 冗長な作成を避ける
97
- yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
97
+ yield (0, onEventChanged_1.createAggregateScreeningEventIfNotExist)({
98
98
  project: { id: reservationFor.project.id },
99
99
  reservationFor: [{ id: reservationFor.id }],
100
100
  force: false,
@@ -15,7 +15,7 @@ exports.onReservationCheckedIn = void 0;
15
15
  */
16
16
  const factory = require("../../../factory");
17
17
  const settings_1 = require("../../../settings");
18
- const offer_1 = require("../../offer");
18
+ const onEventChanged_1 = require("../../offer/onEventChanged");
19
19
  const factory_1 = require("../factory");
20
20
  const informReservations = settings_1.settings.onReservationStatusChanged.informReservation;
21
21
  // tslint:disable-next-line:max-func-body-length
@@ -118,7 +118,7 @@ function onReservationCheckedIn(params) {
118
118
  // { _id: 1 }
119
119
  );
120
120
  if (existingEvents.length > 0) {
121
- yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
121
+ yield (0, onEventChanged_1.createAggregateScreeningEventIfNotExist)({
122
122
  project: { id: params.project.id },
123
123
  reservationFor: [{ id: reservationForId }],
124
124
  force: false,
@@ -15,7 +15,7 @@ exports.onReservationConfirmed = exports.onReservationConfirmedByAction = void 0
15
15
  */
16
16
  const factory = require("../../../factory");
17
17
  const settings_1 = require("../../../settings");
18
- const offer_1 = require("../../offer");
18
+ const onEventChanged_1 = require("../../offer/onEventChanged");
19
19
  const factory_1 = require("../factory");
20
20
  const informReservations = settings_1.settings.onReservationStatusChanged.informReservation;
21
21
  /**
@@ -56,7 +56,7 @@ function onReservationConfirmed(confirmedReservations) {
56
56
  if (Array.isArray(confirmedReservations) && confirmedReservations.length > 0) {
57
57
  // ひとつめの予約からReservationPackageの共有属性を取り出す
58
58
  const { issuedThrough, project, provider, reservationFor, reservationNumber, reservationStatus, underName } = confirmedReservations[0];
59
- yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
59
+ yield (0, onEventChanged_1.createAggregateScreeningEventIfNotExist)({
60
60
  project,
61
61
  reservationFor: [{ id: reservationFor.id }],
62
62
  force: false,
@@ -15,7 +15,7 @@ exports.onReservationUsed = void 0;
15
15
  */
16
16
  const factory = require("../../../factory");
17
17
  const settings_1 = require("../../../settings");
18
- const offer_1 = require("../../offer");
18
+ const onEventChanged_1 = require("../../offer/onEventChanged");
19
19
  const factory_1 = require("../factory");
20
20
  const informReservations = settings_1.settings.onReservationStatusChanged.informReservation;
21
21
  /**
@@ -96,7 +96,7 @@ function onReservationUsed(attendedReservation) {
96
96
  yield repos.task.saveMany(tasks, { emitImmediately: true });
97
97
  }
98
98
  // 冗長な作成を避ける
99
- yield (0, offer_1.createAggregateScreeningEventIfNotExist)({
99
+ yield (0, onEventChanged_1.createAggregateScreeningEventIfNotExist)({
100
100
  project: attendedReservation.project,
101
101
  reservationFor: [{ id: attendedReservation.reservationFor.id }],
102
102
  force: false,
@@ -0,0 +1,7 @@
1
+ import * as factory from '../../factory';
2
+ import { IConnectionSettings } from '../task';
3
+ export type IOperation<T> = (settings: IConnectionSettings) => Promise<T>;
4
+ /**
5
+ * タスク実行関数
6
+ */
7
+ export declare function call(data: factory.task.aggregateOffers.IData): IOperation<void>;
@@ -0,0 +1,47 @@
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.call = void 0;
13
+ const factory = require("../../factory");
14
+ const aggregateReservation_1 = require("../../repo/aggregateReservation");
15
+ const event_1 = require("../../repo/event");
16
+ const offer_1 = require("../../repo/offer");
17
+ const offerCatalog_1 = require("../../repo/offerCatalog");
18
+ const place_1 = require("../../repo/place");
19
+ const product_1 = require("../../repo/product");
20
+ const offer_2 = require("../../repo/rateLimit/offer");
21
+ const reservation_1 = require("../../repo/reservation");
22
+ const stockHolder_1 = require("../../repo/stockHolder");
23
+ const task_1 = require("../../repo/task");
24
+ const aggregateOffers_1 = require("../aggregation/event/aggregateOffers");
25
+ /**
26
+ * タスク実行関数
27
+ */
28
+ function call(data) {
29
+ return (settings) => __awaiter(this, void 0, void 0, function* () {
30
+ if (settings.redisClient === undefined) {
31
+ throw new factory.errors.Argument('settings', 'redisClient required');
32
+ }
33
+ yield (0, aggregateOffers_1.aggregateOffers)(data)({
34
+ aggregateReservation: new aggregateReservation_1.MongoRepository(settings.connection),
35
+ event: new event_1.MongoRepository(settings.connection),
36
+ stockHolder: new stockHolder_1.StockHolderRepository(settings.redisClient, settings.connection),
37
+ offer: new offer_1.MongoRepository(settings.connection),
38
+ offerCatalog: new offerCatalog_1.MongoRepository(settings.connection),
39
+ offerRateLimit: new offer_2.RedisRepository(settings.redisClient),
40
+ place: new place_1.MongoRepository(settings.connection),
41
+ product: new product_1.MongoRepository(settings.connection),
42
+ reservation: new reservation_1.MongoRepository(settings.connection),
43
+ task: new task_1.MongoRepository(settings.connection)
44
+ });
45
+ });
46
+ }
47
+ exports.call = call;
@@ -16,7 +16,6 @@ const offer_1 = require("../../repo/offer");
16
16
  const offerCatalog_1 = require("../../repo/offerCatalog");
17
17
  const place_1 = require("../../repo/place");
18
18
  const product_1 = require("../../repo/product");
19
- const project_1 = require("../../repo/project");
20
19
  const offer_2 = require("../../repo/rateLimit/offer");
21
20
  const reservation_1 = require("../../repo/reservation");
22
21
  const stockHolder_1 = require("../../repo/stockHolder");
@@ -38,7 +37,6 @@ function call(data) {
38
37
  offerRateLimit: new offer_2.RedisRepository(settings.redisClient),
39
38
  place: new place_1.MongoRepository(settings.connection),
40
39
  product: new product_1.MongoRepository(settings.connection),
41
- project: new project_1.MongoRepository(settings.connection),
42
40
  reservation: new reservation_1.MongoRepository(settings.connection),
43
41
  task: new task_1.MongoRepository(settings.connection)
44
42
  });
@@ -12,6 +12,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
12
12
  exports.call = void 0;
13
13
  const factory = require("../../factory");
14
14
  const action_1 = require("../../repo/action");
15
+ const aggregateReservation_1 = require("../../repo/aggregateReservation");
15
16
  const event_1 = require("../../repo/event");
16
17
  const offer_1 = require("../../repo/offer");
17
18
  const offerCatalog_1 = require("../../repo/offerCatalog");
@@ -28,6 +29,7 @@ function call(data) {
28
29
  }
29
30
  yield AggregationService.event.aggregateUseActionsOnEvent(data)({
30
31
  action: new action_1.MongoRepository(settings.connection),
32
+ aggregateReservation: new aggregateReservation_1.MongoRepository(settings.connection),
31
33
  event: new event_1.MongoRepository(settings.connection),
32
34
  offer: new offer_1.MongoRepository(settings.connection),
33
35
  offerCatalog: new offerCatalog_1.MongoRepository(settings.connection),