1)本項目是一個權限管理系統,其目的就是將Web應用中不同頁面的功能(也就是頁面中的按鈕),
比如 “新增”、“修改”、“刪除”、“查詢”、“審核”等進行權限控制,
只有給用戶設置了相應的權限才能使用對應的功能(即點擊這個按鈕),
否則按鈕將是灰色的,無法操作,效果如下圖所示:
有權限時按鈕可用:

無權限時按鈕是灰色不可用的狀態:

設置權限的頁面如下:

這里既可以針對單個用戶設置權限,也可以針對部門設置權限,
如果既對部門設置了權限,也對該部門下的單個用戶設置了權限,則取用戶的權限,忽略所屬部門的權限。
2)為了將關注點放在技術實現上,而不是業務設計上,我們對表的設計也盡可能的做了簡化,
只包含幾個關鍵的字段就可以了,防止分散注意力,系統要實現的功能描述如下:
1.部門的新增修改作廢。
2.用戶的新增修改鎖定。
3.用戶權限的設置。
4.日志的記錄和查詢。
3)對應的表結構如下:
部門表(t_dept):
| 字段名 | 類型 | 說明 |
| dept_id | int | 部門編號(主鍵,自增) |
| dept_name | varchar(10) | 部門名稱 |
| is_valid | smallint | 1:有效(默認),0:作廢 |
| create_time | datetime | 創建時間 |
| modify_time | datetime | 修改時間 |
用戶表(t_user)
| 字段名 | 類型 | 說明 |
| user_id | int | 用戶編號(主鍵,自增) |
| signin_acc | varchar(15) | 登錄帳號 |
| signin_pwd | varchar(45) | 登錄密碼 |
| user_name | varchar(10) | 用戶名稱 |
| mobile | varchar(15) | 聯系電話 |
| dept_id | int | 所屬部門編號 |
| dept_name | varchar(10) | 所屬部門名稱 |
| is_valid | smallint | 1:有效,0:鎖定 |
| create_time | datetime | 創建時間 |
| modify_time | datetime | 修改時間 |
權限表(t_auth)
| 字段名 | 類型 | 說明 |
| auth_id | int | 權限編號(主鍵,自增) |
| target_type | smallint | 授權類型 1:部門,2:用戶 |
| target_id | int | 用戶/部門編號 |
| func_code | varchar(50) | 功能代碼 |
| create_time | datetime | 創建時間 |
| modify_time | datetime | 修改時間 |
日志表(t_log)
| 字段名 | 類型 | 說明 |
| log_id | int | 日志編號(主鍵,自增) |
| user_id | int | 操作人編號 |
| user_name | varchar(10) | 操作人名字 |
| batch_no | varchar(45) | 批次號(GUID字符串) |
| table_name | varchar(45) | 表名稱 |
| table_data | varchar(450) | 表數據 |
| log_time | datetime | 記錄時間 |
備注:日志表的作用是在表的字段值發生變化時候將變化前的值和變化后的值以json的格式記錄下來(以行為單位記錄),
新增時不做處理,修改時候記錄2條數據(分別是修改前的數據和修改后的數據,這兩條數據的批次號是一樣的。),
以供后續來追蹤數據的變化,而且能追蹤是哪個用戶做的操作。
在MySQL數據庫中將上面表的定義建立到數據庫,數據庫的名稱為 "auth_manage"。
