# 動植物防疫檢疫局檢疫申報發證系統委外維運服務
## 尚未完成
* 角色權限管理
* 登入時 會跳出不必要的認證視窗
## 一、注意事項
### 1. 登入後的所有請求,請務必都帶上Authorization請求頭(身分令牌)
| 參數名稱 | 必填 | 類型 | 備註 | 範例 |
| ------------- | ---- | ------ | -------- | ------------------------------------------------------------ |
| Authorization | Y | String | 身分令牌 | Bearer eyJhbGciOiJIUzUxMiJ9.eyJsb2dpbl91c2VyX2tleSI6IjU5ODI2YjU5LTkzZWYtNDFmOC1iYTFmLTZhNWNjZGUyM2E2ZiJ9.DH1NwnSo3JoTCjf-6WJL_XhcAyplNaezeRJz0IaEeVma65n1cJGBsoUUOjdx1fg8IX7otd3MBxAlk7ONDmq-Ng |
### 2. 所有返回值都是Json字串
範例
```json
{
"msg":"操作成功",
"code":"0000",
"uuid":"6f68d0a646064ce3962110ddd0130de0"
}
```
### 3. 訊息狀態碼 (在返回值中,不是看HTTP Header)
### 4. 測試環境資訊
http://172.31.70.232:9201
## 二、系統流程
### 1.登入後發送api
#### a. 於首頁輸入使用者名稱、密碼、驗證碼後,點選"登入"鈕發送auth/oauth/token請求,成功登入後取得token
#### b. 於Request Header中設定Authorization,將token以'Bearer ' + token帶入,之後便可以登入者之授權身份發送後續Api Request
#### 1.1 圖形驗證
| 請求路徑 |
| -------- |
| /kaptcha |
#### 1.2 登入
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /auth/oauth/token |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| grant_type | string | Y | |固定是 : password|
| client_id | string | Y | |固定是 : client-app |
| client_secret | string | Y | |固定是 : 123456 |
| userName | string | Y | 帳號 |admin |
| password | string | Y | 密碼 |123456 |
| userType | int | Y | 使用者別 |1:檢疫人員 2:業者 |
| verifyId | string | Y | 圖形驗證 id | 從 /kaptcha 那取得的id |
| verifyCode | string | Y | 圖形驗證 code | 圖形內容6碼 |
#### 1.3 token 過期刷新(記住我)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /auth/oauth/token |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| client_id | string | Y | |固定是 : client-app |
| client_secret | string | Y | |固定是 : 123456 |
| grant_type | string | Y | |固定是 : refresh_token |
| refresh_token | string | Y | 刷新token | 登入成功後返回的 refreshToken |
### 2. 忘記密碼(發送mail)
#### a. 使用者點選首頁"忘記密碼?"
#### b. ...
待補充...
## 三、布告欄
### 1.新增/儲存 (需身分令牌及權限)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /bulletinboard/news/save |
#### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| id | int | N |編號 |有帶id時為編輯 |
| title | string | Y | 標題 | |
| content | string | Y | 內文 | |
| newsType | int | Y | 類型 |類型 1:公告資訊 2:FAQ 3:系統公告 4:GTP'|
| ownerGroup | int | Y | 對象 |擁有群組 1:檢疫人員 2:業者 3:民眾 |
| status | int | Y | 狀態 |狀態 1:草稿 2:待上架 3:上架 4:下架|
| ontop | int | Y | 置頂 |置頂 0:否 1:是|
| beginDate | string | N | 起日 |yyyy/MM/dd|
| endDate | string | N | 訖日 |yyyy/MM/dd|
| deletedFiles | string | N | 被刪除檔案 | 1,2,3,...|
| files | File | N | 上傳的檔案 ||
### 2.上下架狀態變更 (需身分令牌及權限)
| 方法 | 請求路徑 |
| ---- | -------- |
| PUT | /bulletinboard/news/{id}/status/{status} |
#### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| id | int | 公告編號 |
| status | int | 狀態 |
### 3.查詢 (需身分令牌及權限)
| 方法 | 請求路徑 |
| ---- | -------- |
| GET | /bulletinboard/news/query |
#### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| beginDate | string | N |起日| yyyy/MM/dd |
| endDate | string | N |訖日| yyyy/MM/dd |
| newsType | int | N |類型| |
| status | int | N |狀態| |
| pageNum | int | N |頁數| |
| pageSize | int | N |筆數| |
### 3.單筆詳細查詢 (需身分令牌及權限)
| 方法 | 請求路徑 |
| ---- | -------- |
| GET | /bulletinboard/news/edit/{id} |
#### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| id | int | 公告編號 |
### 4.刪除 (需身分令牌及權限)
| 方法 | 請求路徑 |
| ---- | -------- |
| PUT | /bulletinboard/news/remove |
#### 請求參數(form data)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| ids | int array | 公告編號清單 |
### 5.單筆詳細查詢 (需身分令牌及權限)
| 方法 | 請求路徑 |
| ---- | -------- |
| GET | /bulletinboard/news/get/{id} |
#### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| id | int | 公告編號 |
### 6.查詢前幾筆 (有無身分令牌皆能查詢)
| 方法 | 請求路徑 |
| ---- | -------- |
| GET | /bulletinboard/news/getTop/{top} |
#### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| top | int | 筆數 |
### 7.分頁查詢 (有無身分令牌皆能查詢)
| 方法 | 請求路徑 |
| ---- | -------- |
| GET | /bulletinboard/news/getAll |
#### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| pageSize | int | N |筆數| |
| pageNum | int | N |頁數| |
| newsType | int | N |類型| |
### 8.檔案下載 (有無身分令牌皆能下載)
| 方法 | 請求路徑 |
| ---- | -------- |
| GET | /bulletinboard/news/file/download/{id} |
#### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| id | int | 檔案編號 |
## 四、帳號管理
### 1.外部業者管理
#### 1.1 新增/儲存 (有無身分令牌皆能做新增)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/trader/save |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| id | int | N |編號| 編輯時 需要帶編號 |
| name | string | Y |帳號| |
| password | string | Y |密碼| |
| email | string | Y |郵件| |
| cName | string | Y | 公司中文全稱(姓名)| |
| eName | string | N | 公司英文全稱 | |
| mailingAddress | string | N | 通訊地址 | |
| personInCharge | string | Y | 負責人姓名 | |
| guiNo | string | Y | 統一編號(身份證字號) | |
| establishmentDate | string | Y | 核准設立登記日期(個人出生日期) | yyyy/MM/dd |
| amountOfCapital | string | N | 資本額度 | |
| permanentAddress | string | Y | 登記地址 | |
| tel | string | Y | 聯絡電話 | |
| mobile | string | N | 手機 | |
| fax | string | N | 傳真 | |
| reviewOffice | int | Y | 審核機關 | 北:1 南:2 中:3 東:4 |
| definedType | int | Y | 用戶類型 | 1: 報關行 2: 代理人 3:自然人 |
| remark | string | N | 備註 | |
| file | File | N | 檔案 | 新增時必須上傳檔案 |
| fileDeleted | string | N | true/false | 編輯時 有更新檔案 |
#### 1.2 查詢 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/trader/query |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| guiNo | string | N || |
| email | string | N || |
| cName | string | N || |
| reviewOffice | int | Y || |
| definedType | int | Y || |
| pageNum | int | N || |
| pageSize | int | N || |
#### 1.3 單筆詳細查詢 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/trader/edit/{id} |
##### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| id | int | 業者編號 |
#### 1.4 變更狀態 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/trader/updateStatus |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| userIds | int array | Y || |
| status | int | Y || |
#### 1.5 審核狀態變更 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/trader/audit |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| id | int | Y |業者編號| |
| validNum | int | Y | 審查結果 | 1:通過 2:補件 3:拒絕 |
| message | string | N | 審查訊息 | |
### 2.檢疫人員管理
#### 2.1 新增/儲存 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/staff/save |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| id | int | N |編號| 編輯時 需要帶編號 |
| name | string | Y |帳號| |
| email | string | Y |郵件| |
| status | int | Y | 狀態 | 0:停用 1:啟用 |
| fullname | string | Y | 姓名 | |
| title | string | N | 職稱 | |
| office_zone | int | N | 直屬部門 | 1:總部 2:北 3:中 4:南 5:東 |
#### 2.2 查詢 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/staff/query |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| userName | string | N | 帳號 | |
| fullName | string | N |使用者名稱| |
| email | string | N |郵件| |
| pageNum | int | Y | 第幾頁 | |
| pageSize | int | Y | 筆數 | |
#### 2.3 單筆查詢 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/staff/edit/{id} |
##### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| id | string | 檢疫人員編號 |
#### 2.4 狀態變更 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/staff/changeStatus |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| userIds | string array | Y | 檢疫人員編號 | |
| status | int | Y | 狀態 | |
#### 2.5 預設角色功能清單 (需要身分令牌)
| 方法 | 請求路徑 |
| ---- | -------- |
| POST | /user/staff/getDefaultAuthorizedUrl/{roleId} |
##### 請求參數(path variable)
| 參數名稱 | 類型 | 中文 |
| -------- | -------- | -------- |
| roleId | int | 角色編號 |
### 3.忘記密碼
#### 3.1 申請
| 方法 | 請求路徑 |
| ---- | -------- |
| POST/GET | /user/forgotPassword |
* 此功能會寄忘記密碼信到信箱,信裡帶url,url有帶token跟email
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| email | string | Y | email | |
| verifyId | string | Y | 圖形驗證 id | 從 /kaptcha 那取得的id |
| verifyCode | string | Y | 圖形驗證 code | 圖形內容6碼 |
#### 3.2 驗證
| 方法 | 請求路徑 |
| ---- | -------- |
| POST/GET | /user/validateToken |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| email | string | Y | email | email 信裡的url取出 |
| token | string | Y | token | token 信裡的url取出 |
#### 3.2 儲存新密碼
| 方法 | 請求路徑 |
| ---- | -------- |
| POST/GET | /user/savePassword |
##### 請求參數(form data)
| 參數名稱 | 類型 | 必填 |中文 |備註 |
| ----------- | -------- | -------- |-----|-----------|
| email | string | Y | | email 信裡的url取出 |
| token | string | Y | | token 信裡的url取出 |
| password | string | Y | 新密碼 | |
----------------------------------------------------------------
資料表
DROP TABLE IF EXISTS user_main;
CREATE TABLE user_main (
id varchar(20) NOT NULL COMMENT '使用者編號',
name varchar(30) NOT NULL COMMENT '使用者名稱',
email varchar(255) NOT NULL COMMENT '使用者信箱',
user_type tinyint(2) NOT NULL COMMENT '使用者類別 1:檢疫人員 2: 業者',
user_detail_id varchar(64) NOT NULL COMMENT 'uuid 對應到 detail 的 id',
status tinyint(2) NOT NULL COMMENT '狀態 0:停用 1:啟用',
create_date timestamp NOT NULL COMMENT '建立日期',
create_user varchar(20) NOT NULL COMMENT '建立人員',
update_date timestamp NULL COMMENT '更新日期',
update_user varchar(20) NULL COMMENT '更新人員',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='使用者主表';
DROP TABLE IF EXISTS trader_detail;
CREATE TABLE trader_detail (
id varchar(64) NOT NULL COMMENT 'user_detail_id',
--name varchar(30) NOT NULL COMMENT '使用者名稱',
--email varchar(255) NOT NULL COMMENT '使用者信箱',
valid tinyint(2) NOT NULL COMMENT '狀態 0:未審核 1:通過 2:補件 3:拒絕',
--status tinyint(2) NOT NULL COMMENT '狀態 0:停用 1: 啟用',
c_name varchar(255) NOT NULL COMMENT '公司中文全稱(姓名)',
e_name varchar(255) NULL COMMENT '公司英文全稱(姓名)',
mailing_address varchar(255) NULL COMMENT '通訊地址',
person_in_charge varchar(30) NOT NULL COMMENT '負責人',
gui_no varchar(20) NOT NULL COMMENT '統一編號(身份證字號)',
establishment_date timestamp NOT NULL COMMENT '核准設立登記日期(個人出生日期)',
amount_of_capital varchar(50) NULL COMMENT '資本額度',
permanent_address varchar(255) NOT NULL COMMENT '登記地址',
tel_no varchar(20) NOT NULL COMMENT '聯絡電話',
mobile_no varchar(20) NULL COMMENT '行動電話',
fax_no varchar(20) NULL COMMENT '傳真號碼',
review_office tinyint(2) NOT NULL COMMENT '審核機關 北:1 南:2 中:3 東:4',
defined_type tinyint(2) NOT NULL COMMENT '用戶類型 1: 報關行 2: 代理人 3:自然人 ',
file_reference varchar(64) NOT NULL COMMENT '附件',
remark varchar(3000) NULL COMMENT '備註說明',
--create_date timestamp NOT NULL COMMENT '建立日期',
--create_user varchar(64) NOT NULL COMMENT '建立人員',
--update_date timestamp NULL COMMENT '更新日期',
--update_user varchar(64) NULL COMMENT '更新人員',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='業者資訊';
DROP TABLE IF EXISTS staff_detail;
CREATE TABLE staff_detail (
id varchar(64) NOT NULL COMMENT 'uuid',
--name varchar(30) NOT NULL COMMENT '使用者名稱',
--email varchar(255) NOT NULL COMMENT '使用者信箱',
--status tinyint(2) NOT NULL COMMENT '狀態 0:停用 1:啟用',
fullname varchar(30) NOT NULL COMMENT '姓名',
title varchar(64) NULL COMMENT '職稱',
office_zone tinyint(2) NULL COMMENT '直屬部門 1:總部 2:北 3:中 4:南 5:東',
--create_date timestamp NOT NULL COMMENT '建立日期',
--create_user varchar(64) NOT NULL COMMENT '建立人員',
--update_date timestamp NULL COMMENT '更新日期',
--update_user varchar(64) NULL COMMENT '更新人員',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='檢疫人員資訊';
DROP TABLE IF EXISTS user_secret;
CREATE TABLE user_secret (
id int NOT NULL AUTO_INCREMENT,
user_id varchar(20) NOT NULL COMMENT '使用者代號',
password varchar(100) NOT NULL COMMENT '使用者密碼',
create_date timestamp NOT NULL COMMENT '建立日期',
create_user varchar(20) NOT NULL COMMENT '建立人員',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='密碼表';
DROP TABLE IF EXISTS login_record;
CREATE TABLE login_record (
id int NOT NULL AUTO_INCREMENT,
user_name varchar(30) NOT NULL COMMENT '使用者名稱',
ip varchar(64) NOT NULL COMMENT 'ip 位置',
status tinyint(2) NOT NULL COMMENT '狀態 0: 失敗 1: 成功',
create_date timestamp NOT NULL COMMENT '建立日期',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='登入狀態';
DROP TABLE IF EXISTS password_token;
CREATE TABLE password_token (
token varchar(64) NOT NULL COMMENT 'token',
email varchar(500) NOT NULL COMMENT 'email',
expired int NOT NULL COMMENT '0:未過期 1:已過期',
create_date timestamp NOT NULL COMMENT '建立日期',
PRIMARY KEY (token)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='忘記密碼';
DROP TABLE IF EXISTS user_roles;
CREATE TABLE user_roles (
id int NOT NULL AUTO_INCREMENT,
user_id varchar(20) NOT NULL COMMENT '使用者代號',
role_id int NOT NULL COMMENT '角色代號',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='使用者角色';
DROP TABLE IF EXISTS role;
CREATE TABLE role (
id int NOT NULL AUTO_INCREMENT COMMENT '角色編號',
name varchar(64) NOT NULL COMMENT '角色名稱',
note varchar(500) NULL COMMENT '備註',
user_type tinyint(2) NOT NULL COMMENT '類別 1:檢疫人員 2:業者',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='角色';
DROP TABLE IF EXISTS app; --
CREATE TABLE app (
id int NOT NULL AUTO_INCREMENT,
name varchar(64) NOT NULL COMMENT '功能名稱',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='系統清單';
DROP TABLE IF EXISTS menu; --
CREATE TABLE menu (
id int NOT NULL AUTO_INCREMENT,
name varchar(64) NOT NULL COMMENT '功能名稱',
app_id int NOT NULL COMMENT '系統編號',
p_id int NOT NULL COMMENT '父層編號',
level_no int NOT NULL COMMENT '層級',
sort_no int NOT NULL COMMENT '排序',
is_end tinyint NOT NULL COMMENT '是否末端 0:否 1:是',
url varchar(500) NULL COMMENT '路徑',
note varchar(3000) NULL COMMENT '備註',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='功能表';
DROP TABLE IF EXISTS default_role_func;
CREATE TABLE default_role_func (
id int NOT NULL AUTO_INCREMENT,
role_id int NOT NULL COMMENT '角色編號',
menu_id int NOT NULL COMMENT '功能編號',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='角色對應功能';
DROP TABLE IF EXISTS user_func; --
CREATE TABLE user_func (
id int NOT NULL AUTO_INCREMENT,
user_id varchar(20) NOT NULL COMMENT '使用者代號',
menu_id int NOT NULL COMMENT '選單編號',
create_user varchar(20) NULL COMMENT '建立人員',
create_date timestamp NOT NULL COMMENT '建立日期',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='使用者對應功能';
DROP TABLE IF EXISTS capq.news;
CREATE TABLE capq.news (
id int NOT NULL AUTO_INCREMENT,
title varchar(500) NOT NULL COMMENT '標題',
content varchar(5000) NOT NULL COMMENT '內容',
news_type tinyint(2) NOT NULL COMMENT '類型 1:公告資訊 2:FAQ 3:系統公告 4:GTP',
owner_group tinyint(2) NOT NULL COMMENT '擁有群組 1:檢疫人員 2:業者 3:民眾 ',
status tinyint(2) NOT NULL COMMENT '狀態 1:草稿 2:待上架 3:上架 4:下架',
ontop tinyint(2) DEFAULT 0 NOT NULL COMMENT '置頂 0:否 1:是',
deleted tinyint(2) DEFAULT 0 NOT NULL COMMENT '刪除狀態 0:否 1:是(僅備用)',
begin_date timestamp NULL COMMENT '公告起始日',
end_date timestamp NULL COMMENT '公告結束日',
file_reference varchar(64) NULL COMMENT '附件',
create_date timestamp NOT NULL COMMENT '建立日期',
create_user varchar(20) NOT NULL COMMENT '建立人員',
update_date timestamp NULL COMMENT '更新日期',
update_user varchar(20) NULL COMMENT '更新人員',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='布告欄訊息';
-- 更前記得備份 mapper
DROP TABLE IF EXISTS file_detail;
CREATE TABLE file_detail (
id int NOT NULL AUTO_INCREMENT,
file_reference varchar(64) NOT NULL COMMENT 'uuid',
file_name varchar(100) NOT NULL COMMENT '檔案名稱',
file_size int NOT NULL COMMENT '檔案大小(byte)',
file_path varchar(500) NOT NULL COMMENT '本地路徑',
create_date timestamp NOT NULL COMMENT '建立日期',
create_user varchar(20) NOT NULL COMMENT '建立人員',
update_date timestamp NULL COMMENT '更新日期',
update_user varchar(20) NULL COMMENT '更新人員',
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='檔案路徑';