@chevre/domain 21.20.0-alpha.15 → 21.20.0-alpha.16

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.
@@ -39,9 +39,7 @@ export declare class MongoRepository {
39
39
  * 取引削除タスク冪等作成
40
40
  */
41
41
  createDeleteTransactionTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.DeleteTransaction>, options: IOptionOnCreate): Promise<void>;
42
- createConfirmReserveTransactionTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.ConfirmReserveTransaction>, options: IOptionOnCreate): Promise<void>;
43
42
  createOnAssetTransactionStatusChangedTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.OnAssetTransactionStatusChanged>, options: IOptionOnCreate): Promise<void>;
44
- createSendOrderTaskIfNotExist(params: factory.task.IAttributes<factory.taskName.SendOrder>, options: IOptionOnCreate): Promise<void>;
45
43
  executeById(params: {
46
44
  id: string;
47
45
  executor: {
@@ -243,31 +243,36 @@ class MongoRepository {
243
243
  }
244
244
  });
245
245
  }
246
- createConfirmReserveTransactionTaskIfNotExist(params, options) {
247
- return __awaiter(this, void 0, void 0, function* () {
248
- const createdTask = yield this.taskModel.findOneAndUpdate({
249
- 'project.id': { $eq: params.project.id },
250
- name: { $eq: params.name },
251
- 'data.object.transactionNumber': {
252
- $exists: true,
253
- $eq: String(params.data.object.transactionNumber)
254
- },
255
- 'data.purpose.orderNumber': {
256
- $exists: true,
257
- $eq: String(params.data.purpose.orderNumber)
258
- }
259
- }, { $setOnInsert: params }, { new: true, upsert: true })
260
- .select({ _id: 1 })
261
- .exec();
262
- if (options.emitImmediately) {
263
- task_2.taskEventEmitter.emitTaskStatusChanged({
264
- id: createdTask.id,
265
- name: params.name,
266
- status: factory.taskStatus.Ready
267
- });
268
- }
269
- });
270
- }
246
+ // public async createConfirmReserveTransactionTaskIfNotExist(
247
+ // params: factory.task.IAttributes<factory.taskName.ConfirmReserveTransaction>,
248
+ // options: IOptionOnCreate
249
+ // ): Promise<void> {
250
+ // const createdTask = await this.taskModel.findOneAndUpdate(
251
+ // {
252
+ // 'project.id': { $eq: params.project.id },
253
+ // name: { $eq: params.name },
254
+ // 'data.object.transactionNumber': {
255
+ // $exists: true,
256
+ // $eq: String(params.data.object.transactionNumber)
257
+ // },
258
+ // 'data.purpose.orderNumber': {
259
+ // $exists: true,
260
+ // $eq: String(params.data.purpose.orderNumber)
261
+ // }
262
+ // },
263
+ // { $setOnInsert: params },
264
+ // { new: true, upsert: true }
265
+ // )
266
+ // .select({ _id: 1 })
267
+ // .exec();
268
+ // if (options.emitImmediately) {
269
+ // taskEventEmitter.emitTaskStatusChanged({
270
+ // id: createdTask.id,
271
+ // name: params.name,
272
+ // status: factory.taskStatus.Ready
273
+ // });
274
+ // }
275
+ // }
271
276
  createOnAssetTransactionStatusChangedTaskIfNotExist(params, options) {
272
277
  return __awaiter(this, void 0, void 0, function* () {
273
278
  const createdTask = yield this.taskModel.findOneAndUpdate({
@@ -293,27 +298,32 @@ class MongoRepository {
293
298
  }
294
299
  });
295
300
  }
296
- createSendOrderTaskIfNotExist(params, options) {
297
- return __awaiter(this, void 0, void 0, function* () {
298
- const createdTask = yield this.taskModel.findOneAndUpdate({
299
- 'project.id': { $eq: params.project.id },
300
- name: { $eq: params.name },
301
- 'data.object.orderNumber': {
302
- $exists: true,
303
- $eq: String(params.data.object.orderNumber)
304
- }
305
- }, { $setOnInsert: params }, { new: true, upsert: true })
306
- .select({ _id: 1 })
307
- .exec();
308
- if (options.emitImmediately) {
309
- task_2.taskEventEmitter.emitTaskStatusChanged({
310
- id: createdTask.id,
311
- name: params.name,
312
- status: factory.taskStatus.Ready
313
- });
314
- }
315
- });
316
- }
301
+ // public async createSendOrderTaskIfNotExist(
302
+ // params: factory.task.IAttributes<factory.taskName.SendOrder>,
303
+ // options: IOptionOnCreate
304
+ // ): Promise<void> {
305
+ // const createdTask = await this.taskModel.findOneAndUpdate(
306
+ // {
307
+ // 'project.id': { $eq: params.project.id },
308
+ // name: { $eq: params.name },
309
+ // 'data.object.orderNumber': {
310
+ // $exists: true,
311
+ // $eq: String(params.data.object.orderNumber)
312
+ // }
313
+ // },
314
+ // { $setOnInsert: params },
315
+ // { new: true, upsert: true }
316
+ // )
317
+ // .select({ _id: 1 })
318
+ // .exec();
319
+ // if (options.emitImmediately) {
320
+ // taskEventEmitter.emitTaskStatusChanged({
321
+ // id: createdTask.id,
322
+ // name: params.name,
323
+ // status: factory.taskStatus.Ready
324
+ // });
325
+ // }
326
+ // }
317
327
  // public async createOnOrderPaymentCompletedTaskIfNotExist(
318
328
  // params: factory.task.IAttributes<factory.taskName.OnOrderPaymentCompleted>,
319
329
  // options: IOptionOnCreate
@@ -86,25 +86,24 @@ function createOnOrderSentTasksByTransaction(params) {
86
86
  };
87
87
  }));
