Merged PR 783: [1回目実行]実施後の修正実施
## 概要 [Task3790: [1回目実行]実施後の修正実施](https://paruru.nds-tyo.co.jp:8443/tfs/ReciproCollection/fa4924a4-d079-4fab-9fb5-a9a11eb205f0/_workitems/edit/3790) - 移行データ動作確認(1回目)で発生した不具合の対応を実施しました ・バリデータでエラーとなる(コメントアウトして実行したところ、成功) ・アカウント管理者のユーザーのメール認証がfalseで登録されるので、 パスワード変更では認証をできない⇒強制敵にtrueで登録する ・(指摘外、検証ツール実装時に内部検出)カードライセンス登録時、カードライセンス発行・ライセンステーブルも登録する - このPull Requestでの対象/対象外 上記以外の指摘(下記)はタスク3772にて対応するため本プルリク対象外 変換ツール ・ディーラーアカウントに登録されたアカウントがいないCSVで 変換するとディーラーがundefined(パラメータがない)状態でJSON出力されてしまう。 ・重複したメールアドレスの取り込みが未実装 ・有効期限が9999/~は移行対象外とする ・ワークタイプの出力がされない 登録ツール ・ファイルパスの取り扱いが変換ツールと異なる - 影響範囲(他の機能にも影響があるか) ## レビューポイント - カードライセンス登録時のライセンスのアカウントIDについて、第一階層アカウントのため「AUTO_INCREMENT_START: 853211」を設定しているが問題ないか? →移行データ上第一階層アカウントは最初に登場するため問題ない認識 ## UIの変更 - 無し ## 動作確認状況 - ローカルで確認済 ## 補足 - 相談、参考資料などがあれば
This commit is contained in:
parent
b524fd5995
commit
68d1a1796b
@ -134,7 +134,7 @@ export function isAccountsInputFile(obj: any): obj is AccountsInputFile {
|
|||||||
"country" in obj &&
|
"country" in obj &&
|
||||||
typeof obj.country === "string" &&
|
typeof obj.country === "string" &&
|
||||||
("dealerAccountId" in obj
|
("dealerAccountId" in obj
|
||||||
? typeof obj.dealerAccountId === "number"
|
? obj.dealerAccountId === null || typeof obj.dealerAccountId === "number"
|
||||||
: true) &&
|
: true) &&
|
||||||
"adminName" in obj &&
|
"adminName" in obj &&
|
||||||
typeof obj.adminName === "string" &&
|
typeof obj.adminName === "string" &&
|
||||||
|
|||||||
@ -1,20 +1,18 @@
|
|||||||
import { Injectable } from '@nestjs/common';
|
import { Injectable } from "@nestjs/common";
|
||||||
import {
|
import { DataSource } from "typeorm";
|
||||||
DataSource,
|
import { User } from "../users/entity/user.entity";
|
||||||
} from 'typeorm';
|
import { Account } from "./entity/account.entity";
|
||||||
import { User } from '../users/entity/user.entity';
|
|
||||||
import { Account } from './entity/account.entity';
|
|
||||||
import {
|
import {
|
||||||
getDirection,
|
getDirection,
|
||||||
getTaskListSortableAttribute,
|
getTaskListSortableAttribute,
|
||||||
} from '../../common/types/sort/util';
|
} from "../../common/types/sort/util";
|
||||||
import { SortCriteria } from "../sort_criteria/entity/sort_criteria.entity";
|
import { SortCriteria } from "../sort_criteria/entity/sort_criteria.entity";
|
||||||
import {
|
import {
|
||||||
insertEntity,
|
insertEntity,
|
||||||
updateEntity,
|
updateEntity,
|
||||||
deleteEntity,
|
deleteEntity,
|
||||||
} from '../../common/repository';
|
} from "../../common/repository";
|
||||||
import { Context } from '../../common/log';
|
import { Context } from "../../common/log";
|
||||||
|
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class AccountsRepositoryService {
|
export class AccountsRepositoryService {
|
||||||
@ -81,6 +79,7 @@ export class AccountsRepositoryService {
|
|||||||
user.accepted_privacy_notice_version =
|
user.accepted_privacy_notice_version =
|
||||||
adminUserAcceptedPrivacyNoticeVersion ?? null;
|
adminUserAcceptedPrivacyNoticeVersion ?? null;
|
||||||
user.accepted_dpa_version = adminUserAcceptedDpaVersion ?? null;
|
user.accepted_dpa_version = adminUserAcceptedDpaVersion ?? null;
|
||||||
|
user.email_verified = true;
|
||||||
}
|
}
|
||||||
const usersRepo = entityManager.getRepository(User);
|
const usersRepo = entityManager.getRepository(User);
|
||||||
const newUser = usersRepo.create(user);
|
const newUser = usersRepo.create(user);
|
||||||
|
|||||||
@ -129,6 +129,33 @@ export class CardLicense {
|
|||||||
@Column({ nullable: true, type: "datetime" })
|
@Column({ nullable: true, type: "datetime" })
|
||||||
updated_by: string | null;
|
updated_by: string | null;
|
||||||
|
|
||||||
|
@UpdateDateColumn({
|
||||||
|
default: () => "datetime('now', 'localtime')",
|
||||||
|
type: "datetime",
|
||||||
|
})
|
||||||
|
updated_at: Date;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Entity({ name: "card_license_issue" })
|
||||||
|
export class CardLicenseIssue {
|
||||||
|
@PrimaryGeneratedColumn()
|
||||||
|
id: number;
|
||||||
|
|
||||||
|
@Column()
|
||||||
|
issued_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "datetime" })
|
||||||
|
created_by: string | null;
|
||||||
|
|
||||||
|
@CreateDateColumn({
|
||||||
|
default: () => "datetime('now', 'localtime')",
|
||||||
|
type: "datetime",
|
||||||
|
})
|
||||||
|
created_at: Date;
|
||||||
|
|
||||||
|
@Column({ nullable: true, type: "datetime" })
|
||||||
|
updated_by: string | null;
|
||||||
|
|
||||||
@UpdateDateColumn({
|
@UpdateDateColumn({
|
||||||
default: () => "datetime('now', 'localtime')",
|
default: () => "datetime('now', 'localtime')",
|
||||||
type: "datetime",
|
type: "datetime",
|
||||||
|
|||||||
@ -2,6 +2,7 @@ import { Module } from "@nestjs/common";
|
|||||||
import { TypeOrmModule } from "@nestjs/typeorm";
|
import { TypeOrmModule } from "@nestjs/typeorm";
|
||||||
import {
|
import {
|
||||||
CardLicense,
|
CardLicense,
|
||||||
|
CardLicenseIssue,
|
||||||
License,
|
License,
|
||||||
LicenseAllocationHistory,
|
LicenseAllocationHistory,
|
||||||
} from "./entity/license.entity";
|
} from "./entity/license.entity";
|
||||||
@ -9,7 +10,11 @@ import { LicensesRepositoryService } from "./licenses.repository.service";
|
|||||||
|
|
||||||
@Module({
|
@Module({
|
||||||
imports: [
|
imports: [
|
||||||
TypeOrmModule.forFeature([License, CardLicense, LicenseAllocationHistory]),
|
TypeOrmModule.forFeature([
|
||||||
|
License,
|
||||||
|
CardLicense,
|
||||||
|
CardLicenseIssue, LicenseAllocationHistory,
|
||||||
|
]),
|
||||||
],
|
],
|
||||||
providers: [LicensesRepositoryService],
|
providers: [LicensesRepositoryService],
|
||||||
exports: [LicensesRepositoryService],
|
exports: [LicensesRepositoryService],
|
||||||
|
|||||||
@ -4,14 +4,19 @@ import {
|
|||||||
License,
|
License,
|
||||||
LicenseAllocationHistory,
|
LicenseAllocationHistory,
|
||||||
CardLicense,
|
CardLicense,
|
||||||
|
CardLicenseIssue,
|
||||||
} from "./entity/license.entity";
|
} from "./entity/license.entity";
|
||||||
import { insertEntities } from "../../common/repository";
|
import { insertEntity, insertEntities } from "../../common/repository";
|
||||||
import { Context } from "../../common/log";
|
import { Context } from "../../common/log";
|
||||||
import {
|
import {
|
||||||
LicensesInputFile,
|
LicensesInputFile,
|
||||||
CardLicensesInputFile,
|
CardLicensesInputFile,
|
||||||
} from "../../common/types/types";
|
} from "../../common/types/types";
|
||||||
|
import {AUTO_INCREMENT_START} from "../../constants/index"
|
||||||
|
import {
|
||||||
|
LICENSE_ALLOCATED_STATUS,
|
||||||
|
LICENSE_TYPE,
|
||||||
|
} from "../../constants";
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class LicensesRepositoryService {
|
export class LicensesRepositoryService {
|
||||||
//クエリログにコメントを出力するかどうか
|
//クエリログにコメントを出力するかどうか
|
||||||
@ -38,7 +43,9 @@ export class LicensesRepositoryService {
|
|||||||
license.account_id = licensesInputFile.account_id;
|
license.account_id = licensesInputFile.account_id;
|
||||||
license.status = licensesInputFile.status;
|
license.status = licensesInputFile.status;
|
||||||
license.type = licensesInputFile.type;
|
license.type = licensesInputFile.type;
|
||||||
license.expiry_date = (licensesInputFile.expiry_date) ? new Date(licensesInputFile.expiry_date) : null;
|
license.expiry_date = licensesInputFile.expiry_date
|
||||||
|
? new Date(licensesInputFile.expiry_date)
|
||||||
|
: null;
|
||||||
if (licensesInputFile.allocated_user_id) {
|
if (licensesInputFile.allocated_user_id) {
|
||||||
license.allocated_user_id = licensesInputFile.allocated_user_id;
|
license.allocated_user_id = licensesInputFile.allocated_user_id;
|
||||||
}
|
}
|
||||||
@ -97,22 +104,61 @@ export class LicensesRepositoryService {
|
|||||||
): Promise<{}> {
|
): Promise<{}> {
|
||||||
return await this.dataSource.transaction(async (entityManager) => {
|
return await this.dataSource.transaction(async (entityManager) => {
|
||||||
const cardLicenseRepo = entityManager.getRepository(CardLicense);
|
const cardLicenseRepo = entityManager.getRepository(CardLicense);
|
||||||
|
const licensesRepo = entityManager.getRepository(License);
|
||||||
|
const cardLicenseIssueRepo =
|
||||||
|
entityManager.getRepository(CardLicenseIssue);
|
||||||
|
|
||||||
|
const licenses: License[] = [];
|
||||||
|
// ライセンステーブルを作成する(BULK INSERT)
|
||||||
|
for (let i = 0; i < cardLicensesInputFiles.length; i++) {
|
||||||
|
const license = new License();
|
||||||
|
license.account_id = AUTO_INCREMENT_START; // 最初に登場するアカウント(第一アカウント)
|
||||||
|
license.status = LICENSE_ALLOCATED_STATUS.UNALLOCATED;
|
||||||
|
license.type = LICENSE_TYPE.CARD;
|
||||||
|
licenses.push(license);
|
||||||
|
}
|
||||||
|
const savedLicenses = await insertEntities(
|
||||||
|
License,
|
||||||
|
licensesRepo,
|
||||||
|
licenses,
|
||||||
|
this.isCommentOut,
|
||||||
|
context
|
||||||
|
);
|
||||||
|
|
||||||
let newCardLicenses: CardLicense[] = [];
|
// カードライセンス発行テーブルを作成する
|
||||||
cardLicensesInputFiles.forEach((cardLicensesInputFile) => {
|
const cardLicenseIssue = new CardLicenseIssue();
|
||||||
|
cardLicenseIssue.issued_at = new Date();
|
||||||
|
const newCardLicenseIssue = cardLicenseIssueRepo.create(cardLicenseIssue);
|
||||||
|
const savedCardLicensesIssue = await insertEntity(
|
||||||
|
CardLicenseIssue,
|
||||||
|
cardLicenseIssueRepo,
|
||||||
|
newCardLicenseIssue,
|
||||||
|
this.isCommentOut,
|
||||||
|
context
|
||||||
|
);
|
||||||
|
|
||||||
|
const newCardLicenses: CardLicense[] = [];
|
||||||
|
// カードライセンステーブルを作成する(BULK INSERT)
|
||||||
|
for (let i = 0; i < cardLicensesInputFiles.length; i++) {
|
||||||
const cardLicense = new CardLicense();
|
const cardLicense = new CardLicense();
|
||||||
cardLicense.license_id = cardLicensesInputFile.license_id;
|
cardLicense.license_id = savedLicenses[i].id; // Licenseテーブルの自動採番されたIDを挿入
|
||||||
cardLicense.issue_id = cardLicensesInputFile.issue_id;
|
cardLicense.issue_id = savedCardLicensesIssue.id; // CardLicenseIssueテーブルの自動採番されたIDを挿入
|
||||||
cardLicense.card_license_key = cardLicensesInputFile.card_license_key;
|
cardLicense.card_license_key =
|
||||||
cardLicense.activated_at = (cardLicensesInputFile.activated_at) ? new Date(cardLicensesInputFile.activated_at) : null;
|
cardLicensesInputFiles[i].card_license_key;
|
||||||
cardLicense.created_at = (cardLicensesInputFile.created_at) ? new Date(cardLicensesInputFile.created_at) : null;
|
cardLicense.activated_at = cardLicensesInputFiles[i].activated_at
|
||||||
cardLicense.created_by = cardLicensesInputFile.created_by;
|
? new Date(cardLicensesInputFiles[i].activated_at)
|
||||||
cardLicense.updated_at = (cardLicensesInputFile.updated_at) ? new Date(cardLicensesInputFile.updated_at) : null;
|
: null;
|
||||||
cardLicense.updated_by = cardLicensesInputFile.updated_by;
|
cardLicense.created_at = cardLicensesInputFiles[i].created_at
|
||||||
|
? new Date(cardLicensesInputFiles[i].created_at)
|
||||||
|
: null;
|
||||||
|
cardLicense.created_by = cardLicensesInputFiles[i].created_by;
|
||||||
|
cardLicense.updated_at = cardLicensesInputFiles[i].updated_at
|
||||||
|
? new Date(cardLicensesInputFiles[i].updated_at)
|
||||||
|
: null;
|
||||||
|
cardLicense.updated_by = cardLicensesInputFiles[i].updated_by;
|
||||||
|
|
||||||
newCardLicenses.push(cardLicense);
|
newCardLicenses.push(cardLicense);
|
||||||
});
|
}
|
||||||
|
|
||||||
const query = cardLicenseRepo
|
const query = cardLicenseRepo
|
||||||
.createQueryBuilder()
|
.createQueryBuilder()
|
||||||
@ -126,5 +172,4 @@ export class LicensesRepositoryService {
|
|||||||
return {};
|
return {};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user