@chevre/domain 21.2.0-alpha.92 → 21.2.0-alpha.94

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.
@@ -63,7 +63,8 @@ async function main() {
63
63
  name: 'xx'
64
64
  }
65
65
  },
66
- true
66
+ true,
67
+ false
67
68
  )({
68
69
  accountingReport: accountingReportRepo,
69
70
  action: actionRepo,
@@ -0,0 +1,26 @@
1
+ // tslint:disable:no-implicit-dependencies no-console
2
+ import { chevre } from '../../../lib/index';
3
+
4
+ import * as mongoose from 'mongoose';
5
+
6
+ // const project = { id: String(process.env.PROJECT_ID) };
7
+
8
+ async function main() {
9
+ await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
10
+
11
+ const actionRepo = new chevre.repository.Action(mongoose.connection);
12
+ const actions = await actionRepo.search(
13
+ {
14
+ object: { reservationNumber: { $eq: 'xxx' } }
15
+ },
16
+ ['_id'],
17
+ []
18
+ );
19
+ console.log('actions:', actions);
20
+ }
21
+
22
+ main()
23
+ .then(() => {
24
+ console.log('success!');
25
+ })
26
+ .catch(console.error);
@@ -96,7 +96,7 @@ export declare function check(params: factory.action.check.paymentMethod.movieTi
96
96
  /**
97
97
  * 取引開始
98
98
  */
99
- export declare function start(params: factory.assetTransaction.pay.IStartParamsWithoutDetail, useCheckMovieTicketBeforePay: boolean): IStartOperation<factory.assetTransaction.pay.ITransaction>;
99
+ export declare function start(params: factory.assetTransaction.pay.IStartParamsWithoutDetail, useCheckMovieTicketBeforePay: boolean, searchTrade4accountId: boolean): IStartOperation<factory.assetTransaction.pay.ITransaction>;
100
100
  /**
101
101
  * 取引確定
102
102
  */
@@ -42,7 +42,7 @@ function publishPaymentUrl(params) {
42
42
  let result;
43
43
  switch (paymentServiceType) {
44
44
  case factory.service.paymentService.PaymentServiceType.CreditCard:
45
- const authorizeResult = yield CreditCardPayment.authorize(params, paymentServiceId)(repos);
45
+ const authorizeResult = yield CreditCardPayment.authorize(params, paymentServiceId, false)(repos);
46
46
  const acsUrl = authorizeResult.execTranResult.acsUrl;
47
47
  if (typeof acsUrl !== 'string' || acsUrl.length === 0) {
48
48
  throw new factory.errors.ServiceUnavailable('Payment URL unable to publish');
@@ -106,7 +106,7 @@ exports.check = check;
106
106
  /**
107
107
  * 取引開始
108
108
  */
109
- function start(params, useCheckMovieTicketBeforePay) {
109
+ function start(params, useCheckMovieTicketBeforePay, searchTrade4accountId) {
110
110
  return (repos) => __awaiter(this, void 0, void 0, function* () {
111
111
  var _a, _b;
112
112
  // 金額をfix
@@ -137,7 +137,8 @@ function start(params, useCheckMovieTicketBeforePay) {
137
137
  transaction = yield processAuthorizeAccount(params, transaction, String(paymentService === null || paymentService === void 0 ? void 0 : paymentService.id))(repos);
138
138
  break;
139
139
  case factory.service.paymentService.PaymentServiceType.CreditCard:
140
- transaction = yield processAuthorizeCreditCard(params, transaction, String(paymentService === null || paymentService === void 0 ? void 0 : paymentService.id))(repos);
140
+ transaction =
141
+ yield processAuthorizeCreditCard(params, transaction, String(paymentService === null || paymentService === void 0 ? void 0 : paymentService.id), searchTrade4accountId)(repos);
141
142
  break;
142
143
  case factory.service.paymentService.PaymentServiceType.MovieTicket:
143
144
  transaction =
@@ -253,9 +254,9 @@ function processAuthorizeAccount(params, transaction, paymentServiceId) {
253
254
  })(repos);
254
255
  });
255
256
  }
256
- function processAuthorizeCreditCard(params, transaction, paymentServiceId) {
257
+ function processAuthorizeCreditCard(params, transaction, paymentServiceId, searchTrade4accountId) {
257
258
  return (repos) => __awaiter(this, void 0, void 0, function* () {
258
- const authorizeResult = yield CreditCardPayment.authorize(params, paymentServiceId)(repos);
259
+ const authorizeResult = yield CreditCardPayment.authorize(params, paymentServiceId, searchTrade4accountId)(repos);
259
260
  return saveAuthorizeResult({
260
261
  id: transaction.id,
261
262
  update: {
@@ -5,6 +5,7 @@ export { IAcceptedAddOn };
5
5
  export declare function createStartParams(params: factory.assetTransaction.reserve.IStartParamsWithoutDetail & {
6
6
  reservationNumber: string;
7
7
  disablePendingReservations: boolean;
8
+ useHoldStockByTransactionNumber: boolean;
8
9
  }): factory.assetTransaction.IStartParams<factory.assetTransactionType.Reserve>;
9
10
  /**
10
11
  * ポイント特典を作成する
@@ -13,7 +13,7 @@ function createStartParams(params) {
13
13
  const reservationNumber = params.reservationNumber;
14
14
  const reservationPackage = Object.assign({
15
15
  // project: params.project,
16
- reservationNumber: reservationNumber, reservationStatus: factory.reservationStatusType.ReservationPending, disablePendingReservations: params.disablePendingReservations, typeOf: factory.reservationType.ReservationPackage }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined);
16
+ reservationNumber: reservationNumber, reservationStatus: factory.reservationStatusType.ReservationPending, disablePendingReservations: params.disablePendingReservations, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, typeOf: factory.reservationType.ReservationPackage }, (typeof ((_a = params.object.broker) === null || _a === void 0 ? void 0 : _a.typeOf) === 'string') ? { broker: params.object.broker } : undefined);
17
17
  return {
18
18
  project: { id: params.project.id, typeOf: factory.organizationType.Project },
19
19
  typeOf: factory.assetTransactionType.Reserve,
@@ -97,6 +97,7 @@ type IStartParams = factory.assetTransaction.reserve.IStartParamsWithoutDetail &
97
97
  */
98
98
  export declare function start(params: IStartParams & {
99
99
  disablePendingReservations: boolean;
100
+ useHoldStockByTransactionNumber: boolean;
100
101
  }): IStartOperation<{
101
102
  transaction: factory.assetTransaction.ITransaction<factory.assetTransactionType.Reserve>;
102
103
  objectSubReservations: IObjectSubReservation[];
@@ -178,7 +178,11 @@ function addReservations(params) {
178
178
  yield processLockSeats({
179
179
  event: event,
180
180
  reservations: objectSubReservations,
181
- transaction: transaction
181
+ transaction: {
182
+ id: transaction.id,
183
+ transactionNumber: transaction.transactionNumber,
184
+ object: { useHoldStockByTransactionNumber: transaction.object.useHoldStockByTransactionNumber === true }
185
+ }
182
186
  })(repos);
183
187
  if (transaction.object.disablePendingReservations !== true) {
184
188
  // 予約作成(insertManyで実装)
@@ -614,7 +618,7 @@ function processLockOfferRateLimit(params) {
614
618
  */
615
619
  function processLockSeats(params) {
616
620
  return (repos) => __awaiter(this, void 0, void 0, function* () {
617
- var _a;
621
+ var _a, _b;
618
622
  const offers = [];
619
623
  params.reservations.forEach((r) => {
620
624
  var _a, _b;
@@ -656,8 +660,12 @@ function processLockSeats(params) {
656
660
  const expires = moment(params.event.endDate)
657
661
  .add(1, 'month')
658
662
  .toDate();
659
- const holder = params.transaction.id;
660
- const maximumAttendeeCapacity4event = (_a = params.event.location) === null || _a === void 0 ? void 0 : _a.maximumAttendeeCapacity;
663
+ // holder:取引番号に対応(2023-06-05~)
664
+ let holder = params.transaction.id;
665
+ if (((_a = params.transaction.object) === null || _a === void 0 ? void 0 : _a.useHoldStockByTransactionNumber) === true) {
666
+ holder = params.transaction.transactionNumber;
667
+ }
668
+ const maximumAttendeeCapacity4event = (_b = params.event.location) === null || _b === void 0 ? void 0 : _b.maximumAttendeeCapacity;
661
669
  if (typeof maximumAttendeeCapacity4event === 'number') {
662
670
  yield repos.stockHolder.lockIfNotLimitExceeded({
663
671
  eventId: params.event.id,
@@ -58,5 +58,6 @@ declare function authorize(params: {
58
58
  id: string;
59
59
  };
60
60
  disablePendingReservations: boolean;
61
+ useHoldStockByTransactionNumber: boolean;
61
62
  }): IAuthorizeOperation<IAuthorizeOfferAction>;
62
63
  export { authorize };
@@ -67,7 +67,8 @@ function authorize(params) {
67
67
  unitPriceOffers,
68
68
  validateEvent: params.validateEvent === true,
69
69
  validateEventOfferPeriod: params.validateEventOfferPeriod === true,
70
- disablePendingReservations: params.disablePendingReservations
70
+ disablePendingReservations: params.disablePendingReservations,
71
+ useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber
71
72
  })(repos);
72
73
  // requestBody = processStartReserveResult.requestBody;
73
74
  // responseBody = processStartReserveResult.responseBody;
@@ -163,7 +164,7 @@ function processStartReserve4chevre(params) {
163
164
  // requestBody = startParams;
164
165
  const startParamObject = yield validateObjectWithoutDetail(startParams)(repos);
165
166
  // 予約取引開始
166
- const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true, disablePendingReservations: params.disablePendingReservations }))(repos);
167
+ const startReserveTransactionResult = yield ReserveTransactionService.start(Object.assign(Object.assign({}, startParams), { object: startParamObject, preSearchedEvent: event, preSearchedTicketOffers: params.ticketOffers, preSearchedUnitPriceOffers: params.unitPriceOffers, availableAtOrFrom: { id: params.availableAtOrFrom.id }, validateEvent: params.validateEvent, validateEventOfferPeriod: params.validateEventOfferPeriod, validateAppliesToMovieTicket: true, disablePendingReservations: params.disablePendingReservations, useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber }))(repos);
167
168
  responseBody = startReserveTransactionResult.transaction;
168
169
  // 予約取引からオファー情報を生成する
169
170
  acceptedOffers4result = (0, factory_1.responseBody2acceptedOffers4result)({
@@ -113,5 +113,6 @@ declare function authorize(params: {
113
113
  */
114
114
  useCancelPayTransactionOnFailed: boolean;
115
115
  useCheckMovieTicketBeforePay: boolean;
116
+ useSearchTrade4accountId: boolean;
116
117
  }): IAuthorizeOperation<IAuthorizePaymentAction>;
117
118
  export { onPaymentStatusChanged, authorize, invalidatePaymentUrl, voidPayTransaction, person2username, processVoidPayTransaction, publishPaymentUrl };
@@ -314,7 +314,7 @@ function authorize(params) {
314
314
  transactionNumber: transactionNumber,
315
315
  location: params.location
316
316
  });
317
- payTransaction = yield PayTransactionService.start(startParams, params.useCheckMovieTicketBeforePay)(repos);
317
+ payTransaction = yield PayTransactionService.start(startParams, params.useCheckMovieTicketBeforePay, params.useSearchTrade4accountId)(repos);
318
318
  }
319
319
  catch (error) {
320
320
  try {
@@ -13,7 +13,7 @@ import { MongoRepository as TaskRepo } from '../../repo/task';
13
13
  /**
14
14
  * クレジットカード決済承認
15
15
  */
16
- declare function authorize(params: factory.assetTransaction.pay.IStartParamsWithoutDetail, paymentServiceId: string): (repos: {
16
+ declare function authorize(params: factory.assetTransaction.pay.IStartParamsWithoutDetail, paymentServiceId: string, searchTrade4accountId: boolean): (repos: {
17
17
  person: PersonRepo;
18
18
  product: ProductRepo;
19
19
  project: ProjectRepo;
@@ -21,11 +21,11 @@ const factory = require("../../factory");
21
21
  const onPaid_1 = require("./any/onPaid");
22
22
  const onRefund_1 = require("./any/onRefund");
23
23
  const person2username_1 = require("./any/person2username");
24
- const debug = createDebug('chevre-domain:service');
24
+ const debug = createDebug('chevre-domain:service:payment');
25
25
  /**
26
26
  * クレジットカード決済承認
27
27
  */
28
- function authorize(params, paymentServiceId) {
28
+ function authorize(params, paymentServiceId, searchTrade4accountId) {
29
29
  return (repos) => __awaiter(this, void 0, void 0, function* () {
30
30
  var _a, _b, _c, _d;
31
31
  const project = yield repos.project.findById({ id: params.project.id });
@@ -65,19 +65,25 @@ function authorize(params, paymentServiceId) {
65
65
  catch (error) {
66
66
  throw handleAuthorizeError(error);
67
67
  }
68
- try {
69
- const creditCardService = new GMO.service.Credit({ endpoint: String(availableChannel.serviceUrl) }, { timeout: credentials_1.credentials.gmo.timeout });
70
- // ベストエフォートでクレジットカード詳細情報を取得
71
- searchTradeResult = yield creditCardService.searchTrade({
72
- shopId: shopId,
73
- shopPass: shopPass,
74
- orderId: orderId,
75
- siteId: (_c = availableChannel.credentials) === null || _c === void 0 ? void 0 : _c.siteId,
76
- sitePass: (_d = availableChannel.credentials) === null || _d === void 0 ? void 0 : _d.sitePass
77
- });
78
- }
79
- catch (error) {
80
- // no op
68
+ if (searchTrade4accountId) {
69
+ try {
70
+ const creditCardService = new GMO.service.Credit({ endpoint: String(availableChannel.serviceUrl) }, { timeout: credentials_1.credentials.gmo.timeout });
71
+ // ベストエフォートでクレジットカード詳細情報を取得
72
+ const startSearchTradeDate = Date.now();
73
+ debug('searchTrade processing...orderId:', orderId, startSearchTradeDate);
74
+ searchTradeResult = yield creditCardService.searchTrade({
75
+ shopId: shopId,
76
+ shopPass: shopPass,
77
+ orderId: orderId,
78
+ siteId: (_c = availableChannel.credentials) === null || _c === void 0 ? void 0 : _c.siteId,
79
+ sitePass: (_d = availableChannel.credentials) === null || _d === void 0 ? void 0 : _d.sitePass
80
+ });
81
+ debug('searchTrade processed. orderId:', orderId, 'execution time:', (Date.now() - startSearchTradeDate), 'ms');
82
+ }
83
+ catch (error) {
84
+ // no op
85
+ debug('searchTrade throwed an error. orderId:', orderId, error);
86
+ }
81
87
  }
82
88
  return {
83
89
  accountId: (searchTradeResult !== undefined) ? searchTradeResult.cardNo : '',
@@ -28,7 +28,6 @@ function cancelPendingReservation(actionAttributesList) {
28
28
  if (actionAttributesList.length > 0) {
29
29
  // tslint:disable-next-line:max-func-body-length
30
30
  yield Promise.all(actionAttributesList.map((actionAttributes) => __awaiter(this, void 0, void 0, function* () {
31
- // let canceledReservation: factory.reservation.eventReservation.IReservation | undefined;
32
31
  const reserveTransactionId = actionAttributes.purpose.id;
33
32
  // アクション開始
34
33
  const action = yield repos.action.start(actionAttributes);
@@ -53,10 +52,6 @@ function cancelPendingReservation(actionAttributesList) {
53
52
  const subReservation = reserveTransaction.object.subReservation;
54
53
  if (Array.isArray(subReservation) && subReservation.length > 0) {
55
54
  yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
56
- // const cancelingReservation: factory.reservation.eventReservation.IReservation = {
57
- // ...cancelingSubReservation,
58
- // reservationFor
59
- // };
60
55
  yield processUnlockSeat({
61
56
  reservation: {
62
57
  id: cancelingSubReservation.id,
@@ -69,7 +64,10 @@ function cancelPendingReservation(actionAttributesList) {
69
64
  : reservationFor.departureTime
70
65
  }
71
66
  },
72
- expectedHolder: reserveTransactionId
67
+ // holder:取引番号に対応(2023-06-05~)
68
+ expectedHolder: (reserveTransaction.object.useHoldStockByTransactionNumber === true)
69
+ ? reserveTransaction.transactionNumber
70
+ : reserveTransactionId
73
71
  })(repos);
74
72
  yield processUnlockOfferRateLimit({
75
73
  reservation: {
@@ -90,33 +88,6 @@ function cancelPendingReservation(actionAttributesList) {
90
88
  else {
91
89
  // 廃止(2022-12-27~)
92
90
  throw new factory.errors.NotImplemented(`object.typeOf '${actionObject.typeOf}' not implemented`);
93
- // const cancelingSubReservation = reserveTransaction.object.subReservation?.find((r) => {
94
- // return r.id === actionObject.id;
95
- // });
96
- // // 取消対象予約が取引に存在すれば、適宜unlock
97
- // if (cancelingSubReservation !== undefined) {
98
- // const cancelingReservation: factory.reservation.eventReservation.IReservation = {
99
- // ...cancelingSubReservation,
100
- // reservationFor
101
- // };
102
- // await processUnlockSeat({
103
- // reservation: cancelingReservation,
104
- // expectedHolder: reserveTransactionId
105
- // })(repos);
106
- // await processUnlockOfferRateLimit({ reservation: cancelingReservation, reservationFor })(repos);
107
- // // 予約が存在すればキャンセル状態に変更する
108
- // const reservationCount = await repos.reservation.count({
109
- // typeOf: cancelingSubReservation.typeOf,
110
- // ids: [cancelingSubReservation.id]
111
- // });
112
- // if (reservationCount > 0) {
113
- // await repos.reservation.cancel<factory.reservationType.EventReservation>({
114
- // id: cancelingSubReservation.id,
115
- // previousReservationStatus: actionObject.reservationStatus,
116
- // modifiedTime: now
117
- // });
118
- // }
119
- // }
120
91
  }
121
92
  }
122
93
  }
@@ -194,10 +165,6 @@ function cancelReservation(actionAttributesList) {
194
165
  const subReservation = reserveTransaction.object.subReservation;
195
166
  if (Array.isArray(subReservation) && subReservation.length > 0) {
196
167
  yield Promise.all(subReservation.map((cancelingSubReservation) => __awaiter(this, void 0, void 0, function* () {
197
- // const cancelingReservation: factory.reservation.eventReservation.IReservation = {
198
- // ...cancelingSubReservation,
199
- // reservationFor
200
- // };
201
168
  yield processUnlockSeat({
202
169
  reservation: {
203
170
  id: cancelingSubReservation.id,
@@ -210,7 +177,10 @@ function cancelReservation(actionAttributesList) {
210
177
  : reservationFor.departureTime
211
178
  }
212
179
  },
213
- expectedHolder: reserveTransaction.id
180
+ // holder:取引番号に対応(2023-06-05~)
181
+ expectedHolder: (reserveTransaction.object.useHoldStockByTransactionNumber === true)
182
+ ? reserveTransaction.transactionNumber
183
+ : reserveTransaction.id
214
184
  })(repos);
215
185
  yield processUnlockOfferRateLimit({
216
186
  reservation: {
@@ -240,10 +210,10 @@ function cancelReservation(actionAttributesList) {
240
210
  object: { reservations: { id: { $in: [reservation.id] } } }
241
211
  });
242
212
  const reserveTransaction = reserveTransactions.shift();
243
- let expectedHolder;
244
- if (reserveTransaction !== undefined) {
245
- expectedHolder = reserveTransaction.id;
246
- }
213
+ // holder:取引番号に対応(2023-06-05~)
214
+ const expectedHolder = ((reserveTransaction === null || reserveTransaction === void 0 ? void 0 : reserveTransaction.object.useHoldStockByTransactionNumber) === true)
215
+ ? reserveTransaction.transactionNumber
216
+ : reserveTransaction === null || reserveTransaction === void 0 ? void 0 : reserveTransaction.id;
247
217
  if (typeof expectedHolder === 'string') {
248
218
  yield processUnlockSeat({
249
219
  reservation: {
@@ -339,7 +339,8 @@ function processAuthorizeCreditCard(params) {
339
339
  purpose: params.purpose,
340
340
  paymentServiceType: factory.service.paymentService.PaymentServiceType.CreditCard,
341
341
  useCancelPayTransactionOnFailed: false,
342
- useCheckMovieTicketBeforePay: false
342
+ useCheckMovieTicketBeforePay: false,
343
+ useSearchTrade4accountId: false
343
344
  })(repos);
344
345
  });
345
346
  }
package/package.json CHANGED
@@ -9,7 +9,7 @@
9
9
  }
10
10
  ],
11
11
  "dependencies": {
12
- "@chevre/factory": "4.313.0-alpha.23",
12
+ "@chevre/factory": "4.313.0-alpha.24",
13
13
  "@cinerino/sdk": "3.157.0-alpha.6",
14
14
  "@motionpicture/coa-service": "9.2.0",
15
15
  "@motionpicture/gmo-service": "5.2.0",
@@ -117,5 +117,5 @@
117
117
  "postversion": "git push origin --tags",
118
118
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
119
119
  },
120
- "version": "21.2.0-alpha.92"
120
+ "version": "21.2.0-alpha.94"
121
121
  }
@@ -1,33 +0,0 @@
1
- // tslint:disable:no-implicit-dependencies no-console
2
- import { chevre } from '../../../lib/index';
3
-
4
- import * as mongoose from 'mongoose';
5
-
6
- // const project = { id: String(process.env.PROJECT_ID) };
7
-
8
- async function main() {
9
- await mongoose.connect(<string>process.env.MONGOLAB_URI, { autoIndex: false });
10
-
11
- const sellerRepo = new chevre.repository.Seller(mongoose.connection);
12
- const sellers = await sellerRepo.search({
13
- hasMerchantReturnPolicy: { itemCondition: { id: { $eq: '646dc7848b3c1437d43dbfeb' } } }
14
- });
15
- console.log('sellers:', sellers);
16
-
17
- const assetTransactionRepo = new chevre.repository.AssetTransaction(mongoose.connection);
18
- const reserveTransactions = await assetTransactionRepo.search({
19
- limit: 1,
20
- typeOf: chevre.factory.assetTransactionType.Reserve,
21
- object: {
22
- reservationNumber: { $eq: 'xxx' }
23
- // reservationFor: { id: { $eq: 'xxx' } }
24
- }
25
- });
26
- console.log('reserveTransactions:', reserveTransactions);
27
- }
28
-
29
- main()
30
- .then(() => {
31
- console.log('success!');
32
- })
33
- .catch(console.error);