diff --git a/packages/sqlite-plugin/src/entity/VJobLibrary.ts b/packages/sqlite-plugin/src/entity/VJobLibrary.ts index c3c3c58..faf6e84 100644 --- a/packages/sqlite-plugin/src/entity/VJobLibrary.ts +++ b/packages/sqlite-plugin/src/entity/VJobLibrary.ts @@ -5,12 +5,18 @@ const { ViewEntity, ViewColumn } = requireTypeorm(); job_info.*, boss_info.name AS bossName, boss_info.title AS bossTitle, - company_info.name AS companyName + company_info.name AS companyName, + ( + SELECT job_info_change_log.updateTime + FROM job_info_change_log + WHERE job_info_change_log.encryptJobId = job_info.encryptJobId + ORDER BY job_info_change_log.updateTime ASC + LIMIT 1 + ) AS latestLogDate FROM job_info LEFT JOIN boss_info ON boss_info.encryptBossId = job_info.encryptBossId - LEFT JOIN company_info ON company_info.encryptCompanyId = job_info.encryptCompanyId - `, + LEFT JOIN company_info ON company_info.encryptCompanyId = job_info.encryptCompanyId`, }) export class VJobLibrary { @ViewColumn() @@ -54,4 +60,7 @@ export class VJobLibrary { @ViewColumn() companyName: string; + + @ViewColumn() + latestLogDate: string; } diff --git a/packages/sqlite-plugin/src/index.ts b/packages/sqlite-plugin/src/index.ts index 969fbc1..1563cc0 100644 --- a/packages/sqlite-plugin/src/index.ts +++ b/packages/sqlite-plugin/src/index.ts @@ -25,6 +25,7 @@ import { saveChatStartupRecord, saveJobInfoFromRecommendPage, saveMarkAsNotSuitR import { UpdateChatStartupLogTable1729182577167 } from "./migrations/1729182577167-UpdateChatStartupLogTable"; import minimist from 'minimist' import { UpdateBossInfoTable1732032381304 } from "./migrations/1732032381304-UpdateBossInfoTable"; +import { ChangeJobLibraryView1744467048874 } from "./migrations/1744467048874-ChangeJobLibraryView"; export function initDb(dbFilePath) { const { DataSource } = requireTypeorm() @@ -56,7 +57,8 @@ export function initDb(dbFilePath) { ], migrations: [ UpdateChatStartupLogTable1729182577167, - UpdateBossInfoTable1732032381304 + UpdateBossInfoTable1732032381304, + ChangeJobLibraryView1744467048874 ], migrationsRun: true }); diff --git a/packages/sqlite-plugin/src/migrations/1732032381304-UpdateBossInfoTable.ts b/packages/sqlite-plugin/src/migrations/1732032381304-UpdateBossInfoTable.ts index 200bda9..1a3a979 100644 --- a/packages/sqlite-plugin/src/migrations/1732032381304-UpdateBossInfoTable.ts +++ b/packages/sqlite-plugin/src/migrations/1732032381304-UpdateBossInfoTable.ts @@ -5,31 +5,28 @@ const viewNames = [ "v_chat_startup_log", "v_company_library", "v_job_library", - "v_mark_as_not_suit_log" + "v_mark_as_not_suit_log", ]; export class UpdateBossInfoTable1732032381304 implements MigrationInterface { - public async up(queryRunner: QueryRunner): Promise { - for (const viewName of viewNames) { - await queryRunner.query(`DROP VIEW IF EXISTS "${viewName}"`); - } - if (await queryRunner.hasTable("boss_info")) { - if (await queryRunner.hasColumn("boss_info", "encryptCompanyId")) { - await queryRunner.changeColumn( - 'boss_info', - 'encryptCompanyId', - new TableColumn({ - name: 'encryptCompanyId', - type: 'varchar', - isNullable: true - }) - ) - debugger - } - } + public async up(queryRunner: QueryRunner): Promise { + for (const viewName of viewNames) { + await queryRunner.query(`DROP VIEW IF EXISTS "${viewName}"`); } - - public async down(queryRunner: QueryRunner): Promise { + if (await queryRunner.hasTable("boss_info")) { + if (await queryRunner.hasColumn("boss_info", "encryptCompanyId")) { + await queryRunner.changeColumn( + "boss_info", + "encryptCompanyId", + new TableColumn({ + name: "encryptCompanyId", + type: "varchar", + isNullable: true, + }) + ); + } } + } + public async down(queryRunner: QueryRunner): Promise {} } diff --git a/packages/sqlite-plugin/src/migrations/1744467048874-ChangeJobLibraryView.ts b/packages/sqlite-plugin/src/migrations/1744467048874-ChangeJobLibraryView.ts new file mode 100644 index 0000000..7862f40 --- /dev/null +++ b/packages/sqlite-plugin/src/migrations/1744467048874-ChangeJobLibraryView.ts @@ -0,0 +1,17 @@ +import { MigrationInterface, QueryRunner } from "typeorm"; +const viewNames = [ + "v_boss_library", + "v_chat_startup_log", + "v_company_library", + "v_job_library", + "v_mark_as_not_suit_log", +]; +export class ChangeJobLibraryView1744467048874 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + for (const viewName of viewNames) { + await queryRunner.query(`DROP VIEW IF EXISTS "${viewName}"`); + } + } + + public async down(queryRunner: QueryRunner): Promise {} +} diff --git a/packages/ui/src/renderer/src/features/JobInfoSnapshot/index.vue b/packages/ui/src/renderer/src/features/JobInfoSnapshot/index.vue index 24be46a..50b3c24 100644 --- a/packages/ui/src/renderer/src/features/JobInfoSnapshot/index.vue +++ b/packages/ui/src/renderer/src/features/JobInfoSnapshot/index.vue @@ -3,9 +3,20 @@ {{ jobInfo.companyName }} {{ jobInfo.jobName }} {{ jobInfo.positionName }} - {{ - transformUtcDateToLocalDate(jobInfo.date).format('YYYY-MM-DD HH:mm:ss') - }} + + {{ + jobInfo.latestLogDate + ? transformUtcDateToLocalDate(jobInfo.latestLogDate).format('YYYY-MM-DD HH:mm:ss') + : '无记录,数据可能来自旧版本' + }} + + + {{ + jobInfo.date + ? transformUtcDateToLocalDate(jobInfo.date).format('YYYY-MM-DD HH:mm:ss') + : '无记录' + }} + {{ jobInfo.experienceName }} {{ `${jobInfo.salaryLow}-${jobInfo.salaryHigh}k` + @@ -21,12 +32,16 @@ diff --git a/packages/ui/src/renderer/src/page/MainLayout/JobLibrary.vue b/packages/ui/src/renderer/src/page/MainLayout/JobLibrary.vue index 11622d5..da51830 100644 --- a/packages/ui/src/renderer/src/page/MainLayout/JobLibrary.vue +++ b/packages/ui/src/renderer/src/page/MainLayout/JobLibrary.vue @@ -38,6 +38,7 @@ link type="primary" size="small" + :disabled="!row.latestLogDate" @click="handleViewJobHistoryButtonClick(row)" >变更记录 @@ -74,6 +75,7 @@