From 7706dc90de7ac37f57b357a1002da3baad7146d9 Mon Sep 17 00:00:00 2001 From: COOL Date: Tue, 11 Mar 2025 13:52:51 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=BC=E5=AE=B9pg?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/modules/base/entity/base.ts | 26 +++++++++++++++++++++++--- src/modules/base/entity/sys/log.ts | 9 +++++++-- src/modules/base/entity/sys/role.ts | 6 +++--- src/modules/demo/entity/goods.ts | 9 +++++++-- src/modules/plugin/entity/info.ts | 20 +++++++++++++++----- src/modules/recycle/entity/data.ts | 17 +++++++++++++---- 6 files changed, 68 insertions(+), 19 deletions(-) diff --git a/src/modules/base/entity/base.ts b/src/modules/base/entity/base.ts index 9edd9e9..1d60f85 100644 --- a/src/modules/base/entity/base.ts +++ b/src/modules/base/entity/base.ts @@ -2,7 +2,10 @@ import { Index, PrimaryGeneratedColumn, Column } from 'typeorm'; import * as moment from 'moment'; import { CoolBaseEntity } from '@cool-midway/core'; -const transformer = { +/** + * 时间转换器 + */ +export const transformerTime = { to(value) { return value ? moment(value).format('YYYY-MM-DD HH:mm:ss') @@ -13,6 +16,23 @@ const transformer = { }, }; +/** + * Json转换器 + */ +export const transformerJson = { + to: value => value, + from: value => { + // 确保从数据库返回的是对象 + if (typeof value === 'string') { + try { + return JSON.parse(value); + } catch (e) { + return value; + } + } + return value; + }, +}; /** * 实体基类 */ @@ -27,7 +47,7 @@ export abstract class BaseEntity extends CoolBaseEntity { @Column({ comment: '创建时间', type: 'varchar', - transformer, + transformer: transformerTime, }) createTime: Date; @@ -35,7 +55,7 @@ export abstract class BaseEntity extends CoolBaseEntity { @Column({ comment: '更新时间', type: 'varchar', - transformer, + transformer: transformerTime, }) updateTime: Date; diff --git a/src/modules/base/entity/sys/log.ts b/src/modules/base/entity/sys/log.ts index 2f84feb..fd298a5 100644 --- a/src/modules/base/entity/sys/log.ts +++ b/src/modules/base/entity/sys/log.ts @@ -1,4 +1,4 @@ -import { BaseEntity } from '../base'; +import { BaseEntity, transformerJson } from '../base'; import { Column, Index, Entity } from 'typeorm'; /** @@ -18,6 +18,11 @@ export class BaseSysLogEntity extends BaseEntity { @Column({ comment: 'ip', nullable: true }) ip: string; - @Column({ comment: '参数', nullable: true, type: 'json' }) + @Column({ + comment: '参数', + nullable: true, + type: 'json', + transformer: transformerJson, + }) params: string; } diff --git a/src/modules/base/entity/sys/role.ts b/src/modules/base/entity/sys/role.ts index 7c315af..3a0f427 100644 --- a/src/modules/base/entity/sys/role.ts +++ b/src/modules/base/entity/sys/role.ts @@ -1,4 +1,4 @@ -import { BaseEntity } from '../base'; +import { BaseEntity, transformerJson } from '../base'; import { Column, Index, Entity } from 'typeorm'; /** @@ -23,9 +23,9 @@ export class BaseSysRoleEntity extends BaseEntity { @Column({ comment: '数据权限是否关联上下级', default: false }) relevance: boolean; - @Column({ comment: '菜单权限', type: 'json' }) + @Column({ comment: '菜单权限', type: 'json', transformer: transformerJson }) menuIdList: number[]; - @Column({ comment: '部门权限', type: 'json' }) + @Column({ comment: '部门权限', type: 'json', transformer: transformerJson }) departmentIdList: number[]; } diff --git a/src/modules/demo/entity/goods.ts b/src/modules/demo/entity/goods.ts index dc9529c..0e781ff 100644 --- a/src/modules/demo/entity/goods.ts +++ b/src/modules/demo/entity/goods.ts @@ -1,4 +1,4 @@ -import { BaseEntity } from '../../base/entity/base'; +import { BaseEntity, transformerJson } from '../../base/entity/base'; import { Column, Entity, Index } from 'typeorm'; /** @@ -30,7 +30,12 @@ export class DemoGoodsEntity extends BaseEntity { @Column({ comment: '状态', dict: ['禁用', '启用'], default: 1 }) status: number; - @Column({ comment: '示例图', nullable: true, type: 'json' }) + @Column({ + comment: '示例图', + nullable: true, + type: 'json', + transformer: transformerJson, + }) exampleImages: string[]; @Column({ comment: '库存', default: 0 }) diff --git a/src/modules/plugin/entity/info.ts b/src/modules/plugin/entity/info.ts index 5349ad6..ddb3382 100644 --- a/src/modules/plugin/entity/info.ts +++ b/src/modules/plugin/entity/info.ts @@ -1,4 +1,4 @@ -import { BaseEntity } from '../../base/entity/base'; +import { BaseEntity, transformerJson } from '../../base/entity/base'; import { Column, Entity, Index } from 'typeorm'; /** @@ -34,21 +34,31 @@ export class PluginInfoEntity extends BaseEntity { @Column({ comment: '状态 0-禁用 1-启用', default: 0 }) status: number; - @Column({ comment: '内容', type: 'json' }) + @Column({ comment: '内容', type: 'json', transformer: transformerJson }) content: { type: 'comm' | 'module'; data: string; }; - @Column({ comment: 'ts内容', type: 'json' }) + @Column({ comment: 'ts内容', type: 'json', transformer: transformerJson }) tsContent: { type: 'ts'; data: string; }; - @Column({ comment: '插件的plugin.json', type: 'json', nullable: true }) + @Column({ + comment: '插件的plugin.json', + type: 'json', + transformer: transformerJson, + nullable: true, + }) pluginJson: any; - @Column({ comment: '配置', type: 'json', nullable: true }) + @Column({ + comment: '配置', + type: 'json', + transformer: transformerJson, + nullable: true, + }) config: any; } diff --git a/src/modules/recycle/entity/data.ts b/src/modules/recycle/entity/data.ts index e642d20..e86c008 100644 --- a/src/modules/recycle/entity/data.ts +++ b/src/modules/recycle/entity/data.ts @@ -1,4 +1,4 @@ -import { BaseEntity } from '../../base/entity/base'; +import { BaseEntity, transformerJson } from '../../base/entity/base'; import { Entity, Column, Index } from 'typeorm'; /** @@ -6,7 +6,7 @@ import { Entity, Column, Index } from 'typeorm'; */ @Entity('recycle_data') export class RecycleDataEntity extends BaseEntity { - @Column({ comment: '表', type: 'json' }) + @Column({ comment: '表', type: 'json', transformer: transformerJson }) entityInfo: { // 数据源名称 dataSourceName: string; @@ -18,13 +18,22 @@ export class RecycleDataEntity extends BaseEntity { @Column({ comment: '操作人', nullable: true }) userId: number; - @Column({ comment: '被删除的数据', type: 'json' }) + @Column({ + comment: '被删除的数据', + type: 'json', + transformer: transformerJson, + }) data: object[]; @Column({ comment: '请求的接口', nullable: true }) url: string; - @Column({ comment: '请求参数', nullable: true, type: 'json' }) + @Column({ + comment: '请求参数', + nullable: true, + type: 'json', + transformer: transformerJson, + }) params: string; @Column({ comment: '删除数据条数', default: 1 })