88
88
  }
89
- // tslint:disable-next-line:no-single-line-block-comment
90
- /* istanbul ignore else */
91
- if (Array.isArray(potentialActions.sendEmailMessage)) {
92
- potentialActions.sendEmailMessage.forEach((s) => {
93
- const sendEmailMessageTask = {
94
- project: s.project,
95
- name: factory.taskName.SendEmailMessage,
96
- status: factory.taskStatus.Ready,
97
- runsAt: now,
98
- remainingNumberOfTries: 3,
99
- numberOfTried: 0,
100
- executionResults: [],
101
- data: {
102
- actionAttributes: s
103
- }
104
- };
105
- taskAttributes.push(sendEmailMessageTask);
106
- });
107
- }
89
+ // createSendEmailMessageTaskIfNotExistへ移行(2024-01-12~)
90
+ // if (Array.isArray(potentialActions.sendEmailMessage)) {
91
+ // potentialActions.sendEmailMessage.forEach((s) => {
92
+ // const sendEmailMessageTask: factory.task.IAttributes<factory.taskName.SendEmailMessage> = {
93
+ // project: s.project,
94
+ // name: factory.taskName.SendEmailMessage,
95
+ // status: factory.taskStatus.Ready,
96
+ // runsAt: now, // なるはやで実行
97
+ // remainingNumberOfTries: 3,
98
+ // numberOfTried: 0,
99
+ // executionResults: [],
100
+ // data: {
101
+ // actionAttributes: s
102
+ // }
103
+ // };
104
+ // taskAttributes.push(sendEmailMessageTask);
105
+ // });
106
+ // }
108
107
  }
109
108
  return taskAttributes;
110
109
  }
@@ -14,6 +14,7 @@ exports.onOrderDelivered = void 0;
14
14
  * 注文ステータス変更時処理
15
15
  */
16
16
  const createDebug = require("debug");
17
+ const util = require("util");
17
18
  const factory = require("../../../factory");
18
19
  const factory_1 = require("./onOrderDelivered/factory");
19
20
  const debug = createDebug('chevre-domain:service:order');
