@chevre/domain 24.1.0-alpha.43 → 24.1.0-alpha.45
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/repo/acceptedOffer.d.ts +1 -7
- package/lib/chevre/repo/acceptedOffer.js +11 -44
- package/lib/chevre/service/offer/event/authorize.d.ts +7 -2
- package/lib/chevre/service/offer/event/authorize.js +7 -10
- package/lib/chevre/service/task/payment/payByTask.js +2 -2
- package/package.json +1 -1
|
@@ -58,13 +58,7 @@ export declare class AcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
58
58
|
$in?: string[];
|
|
59
59
|
};
|
|
60
60
|
};
|
|
61
|
-
reservedTicket?:
|
|
62
|
-
ticketedSeat?: {
|
|
63
|
-
seatNumber?: {
|
|
64
|
-
$in?: string[];
|
|
65
|
-
};
|
|
66
|
-
};
|
|
67
|
-
};
|
|
61
|
+
reservedTicket?: never;
|
|
68
62
|
};
|
|
69
63
|
};
|
|
70
64
|
}, options: {
|
|
@@ -128,9 +128,7 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
128
128
|
/**
|
|
129
129
|
* 注文オファーを展開して検索する
|
|
130
130
|
*/
|
|
131
|
-
async searchAcceptedOffersByOrderNumber(filter,
|
|
132
|
-
// inclusion?: (keyof IAcceptedOffer)[], // 分かりにくいので廃止(2026-05-17~)
|
|
133
|
-
options) {
|
|
131
|
+
async searchAcceptedOffersByOrderNumber(filter, options) {
|
|
134
132
|
/**
|
|
135
133
|
* unwind前に1ドキュメントを特定するためのstage
|
|
136
134
|
*/
|
|
@@ -142,21 +140,11 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
142
140
|
/**
|
|
143
141
|
* unwind後にオファー内容で絞るstage
|
|
144
142
|
*/
|
|
145
|
-
const matchStages = [
|
|
146
|
-
// { $match: { orderNumber: { $eq: filter.orderNumber.$eq } } }, // matchStagesOneDocumentへ移行(2026-05-12~)
|
|
147
|
-
// { $match: { 'project.id': { $eq: filter.project.id.$eq } } }, // matchStagesOneDocumentへ移行(2026-05-12~)
|
|
148
|
-
// { $match: { typeOf: { $eq: factory.order.OrderType.Order } } } // matchStagesOneDocumentへ移行(2026-05-12~)
|
|
149
|
-
];
|
|
143
|
+
const matchStages = [];
|
|
150
144
|
const itemOfferedIdEq = filter.acceptedOffers?.itemOffered?.id?.$eq;
|
|
151
145
|
if (typeof itemOfferedIdEq === 'string') {
|
|
152
146
|
matchStages.push({ $match: { 'acceptedOffers.itemOffered.id': { $exists: true, $eq: itemOfferedIdEq } } });
|
|
153
147
|
}
|
|
154
|
-
// const itemOfferedTypeOfIn = filter.acceptedOffers?.itemOffered?.typeOf?.$in;
|
|
155
|
-
// if (Array.isArray(itemOfferedTypeOfIn)) {
|
|
156
|
-
// matchStages.push({
|
|
157
|
-
// $match: { 'acceptedOffers.itemOffered.typeOf': { $exists: true, $in: itemOfferedTypeOfIn } }
|
|
158
|
-
// });
|
|
159
|
-
// }
|
|
160
148
|
const resevationForIdIn = filter.acceptedOffers?.itemOffered?.reservationFor?.id?.$in;
|
|
161
149
|
if (Array.isArray(resevationForIdIn)) {
|
|
162
150
|
matchStages.push({
|
|
@@ -165,14 +153,15 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
165
153
|
}
|
|
166
154
|
});
|
|
167
155
|
}
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
}
|
|
156
|
+
// 座席番号による検索は廃止(2026-06-01~)
|
|
157
|
+
// const ticketedSeatNumberIn = filter.acceptedOffers?.itemOffered?.reservedTicket?.ticketedSeat?.seatNumber?.$in;
|
|
158
|
+
// if (Array.isArray(ticketedSeatNumberIn)) {
|
|
159
|
+
// matchStages.push({
|
|
160
|
+
// $match: {
|
|
161
|
+
// 'acceptedOffers.itemOffered.reservedTicket.ticketedSeat.seatNumber': { $exists: true, $in: ticketedSeatNumberIn }
|
|
162
|
+
// }
|
|
163
|
+
// });
|
|
164
|
+
// }
|
|
176
165
|
const aggregate = this.orderModel.aggregate([
|
|
177
166
|
...matchStagesOneDocument,
|
|
178
167
|
{
|
|
@@ -183,26 +172,6 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
183
172
|
},
|
|
184
173
|
...matchStages
|
|
185
174
|
]);
|
|
186
|
-
// if (Array.isArray(inclusion) && inclusion.length > 0) {
|
|
187
|
-
// const specifiedProjection: Record<string, string | 0> = {
|
|
188
|
-
// _id: 0
|
|
189
|
-
// };
|
|
190
|
-
// inclusion.forEach((key) => {
|
|
191
|
-
// specifiedProjection[key] = `$acceptedOffers.${key}`;
|
|
192
|
-
// });
|
|
193
|
-
// aggregate.project(specifiedProjection);
|
|
194
|
-
// } else {
|
|
195
|
-
// aggregate.project({
|
|
196
|
-
// _id: 0,
|
|
197
|
-
// itemOffered: '$acceptedOffers.itemOffered',
|
|
198
|
-
// priceSpecification: '$acceptedOffers.priceSpecification',
|
|
199
|
-
// typeOf: '$acceptedOffers.typeOf',
|
|
200
|
-
// id: '$acceptedOffers.id',
|
|
201
|
-
// offeredThrough: '$acceptedOffers.offeredThrough',
|
|
202
|
-
// name: '$acceptedOffers.name',
|
|
203
|
-
// serialNumber: '$acceptedOffers.serialNumber'
|
|
204
|
-
// });
|
|
205
|
-
// }
|
|
206
175
|
aggregate.project({
|
|
207
176
|
_id: 0,
|
|
208
177
|
itemOffered: '$acceptedOffers.itemOffered',
|
|
@@ -216,8 +185,6 @@ class AcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInReserveR
|
|
|
216
185
|
if (typeof filter.limit === 'number' && filter.limit > 0) {
|
|
217
186
|
const page = (typeof filter.page === 'number' && filter.page > 0) ? filter.page : 1;
|
|
218
187
|
// support skip -> limit(2026-05-12~)
|
|
219
|
-
// aggregate.limit(filter.limit * page)
|
|
220
|
-
// .skip(filter.limit * (page - 1));
|
|
221
188
|
aggregate.skip(filter.limit * (page - 1))
|
|
222
189
|
.limit(filter.limit);
|
|
223
190
|
}
|
|
@@ -5,7 +5,7 @@ import type { AssetTransactionRepo } from '../../../repo/assetTransaction';
|
|
|
5
5
|
import type { AuthorizationRepo } from '../../../repo/authorization';
|
|
6
6
|
import type { EventRepo } from '../../../repo/event';
|
|
7
7
|
import type { EventOfferRepo } from '../../../repo/eventOffer';
|
|
8
|
-
import { EventSeriesRepo } from '../../../repo/eventSeries';
|
|
8
|
+
import type { EventSeriesRepo } from '../../../repo/eventSeries';
|
|
9
9
|
import type { IssuerRepo } from '../../../repo/issuer';
|
|
10
10
|
import type { MemberRepo } from '../../../repo/member';
|
|
11
11
|
import type { MemberProgramRepo } from '../../../repo/memberProgram';
|
|
@@ -71,7 +71,12 @@ interface IAuthorizeOptions {
|
|
|
71
71
|
* acceptedOfferのitemOfferedを最小化するかどうか
|
|
72
72
|
* 2026-05-25~
|
|
73
73
|
*/
|
|
74
|
-
useAcceptedOfferItemOfferedMinimized
|
|
74
|
+
useAcceptedOfferItemOfferedMinimized: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* ticketedSeatなしのacceptedOfferを採用するかどうか
|
|
77
|
+
* 2026-06-01~
|
|
78
|
+
*/
|
|
79
|
+
useAcceptedOfferNoTicketedSeat: boolean;
|
|
75
80
|
}
|
|
76
81
|
/**
|
|
77
82
|
* 興行オファー承認
|
|
@@ -12,11 +12,7 @@ const searchOffersByIds_1 = require("./searchOffersByIds");
|
|
|
12
12
|
* 興行オファー承認
|
|
13
13
|
*/
|
|
14
14
|
function authorize(params, options) {
|
|
15
|
-
return async (repos, settings
|
|
16
|
-
// credentials: {
|
|
17
|
-
// jwt: JWTCredentials;
|
|
18
|
-
// }
|
|
19
|
-
) => {
|
|
15
|
+
return async (repos, settings) => {
|
|
20
16
|
const { noOfferSpecified } = options;
|
|
21
17
|
const { transaction, event } = await validateCreateRequest(params)(repos);
|
|
22
18
|
const { acceptedOffers, ticketOffers, unitPriceOffers } = await validateAcceptedOffers({
|
|
@@ -51,13 +47,12 @@ function authorize(params, options) {
|
|
|
51
47
|
validateEventOfferPeriod: params.validateEventOfferPeriod === true,
|
|
52
48
|
orderNumber,
|
|
53
49
|
instrument: params.instrument,
|
|
54
|
-
// useHoldStockByTransactionNumber: params.useHoldStockByTransactionNumber, // discontinue(2024-07-02~)
|
|
55
|
-
// stockHoldUntilDaysAfterEventEnd,
|
|
56
50
|
...(typeof params.object.broker?.typeOf === 'string') ? { broker: params.object.broker } : undefined
|
|
57
51
|
}, options)(repos, settings);
|
|
58
52
|
acceptedOffers4result = processStartReserveResult.acceptedOffers4result;
|
|
59
53
|
if (!noOfferSpecified) {
|
|
60
54
|
const useAcceptedOfferItemOfferedMinimized = options.useAcceptedOfferItemOfferedMinimized === true;
|
|
55
|
+
const useAcceptedOfferNoTicketedSeat = options.useAcceptedOfferNoTicketedSeat === true;
|
|
61
56
|
await (0, any_1.acceptOffer)({
|
|
62
57
|
orderNumber,
|
|
63
58
|
project: transaction.project,
|
|
@@ -67,7 +62,7 @@ function authorize(params, options) {
|
|
|
67
62
|
return {
|
|
68
63
|
...acceptOfferNoPriceSpec,
|
|
69
64
|
itemOffered: (useAcceptedOfferItemOfferedMinimized) // support useAcceptedOfferItemOfferedMinimized(2026-05-25~)
|
|
70
|
-
? minimizeItemOffered(itemOffered)
|
|
65
|
+
? minimizeItemOffered(itemOffered, { useAcceptedOfferNoTicketedSeat })
|
|
71
66
|
: itemOffered
|
|
72
67
|
};
|
|
73
68
|
})
|
|
@@ -92,7 +87,8 @@ function authorize(params, options) {
|
|
|
92
87
|
* 注文ドキュメントに保管するitemOfferedを最小化する
|
|
93
88
|
* 2026-05-25~
|
|
94
89
|
*/
|
|
95
|
-
function minimizeItemOffered(itemOffered) {
|
|
90
|
+
function minimizeItemOffered(itemOffered, options) {
|
|
91
|
+
const { useAcceptedOfferNoTicketedSeat } = options;
|
|
96
92
|
const { id, reservationNumber, typeOf, reservationFor, reservedTicket } = itemOffered;
|
|
97
93
|
const minimizedReservation = {
|
|
98
94
|
id: reservationFor.id,
|
|
@@ -123,7 +119,8 @@ function minimizeItemOffered(itemOffered) {
|
|
|
123
119
|
reservationFor: minimizedReservation,
|
|
124
120
|
reservedTicket: {
|
|
125
121
|
typeOf: reservedTicket.typeOf,
|
|
126
|
-
|
|
122
|
+
// useAcceptedOfferNoTicketedSeatでない場合のみ座席保管(2026-06-01~)
|
|
123
|
+
...((!useAcceptedOfferNoTicketedSeat && typeof reservedTicket.ticketedSeat?.typeOf === 'string') && { ticketedSeat: reservedTicket.ticketedSeat }),
|
|
127
124
|
...((typeof reservedTicket.identifier === 'string') && { identifier: reservedTicket.identifier })
|
|
128
125
|
}
|
|
129
126
|
};
|
|
@@ -65,7 +65,7 @@ function fixOrderAsPurpose(params, transaction) {
|
|
|
65
65
|
const movieTickets = transaction.object.paymentMethod.movieTickets;
|
|
66
66
|
if (Array.isArray(movieTickets) && movieTickets.length > 0) {
|
|
67
67
|
const reservationForId = movieTickets[0].serviceOutput.reservationFor.id; // イベントIDは決済取引ごとにひとつのみ許可なので、これで問題ない
|
|
68
|
-
const seatNumbers = movieTickets.map(({ serviceOutput }) => serviceOutput.reservedTicket.ticketedSeat.seatNumber);
|
|
68
|
+
// const seatNumbers = movieTickets.map(({ serviceOutput }) => serviceOutput.reservedTicket.ticketedSeat.seatNumber);
|
|
69
69
|
acceptedOffersMovieTicketUsed = await repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
70
70
|
orderNumber: { $eq: orderWithoutAcceptedOffers.orderNumber },
|
|
71
71
|
project: { id: { $eq: transaction.project.id } },
|
|
@@ -74,7 +74,7 @@ function fixOrderAsPurpose(params, transaction) {
|
|
|
74
74
|
// typeOf: { $in: [factory.reservationType.EventReservation] }, // EventReservationしか存在しないので不要(2026-05-12~)
|
|
75
75
|
// movieTicketsに結合されたイベントID,座席コードで絞る
|
|
76
76
|
reservationFor: { id: { $in: [reservationForId] } },
|
|
77
|
-
reservedTicket: { ticketedSeat: { seatNumber: { $in: seatNumbers } } }
|
|
77
|
+
// reservedTicket: { ticketedSeat: { seatNumber: { $in: seatNumbers } } } // 座席番号により絞りは廃止(2026-06-01~)
|
|
78
78
|
}
|
|
79
79
|
}
|
|
80
80
|
}, {
|
package/package.json
CHANGED