# 客户对象建模
业务模型设计是信息化系统设计的基础,它涉及到数据库表的定义、字段的设定以及表与表之间的关系。简而言之,这一步骤确定了系统的数据结构和存储方式。
客户是 CRM 系统管理的核心对象之一,我们首先创建客户模型。
# 客户模型定义
# 模型名称
| 模型名称 | 描述 |
|---|---|
| Customers | 客户信息,包括姓名、联系方式、公司名称、职位等 |
# 模型字段列表
| 字段名 | 类型 | 是否可为空 | 可选项 | 备注 |
|---|---|---|---|---|
| name | STRING | 否 | 无 | 客户姓名 |
| contactInfo | STRING | 否 | 无 | 联系方式 |
| companyName | STRING | 是 | 无 | 公司名称 |
| position | STRING | 是 | 无 | 职位 |
| group | STRING | 是 | VIP、普通客户、潜在客户、重要客户、黑名单 | 客户分组 |
| birthday | LOCAL_DATE | 是 | 无 | 客户生日 |
提示
系统会自动为动态模型创建名为 id、类型为 Long 的自增主键列,不需要在字段列表中定义。
# 用 CSV 创建模型
「开发定制 > 领域模型」页面只提供查看和修改,没有「创建」按钮,新模型通过种子数据 CSV 定义。在 codes/data/csv 目录下新建以下两个文件。
DomainClass_crm.csv:定义模型本身和它的增删改查权限。
shortName(*),extInfo,createRoleRequirement.name,readRoleRequirement.name,updateRoleRequirement.name,deleteRoleRequirement.name
;; CRM 教程:客户模型
Customers,,USER,USER,USER,
2
3
shortName(*)是模型名称,(*)表示按这一列查找已有记录:找到就更新,找不到就新建。- 后四列分别是新建、查看、修改、删除所需的角色要求(RoleRequirement)。平台内置了
USER、DEVELOPER、ADMIN三个角色要求,分别对应角色ROLE_USER、ROLE_DEVELOPER、ROLE_ADMIN;ROLE_ADMIN包含ROLE_DEVELOPER,ROLE_DEVELOPER包含ROLE_USER。 - 某项权限留空,表示任何人都没有这项权限(包括管理员)。这里特意把删除权限留空,第 4 步再开放。
DomainClassField_crm.csv:定义模型的字段。
domainClass.shortName(*),name(*),dataType,referenceDomain.shortName,nullable,editable,defaultValue,options
;; CRM 教程:客户模型字段
;; name 客户姓名 / contactInfo 联系方式 / companyName 公司名称 / position 职位 / group 客户分组 / birthday 客户生日
Customers,name,STRING,,false,true,,
Customers,contactInfo,STRING,,false,true,,
Customers,companyName,STRING,,true,true,,
Customers,position,STRING,,true,true,,
Customers,group,STRING,,true,true,,"[""VIP"",""普通客户"",""潜在客户"",""重要客户"",""黑名单""]"
Customers,birthday,LOCAL_DATE,,true,true,,
2
3
4
5
6
7
8
9
dataType取值见 CSV 导入模板 中的 DomainClassField 一节。options是可选值列表,写成 JSON 数组;因为内容里有逗号和双引号,整格用双引号包起来,内部的双引号写两遍。设置了可选值的字段,在表单中只能从这些选项里选择(1.0.0-beta18 的默认表单中显示为可多选的标签输入框,见第 2 步)。- 以
;;开头的行是注释,导入时忽略。
注意
DomainClassField 的 comment(备注)列在 1.0.0-beta18 中不要填写:填了之后平台生成的数据库注释语句缺少引号,该字段会创建失败,同一文件中后面的行也不会被导入。
保存两个文件后重启后端服务(例如 docker compose restart server)。服务启动时会先导入 DomainClass,再导入 DomainClassField,并自动建表、加列。
# 检查结果
打开「开发定制 > 领域模型」,列表中出现 Customers,点击「详情」可以看到刚定义的字段:
注意
在 1.0.0-beta18 中,领域模型详情和修改页的字段子表里,「可选值」一列显示为 Unsupported displayType: tag_list(前端没有这种显示控件),无法在界面上查看或编辑可选值。可选值请以 CSV 为准。详情窗口中的「Basic Information」「Class Type」未翻译,也是当前版本的界面问题。
如果模型没有出现,到「执行记录 > 数据导入」查看 Domain Class、Domain Class Field 两条导入记录的状态和失败行。
接下来,我们将为客户模型创建对应的维护表单,请点击这里继续。
# 进一步阅读
我们的平台是牧言低代码平台,专为帮助用户快速构建信息化系统而设计。了解更多关于我们平台的信息,请访问 牧言低代码平台 (opens new window)。