實現一個xx公司的倉儲管理系統,記錄下全棧開發過程中的一些步驟及心得!
阿新 • • 發佈:2022-03-07
技術選型
前端:react + antd
後臺:express + mysql2 + log4js(日誌服務,按業務模組記錄)
部署:某訊的雲伺服器+域名,nginx代理前端、後臺服務
前端(管理端)
- 使用腳手架建立專案,然後增加antd元件庫
- 頁面鑑權
- 左側導航選單:根據當前賬號所屬角色對應的選單許可權去生成
- 路由/子路由設計
- 專案程式碼目錄設計
後端
1、路由設計,根據業務區分多個路由模組
2、介面日誌記錄、鑑權(登入時寫入cookie)
3、登入時,密碼做雙層md5加密校驗(內建超級管理員角色賬號,超級管理員角色配置使用者管理及角色管理選單許可權)
4、實現檔案上傳
5、明確業務及功能需求
- 登入/退出
- 選單許可權控制
- 使用者管理(超級管理員)
- 角色管理(超級管理員)
- 商品分類管理(層級關聯選擇,暫支援2級)
- 商品管理
- 供應商資訊管理
6、資料庫 - 表結構設計
- 使用者表(users)
欄位 | 含義 | 資料型別 | 是否必傳 |
---|---|---|---|
id | 使用者id | int | 1 |
username | 使用者名稱 | varchar(32) | 1 |
password | 密碼 | varchar(32) | |
phone | 手機 | char(11) | |
郵箱 | varchar(32) | ||
role_id | 角色id | INT | 1 |
create_time | 建立時間 | datetime | 1 |
change_time | 最近修改時間 | datetime | 1 |
- 角色表(roles)
欄位 | 含義 | 資料型別 | 是否必傳 |
---|---|---|---|
id | 角色id | int | 1 |
name | 角色名稱 | varchar(32) | 1 |
auth_id | 授權人id | int | |
auth_name | 授權人 | varchar(32) | |
auth_time | 授權時間 | datetime | |
create_time | 建立時間 | datetime | 1 |
menus | 有許可權操作的選單path的陣列 | ['/a','/b'] VARCHAR(200) default '/home' |
- 商品分類表(categorys)
欄位 | 含義 | 資料型別 | 是否必傳 |
---|---|---|---|
id | 分類id | INT | 1 |
name | 分類名稱 | varchar(64) | 1 |
parentId | 父級分類id | INT default null | |
description | 分類簡介 | varchar(500) | 1 |
create_time | 建立時間 | datetime | 1 |
change_time | 最近修改時間 | datetime | 1 |
imgs | 圖片 | ['/a','/b'] VARCHAR(200) default '' |
- 商品資訊表(products)
欄位 | 含義 | 資料型別 | 是否必傳 |
---|---|---|---|
id | 商品id | int | 1 |
name | 商品名稱 | varchar(64) | 1 |
model | 規格型號 | varchar(64) | |
description | 商品描述(詳情) | varchar(500) | |
create_time | 建立此商品的時間 | datetime | 1 |
change_time | 最近修改時間 | datetime | 1 |
imgs | 圖片 | ['/a','/b'] VARCHAR(200) default '' | |
categoryId | 所屬分類的父分類id | int | 1 |
p_categoryId | 所屬分類的id | int | 1 |
suppliers | 關聯供應商(可能多個、搞個列表多選功能) | [id,id2,id3...] VARCHAR(150) | |
unit | 商品單位 | varchar(16) | |
purchase_price | 進價 | double(精度低)、decimal(精度高) decimal(10,3) default 0.000 | |
wholesale_price | 批發價 | double(精度低)、decimal(精度高)decimal(10,3) default 0.000 | |
retail_price | 零售價 | double(精度低)、decimal(精度高)decimal(10,3) default 0.000 | |
inventory_count | 累計入庫數量 (預設0) | int | 1 |
show_count | 展廳存放數量 (預設0) | int | |
delivery_count | 累計出庫數量 (預設0) | int | |
current_count | 庫存(當前實際庫存數量)(預設0) | int | 1 |
effect | 用途 | varchar(500) | |
remark | 備註 | varchar(500) | |
status | 商品狀態: 1:上架中, 2: 下架了 | tinyint(1) 這裡的1表示的是最小顯示寬度是1個字元; tinyint(2) 這裡的2表示的是最小顯示寬度是2字元 |
|
- 供應商資訊表(suppliers)
欄位 | 含義 | 資料型別 | 是否必傳 |
---|---|---|---|
id | 供應商id | int | 1 |
name | 供應商姓名 | varchar(32) | 1 |
address | 地址 | varchar(64) | |
phone | 手機號 | char(11) | 1 |
郵箱 | varchar(32) | ||
goods | 供應物品 | varchar(500) | |
goods_id | 供應物品id | varchar(150) | 預留欄位:可能會去關聯對應的多個商品id |
6、專案程式碼目錄設計
專案基本功能演示
最後,希望大家動一動小手,關注下❤!
後期等專案穩定,可以考慮開源出來。