@@ -22,43 +23,55 @@ function onOrderDelivered(params) {
22
23
  var _a, _b, _c, _d, _e;
23
24
  debug('onOrderStatusChanged called.', params.order.orderNumber, params.order.orderStatus, params.order.orderDate);
24
25
  let tasks = [];
26
+ const sendOrderPotentialActions = (_e = (_d = (_c = (_b = (_a = params.placeOrderTransaction) === null || _a === void 0 ? void 0 : _a.potentialActions) === null || _b === void 0 ? void 0 : _b.order) === null || _c === void 0 ? void 0 : _c.potentialActions) === null || _d === void 0 ? void 0 : _d.sendOrder) === null || _e === void 0 ? void 0 : _e.potentialActions;
25
27
  switch (params.order.orderStatus) {
26
28
  case factory.orderStatus.OrderDelivered:
27
29
  tasks = [
28
30
  ...(0, factory_1.createInformTasks)(params.order),
29
- // 取引のpotentialActionsを適用(2023-08-17~)
30
31
  ...(0, factory_1.createOnOrderSentTasksByTransaction)({
31
- potentialActions: (_e = (_d = (_c = (_b = (_a = params.placeOrderTransaction) === null || _a === void 0 ? void 0 : _a.potentialActions) === null || _b === void 0 ? void 0 : _b.order) === null || _c === void 0 ? void 0 : _c.potentialActions) === null || _d === void 0 ? void 0 : _d.sendOrder) === null || _e === void 0 ? void 0 : _e.potentialActions
32
+ potentialActions: sendOrderPotentialActions
32
33
  })
33
34
  ];
34
- // プロダクト登録プロセスロック解除
35
- try {
36
- const placeOrderTransaction = params.placeOrderTransaction;
37
- if (typeof (placeOrderTransaction === null || placeOrderTransaction === void 0 ? void 0 : placeOrderTransaction.id) === 'string') {
38
- // 廃止(2023-12-07~)
39
- // プロダクト登録プロセスロック解除(orderからproductIdを抽出する)
40
- // const productIds4unlock = params.order.acceptedOffers
41
- // .filter((o) => o.itemOffered.typeOf === factory.permit.PermitType.Permit
42
- // && typeof o.itemOffered.issuedThrough?.id === 'string'
43
- // && o.itemOffered.issuedThrough.id.length > 0)
44
- // .map((o) => String((<factory.order.IPermit>o.itemOffered).issuedThrough?.id));
45
- // await Promise.all(productIds4unlock.map(async (productId) => {
46
- // await processUnlockRegisterMembershipService({
47
- // agent: { id: String(params.order.customer.id) },
48
- // product: { id: productId },
49
- // purpose: { typeOf: placeOrderTransaction.typeOf, id: placeOrderTransaction.id }
50
- // })(repos);
51
- // }));
52
- }
53
- }
54
- catch (error) {
55
- throw error;
56
- }
57
35
  break;
58
36
  default:
59
37
  throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
60
38
  }
61
39
  yield repos.task.saveMany(tasks, { emitImmediately: true });
40
+ switch (params.order.orderStatus) {
41
+ case factory.orderStatus.OrderDelivered:
42
+ yield createSendEmailMessageTaskIfNotExist({
43
+ potentialActions: sendOrderPotentialActions
44
+ })(repos);
45
+ break;
46
+ default:
47
+ throw new factory.errors.NotImplemented(`${params.order.orderStatus} not implemented`);
48
+ }
62
49
  });
63
50
  }
64
51
  exports.onOrderDelivered = onOrderDelivered;
52
+ function createSendEmailMessageTaskIfNotExist(params) {
53
+ return (repos) => __awaiter(this, void 0, void 0, function* () {
54
+ var _a;
55
+ const sendEmailMessageActions = (_a = params.potentialActions) === null || _a === void 0 ? void 0 : _a.sendEmailMessage;
56
+ const now = new Date();
57
+ if (Array.isArray(sendEmailMessageActions)) {
58
+ yield Promise.all(sendEmailMessageActions.map((sendEmailMessageAction, index) => __awaiter(this, void 0, void 0, function* () {
59
+ const taskIdentifier = util.format('%s:%s:%s:%s:%s:%s', sendEmailMessageAction.project.id, factory.taskName.SendEmailMessage, sendEmailMessageAction.purpose.typeOf, sendEmailMessageAction.purpose.orderNumber, factory.orderStatus.OrderDelivered, index);
60
+ const sendEmailMessageTask = {
61
+ identifier: taskIdentifier,
62
+ project: sendEmailMessageAction.project,
63
+ name: factory.taskName.SendEmailMessage,
64
+ status: factory.taskStatus.Ready,
65
+ runsAt: now,
66
+ remainingNumberOfTries: 10,
67
+ numberOfTried: 0,
68
+ executionResults: [],
69
+ data: {
70
+ actionAttributes: sendEmailMessageAction
71
+ }
72
+ };
73
+ yield repos.task.createIfNotExistByIdentifier(sendEmailMessageTask, { emitImmediately: true });
74
+ })));
75
+ }
76
+ });
77
+ }
@@ -66,7 +66,9 @@ function createSendOrderTransactionTaskIfNotExist(params) {
66
66
  project: params.order.project,
67
67
  object: Object.assign(Object.assign({}, sendOrderObject), { confirmationNumber: params.order.confirmationNumber })
68
68
  };
69
+ const taskIdentifier = `${sendOrderTaskData.project.id}:${factory.taskName.SendOrder}:${sendOrderTaskData.object.typeOf}:${sendOrderTaskData.object.orderNumber}`;
69
70
  const sendOrderTask = {
71
+ identifier: taskIdentifier,
70
72
  project: params.order.project,
71
73
  name: factory.taskName.SendOrder,
72
74
  status: factory.taskStatus.Ready,
@@ -77,6 +79,7 @@ function createSendOrderTransactionTaskIfNotExist(params) {
77
79
  data: sendOrderTaskData
78
80
  };
79
81
  debug('processing createSendOrderTaskIfNotExist...', sendOrderTask);
80
- yield repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
82
+ // await repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
83
+ yield repos.task.createIfNotExistByIdentifier(sendOrderTask, { emitImmediately: true });
81
84
  });
