feat(forum): add forum prisma models and board constant
This commit is contained in:
parent
9d19f66f28
commit
8cfa20d3aa
|
|
@ -0,0 +1,677 @@
|
||||||
|
generator client {
|
||||||
|
provider = "prisma-client-js"
|
||||||
|
binaryTargets = ["windows"]
|
||||||
|
}
|
||||||
|
|
||||||
|
datasource db {
|
||||||
|
provider = "mysql"
|
||||||
|
url = env("DATABASE_URL")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 管理员账号
|
||||||
|
model Admin {
|
||||||
|
id String @id // 账号ID A(RRRRRR)
|
||||||
|
name String @unique // 账号名
|
||||||
|
password String // 密码
|
||||||
|
username String // 用户名
|
||||||
|
type Int @default(1) // 账号类型 1 - 超级管理员, 2 - 管理员
|
||||||
|
status Int @default(1) // 账号状态 0 - 禁用, 1 - 可用
|
||||||
|
authz_hist_mgmt Int @default(1) // 历史管理
|
||||||
|
authz_tmpl_mgmt Int @default(1) // 模板管理
|
||||||
|
authz_mtrl_mgmt Int @default(1) // 材料管理
|
||||||
|
authz_audit_mgmt Int @default(1) // 审核管理
|
||||||
|
authz_acct_mgmt Int @default(1) // 账号管理
|
||||||
|
authz_sys_cfg Int @default(1) // 系统设置
|
||||||
|
templates PublicTemplate[]
|
||||||
|
materials PublicMaterial[]
|
||||||
|
applied_requests AuditRequest[] @relation("applied_requests")
|
||||||
|
reviewed_requests AuditRequest[] @relation("reviewed_requests")
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
deleted Int @default(0)
|
||||||
|
|
||||||
|
@@map("admin")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户账号
|
||||||
|
model User {
|
||||||
|
id String @id // 账号ID U(RRRRRR)
|
||||||
|
name String @unique // 账户名
|
||||||
|
password String // 密码
|
||||||
|
username String // 用户名
|
||||||
|
status Int @default(1) // 账号状态 0 - 禁用, 1 - 可用
|
||||||
|
projects Project[]
|
||||||
|
templates SelfTemplate[]
|
||||||
|
materials SelfMaterial[]
|
||||||
|
pub_temp_colls PublicTemplateCollection[] // 收藏的公共模板
|
||||||
|
pub_mtrl_colls PublicMaterialCollection[] // 收藏的公共材料
|
||||||
|
pub_templates PublicTemplate[]
|
||||||
|
pub_materials PublicMaterial[]
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
deleted Int @default(0)
|
||||||
|
phone String? @unique // 手机号(手机注册用户)
|
||||||
|
|
||||||
|
@@map("user")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 项目
|
||||||
|
model Project {
|
||||||
|
id String @id // 项目ID P(yMdHmSRR)
|
||||||
|
name String? // 项目名称
|
||||||
|
category String? // 项目类型
|
||||||
|
province String? // 所在省份
|
||||||
|
city String? // 所在城市
|
||||||
|
climatic_zone String? // 所在气候区
|
||||||
|
constr_area Float? // 建筑面积
|
||||||
|
usage_area Float? // 使用面积
|
||||||
|
spaces Space[] // 包含空间
|
||||||
|
status Int @default(0) // 状态 0 - 未生成预测报告, 1 - 已生成预测报告
|
||||||
|
predicted_at DateTime? // 预测报告生成时间
|
||||||
|
score Float? // 得分
|
||||||
|
grade String? // 评级
|
||||||
|
creator_id String?
|
||||||
|
creator_name String
|
||||||
|
creator User? @relation(fields: [creator_id], references: [id], onDelete: SetNull)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("project")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 项目空间
|
||||||
|
model Space {
|
||||||
|
id String @id // 空间ID S(yMdHmSRR)
|
||||||
|
project_id String // 所属项目ID
|
||||||
|
project Project @relation(fields: [project_id], references: [id], onDelete: Cascade) // 所属项目
|
||||||
|
name String? // 空间名称
|
||||||
|
category String? // 空间类型
|
||||||
|
layout Int? // 空间布局
|
||||||
|
height Float? // 空间高度
|
||||||
|
area Float? // 空间面积
|
||||||
|
volume Float? // 空间体积
|
||||||
|
env_temp Float? // 环境温度
|
||||||
|
env_hum Float? // 环境湿度
|
||||||
|
env_vent_rate Float? // 环境通风换气率
|
||||||
|
apc_lmt_std_id String? // 空气污染物浓度限值标准ID
|
||||||
|
apc_lmt_std ApcLimitStandard? @relation(fields: [apc_lmt_std_id], references: [id], onDelete: SetNull) // 空气污染物浓度限值标准
|
||||||
|
materials Material[] // 包含材料
|
||||||
|
methanal_c Float? // 甲醛浓度
|
||||||
|
tvoc_c Float? // TVOC浓度
|
||||||
|
benzene_c Float? // 苯浓度
|
||||||
|
toluene_c Float? // 甲苯浓度
|
||||||
|
p_xylene_c Float? // 二甲苯浓度
|
||||||
|
methanal_c_exceed Int? // 甲醛是否超标
|
||||||
|
tvoc_c_exceed Int? // TVOC是否超标
|
||||||
|
benzene_c_exceed Int? // 苯是否超标
|
||||||
|
toluene_c_exceed Int? // 甲苯是否超标
|
||||||
|
p_xylene_c_exceed Int? // 二甲苯是否超标
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("space")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 空间材料
|
||||||
|
model Material {
|
||||||
|
id Int @id @default(autoincrement()) // 材料ID
|
||||||
|
material_id String // 所属材料ID
|
||||||
|
project_id String // 所属项目ID
|
||||||
|
space_id String // 所属空间ID
|
||||||
|
space Space @relation(fields: [space_id], references: [id], onDelete: Cascade) // 所属空间
|
||||||
|
name String? // 材料名称
|
||||||
|
category String? // 材料类型
|
||||||
|
brand String? // 材料品牌
|
||||||
|
factory String? // 材料厂家
|
||||||
|
spec String? // 材料规格
|
||||||
|
eco_level String? // 环保等级
|
||||||
|
unit String? // 用量单位 AREA - 面积, LEN - 长度
|
||||||
|
qty Float? // 用量值
|
||||||
|
methanal Float? // 甲醛
|
||||||
|
methanal_min_be Float? // 甲醛最低平衡释放量
|
||||||
|
methanal_be_area Float? // 甲醛平衡释放量范围
|
||||||
|
methanal_be_roc Float? // 甲醛平衡释放量变化率
|
||||||
|
tvoc Float? // TVOC
|
||||||
|
tvoc_min_be Float? // TVOC最低平衡释放量
|
||||||
|
tvoc_be_area Float? // TVOC平衡释放量范围
|
||||||
|
tvoc_be_roc Float? // TVOC平衡释放量变化率
|
||||||
|
benzene Float? // 苯
|
||||||
|
benzene_min_be Float? // 苯最低平衡释放量
|
||||||
|
benzene_be_area Float? // 苯平衡释放量范围
|
||||||
|
benzene_be_roc Float? // 苯平衡释放量变化率
|
||||||
|
toluene Float? // 甲苯
|
||||||
|
toluene_min_be Float? // 甲苯最低平衡释放量
|
||||||
|
toluene_be_area Float? // 甲苯平衡释放量范围
|
||||||
|
toluene_be_roc Float? // 甲苯平衡释放量变化率
|
||||||
|
p_xylene Float? // 二甲苯
|
||||||
|
p_xylene_min_be Float? // 二甲苯最低平衡释放量
|
||||||
|
p_xylene_be_area Float? // 二甲苯平衡释放量范围
|
||||||
|
p_xylene_be_roc Float? // 二甲苯平衡释放量变化率
|
||||||
|
methanal_cr Float? // 甲醛贡献率
|
||||||
|
tvoc_cr Float? // TVOC贡献率
|
||||||
|
benzene_cr Float? // 苯贡献率
|
||||||
|
toluene_cr Float? // 甲苯贡献率
|
||||||
|
p_xylene_cr Float? // 二甲苯贡献率
|
||||||
|
methanal_cr_exceed Int? // 甲醛贡献率是否超标
|
||||||
|
tvoc_cr_exceed Int? // TVOC贡献率是否超标
|
||||||
|
benzene_cr_exceed Int? // 苯贡献率是否超标
|
||||||
|
toluene_cr_exceed Int? // 甲苯贡献率是否超标
|
||||||
|
p_xylene_cr_exceed Int? // 二甲苯贡献率是否超标
|
||||||
|
is_methanal_ps Int? // 是否为甲醛污染源
|
||||||
|
is_tvoc_ps Int? // 是否为TVOC污染源
|
||||||
|
is_benzene_ps Int? // 是否为苯污染源
|
||||||
|
is_toluene_ps Int? // 是否为甲苯污染源
|
||||||
|
is_p_xylene_ps Int? // 是否为二甲苯污染源
|
||||||
|
user_id String
|
||||||
|
user_name String
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("material")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 公共项目模板
|
||||||
|
model PublicTemplate {
|
||||||
|
id String @id // PT(yMdHmSRR)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
province String?
|
||||||
|
city String?
|
||||||
|
climatic_zone String?
|
||||||
|
constr_area Float?
|
||||||
|
usage_area Float?
|
||||||
|
spaces PublicTemplateSpace[]
|
||||||
|
display Int @default(0) // 是否展示
|
||||||
|
collectors PublicTemplateCollection[] // 收藏此模板的用户
|
||||||
|
pry_no Int @default(0)
|
||||||
|
score Float?
|
||||||
|
grade String?
|
||||||
|
from String?
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
related_user_id String?
|
||||||
|
related_user User? @relation(fields: [related_user_id], references: [id], onDelete: SetNull)
|
||||||
|
related_admin_id String?
|
||||||
|
related_admin Admin? @relation(fields: [related_admin_id], references: [id], onDelete: SetNull)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("public_template")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 公共项目模板空间
|
||||||
|
model PublicTemplateSpace {
|
||||||
|
id String @id // PTS(yMdHmSRR)
|
||||||
|
project_id String
|
||||||
|
project PublicTemplate @relation(fields: [project_id], references: [id], onDelete: Cascade)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
layout Int?
|
||||||
|
height Float?
|
||||||
|
area Float?
|
||||||
|
volume Float?
|
||||||
|
env_temp Float?
|
||||||
|
env_hum Float?
|
||||||
|
env_vent_rate Float?
|
||||||
|
apc_lmt_std_id String?
|
||||||
|
apc_lmt_std ApcLimitStandard? @relation(fields: [apc_lmt_std_id], references: [id], onDelete: SetNull)
|
||||||
|
materials PublicTemplateMaterial[]
|
||||||
|
methanal_c Float?
|
||||||
|
tvoc_c Float?
|
||||||
|
benzene_c Float?
|
||||||
|
toluene_c Float?
|
||||||
|
p_xylene_c Float?
|
||||||
|
methanal_c_exceed Int?
|
||||||
|
tvoc_c_exceed Int?
|
||||||
|
benzene_c_exceed Int?
|
||||||
|
toluene_c_exceed Int?
|
||||||
|
p_xylene_c_exceed Int?
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("public_template_space")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 公共项目模板材料
|
||||||
|
model PublicTemplateMaterial {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
material_id String
|
||||||
|
project_id String
|
||||||
|
space_id String
|
||||||
|
space PublicTemplateSpace @relation(fields: [space_id], references: [id], onDelete: Cascade)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
brand String?
|
||||||
|
factory String?
|
||||||
|
spec String?
|
||||||
|
eco_level String?
|
||||||
|
unit String?
|
||||||
|
qty Float?
|
||||||
|
methanal Float?
|
||||||
|
methanal_min_be Float?
|
||||||
|
methanal_be_area Float?
|
||||||
|
methanal_be_roc Float?
|
||||||
|
tvoc Float?
|
||||||
|
tvoc_min_be Float?
|
||||||
|
tvoc_be_area Float?
|
||||||
|
tvoc_be_roc Float?
|
||||||
|
benzene Float?
|
||||||
|
benzene_min_be Float?
|
||||||
|
benzene_be_area Float?
|
||||||
|
benzene_be_roc Float?
|
||||||
|
toluene Float?
|
||||||
|
toluene_min_be Float?
|
||||||
|
toluene_be_area Float?
|
||||||
|
toluene_be_roc Float?
|
||||||
|
p_xylene Float?
|
||||||
|
p_xylene_min_be Float?
|
||||||
|
p_xylene_be_area Float?
|
||||||
|
p_xylene_be_roc Float?
|
||||||
|
methanal_cr Float?
|
||||||
|
tvoc_cr Float?
|
||||||
|
benzene_cr Float?
|
||||||
|
toluene_cr Float?
|
||||||
|
p_xylene_cr Float?
|
||||||
|
methanal_cr_exceed Int?
|
||||||
|
tvoc_cr_exceed Int?
|
||||||
|
benzene_cr_exceed Int?
|
||||||
|
toluene_cr_exceed Int?
|
||||||
|
p_xylene_cr_exceed Int?
|
||||||
|
is_methanal_ps Int?
|
||||||
|
is_tvoc_ps Int?
|
||||||
|
is_benzene_ps Int?
|
||||||
|
is_toluene_ps Int?
|
||||||
|
is_p_xylene_ps Int?
|
||||||
|
user_id String
|
||||||
|
user_name String
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("public_template_material")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 自建模板
|
||||||
|
model SelfTemplate {
|
||||||
|
id String // ST(yMdHmSRR)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
province String?
|
||||||
|
city String?
|
||||||
|
climatic_zone String?
|
||||||
|
constr_area Float?
|
||||||
|
usage_area Float?
|
||||||
|
spaces SelfTemplateSpace[]
|
||||||
|
score Float?
|
||||||
|
grade String?
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
creator User @relation(fields: [creator_id], references: [id], onDelete: Cascade)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@id([id, creator_id])
|
||||||
|
@@map("self_template")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自建模板空间
|
||||||
|
model SelfTemplateSpace {
|
||||||
|
id String // STS(yMdHmSRR)
|
||||||
|
project_id String
|
||||||
|
project SelfTemplate @relation(fields: [project_id, creator_id], references: [id, creator_id], onDelete: Cascade)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
layout Int?
|
||||||
|
height Float?
|
||||||
|
area Float?
|
||||||
|
volume Float?
|
||||||
|
env_temp Float?
|
||||||
|
env_hum Float?
|
||||||
|
env_vent_rate Float?
|
||||||
|
apc_lmt_std_id String?
|
||||||
|
apc_lmt_std ApcLimitStandard? @relation(fields: [apc_lmt_std_id], references: [id], onDelete: SetNull)
|
||||||
|
materials SelfTemplateMaterial[]
|
||||||
|
methanal_c Float?
|
||||||
|
tvoc_c Float?
|
||||||
|
benzene_c Float?
|
||||||
|
toluene_c Float?
|
||||||
|
p_xylene_c Float?
|
||||||
|
methanal_c_exceed Int?
|
||||||
|
tvoc_c_exceed Int?
|
||||||
|
benzene_c_exceed Int?
|
||||||
|
toluene_c_exceed Int?
|
||||||
|
p_xylene_c_exceed Int?
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@id([id, project_id])
|
||||||
|
@@map("self_template_space")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自建项目模板材料
|
||||||
|
model SelfTemplateMaterial {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
material_id String
|
||||||
|
project_id String
|
||||||
|
space_id String
|
||||||
|
space SelfTemplateSpace @relation(fields: [space_id, project_id], references: [id, project_id], onDelete: Cascade)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
brand String?
|
||||||
|
factory String?
|
||||||
|
spec String?
|
||||||
|
eco_level String?
|
||||||
|
unit String?
|
||||||
|
qty Float?
|
||||||
|
methanal Float?
|
||||||
|
methanal_min_be Float?
|
||||||
|
methanal_be_area Float?
|
||||||
|
methanal_be_roc Float?
|
||||||
|
tvoc Float?
|
||||||
|
tvoc_min_be Float?
|
||||||
|
tvoc_be_area Float?
|
||||||
|
tvoc_be_roc Float?
|
||||||
|
benzene Float?
|
||||||
|
benzene_min_be Float?
|
||||||
|
benzene_be_area Float?
|
||||||
|
benzene_be_roc Float?
|
||||||
|
toluene Float?
|
||||||
|
toluene_min_be Float?
|
||||||
|
toluene_be_area Float?
|
||||||
|
toluene_be_roc Float?
|
||||||
|
p_xylene Float?
|
||||||
|
p_xylene_min_be Float?
|
||||||
|
p_xylene_be_area Float?
|
||||||
|
p_xylene_be_roc Float?
|
||||||
|
methanal_cr Float?
|
||||||
|
tvoc_cr Float?
|
||||||
|
benzene_cr Float?
|
||||||
|
toluene_cr Float?
|
||||||
|
p_xylene_cr Float?
|
||||||
|
methanal_cr_exceed Int?
|
||||||
|
tvoc_cr_exceed Int?
|
||||||
|
benzene_cr_exceed Int?
|
||||||
|
toluene_cr_exceed Int?
|
||||||
|
p_xylene_cr_exceed Int?
|
||||||
|
is_methanal_ps Int?
|
||||||
|
is_tvoc_ps Int?
|
||||||
|
is_benzene_ps Int?
|
||||||
|
is_toluene_ps Int?
|
||||||
|
is_p_xylene_ps Int?
|
||||||
|
user_id String
|
||||||
|
user_name String
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("self_template_material")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 公共材料
|
||||||
|
model PublicMaterial {
|
||||||
|
material_id String @id // PM(yMdHmSRR)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
brand String?
|
||||||
|
factory String?
|
||||||
|
spec String?
|
||||||
|
eco_level String?
|
||||||
|
health_level String?
|
||||||
|
methanal Float?
|
||||||
|
methanal_min_be Float?
|
||||||
|
methanal_be_area Float?
|
||||||
|
methanal_be_roc Float?
|
||||||
|
tvoc Float?
|
||||||
|
tvoc_min_be Float?
|
||||||
|
tvoc_be_area Float?
|
||||||
|
tvoc_be_roc Float?
|
||||||
|
benzene Float?
|
||||||
|
benzene_min_be Float?
|
||||||
|
benzene_be_area Float?
|
||||||
|
benzene_be_roc Float?
|
||||||
|
toluene Float?
|
||||||
|
toluene_min_be Float?
|
||||||
|
toluene_be_area Float?
|
||||||
|
toluene_be_roc Float?
|
||||||
|
p_xylene Float?
|
||||||
|
p_xylene_min_be Float?
|
||||||
|
p_xylene_be_area Float?
|
||||||
|
p_xylene_be_roc Float?
|
||||||
|
sort_order Int @default(0) // 手动排序权重,升序
|
||||||
|
display Int @default(0) // 是否展示
|
||||||
|
collectors PublicMaterialCollection[] // 收藏此材料的用户
|
||||||
|
pry_no Int @default(0)
|
||||||
|
from String?
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
related_user_id String?
|
||||||
|
related_user User? @relation(fields: [related_user_id], references: [id], onDelete: SetNull)
|
||||||
|
related_admin_id String?
|
||||||
|
related_admin Admin? @relation(fields: [related_admin_id], references: [id], onDelete: SetNull)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("public_material")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 自建材料
|
||||||
|
model SelfMaterial {
|
||||||
|
material_id String // SM(yMdHmSRR)
|
||||||
|
name String?
|
||||||
|
category String?
|
||||||
|
brand String?
|
||||||
|
factory String?
|
||||||
|
spec String?
|
||||||
|
eco_level String?
|
||||||
|
health_level String?
|
||||||
|
methanal Float?
|
||||||
|
methanal_min_be Float?
|
||||||
|
methanal_be_area Float?
|
||||||
|
methanal_be_roc Float?
|
||||||
|
tvoc Float?
|
||||||
|
tvoc_min_be Float?
|
||||||
|
tvoc_be_area Float?
|
||||||
|
tvoc_be_roc Float?
|
||||||
|
benzene Float?
|
||||||
|
benzene_min_be Float?
|
||||||
|
benzene_be_area Float?
|
||||||
|
benzene_be_roc Float?
|
||||||
|
toluene Float?
|
||||||
|
toluene_min_be Float?
|
||||||
|
toluene_be_area Float?
|
||||||
|
toluene_be_roc Float?
|
||||||
|
p_xylene Float?
|
||||||
|
p_xylene_min_be Float?
|
||||||
|
p_xylene_be_area Float?
|
||||||
|
p_xylene_be_roc Float?
|
||||||
|
sort_order Int @default(0)
|
||||||
|
creator_id String
|
||||||
|
creator_name String
|
||||||
|
creator User @relation(fields: [creator_id], references: [id], onDelete: Cascade)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@id([material_id, creator_id])
|
||||||
|
@@map("self_material")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 用户收藏的公共模板
|
||||||
|
model PublicTemplateCollection {
|
||||||
|
user_id String
|
||||||
|
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
||||||
|
project_id String
|
||||||
|
project PublicTemplate @relation(fields: [project_id], references: [id], onDelete: Cascade)
|
||||||
|
|
||||||
|
@@id([user_id, project_id])
|
||||||
|
@@map("public_template_collection")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 用户收藏的公共材料
|
||||||
|
model PublicMaterialCollection {
|
||||||
|
user_id String
|
||||||
|
user User @relation(fields: [user_id], references: [id], onDelete: Cascade)
|
||||||
|
material_id String
|
||||||
|
material PublicMaterial @relation(fields: [material_id], references: [material_id], onDelete: Cascade)
|
||||||
|
|
||||||
|
@@id([user_id, material_id])
|
||||||
|
@@map("public_material_collection")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 审核单
|
||||||
|
model AuditRequest {
|
||||||
|
id String @id
|
||||||
|
status Int @default(0)
|
||||||
|
source_id String?
|
||||||
|
source_creator_id String?
|
||||||
|
source String
|
||||||
|
type String
|
||||||
|
desc String?
|
||||||
|
remark String?
|
||||||
|
reason String?
|
||||||
|
details AuditRequestDetails[]
|
||||||
|
auditor_id String?
|
||||||
|
auditor_name String?
|
||||||
|
auditor Admin? @relation(name: "reviewed_requests", fields: [auditor_id], references: [id], onDelete: SetNull)
|
||||||
|
audited_at DateTime?
|
||||||
|
creator_id String?
|
||||||
|
creator_name String
|
||||||
|
creator Admin? @relation(name: "applied_requests", fields: [creator_id], references: [id], onDelete: SetNull)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
|
||||||
|
@@map("audit_request")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 审核单详情
|
||||||
|
model AuditRequestDetails {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
aduit_request_id String
|
||||||
|
audit_request AuditRequest @relation(fields: [aduit_request_id], references: [id], onDelete: Cascade)
|
||||||
|
content Json
|
||||||
|
|
||||||
|
@@map("audit_request_details")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------
|
||||||
|
|
||||||
|
// 项目-空间类型
|
||||||
|
model ProjectSpaceCategory {
|
||||||
|
pry_no_1 Int @default(0)
|
||||||
|
pry_no_2 Int @default(0)
|
||||||
|
project_category String
|
||||||
|
space_category String
|
||||||
|
|
||||||
|
@@id([project_category, space_category])
|
||||||
|
@@map("project_space_category")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 材料类型
|
||||||
|
model MaterialCategory {
|
||||||
|
pry_no_1 Int @default(0)
|
||||||
|
pry_no_2 Int @default(0)
|
||||||
|
first_category String
|
||||||
|
second_category String
|
||||||
|
unit String?
|
||||||
|
|
||||||
|
@@id([first_category, second_category])
|
||||||
|
@@map("material_category")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 省-市-气候区-温度-湿度
|
||||||
|
model CityInformation {
|
||||||
|
pry_no_1 Int @default(0)
|
||||||
|
pry_no_2 Int @default(0)
|
||||||
|
province String
|
||||||
|
city String
|
||||||
|
climatic_zone String?
|
||||||
|
env_temp Float
|
||||||
|
env_hum Float
|
||||||
|
|
||||||
|
@@id([province, city])
|
||||||
|
@@map("city_information")
|
||||||
|
}
|
||||||
|
|
||||||
|
// 空气污染物浓度限值标准
|
||||||
|
model ApcLimitStandard {
|
||||||
|
id String @id // 标准ID
|
||||||
|
methanal_c_lmt Float // 甲醛浓度限值
|
||||||
|
tvoc_c_lmt Float // TVOC浓度限值
|
||||||
|
benzene_c_lmt Float // 苯浓度限值
|
||||||
|
toluene_c_lmt Float // 甲苯浓度限值
|
||||||
|
p_xylene_c_lmt Float // 二甲苯浓度限值
|
||||||
|
spaces Space[] // 使用该模板的项目空间
|
||||||
|
pub_temp_spaces PublicTemplateSpace[] // 使用该标准的公共模板空间
|
||||||
|
self_temp_spaces SelfTemplateSpace[] // 使用该标准的自建模板空间
|
||||||
|
|
||||||
|
@@map("apc_limit_standard")
|
||||||
|
}
|
||||||
|
|
||||||
|
// ------ 论坛 ------
|
||||||
|
|
||||||
|
model ForumThread {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
board String // 板块(取值属于 FORUM_BOARDS)
|
||||||
|
title String
|
||||||
|
content String @db.Text
|
||||||
|
author_id String // User.id
|
||||||
|
author_name String // 冗余 username
|
||||||
|
like_count Int @default(0)
|
||||||
|
reply_count Int @default(0)
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
updated_at DateTime @updatedAt
|
||||||
|
deleted Int @default(0)
|
||||||
|
replies ForumReply[]
|
||||||
|
likes ForumThreadLike[]
|
||||||
|
|
||||||
|
@@map("forum_thread")
|
||||||
|
}
|
||||||
|
|
||||||
|
model ForumReply {
|
||||||
|
id Int @id @default(autoincrement())
|
||||||
|
thread_id Int
|
||||||
|
thread ForumThread @relation(fields: [thread_id], references: [id], onDelete: Cascade)
|
||||||
|
floor Int // 楼层
|
||||||
|
content String @db.Text
|
||||||
|
author_id String
|
||||||
|
author_name String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
deleted Int @default(0)
|
||||||
|
|
||||||
|
@@map("forum_reply")
|
||||||
|
}
|
||||||
|
|
||||||
|
model ForumThreadLike {
|
||||||
|
thread_id Int
|
||||||
|
thread ForumThread @relation(fields: [thread_id], references: [id], onDelete: Cascade)
|
||||||
|
user_id String
|
||||||
|
created_at DateTime @default(now())
|
||||||
|
|
||||||
|
@@id([thread_id, user_id])
|
||||||
|
@@map("forum_thread_like")
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,53 @@
|
||||||
|
export enum ID_PREFIX {
|
||||||
|
ADMIN = 'A',
|
||||||
|
USER = 'U',
|
||||||
|
PROJECT = 'P',
|
||||||
|
SPACE = 'S',
|
||||||
|
PUB_TEMP = 'PT',
|
||||||
|
PUB_TEMP_SPACE = 'PTS',
|
||||||
|
SELF_TEMP = 'ST',
|
||||||
|
SELF_TEMP_SPACE = 'STS',
|
||||||
|
PUB_MATERIAL = 'PM',
|
||||||
|
SELF_MATERIAL = 'SM'
|
||||||
|
}
|
||||||
|
|
||||||
|
export enum DATA_TYPE {
|
||||||
|
PUBLIC = 'pub',
|
||||||
|
PRIVATE = 'self'
|
||||||
|
}
|
||||||
|
|
||||||
|
export const IAPIPS_STATIC = 'iapips_static'
|
||||||
|
|
||||||
|
export enum ERR_CODE {
|
||||||
|
// 1xxx - 参数校验相关
|
||||||
|
INVALID_REQ_DATA = '1000',
|
||||||
|
ERR_NAME_OR_PSW = '1001',
|
||||||
|
ERR_PSW = '1002',
|
||||||
|
ACCT_NAME_EXIST = '1003',
|
||||||
|
ACCT_NOT_FOUND = '1004',
|
||||||
|
PROJ_NOT_FOUNT = '1005',
|
||||||
|
SPACE_NOT_FOUNT = '1006',
|
||||||
|
MTRL_NOT_FOUNT = '1007',
|
||||||
|
PROJ_PREDICTED = '1008',
|
||||||
|
PREDICTION_ERROR = '1009',
|
||||||
|
INVALID_COLLECT = '1010',
|
||||||
|
CAT_DUPL = '1011',
|
||||||
|
CAT_EXIST = '1012',
|
||||||
|
AUDIT_REQ_EXIST = '1013',
|
||||||
|
AUDIT_REQ_NOT_FOUND = '1014',
|
||||||
|
AUDIT_REQ_INVALID_STATUS = '1015',
|
||||||
|
NO_UPLOAD_FILE = '1016',
|
||||||
|
SMS_CODE_ERR = '1017',
|
||||||
|
SMS_RATE_LIMIT = '1018',
|
||||||
|
// 2xxx - 身份校验相关
|
||||||
|
UNAUTHORIZED = '2000',
|
||||||
|
// 3xxx - 权限校验相关
|
||||||
|
FORBIDDEN = '3000',
|
||||||
|
FORBIDDEN_ADMIN_TYPE = '3001',
|
||||||
|
FORBIDDEN_ACCOUNT = '3002',
|
||||||
|
// 4xxx - 服务端异常相关
|
||||||
|
UNKNOWN_ERR = '4000'
|
||||||
|
}
|
||||||
|
|
||||||
|
// 论坛板块(固定,不建表)
|
||||||
|
export const FORUM_BOARDS = ['甲醛治理', '异味TVOC', '环保材料', '装修避坑', '求助问答']
|
||||||
Loading…
Reference in New Issue