@chevre/domain 27.1.0-alpha.0 → 27.1.0-alpha.2
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.
|
@@ -2,11 +2,12 @@ import type { Connection } from 'mongoose';
|
|
|
2
2
|
import { factory } from '../factory';
|
|
3
3
|
import { IModel } from './mongoose/schemas/assetTransaction';
|
|
4
4
|
import { IAcceptedOfferByReserveTransaction } from './factory/acceptedOffer/reserveTransaction2itemOffered';
|
|
5
|
-
export type IAcceptedOffer = Pick<factory.order.IAcceptedOffer, 'id' | 'itemOffered' | 'offeredThrough' | 'serialNumber' | 'typeOf'
|
|
5
|
+
export type IAcceptedOffer = Pick<factory.order.IAcceptedOffer, 'id' | 'itemOffered' | 'offeredThrough' | 'serialNumber' | 'typeOf'> & {
|
|
6
6
|
/**
|
|
7
7
|
* COA以外では注文ドキュメントにpriceSpecificationが存在しないのでIFを補完
|
|
8
8
|
*/
|
|
9
9
|
priceSpecification?: factory.order.ITicketPriceSpecification;
|
|
10
|
+
name?: never;
|
|
10
11
|
};
|
|
11
12
|
/**
|
|
12
13
|
* 予約取引に依存した注文オファーリポジトリ
|
|
@@ -11,6 +11,13 @@ type IMinimizedItemOffered = Pick<IAcceptedOffer['itemOffered'], 'additionalProp
|
|
|
11
11
|
type IMinimizedAcceptedOffer = Pick<IAcceptedOffer, 'id' | 'name' | 'offeredThrough' | 'priceSpecification' | 'serialNumber' | 'typeOf'> & {
|
|
12
12
|
itemOffered: IMinimizedItemOffered;
|
|
13
13
|
};
|
|
14
|
+
type IAcceptedOfferInOrder = Pick<IAcceptedOffer, 'id' | 'offeredThrough' | 'priceSpecification' | 'serialNumber' | 'typeOf'> & {
|
|
15
|
+
/**
|
|
16
|
+
* reservationFor最小化に対応
|
|
17
|
+
* 2026-09-01~
|
|
18
|
+
*/
|
|
19
|
+
itemOffered: IAcceptedOffer['itemOffered'] | IMinimizedItemOffered;
|
|
20
|
+
};
|
|
14
21
|
/**
|
|
15
22
|
* 注文オファー管理リポジトリ
|
|
16
23
|
*/
|
|
@@ -35,5 +42,23 @@ export declare class AdminAcceptedOfferRepo extends AcceptedOfferInReserveRepo {
|
|
|
35
42
|
acceptedOffers: [IAcceptedOffer | IMinimizedAcceptedOffer];
|
|
36
43
|
_id?: never;
|
|
37
44
|
})[]>;
|
|
45
|
+
/**
|
|
46
|
+
* 注文オファーを展開して検索する
|
|
47
|
+
* 注文番号指定で1注文ドキュメントから参照する想定
|
|
48
|
+
*/
|
|
49
|
+
adminFindAcceptedOffersByOrderNumber(filter: {
|
|
50
|
+
limit: number;
|
|
51
|
+
page: number;
|
|
52
|
+
orderNumber: string;
|
|
53
|
+
project: {
|
|
54
|
+
id: string;
|
|
55
|
+
};
|
|
56
|
+
}, options: {
|
|
57
|
+
/**
|
|
58
|
+
* reservationForをid属性のみにするオプション
|
|
59
|
+
* 2026-08-31~
|
|
60
|
+
*/
|
|
61
|
+
minimizeReservationFor: boolean;
|
|
62
|
+
}): Promise<IAcceptedOfferInOrder[]>;
|
|
38
63
|
}
|
|
39
64
|
export {};
|
|
@@ -3,9 +3,9 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.AdminAcceptedOfferRepo = void 0;
|
|
4
4
|
const factory_1 = require("../factory");
|
|
5
5
|
const order_1 = require("./mongoose/schemas/order");
|
|
6
|
+
const settings_1 = require("../settings");
|
|
6
7
|
const acceptedOfferInReserve_1 = require("./acceptedOfferInReserve");
|
|
7
8
|
const order_2 = require("./order");
|
|
8
|
-
const settings_1 = require("../settings");
|
|
9
9
|
function minimizeItemOffered(itemOffered, options) {
|
|
10
10
|
const { minimizeReservationFor } = options;
|
|
11
11
|
if (minimizeReservationFor) {
|
|
@@ -131,5 +131,56 @@ class AdminAcceptedOfferRepo extends acceptedOfferInReserve_1.AcceptedOfferInRes
|
|
|
131
131
|
});
|
|
132
132
|
}
|
|
133
133
|
}
|
|
134
|
+
/**
|
|
135
|
+
* 注文オファーを展開して検索する
|
|
136
|
+
* 注文番号指定で1注文ドキュメントから参照する想定
|
|
137
|
+
*/
|
|
138
|
+
async adminFindAcceptedOffersByOrderNumber(filter, options) {
|
|
139
|
+
const aggregate = this.orderModel.aggregate([
|
|
140
|
+
/**
|
|
141
|
+
* unwind前に1ドキュメントを特定するためのstage
|
|
142
|
+
*/
|
|
143
|
+
{
|
|
144
|
+
$match: {
|
|
145
|
+
orderNumber: { $eq: filter.orderNumber },
|
|
146
|
+
'project.id': { $eq: filter.project.id },
|
|
147
|
+
typeOf: { $eq: factory_1.factory.order.OrderType.Order }
|
|
148
|
+
}
|
|
149
|
+
},
|
|
150
|
+
{
|
|
151
|
+
$unwind: {
|
|
152
|
+
path: '$acceptedOffers'
|
|
153
|
+
// includeArrayIndex: 'elementIndex'
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
])
|
|
157
|
+
.project({
|
|
158
|
+
_id: 0,
|
|
159
|
+
itemOffered: '$acceptedOffers.itemOffered',
|
|
160
|
+
priceSpecification: '$acceptedOffers.priceSpecification',
|
|
161
|
+
typeOf: '$acceptedOffers.typeOf',
|
|
162
|
+
id: '$acceptedOffers.id',
|
|
163
|
+
offeredThrough: '$acceptedOffers.offeredThrough',
|
|
164
|
+
serialNumber: '$acceptedOffers.serialNumber'
|
|
165
|
+
});
|
|
166
|
+
if (typeof filter.limit === 'number' && filter.limit > 0) {
|
|
167
|
+
const page = (typeof filter.page === 'number' && filter.page > 0) ? filter.page : 1;
|
|
168
|
+
// support skip -> limit(2026-05-12~)
|
|
169
|
+
aggregate.skip(filter.limit * (page - 1))
|
|
170
|
+
.limit(filter.limit);
|
|
171
|
+
}
|
|
172
|
+
const acceptedOffers = await aggregate
|
|
173
|
+
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
174
|
+
.exec();
|
|
175
|
+
// 予約取引を参照(2026-05-18~)
|
|
176
|
+
const acceptedOffersWithDetails = await this.addAcceptedOffersDetails(acceptedOffers);
|
|
177
|
+
return acceptedOffersWithDetails.map((acceptedOfferWithDetails) => {
|
|
178
|
+
const { itemOffered, ...acceptedOfferWithoutItem } = acceptedOfferWithDetails;
|
|
179
|
+
return {
|
|
180
|
+
...acceptedOfferWithoutItem,
|
|
181
|
+
itemOffered: minimizeItemOffered(itemOffered, options)
|
|
182
|
+
};
|
|
183
|
+
});
|
|
184
|
+
}
|
|
134
185
|
}
|
|
135
186
|
exports.AdminAcceptedOfferRepo = AdminAcceptedOfferRepo;
|
|
@@ -60,11 +60,7 @@ function onReservationConfirmed(confirmedReservations, reserveAction) {
|
|
|
60
60
|
}
|
|
61
61
|
}
|
|
62
62
|
const subReservations4inform = confirmedReservations.map((r) => {
|
|
63
|
-
const {
|
|
64
|
-
// additionalProperty: _additionalProperty,
|
|
65
|
-
// price: _price,
|
|
66
|
-
// programMembershipUsed: _programMembershipUsed,
|
|
67
|
-
additionalTicketText, id, modifiedTime, reservedTicket, subReservation, typeOf } = r;
|
|
63
|
+
const { additionalTicketText, id, modifiedTime, reservedTicket, subReservation, typeOf } = r;
|
|
68
64
|
const { ticketType: _ticketType, ...reservedTicketWithNoTicketType } = reservedTicket;
|
|
69
65
|
const reservedTicket4inform = reservedTicketWithNoTicketType;
|
|
70
66
|
return {
|
|
@@ -79,15 +75,14 @@ function onReservationConfirmed(confirmedReservations, reserveAction) {
|
|
|
79
75
|
// ...(!minimizeReservation && programMembershipUsed !== undefined) ? { programMembershipUsed } : undefined, // discontinue(2026-08-01~)
|
|
80
76
|
};
|
|
81
77
|
});
|
|
82
|
-
// if (typeof issuedThrough.id !== 'string') {
|
|
83
|
-
// // COA予約では予約アクションを想定していないので、興行idは必ず存在するはず
|
|
84
|
-
// throw new factory.errors.Internal('reservation.issuedThrough.id must be string');
|
|
85
|
-
// }
|
|
86
78
|
const informObject = {
|
|
87
79
|
bookingTime,
|
|
88
80
|
project,
|
|
89
81
|
provider, // subReservationから移行(2024-03-20~)
|
|
90
|
-
reservationFor
|
|
82
|
+
reservationFor: {
|
|
83
|
+
id: reservationFor.id,
|
|
84
|
+
typeOf: reservationFor.typeOf
|
|
85
|
+
},
|
|
91
86
|
reservationNumber,
|
|
92
87
|
reservationStatus: factory_1.factory.reservationStatusType.ReservationConfirmed,
|
|
93
88
|
subReservation: subReservations4inform,
|
package/package.json
CHANGED
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"dependencies": {
|
|
12
12
|
"@aws-sdk/client-cognito-identity-provider": "3.1090.0",
|
|
13
13
|
"@aws-sdk/credential-providers": "3.1090.0",
|
|
14
|
-
"@chevre/factory": "10.
|
|
14
|
+
"@chevre/factory": "10.5.0-alpha.0",
|
|
15
15
|
"@motionpicture/coa-service": "10.0.0",
|
|
16
16
|
"@motionpicture/gmo-service": "6.1.0-alpha.0",
|
|
17
17
|
"@sendgrid/client": "8.1.4",
|
|
@@ -88,5 +88,5 @@
|
|
|
88
88
|
"postversion": "git push origin --tags",
|
|
89
89
|
"prepublishOnly": "npm run clean && npm run build"
|
|
90
90
|
},
|
|
91
|
-
"version": "27.1.0-alpha.
|
|
91
|
+
"version": "27.1.0-alpha.2"
|
|
92
92
|
}
|