@chevre/domain 21.20.0-alpha.41 → 21.20.0-alpha.43
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 +12 -0
- package/lib/chevre/repo/acceptedOffer.js +22 -0
- package/lib/chevre/service/assetTransaction/reserveCOA.d.ts +19 -0
- package/lib/chevre/service/assetTransaction/reserveCOA.js +140 -0
- package/lib/chevre/service/order/onAssetTransactionStatusChanged.js +9 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.d.ts +5 -4
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing/factory.js +3 -1
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.d.ts +3 -2
- package/lib/chevre/service/order/onOrderStatusChanged/onOrderProcessing.js +63 -55
- package/lib/chevre/service/task/confirmReserveTransaction.d.ts +2 -0
- package/lib/chevre/service/task/confirmReserveTransaction.js +8 -21
- package/lib/chevre/settings.d.ts +0 -1
- package/lib/chevre/settings.js +1 -2
- package/package.json +2 -2
|
@@ -80,6 +80,18 @@ export declare class MongoRepository {
|
|
|
80
80
|
};
|
|
81
81
|
};
|
|
82
82
|
}): Promise<ISearchSlicedAcceptedOffersResult>;
|
|
83
|
+
countByOrderNumber(filter: {
|
|
84
|
+
orderNumber: {
|
|
85
|
+
$eq: string;
|
|
86
|
+
};
|
|
87
|
+
project: {
|
|
88
|
+
id: {
|
|
89
|
+
$eq: string;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
92
|
+
}): Promise<{
|
|
93
|
+
numAcceptedOffers: number;
|
|
94
|
+
}>;
|
|
83
95
|
/**
|
|
84
96
|
* 特定のフィールド値リストを検索する
|
|
85
97
|
*/
|
|
@@ -182,6 +182,28 @@ class MongoRepository {
|
|
|
182
182
|
return result;
|
|
183
183
|
});
|
|
184
184
|
}
|
|
185
|
+
countByOrderNumber(filter) {
|
|
186
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
187
|
+
const aggregate = this.orderModel.aggregate([
|
|
188
|
+
{ $match: { orderNumber: { $eq: filter.orderNumber.$eq } } },
|
|
189
|
+
{ $match: { 'project.id': { $eq: filter.project.id.$eq } } },
|
|
190
|
+
{ $match: { typeOf: { $eq: factory.order.OrderType.Order } } },
|
|
191
|
+
{
|
|
192
|
+
$project: {
|
|
193
|
+
_id: 0,
|
|
194
|
+
numAcceptedOffers: { $size: '$acceptedOffers' }
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
]);
|
|
198
|
+
const result = (yield aggregate
|
|
199
|
+
.option({ maxTimeMS: settings_1.MONGO_MAX_TIME_MS })
|
|
200
|
+
.exec()).shift();
|
|
201
|
+
if (result === undefined) {
|
|
202
|
+
throw new factory.errors.NotFound(factory.order.OrderType.Order);
|
|
203
|
+
}
|
|
204
|
+
return result;
|
|
205
|
+
});
|
|
206
|
+
}
|
|
185
207
|
/**
|
|
186
208
|
* 特定のフィールド値リストを検索する
|
|
187
209
|
*/
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import * as factory from '../../factory';
|
|
2
|
+
import type { MongoRepository as AcceptedOfferRepo } from '../../repo/acceptedOffer';
|
|
3
|
+
import type { MongoRepository as OrderRepo } from '../../repo/order';
|
|
4
|
+
interface IConfirmRepo {
|
|
5
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
6
|
+
order: OrderRepo;
|
|
7
|
+
}
|
|
8
|
+
type IConfirmOperation<T> = (repos: IConfirmRepo) => Promise<T>;
|
|
9
|
+
/**
|
|
10
|
+
* 取引確定
|
|
11
|
+
*/
|
|
12
|
+
declare function confirm(params: {
|
|
13
|
+
project: {
|
|
14
|
+
id: string;
|
|
15
|
+
};
|
|
16
|
+
object: factory.action.interact.confirm.reservation.IObject4COA;
|
|
17
|
+
purpose: factory.action.interact.confirm.reservation.IPurpose;
|
|
18
|
+
}): IConfirmOperation<void>;
|
|
19
|
+
export { confirm };
|
|
@@ -0,0 +1,140 @@
|
|
|
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.confirm = void 0;
|
|
13
|
+
/**
|
|
14
|
+
* COA予約取引サービス
|
|
15
|
+
*/
|
|
16
|
+
const COA = require("@motionpicture/coa-service");
|
|
17
|
+
const createDebug = require("debug");
|
|
18
|
+
const google_libphonenumber_1 = require("google-libphonenumber");
|
|
19
|
+
const util_1 = require("util");
|
|
20
|
+
const credentials_1 = require("../../credentials");
|
|
21
|
+
const factory = require("../../factory");
|
|
22
|
+
const debug = createDebug('chevre-domain:service:assetTransaction');
|
|
23
|
+
const coaAuthClient = new COA.auth.RefreshToken({
|
|
24
|
+
endpoint: credentials_1.credentials.coa.endpoint,
|
|
25
|
+
refreshToken: credentials_1.credentials.coa.refreshToken
|
|
26
|
+
});
|
|
27
|
+
function createConfirmObject4COAByOrder(params) {
|
|
28
|
+
// COA予約のみ
|
|
29
|
+
const coaReservationOffers = params.order.acceptedOffers.filter((o) => {
|
|
30
|
+
var _a;
|
|
31
|
+
return o.itemOffered.typeOf === factory.reservationType.EventReservation
|
|
32
|
+
&& ((_a = o.offeredThrough) === null || _a === void 0 ? void 0 : _a.identifier) === factory.service.webAPI.Identifier.COA;
|
|
33
|
+
});
|
|
34
|
+
const customer = params.order.customer;
|
|
35
|
+
// 電話番号のフォーマットを日本人にリーダブルに調整(COAではこのフォーマットで扱うので)
|
|
36
|
+
const phoneUtil = google_libphonenumber_1.PhoneNumberUtil.getInstance();
|
|
37
|
+
const phoneNumber = phoneUtil.parse(customer.telephone, 'JP');
|
|
38
|
+
let telNum = phoneUtil.format(phoneNumber, google_libphonenumber_1.PhoneNumberFormat.NATIONAL);
|
|
39
|
+
// COAでは数字のみ受け付けるので数字以外を除去
|
|
40
|
+
telNum = telNum.replace(/[^\d]/g, '');
|
|
41
|
+
const mailAddr = customer.email;
|
|
42
|
+
if (mailAddr === undefined) {
|
|
43
|
+
throw new factory.errors.Argument('order', 'order.customer.email undefined');
|
|
44
|
+
}
|
|
45
|
+
const coaReservations = coaReservationOffers
|
|
46
|
+
.filter((o) => o.itemOffered.reservationNumber === params.reservationNumber)
|
|
47
|
+
.map((o) => {
|
|
48
|
+
return o.itemOffered;
|
|
49
|
+
});
|
|
50
|
+
const coaReservation = coaReservations[0];
|
|
51
|
+
const reservationForCOAInfo = coaReservation.reservationFor.coaInfo;
|
|
52
|
+
if (reservationForCOAInfo === undefined) {
|
|
53
|
+
throw new factory.errors.NotFound('reservationFor.coaInfo');
|
|
54
|
+
}
|
|
55
|
+
const totalPrice = coaReservation.reservedTicket.coaReserveAmount;
|
|
56
|
+
if (totalPrice === undefined) {
|
|
57
|
+
throw new factory.errors.NotFound('reservedTicket.coaReserveAmount');
|
|
58
|
+
}
|
|
59
|
+
const listTicket = coaReservations.map((r) => {
|
|
60
|
+
var _a;
|
|
61
|
+
if (typeof ((_a = r.reservedTicket.coaTicketInfo) === null || _a === void 0 ? void 0 : _a.ticketCode) !== 'string') {
|
|
62
|
+
throw new factory.errors.NotFound('reservedTicket.coaTicketInfo');
|
|
63
|
+
}
|
|
64
|
+
// 冗長な属性を排除(2023-03-20~)
|
|
65
|
+
const { ticketCode, stdPrice, addPrice, spseatAdd1, spseatAdd2, disPrice, salePrice, mvtkAppPrice, ticketCount, spseatKbn, seatNum, addGlasses, kbnEisyahousiki, mvtkNum, mvtkKbnDenshiken, mvtkKbnMaeuriken, mvtkKbnKensyu, mvtkSalesPrice, kbnMgtk } = r.reservedTicket.coaTicketInfo;
|
|
66
|
+
return {
|
|
67
|
+
ticketCode, stdPrice, addPrice, spseatAdd1, spseatAdd2,
|
|
68
|
+
disPrice, salePrice, mvtkAppPrice, ticketCount, spseatKbn,
|
|
69
|
+
seatNum, addGlasses, kbnEisyahousiki, mvtkNum, mvtkKbnDenshiken,
|
|
70
|
+
mvtkKbnMaeuriken, mvtkKbnKensyu, mvtkSalesPrice, kbnMgtk
|
|
71
|
+
};
|
|
72
|
+
});
|
|
73
|
+
return {
|
|
74
|
+
theaterCode: reservationForCOAInfo.theaterCode,
|
|
75
|
+
dateJouei: reservationForCOAInfo.dateJouei,
|
|
76
|
+
titleCode: reservationForCOAInfo.titleCode,
|
|
77
|
+
titleBranchNum: reservationForCOAInfo.titleBranchNum,
|
|
78
|
+
timeBegin: reservationForCOAInfo.timeBegin,
|
|
79
|
+
tmpReserveNum: params.reservationNumber,
|
|
80
|
+
// tslint:disable-next-line:no-irregular-whitespace
|
|
81
|
+
reserveName: (0, util_1.format)('%s %s', customer.familyName, customer.givenName),
|
|
82
|
+
// tslint:disable-next-line:no-irregular-whitespace
|
|
83
|
+
reserveNameJkana: (0, util_1.format)('%s %s', customer.familyName, customer.givenName),
|
|
84
|
+
telNum: telNum,
|
|
85
|
+
mailAddr: mailAddr,
|
|
86
|
+
reserveAmount: totalPrice,
|
|
87
|
+
listTicket
|
|
88
|
+
// transactionNumber: reservationNumber,
|
|
89
|
+
// typeOf: 'COAReserveTransaction'
|
|
90
|
+
};
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* 取引確定
|
|
94
|
+
*/
|
|
95
|
+
function confirm(params) {
|
|
96
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
97
|
+
// ここでIObject4COAを注文から生成する(2024-01-24~)
|
|
98
|
+
const order = yield fixOrderAsPurpose(params)(repos);
|
|
99
|
+
const updReserveArgs = createConfirmObject4COAByOrder({ order, reservationNumber: params.object.transactionNumber });
|
|
100
|
+
debug('confirming coa reserve transaction...', order, updReserveArgs);
|
|
101
|
+
// 未本予約であれば実行(COA本予約は一度成功すると成功できない)
|
|
102
|
+
// リトライ可能な前提でつくる必要があるので、要注意
|
|
103
|
+
// すでに本予約済みかどうか確認
|
|
104
|
+
const reserveService = new COA.service.Reserve({
|
|
105
|
+
endpoint: credentials_1.credentials.coa.endpoint,
|
|
106
|
+
auth: coaAuthClient
|
|
107
|
+
}, { timeout: credentials_1.credentials.coa.timeout });
|
|
108
|
+
const stateReserveResult = yield reserveService.stateReserve({
|
|
109
|
+
theaterCode: params.object.theaterCode,
|
|
110
|
+
reserveNum: params.object.tmpReserveNum,
|
|
111
|
+
telNum: params.object.telNum
|
|
112
|
+
});
|
|
113
|
+
if (stateReserveResult === null) {
|
|
114
|
+
yield reserveService.updReserve(params.object);
|
|
115
|
+
}
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
exports.confirm = confirm;
|
|
119
|
+
function fixOrderAsPurpose(params) {
|
|
120
|
+
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
121
|
+
let order;
|
|
122
|
+
const purposeOrderNumber = params.purpose.orderNumber;
|
|
123
|
+
const orders = yield repos.order.search({
|
|
124
|
+
limit: 1,
|
|
125
|
+
page: 1,
|
|
126
|
+
project: { id: { $eq: params.project.id } },
|
|
127
|
+
// confirmationNumbers: [payPurposeConfirmationNumber],
|
|
128
|
+
orderNumbers: [purposeOrderNumber]
|
|
129
|
+
}, { customer: 1, orderNumber: 1, typeOf: 1 });
|
|
130
|
+
order = orders.shift();
|
|
131
|
+
if (order === undefined) {
|
|
132
|
+
throw new factory.errors.NotFound('Order as purpose');
|
|
133
|
+
}
|
|
134
|
+
const acceptedOffers = yield repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
135
|
+
orderNumber: { $eq: order.orderNumber },
|
|
136
|
+
project: { id: { $eq: params.project.id } }
|
|
137
|
+
}, ['itemOffered', 'offeredThrough']);
|
|
138
|
+
return Object.assign(Object.assign({}, order), { acceptedOffers });
|
|
139
|
+
});
|
|
140
|
+
}
|
|
@@ -10,9 +10,11 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.processing2inTransit = exports.paymentDue2Processing = exports.onAssetTransactionStatusChanged = void 0;
|
|
13
|
+
const createDebug = require("debug");
|
|
13
14
|
const findPlaceOrderTransaction_1 = require("./findPlaceOrderTransaction");
|
|
14
15
|
const onOrderStatusChanged_1 = require("./onOrderStatusChanged");
|
|
15
16
|
const factory = require("../../factory");
|
|
17
|
+
const debug = createDebug('chevre-domain:service:order');
|
|
16
18
|
// tslint:disable-next-line:max-func-body-length
|
|
17
19
|
function onAssetTransactionStatusChanged(params) {
|
|
18
20
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
@@ -200,9 +202,15 @@ function paymentDue2Processing(params) {
|
|
|
200
202
|
const acceptedOffers = yield repos.acceptedOffer.searchAcceptedOffersByOrderNumber({
|
|
201
203
|
orderNumber: { $eq: order.orderNumber },
|
|
202
204
|
project: { id: { $eq: params.project.id } }
|
|
205
|
+
}, ['itemOffered', 'offeredThrough']);
|
|
206
|
+
const { numAcceptedOffers } = yield repos.acceptedOffer.countByOrderNumber({
|
|
207
|
+
orderNumber: { $eq: order.orderNumber },
|
|
208
|
+
project: { id: { $eq: params.project.id } }
|
|
203
209
|
});
|
|
210
|
+
debug('onAssetTransactionStatusChanged paymentDue2Processing: calling onOrderProcessing...', numAcceptedOffers, acceptedOffers);
|
|
204
211
|
yield (0, onOrderStatusChanged_1.onOrderProcessing)({
|
|
205
|
-
order: Object.assign(Object.assign({}, order), { acceptedOffers,
|
|
212
|
+
order: Object.assign(Object.assign({}, order), { acceptedOffers,
|
|
213
|
+
numAcceptedOffers, orderStatus: factory.orderStatus.OrderProcessing // 強制的にOrderProcessingとして処理する
|
|
206
214
|
}),
|
|
207
215
|
placeOrderTransaction
|
|
208
216
|
})({
|
|
@@ -1,17 +1,18 @@
|
|
|
1
1
|
import * as factory from '../../../../factory';
|
|
2
|
+
type IAcceptedOffer = Pick<factory.order.IAcceptedOffer<factory.order.IItemOffered>, 'itemOffered' | 'offeredThrough'>;
|
|
2
3
|
type IProcessingOrder = factory.order.IOrder & {
|
|
3
|
-
|
|
4
|
+
numAcceptedOffers: number;
|
|
4
5
|
orderStatus: factory.orderStatus.OrderProcessing;
|
|
5
6
|
};
|
|
6
7
|
declare function createInformTasks(order: IProcessingOrder): factory.task.IAttributes<factory.taskName.TriggerWebhook>[];
|
|
7
8
|
declare function createConfirmReservationActionObject4ChevreByOrder(params: {
|
|
8
9
|
order: factory.order.IOrder & {
|
|
9
|
-
acceptedOffers:
|
|
10
|
+
acceptedOffers: IAcceptedOffer[];
|
|
10
11
|
};
|
|
11
12
|
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.Chevre>[];
|
|
12
13
|
declare function createConfirmReservationActionObject4COAByOrder(params: {
|
|
13
14
|
order: factory.order.IOrder & {
|
|
14
|
-
acceptedOffers:
|
|
15
|
+
acceptedOffers: IAcceptedOffer[];
|
|
15
16
|
};
|
|
16
17
|
}): factory.action.interact.confirm.reservation.IObject<factory.service.webAPI.Identifier.COA>[];
|
|
17
18
|
declare function createConfirmRegisterServiceActionObjectByOrder(params: {
|
|
@@ -20,4 +21,4 @@ declare function createConfirmRegisterServiceActionObjectByOrder(params: {
|
|
|
20
21
|
};
|
|
21
22
|
}): factory.action.interact.confirm.registerService.IObject[];
|
|
22
23
|
type IExternalOrder = Pick<factory.order.IOrder, 'project' | 'typeOf' | 'seller' | 'customer' | 'confirmationNumber' | 'orderNumber' | 'price' | 'priceCurrency' | 'orderDate' | 'name' | 'orderStatus' | 'orderedItem' | 'paymentMethods'>;
|
|
23
|
-
export { IExternalOrder, createInformTasks, createConfirmReservationActionObject4ChevreByOrder, createConfirmReservationActionObject4COAByOrder, createConfirmRegisterServiceActionObjectByOrder };
|
|
24
|
+
export { IAcceptedOffer, IExternalOrder, createInformTasks, createConfirmReservationActionObject4ChevreByOrder, createConfirmReservationActionObject4COAByOrder, createConfirmRegisterServiceActionObjectByOrder };
|
|
@@ -49,7 +49,9 @@ exports.createInformTasks = createInformTasks;
|
|
|
49
49
|
function creteOrder4inform(order) {
|
|
50
50
|
return Object.assign({
|
|
51
51
|
// whitelistで作成する(2022-07-19~)
|
|
52
|
-
project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers:
|
|
52
|
+
project: order.project, typeOf: order.typeOf, seller: order.seller, price: order.price, priceCurrency: order.priceCurrency, confirmationNumber: order.confirmationNumber, orderNumber: order.orderNumber, acceptedOffers: [],
|
|
53
|
+
// numAcceptedOffers: order.acceptedOffers.length,
|
|
54
|
+
numAcceptedOffers: order.numAcceptedOffers, orderStatus: order.orderStatus, orderDate: order.orderDate,
|
|
53
55
|
// mask
|
|
54
56
|
customer: Object.assign(Object.assign({}, (0, order_1.createMaskedCustomer)(order, { noProfile: false })), { additionalProperty: (Array.isArray(order.customer.additionalProperty)) ? order.customer.additionalProperty : [],
|
|
55
57
|
// identifierは必要
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import type { MongoRepository as TaskRepo } from '../../../repo/task';
|
|
2
2
|
import * as factory from '../../../factory';
|
|
3
|
-
import { IExternalOrder } from './onOrderProcessing/factory';
|
|
3
|
+
import { IAcceptedOffer, IExternalOrder } from './onOrderProcessing/factory';
|
|
4
4
|
type IPlaceOrderTransaction = Pick<factory.transaction.placeOrder.ITransaction, 'id' | 'typeOf' | 'potentialActions'>;
|
|
5
5
|
declare function onOrderProcessing(params: {
|
|
6
6
|
order: Omit<factory.order.IOrder, 'orderStatus'> & {
|
|
7
7
|
orderStatus: factory.orderStatus.OrderProcessing;
|
|
8
|
-
acceptedOffers:
|
|
8
|
+
acceptedOffers: IAcceptedOffer[];
|
|
9
|
+
numAcceptedOffers: number;
|
|
9
10
|
};
|
|
10
11
|
placeOrderTransaction?: IPlaceOrderTransaction;
|
|
11
12
|
}): (repos: {
|
|
@@ -21,7 +21,6 @@ const settings_1 = require("../../../settings");
|
|
|
21
21
|
const createSendEmailMessageTaskIfNotExist_1 = require("./onOrderProcessing/createSendEmailMessageTaskIfNotExist");
|
|
22
22
|
const factory_1 = require("./onOrderProcessing/factory");
|
|
23
23
|
const debug = createDebug('chevre-domain:service:order');
|
|
24
|
-
const USE_CONFIRM_REGISTER_SERVICE_TRANSACTION = process.env.USE_CONFIRM_REGISTER_SERVICE_TRANSACTION === '1';
|
|
25
24
|
function onOrderProcessing(params) {
|
|
26
25
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
27
26
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
@@ -45,8 +44,8 @@ function onOrderProcessing(params) {
|
|
|
45
44
|
switch (params.order.orderStatus) {
|
|
46
45
|
case factory.orderStatus.OrderProcessing:
|
|
47
46
|
tasks = [
|
|
48
|
-
...(0, factory_1.createInformTasks)(params.order)
|
|
49
|
-
...
|
|
47
|
+
...(0, factory_1.createInformTasks)(params.order)
|
|
48
|
+
// ...await createConfirmRegisterServiceTransactionTasks(params.order, simpleOrder)(repos) // ひとまず保留
|
|
50
49
|
];
|
|
51
50
|
break;
|
|
52
51
|
default:
|
|
@@ -108,58 +107,67 @@ function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
|
|
|
108
107
|
})));
|
|
109
108
|
});
|
|
110
109
|
}
|
|
111
|
-
function createConfirmRegisterServiceTransactionTasks(
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
110
|
+
// function createConfirmRegisterServiceTransactionTasks(
|
|
111
|
+
// order: factory.order.IOrder & {
|
|
112
|
+
// acceptedOffers: factory.order.IAcceptedOffer<factory.order.IItemOffered>[];
|
|
113
|
+
// },
|
|
114
|
+
// simpleOrder: factory.order.ISimpleOrder
|
|
115
|
+
// ) {
|
|
116
|
+
// return async (repos: {
|
|
117
|
+
// task: TaskRepo;
|
|
118
|
+
// }): Promise<factory.task.IAttributes<factory.taskName.ConfirmRegisterServiceTransaction>[]> => {
|
|
119
|
+
// const taskRunsAt = new Date();
|
|
120
|
+
// if (USE_CONFIRM_REGISTER_SERVICE_TRANSACTION) {
|
|
121
|
+
// const confirmObjects = createConfirmRegisterServiceActionObjectByOrder({ order });
|
|
122
|
+
// const tasks: factory.task.IAttributes<factory.taskName.ConfirmRegisterServiceTransaction>[] = [];
|
|
123
|
+
// await Promise.all(confirmObjects.map(async (confirmObject) => {
|
|
124
|
+
// // 冗長なタスク作成を回避
|
|
125
|
+
// const existingTasks = await repos.task.search(
|
|
126
|
+
// {
|
|
127
|
+
// limit: 1,
|
|
128
|
+
// page: 1,
|
|
129
|
+
// project: { id: { $eq: order.project.id } },
|
|
130
|
+
// name: factory.taskName.ConfirmReserveTransaction,
|
|
131
|
+
// data: {
|
|
132
|
+
// object: { transactionNumber: { $eq: confirmObject.transactionNumber } },
|
|
133
|
+
// purpose: { orderNumber: { $eq: order.orderNumber } }
|
|
134
|
+
// }
|
|
135
|
+
// },
|
|
136
|
+
// {
|
|
137
|
+
// data: 0, executionResults: 0, name: 0, numberOfTried: 0,
|
|
138
|
+
// remainingNumberOfTries: 0, runsAt: 0, status: 0
|
|
139
|
+
// }
|
|
140
|
+
// );
|
|
141
|
+
// if (existingTasks.length === 0) {
|
|
142
|
+
// const data: factory.task.IData<factory.taskName.ConfirmRegisterServiceTransaction> = {
|
|
143
|
+
// project: order.project,
|
|
144
|
+
// typeOf: factory.actionType.ConfirmAction,
|
|
145
|
+
// object: confirmObject,
|
|
146
|
+
// agent: order.project,
|
|
147
|
+
// purpose: simpleOrder,
|
|
148
|
+
// instrument: {
|
|
149
|
+
// typeOf: 'WebAPI',
|
|
150
|
+
// identifier: factory.service.webAPI.Identifier.Chevre
|
|
151
|
+
// }
|
|
152
|
+
// };
|
|
153
|
+
// tasks.push({
|
|
154
|
+
// project: order.project,
|
|
155
|
+
// name: factory.taskName.ConfirmRegisterServiceTransaction,
|
|
156
|
+
// status: factory.taskStatus.Ready,
|
|
157
|
+
// runsAt: taskRunsAt,
|
|
158
|
+
// remainingNumberOfTries: 10,
|
|
159
|
+
// numberOfTried: 0,
|
|
160
|
+
// executionResults: [],
|
|
161
|
+
// data
|
|
162
|
+
// });
|
|
163
|
+
// }
|
|
164
|
+
// }));
|
|
165
|
+
// return tasks;
|
|
166
|
+
// } else {
|
|
167
|
+
// return [];
|
|
168
|
+
// }
|
|
169
|
+
// };
|
|
170
|
+
// }
|
|
163
171
|
function createGivePointAwardTaskIfNotExist(params) {
|
|
164
172
|
return (repos) => __awaiter(this, void 0, void 0, function* () {
|
|
165
173
|
var _a;
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { IOperation } from '../task';
|
|
2
2
|
import * as factory from '../../factory';
|
|
3
|
+
import { MongoRepository as AcceptedOfferRepo } from '../../repo/acceptedOffer';
|
|
3
4
|
import { MongoRepository as ActionRepo } from '../../repo/action';
|
|
4
5
|
import { MongoRepository as AssetTransactionRepo } from '../../repo/assetTransaction';
|
|
5
6
|
import { MongoRepository as OrderRepo } from '../../repo/order';
|
|
@@ -16,6 +17,7 @@ export declare function confirmReserveTransaction(params: factory.action.interac
|
|
|
16
17
|
sendOrder: boolean;
|
|
17
18
|
useOnOrderStatusChanged: boolean;
|
|
18
19
|
}): (repos: {
|
|
20
|
+
acceptedOffer: AcceptedOfferRepo;
|
|
19
21
|
action: ActionRepo;
|
|
20
22
|
assetTransaction: AssetTransactionRepo;
|
|
21
23
|
order: OrderRepo;
|
|
@@ -10,19 +10,15 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
10
10
|
};
|
|
11
11
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
12
|
exports.confirmReserveTransaction = exports.call = void 0;
|
|
13
|
-
const COA = require("@motionpicture/coa-service");
|
|
14
13
|
const factory = require("../../factory");
|
|
14
|
+
const acceptedOffer_1 = require("../../repo/acceptedOffer");
|
|
15
15
|
const action_1 = require("../../repo/action");
|
|
16
16
|
const assetTransaction_1 = require("../../repo/assetTransaction");
|
|
17
17
|
const order_1 = require("../../repo/order");
|
|
18
18
|
const reservation_1 = require("../../repo/reservation");
|
|
19
19
|
const task_1 = require("../../repo/task");
|
|
20
20
|
const ReserveTransactionService = require("../assetTransaction/reserve");
|
|
21
|
-
const
|
|
22
|
-
const coaAuthClient = new COA.auth.RefreshToken({
|
|
23
|
-
endpoint: credentials_1.credentials.coa.endpoint,
|
|
24
|
-
refreshToken: credentials_1.credentials.coa.refreshToken
|
|
25
|
-
});
|
|
21
|
+
const COAReserveService = require("../assetTransaction/reserveCOA");
|
|
26
22
|
/**
|
|
27
23
|
* タスク実行関数
|
|
28
24
|
*/
|
|
@@ -32,6 +28,7 @@ function call(data) {
|
|
|
32
28
|
sendOrder: true,
|
|
33
29
|
useOnOrderStatusChanged: true
|
|
34
30
|
})({
|
|
31
|
+
acceptedOffer: new acceptedOffer_1.MongoRepository(settings.connection),
|
|
35
32
|
action: new action_1.MongoRepository(settings.connection),
|
|
36
33
|
assetTransaction: new assetTransaction_1.MongoRepository(settings.connection),
|
|
37
34
|
order: new order_1.MongoRepository(settings.connection),
|
|
@@ -54,22 +51,12 @@ function confirmReserveTransaction(params, options) {
|
|
|
54
51
|
switch (params.instrument.identifier) {
|
|
55
52
|
case factory.service.webAPI.Identifier.COA:
|
|
56
53
|
// COA本予約
|
|
57
|
-
// 未本予約であれば実行(COA本予約は一度成功すると成功できない)
|
|
58
54
|
object = object;
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}, { timeout: credentials_1.credentials.coa.timeout });
|
|
65
|
-
const stateReserveResult = yield reserveService.stateReserve({
|
|
66
|
-
theaterCode: object.theaterCode,
|
|
67
|
-
reserveNum: object.tmpReserveNum,
|
|
68
|
-
telNum: object.telNum
|
|
69
|
-
});
|
|
70
|
-
if (stateReserveResult === null) {
|
|
71
|
-
yield reserveService.updReserve(object);
|
|
72
|
-
}
|
|
55
|
+
yield COAReserveService.confirm({
|
|
56
|
+
project: { id: confirmActionAttributes.project.id },
|
|
57
|
+
object,
|
|
58
|
+
purpose: confirmActionAttributes.purpose
|
|
59
|
+
})(repos);
|
|
73
60
|
break;
|
|
74
61
|
default:
|
|
75
62
|
// 予約取引確定
|
package/lib/chevre/settings.d.ts
CHANGED
|
@@ -39,7 +39,6 @@ export declare const USE_DELETE_EVENT_BY_ORDER: boolean;
|
|
|
39
39
|
export declare const USE_OPTIMIZE_TICKET_OFFER: boolean;
|
|
40
40
|
export declare const USE_FETCH_API: boolean;
|
|
41
41
|
export declare const USE_INFORM_ORDER_IN_TRANSIT: boolean;
|
|
42
|
-
export declare const USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING: boolean;
|
|
43
42
|
export declare const USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING: boolean;
|
|
44
43
|
export declare const USE_VERIFY_ACCEPTED_OFFERS: boolean;
|
|
45
44
|
export declare const USE_MINIMIZED_PAY_TASK: boolean;
|
package/lib/chevre/settings.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = exports.USE_MINIMIZED_PAY_TASK = exports.USE_VERIFY_ACCEPTED_OFFERS = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.
|
|
3
|
+
exports.settings = exports.DELIVER_ORDER_LIMIT = exports.MONGO_AUTO_INDEX = exports.MONGO_READ_PREFERENCE = exports.MONGO_MAX_TIME_MS = exports.USE_KANA_NAME_IN_ACCEPTED_OFFER = exports.USE_MINIMIZED_PAY_TASK = exports.USE_VERIFY_ACCEPTED_OFFERS = exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = exports.USE_INFORM_ORDER_IN_TRANSIT = exports.USE_FETCH_API = exports.USE_OPTIMIZE_TICKET_OFFER = exports.USE_DELETE_EVENT_BY_ORDER = exports.USE_ASSET_TRANSACTION_SYNC_PROCESSING = exports.DEFAULT_TASKS_EXPORT_AGENT_NAME = exports.DEFAULT_SENDER_EMAIL = exports.TRANSACTION_CANCELED_STORAGE_PERIOD_IN_DAYS = exports.TRANSACTION_CONFIRMED_STORAGE_PERIOD_IN_DAYS = exports.ASSET_TRANSACTION_STORAGE_PERIOD_IN_DAYS = exports.MAX_NUM_CREDIT_CARD_PAYMENT_METHOD = exports.ABORTED_TASKS_WITHOUT_REPORT = exports.TRIGGER_WEBHOOK_RETRY_INTERVAL_IN_MS = exports.TRIGGER_WEBHOOK_MAX_RETRY_COUNT = void 0;
|
|
4
4
|
const factory = require("./factory");
|
|
5
5
|
const transactionWebhookUrls = (typeof process.env.INFORM_TRANSACTION_URL === 'string')
|
|
6
6
|
? process.env.INFORM_TRANSACTION_URL.split(' ')
|
|
@@ -63,7 +63,6 @@ exports.USE_DELETE_EVENT_BY_ORDER = process.env.USE_DELETE_EVENT_BY_ORDER === '1
|
|
|
63
63
|
exports.USE_OPTIMIZE_TICKET_OFFER = process.env.USE_OPTIMIZE_TICKET_OFFER === '1';
|
|
64
64
|
exports.USE_FETCH_API = process.env.USE_FETCH_API === '1';
|
|
65
65
|
exports.USE_INFORM_ORDER_IN_TRANSIT = process.env.USE_INFORM_ORDER_IN_TRANSIT === '1';
|
|
66
|
-
exports.USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING = process.env.USE_INFORM_ACCEPTED_OFFERS_ON_ORDER_PROCESSING === '1';
|
|
67
66
|
exports.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING = process.env.USE_SEND_EMAIL_MESSAGE_ON_ORDER_PROCESSING === '1';
|
|
68
67
|
exports.USE_VERIFY_ACCEPTED_OFFERS = process.env.USE_VERIFY_ACCEPTED_OFFERS === '1';
|
|
69
68
|
exports.USE_MINIMIZED_PAY_TASK = process.env.USE_MINIMIZED_PAY_TASK === '1';
|
package/package.json
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
"@aws-sdk/credential-providers": "3.433.0",
|
|
13
13
|
"@chevre/factory": "4.352.0-alpha.4",
|
|
14
14
|
"@cinerino/sdk": "5.9.0-alpha.1",
|
|
15
|
-
"@motionpicture/coa-service": "9.
|
|
15
|
+
"@motionpicture/coa-service": "9.3.0-alpha.0",
|
|
16
16
|
"@motionpicture/gmo-service": "5.3.0-alpha.0",
|
|
17
17
|
"@sendgrid/mail": "6.4.0",
|
|
18
18
|
"@surfrock/sdk": "1.2.0",
|
|
@@ -112,5 +112,5 @@
|
|
|
112
112
|
"postversion": "git push origin --tags",
|
|
113
113
|
"prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
|
|
114
114
|
},
|
|
115
|
-
"version": "21.20.0-alpha.
|
|
115
|
+
"version": "21.20.0-alpha.43"
|
|
116
116
|
}
|