首先,我们先从数模设计开始,这是一个系统的核心和精髓,决定了系统的架构和扩展控件。ETCloud的数模共有22张表,三个模块。
用户模块主要由企业表、用户表、角色表、权限表构成。
1. 数据权限
用户共分为三大类(model_user.usertype)
1.Root用户 系统管理员 可以查看所有设备、所有产品、所有用户,拥有一切功能
2.Admin企业管理员 查看自己的产品和同一企业的产品
3.Normal普通用户 只查看自己的设备,以设备为维度,反查出产品
2.菜单按钮权限
用户的页面权限表是父子层级的表。一级为菜单权限,二级为按钮权限。
通过给角色赋予权限,再给用户赋予角色的方式实现不同用户展现不同的页面菜单和按钮
3. 用户来源
由ROOT(系统管理员)创建企业(附带创建默认管理员)
企业管理员可以创建自己的同一企业的管理员和普通用户
具有普通用户自动注册账号功能
具有自动注册企业的站好的功能
具有微信用户反向创建平台账号的功能
id | varchar(36) | varchar | 36 | NO | id@id | |
name | varchar(100) | varchar | 100 | YES | 企业名称 | |
describes | varchar(100) | varchar | 100 | YES | 描述@描述 | |
status | tinyint(1) | tinyint | YES | 状态@是否禁用0禁用1开启 | ||
varchar(255) | varchar | 255 | YES | 企业邮箱 | ||
phone | varchar(255) | varchar | 255 | YES | 企业电话 | |
address | varchar(255) | varchar | 255 | YES | 企业地址 | |
createtime | timestamp | timestamp | YES | CURRENT_TIMESTAMP | 创建时间@创建时间 |
id | varchar(32) | varchar | 32 | NO | ID@ID | ||
eid | varchar(32) | varchar | 32 | YES | EID分组@EID分组 | ||
varchar(100) | varchar | 100 | YES | 电子邮箱 | |||
username | varchar(100) | varchar | 100 | YES | 用户名 | ||
password | varchar(100) | varchar | 100 | YES | 密码@密码 | ||
phone | varchar(100) | varchar | 100 | YES | 手机号 | ||
role | varchar(200) | varchar | 200 | YES | 角色@角色 | ||
status | int(1) | int | YES | 状态,是否禁用@状态,是否禁用 | |||
usertype | int(11) | int | YES | 用户类型@用户类型1ROOT2.admin,3.普通用户 | |||
max_dev | int(255) | int | YES | 最大连接设备数 | |||
createtime | timestamp | timestamp | YES | CURRENT_TIMESTAMP | 创建时间@创建时间 | ||
openid | varchar(255) | varchar | 255 | YES | 微信openid |
id | varchar(100) | varchar | 100 | NO | 主键@这个字段是主键 | |
rolename | varchar(100) | varchar | 100 | YES | 角色名称@角色名称 | |
remark | varchar(100) | varchar | 100 | YES | 备注@备注 | |
powers | varchar(100) | varchar | 100 | YES | 权限集合@权限集合 | |
type | int(11) | int | YES | 类型@0root1普通root2admin3普通4其他 |
id | varchar(11) | varchar | 11 | NO | ID@ID | |
name | varchar(100) | varchar | 100 | YES | 名称@名称 | |
describe | varchar(200) | varchar | 200 | YES | 描述@描述 | |
pid | varchar(11) | varchar | 11 | YES | 父Id |
设备模块主要由产品表、设备表、节点表构成
1.创建产品
产品的意义在于规范同一类设备。定义同一类产品的通信协议,其中产品密钥是为了为了自动注册时鉴别未知设备是否允许连接平台
2.创建节点
当我们新建好一个产品后,就需要定义这个产品具备那些功能,这些功能的可读、可写决定着在这个产品下的设备是否可以操作下发。以及设备的数据展现形式
3.创建设备
设备的引入有两种方式,一种是在平台手动创建,一种是自动注册。
每个设备都拥有自己的唯一序列号,作为clientid,用户名输入产品id,密码是token和设备序列号的sm加密。这样就可以一机一密。更好的确保保全性。
id | varchar(32) | varchar | 32 | NO | ||
eid | varchar(32) | varchar | 32 | YES | 租戶ID | |
name | varchar(255) | varchar | 255 | YES | 产品名称 | |
treaty | varchar(255) | varchar | 255 | YES | 产品协议 | |
describes | varchar(255) | varchar | 255 | YES | 产品描述 | |
types | varchar(255) | varchar | 255 | YES | 产品类别 | |
token | varchar(255) | varchar | 255 | YES | 产品密钥 | |
user_id | varchar(32) | varchar | 32 | YES | 用户ID | |
createtime | timestamp | timestamp | YES | 创建时间 |
varchar(32) | id | varchar | 32 | NO | ||
varchar(255) | product_id | varchar | 255 | YES | 产品ID | |
varchar(255) | name | varchar | 255 | YES | 节点名称 | |
varchar(255) | skey | varchar | 255 | YES | 节点标志 | |
varchar(255) | sunit | varchar | 255 | YES | 节点单位 | |
varchar(255) | rwtype | varchar | 255 | YES | 读写类型 | |
varchar(255) | types | varchar | 255 | YES | 节点类型(1数值型2开关型3字符串) | |
int(255) | pic | int | YES | 节点图片 | ||
varchar(255) | describes | varchar | 255 | YES | 节点描述 |
id | varchar(32) | varchar | 32 | NO | ||
product_id | varchar(255) | varchar | 255 | YES | 产品ID | |
user_id | varchar(255) | varchar | 255 | YES | 用户ID | |
eid | varchar(255) | varchar | 255 | YES | 租户ID | |
name | varchar(255) | varchar | 255 | YES | 设备名称 | |
position | varchar(255) | varchar | 255 | YES | 设备位置 | |
sn | varchar(255) | varchar | 255 | YES | 设备序列号 | |
createtime | timestamp | timestamp | YES | 创建时间 | ||
updatetime | timestamp | timestamp | YES | 更新时间 | ||
describes | varchar(255) | varchar | 255 | YES | 设备描述 | |
is_black | tinyint(4) | tinyint | YES | 是否在黑名单 | ||
is_order_db | tinyint(255) | tinyint | YES | 是否存储指令下发日志 | ||
is_conn_db | tinyint(255) | tinyint | YES | 是否存储设备连接日志 | ||
is_node_db | tinyint(255) | tinyint | YES | 是否存储功能节点日志 |
告警模块主要由三张表构成
1. 告警模板
告警模板主要定义了推送给用户方式,告警的内容,可以填充告警的设备序列号,和异常数据值,异常节点
2.触发器
定义触发器的目的在于,过滤设备发送给平台的数据。如果设备数据异常了就及时推送给用户。便于对设备进行相应的处理。
3.触发器节点
主要用户给多个设备,或者一类产品下的所有设备添加触发器。如果某个节点数据异常了就指定告警模板的处理方式
id | varchar(255) | varchar | 255 | NO | ||
name | varchar(255) | varchar | 255 | YES | 告警模板名字 | |
level | int(255) | int | YES | 告警等级 | ||
content | varchar(255) | varchar | 255 | YES | 告警内容 | |
types | int(255) | int | YES | 推送方式 | ||
way | varchar(255) | varchar | 255 | YES | 推送路径 | |
user_id | varchar(255) | varchar | 255 | YES | 创建人ID | |
createtime | timestamp | timestamp | YES | 创建时间 |
id | varchar(32) | varchar | 32 | NO | ||
product_id | varchar(32) | varchar | 32 | YES | 产品ID | |
snids | varchar(255) | varchar | 255 | YES | 设备序列号集合 | |
name | varchar(255) | varchar | 255 | YES | 触发器名字 | |
content | varchar(255) | varchar | 255 | YES | ||
warn_id | varchar(255) | varchar | 255 | YES | 告警模板ID | |
user_id | varchar(255) | varchar | 255 | YES | 创建人 | |
createtime | timestamp | timestamp | YES | 创建时间 |
id | varchar(32) | varchar | 32 | NO | ||
trigger_id | varchar(32) | varchar | 32 | YES | 触发器ID | |
node_id | varchar(32) | varchar | 32 | YES | 节点ID | |
node_name | varchar(255) | varchar | 255 | YES | 节点名称 | |
node_key | varchar(255) | varchar | 255 | YES | 节点KEY | |
node_type | varchar(255) | varchar | 255 | YES | 节点类型 | |
relation | int(255) | int | YES | 触发关系 | ||
svalue | varchar(255) | varchar | 255 | YES | 触发值 |
日志模块主要由系统运行日志、告警日志、设备连接日志、指令下发日志、功能节点日志构成
id | varchar(32) | varchar | 32 | NO | ID@ID | |
model | varchar(100) | varchar | 100 | YES | 模块@模块 | |
level | int(11) | int | YES | 等级@等级 | ||
eid | varchar(32) | varchar | 32 | YES | 分组@分组 | |
userid | varchar(32) | varchar | 32 | YES | 用户ID@用户ID | |
source | varchar(100) | varchar | 100 | YES | 来源@来源 | |
content | varchar(500) | varchar | 500 | YES | 内容@内容 | |
createtime | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 创建时间@创建时间 |
id | varchar(255) | varchar | 255 | NO | ||
sn | varchar(255) | varchar | 255 | YES | 告警设备 | |
content | varchar(255) | varchar | 255 | YES | 告警内容 | |
is_read | int(11) | int | YES | 是否已读 | ||
warn_id | varchar(255) | varchar | 255 | YES | 告警模板 | |
createtime | timestamp | timestamp | YES | 创建时间 | ||
user_id | varchar(255) | varchar | 255 | YES |
id | varchar(32) | varchar | 32 | NO | 主键 | |
client_id | varchar(255) | varchar | 255 | YES | 客户端id | |
connected | int(11) | int | YES | 状态0下线,1上线 | ||
createtime | datetime | datetime | YES | 上线时间 | ||
ip_address | varchar(255) | varchar | 255 | YES | 客户端ip地址 | |
port | varchar(255) | varchar | 255 | YES | 客户端端口 | |
user_name | varchar(255) | varchar | 255 | YES | 用户名 | |
sub_scriptioncnt | int(11) | int | YES |
id | varchar(255) | varchar | 255 | NO | ||
content | varchar(255) | varchar | 255 | YES | 指令内容 | |
create_time | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 创建时间 | |
sn | varchar(255) | varchar | 255 | YES | 设备序列号 | |
topic | varchar(255) | varchar | 255 | YES | 订单主题 | |
user_id | varchar(255) | varchar | 255 | YES | 用户id |
id | varchar(32) | varchar | 32 | NO | ||
content | varchar(255) | varchar | 255 | YES | 节点内容 | |
create_time | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 创建时间 | |
sn | varchar(255) | varchar | 255 | YES | 节点序列号 | |
topic | varchar(255) | varchar | 255 | YES | 节点主题 |
1.定时任务model_task
id | varchar(32) | varchar | 32 | NO | ||
taskgroup | varchar(100) | varchar | 100 | YES | 任务组名@任务组名 | |
taskname | varchar(100) | varchar | 100 | YES | 任务名称@任务名称 | |
cron | varchar(100) | varchar | 100 | YES | 时间表达式@时间表达式 | |
type | int(11) | int | YES | 类型@1每天2一次 | ||
userid | varchar(32) | varchar | 32 | YES | 用户ID@用户ID | |
taskdata | datetime | datetime | YES | 定时日期@定时日期 | ||
tasktime | datetime | datetime | YES | 定时时间@定时时间 | ||
createtime | timestamp | timestamp | NO | 0000-00-00 00:00:00 | 创建时间@创建时间 |
2.数据推送model_push
id | varchar(36) | varchar | 36 | NO | 主键@这个字段是主键 | |
servicehost | varchar(36) | varchar | 36 | YES | 服务HOST@服务HOST | |
serviceport | int(11) | int | YES | 服务PORT@服务PORT | ||
dburl | varchar(100) | varchar | 100 | YES | 点表推送URL@点表推送URL | |
dturl | varchar(100) | varchar | 100 | YES | 数据推送URL@数据推送URL | |
sjurl | varchar(100) | varchar | 100 | YES | 时间推送URL@时间推送URL | |
httptoken | varchar(36) | varchar | 36 | YES | HTTP头授权码@HTTP头授权码 | |
secondcycle | int(11) | int | YES | 调度周期@调度周期 | ||
startstatus | varchar(36) | varchar | 36 | YES | 启用状态@启用状态 | |
updatetime | timestamp | timestamp | NO | CURRENT_TIMESTAMP | 修改时间@修改时间 | |
note | varchar(300) | varchar | 300 | YES | 备注@备注 | |
roleid | varchar(36) | varchar | 36 | YES | 所属组@所属组 |
3.版本管理model_version
id | varchar(32) | varchar | 32 | NO | id@id | |
versions | varchar(100) | varchar | 100 | YES | 版本号@版本号 | |
remark | varchar(100) | varchar | 100 | YES | 备注@备注 | |
content | varchar(100) | varchar | 100 | YES | 内容@内容 | |
createtime | timestamp | timestamp | YES | 创建时间@创建时间 |
4.字典表model_dictionary
id | varchar(255) | varchar | 255 | NO | ||
dname | varchar(255) | varchar | 255 | YES | 字典名称 | |
dvalue | varchar(255) | varchar | 255 | YES | 字典值 | |
num | int(11) | int | YES | 字典code | ||
pid | varchar(255) | varchar | 255 | YES | 字典父ID | |
status | int(11) | int | YES | 字典状态 |