首先,我們先從數模設計開始,這是一個系統的核心和精髓,決定了系統的架構和擴展控件。ETCloud的數模共有22張表,三個模塊。
一、用戶模塊
用戶模塊主要由企業表、用戶表、角色表、權限表構成。
1. 數據權限
用戶共分爲三大類(model_user.usertype)
1.Root用戶 系統管理員 可以查看所有設備、所有產品、所有用戶,擁有一切功能
2.Admin企業管理員 查看自己的產品和同一企業的產品
3.Normal普通用戶 只查看自己的設備,以設備爲維度,反查出產品
2.菜單按鈕權限
用戶的頁面權限表是父子層級的表。一級爲菜單權限,二級爲按鈕權限。
通過給角色賦予權限,再給用戶賦予角色的方式實現不同用戶展現不同的頁面菜單和按鈕
3. 用戶來源
由ROOT(系統管理員)創建企業(附帶創建默認管理員)
企業管理員可以創建自己的同一企業的管理員和普通用戶
具有普通用戶自動註冊賬號功能
具有自動註冊企業的站好的功能
具有微信用戶反向創建平臺賬號的功能
企業表model_eid
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 | 創建時間@創建時間 |
用戶表mode_user
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 |
角色表model_role
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其他 |
權限表model_power
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加密。這樣就可以一機一密。更好的確保保全性。
產品表model_product
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 | 創建時間 |
節點表model_node
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 | 節點描述 |
設備表model_device
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.觸發器節點
主要用戶給多個設備,或者一類產品下的所有設備添加觸發器。如果某個節點數據異常了就指定告警模板的處理方式
告警模板model_warn_info
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 | 創建時間 |
觸發器model_trigger
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 | 創建時間 |
觸發器節點model_trigger_node
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 | 觸發值 |
四、日誌模塊
日誌模塊主要由系統運行日誌、告警日誌、設備連接日誌、指令下發日誌、功能節點日誌構成
1.系統運行操作日誌 modle_syslog
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 | 創建時間@創建時間 |
2.告警日誌model_warn_log
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 |
3.設備連接日誌model_client_log
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 |
4.指令下發日誌model_order_log
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 |
5.功能節點日誌model_node_log
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 | 字典狀態 |