共计 1919 个字符,预计需要花费 5 分钟才能阅读完成。
技术选型
前端: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、我的项目代码目录设计
我的项目基本功能演示
最初,心愿大家动一动小手,关注下❤!
前期等我的项目稳固,能够思考开源进去。
正文完