82
85
  }
@@ -14,6 +14,7 @@ exports.onOrderProcessing = void 0;
14
14
  * 注文処理時処理
15
15
  */
16
16
  const createDebug = require("debug");
17
+ const util = require("util");
17
18
  const factory = require("../../../factory");
18
19
  const order_1 = require("../../../factory/order");
19
20
  const settings_1 = require("../../../settings");
@@ -70,14 +71,10 @@ function onOrderProcessing(params) {
70
71
  });
71
72
  }
72
73
  exports.onOrderProcessing = onOrderProcessing;
73
- // const COA_TASK_DELAY_IN_SECONDS = 0;
74
74
  function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
75
75
  return (repos) => __awaiter(this, void 0, void 0, function* () {
76
76
  const taskRunsAt = new Date();
77
77
  const taskRunsAt4coa = new Date();
78
- // const taskRunsAt4coa = moment(order.orderDate)
79
- // .add(COA_TASK_DELAY_IN_SECONDS, 'seconds')
80
- // .toDate();
81
78
  const confirmObjects = [
82
79
  ...(0, factory_1.createConfirmReservationActionObject4ChevreByOrder)({ order }),
83
80
  ...(0, factory_1.createConfirmReservationActionObject4COAByOrder)({ order })
@@ -96,7 +93,9 @@ function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
96
93
  : factory.service.webAPI.Identifier.Chevre
97
94
  }
98
95
  };
96
+ const taskIdentifier = util.format('%s:%s:%s:%s:%s:%s', data.project.id, factory.taskName.ConfirmReserveTransaction, data.purpose.typeOf, data.purpose.orderNumber, data.object.typeOf, data.object.transactionNumber);
99
97
  const confirmReserveTransactionTask = {
98
+ identifier: taskIdentifier,
100
99
  project: order.project,
101
100
  name: factory.taskName.ConfirmReserveTransaction,
102
101
  status: factory.taskStatus.Ready,
@@ -106,7 +105,8 @@ function createConfirmReserveTransactionTasksIfNotExist(order, simpleOrder) {
106
105
  executionResults: [],
107
106
  data
108
107
  };
109
- yield repos.task.createConfirmReserveTransactionTaskIfNotExist(confirmReserveTransactionTask, { emitImmediately: true });
108
+ // await repos.task.createConfirmReserveTransactionTaskIfNotExist(confirmReserveTransactionTask, { emitImmediately: true });
109
+ yield repos.task.createIfNotExistByIdentifier(confirmReserveTransactionTask, { emitImmediately: true });
110
110
  })));
111
111
  });
112
112
  }
@@ -172,7 +172,9 @@ function createSendOrderTransactionTaskIfNotExist(params) {
172
172
  project: sendOrderByTransaction.project,
173
173
  object: Object.assign(Object.assign({}, sendOrderByTransaction.object), { confirmationNumber: params.object.confirmationNumber })
174
174
  };
175
+ const taskIdentifier = `${sendOrderTaskData.project.id}:${factory.taskName.SendOrder}:${sendOrderTaskData.object.typeOf}:${sendOrderTaskData.object.orderNumber}`;
175
176
  const sendOrderTask = {
177
+ identifier: taskIdentifier,
176
178
  project: sendOrderByTransaction.project,
177
179
  name: factory.taskName.SendOrder,
178
180
  status: factory.taskStatus.Ready,
@@ -182,7 +184,8 @@ function createSendOrderTransactionTaskIfNotExist(params) {
182
184
  executionResults: [],
183
185
  data: sendOrderTaskData
184
186
  };
185
- yield repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
187
+ // await repos.task.createSendOrderTaskIfNotExist(sendOrderTask, { emitImmediately: true });
188
+ yield repos.task.createIfNotExistByIdentifier(sendOrderTask, { emitImmediately: true });
186
189
  }
187
190
  });
188
191
  }
package/package.json CHANGED
@@ -115,5 +115,5 @@
115
115
  "postversion": "git push origin --tags",
116
116
  "prepublishOnly": "npm run clean && npm run build && npm test && npm run doc"
117
117
  },
118
- "version": "21.20.0-alpha.15"
118
+ "version": "21.20.0-alpha.16"
119
119
  }