┌─────────────────────────────────────────────────┐
│ 客户端层 │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ Web端 │ │ 移动端App │ │ POS终端 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ API网关层 │
│ ┌───────────────────────────────────────────┐ │
│ │ 认证鉴权、请求路由、负载均衡、限流熔断 │ │
│ └───────────────────────────────────────────┘ │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ 微服务层 │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 商品服务 │ │ 订单服务 │ │ 会员服务 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ 库存服务 │ │ 员工服务 │ │ 报表服务 │ │
│ └───────────┘ └───────────┘ └───────────┘ │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ 数据存储层 │
│ ┌───────────┐ ┌───────────┐ ┌───────────┐ │
│ │ MySQL │ │ Redis │ │ Elastic │ │
│ └───────────┘ └───────────┘ └───────────┘ │
└─────────────────────────────────────────────────┘
层级 | 技术选型 |
---|---|
前端 | Vue.js + Element UI (Web端), UniApp (移动端), Electron (POS终端) |
网关 | Spring Cloud Gateway |
服务框架 | Spring Boot 2.7 + Spring Cloud Alibaba |
安全认证 | Spring Security + JWT + OAuth2 |
数据持久化 | Spring Data JPA + MyBatis Plus + QueryDSL |
缓存 | Redis (分布式缓存/会话管理) |
消息队列 | RabbitMQ (订单异步处理/库存扣减) |
搜索引擎 | Elasticsearch (商品搜索) |
监控 | Spring Boot Admin + Prometheus + Grafana |
部署 | Docker + Kubernetes |
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 员工表 │ │ 角色表 │ │ 权限表 │
│ (employee) │───┐ │ (role) │───┐ │ (permission)│
└─────────────┘ │ └─────────────┘ │ └─────────────┘
│ │
┌─────────────┐ │ ┌─────────────┐ │
│ 会员表 │ │ │ 商品分类表 │ │
│ (member) │ │ │ (category) │ │
└─────────────┘ │ └─────────────┘ │
│ │
┌─────────────┐ │ ┌─────────────┐ │
│ 订单表 │───┘ │ 商品表 │───┘
│ (order) │ │ (product) │
└─────────────┘ └─────────────┘
│ │
│ │
▼ ▼
┌─────────────┐ ┌─────────────┐
│订单明细表 │ │ 库存记录表 │
│(order_item) │ │(inventory_log)│
└─────────────┘ └─────────────┘
│ ▲
│ │
└─────────────────────┘
员工表(employee)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 员工ID |
username | VARCHAR(50) | UNIQUE, NN | 登录用户名 |
password | VARCHAR(100) | NN | 加密密码 |
real_name | VARCHAR(50) | NN | 真实姓名 |
gender | TINYINT | 性别(0-女,1-男) | |
phone | VARCHAR(20) | NN | 联系电话 |
VARCHAR(100) | 电子邮箱 | ||
status | TINYINT | NN, D=1 | 状态(0-禁用,1-启用) |
hire_date | DATE | 入职日期 | |
role_id | BIGINT | FK, NN | 角色ID |
create_time | DATETIME | NN | 创建时间 |
update_time | DATETIME | 更新时间 |
角色表(role)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 角色ID |
name | VARCHAR(50) | UNIQUE, NN | 角色名称 |
code | VARCHAR(50) | UNIQUE, NN | 角色编码 |
description | VARCHAR(200) | 角色描述 | |
create_time | DATETIME | NN | 创建时间 |
权限表(permission)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 权限ID |
name | VARCHAR(50) | NN | 权限名称 |
code | VARCHAR(50) | UNIQUE, NN | 权限编码 |
type | TINYINT | NN | 类型(1-菜单,2-按钮) |
parent_id | BIGINT | 父权限ID | |
path | VARCHAR(200) | 前端路由路径 | |
component | VARCHAR(200) | 前端组件 | |
icon | VARCHAR(50) | 图标 | |
sort | INT | D=0 | 排序 |
create_time | DATETIME | NN | 创建时间 |
角色权限关联表(role_permission)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
role_id | BIGINT | PK, FK | 角色ID |
permission_id | BIGINT | PK, FK | 权限ID |
商品分类表(category)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 分类ID |
name | VARCHAR(50) | NN | 分类名称 |
parent_id | BIGINT | 父分类ID | |
level | TINYINT | NN | 层级(1-一级,2-二级) |
sort | INT | D=0 | 排序 |
status | TINYINT | NN, D=1 | 状态(0-禁用,1-启用) |
create_time | DATETIME | NN | 创建时间 |
商品表(product)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 商品ID |
name | VARCHAR(100) | NN | 商品名称 |
category_id | BIGINT | FK, NN | 分类ID |
barcode | VARCHAR(50) | UNIQUE | 条形码 |
price | DECIMAL(10,2) | NN | 销售价 |
cost | DECIMAL(10,2) | NN | 成本价 |
stock | INT | NN, D=0 | 库存数量 |
warning_stock | INT | 库存预警值 | |
unit | VARCHAR(10) | NN | 单位(件/个/千克等) |
status | TINYINT | NN, D=1 | 状态(0-下架,1-上架) |
supplier_id | BIGINT | FK | 供应商ID |
image | VARCHAR(255) | 商品图片 | |
description | TEXT | 商品描述 | |
create_time | DATETIME | NN | 创建时间 |
update_time | DATETIME | 更新时间 |
供应商表(supplier)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 供应商ID |
name | VARCHAR(100) | NN | 供应商名称 |
contact_person | VARCHAR(50) | NN | 联系人 |
phone | VARCHAR(20) | NN | 联系电话 |
address | VARCHAR(200) | 地址 | |
VARCHAR(100) | 电子邮箱 | ||
status | TINYINT | NN, D=1 | 状态(0-禁用,1-启用) |
create_time | DATETIME | NN | 创建时间 |
库存记录表(inventory_log)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 记录ID |
product_id | BIGINT | FK, NN | 商品ID |
quantity | INT | NN | 变更数量(正数-入库,负数-出库) |
type | TINYINT | NN | 类型(1-采购入库,2-销售出库…) |
operator | VARCHAR(50) | NN | 操作人员 |
order_no | VARCHAR(50) | 关联单号 | |
remark | VARCHAR(200) | 备注 | |
create_time | DATETIME | NN | 创建时间 |
订单表(order)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 订单ID |
order_no | VARCHAR(50) | UNIQUE, NN | 订单编号 |
member_id | BIGINT | FK | 会员ID |
total_amount | DECIMAL(10,2) | NN | 订单总金额 |
discount_amount | DECIMAL(10,2) | NN, D=0 | 折扣金额 |
actual_amount | DECIMAL(10,2) | NN | 实付金额 |
payment_method | TINYINT | NN | 支付方式(1-现金,2-支付宝…) |
status | TINYINT | NN, D=0 | 状态(0-待支付,1-已完成…) |
cashier_id | BIGINT | FK, NN | 收银员ID |
remark | VARCHAR(200) | 备注 | |
create_time | DATETIME | NN | 创建时间 |
payment_time | DATETIME | 支付时间 |
订单明细表(order_item)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 明细ID |
order_id | BIGINT | FK, NN | 订单ID |
product_id | BIGINT | FK, NN | 商品ID |
product_name | VARCHAR(100) | NN | 商品名称(快照) |
price | DECIMAL(10,2) | NN | 单价(快照) |
quantity | INT | NN | 数量 |
subtotal | DECIMAL(10,2) | NN | 小计金额 |
会员表(member)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 会员ID |
name | VARCHAR(50) | NN | 会员姓名 |
gender | TINYINT | 性别(0-女,1-男) | |
phone | VARCHAR(20) | UNIQUE, NN | 手机号 |
birthday | DATE | 生日 | |
level | TINYINT | NN, D=0 | 等级(0-普通,1-银卡,2-金卡) |
total_points | INT | NN, D=0 | 累计积分 |
current_points | INT | NN, D=0 | 当前可用积分 |
status | TINYINT | NN, D=1 | 状态(0-禁用,1-启用) |
register_time | DATETIME | NN | 注册时间 |
last_visit_time | DATETIME | 最后访问时间 |
会员积分记录表(member_points_log)
字段名 | 类型 | 约束 | 描述 |
---|---|---|---|
id | BIGINT | PK, AI | 记录ID |
member_id | BIGINT | FK, NN | 会员ID |
change_points | INT | NN | 变更积分(正-增加,负-减少) |
type | TINYINT | NN | 类型(1-消费获得,2-兑换使用…) |
order_no | VARCHAR(50) | 关联订单号 | |
remark | VARCHAR(200) | 备注 | |
create_time | DATETIME | NN | 创建时间 |
资源命名: 使用复数名词表示资源集合
/api/products
/api/orders
HTTP方法:
状态码:
{
"code": 200,
"message": "success",
"data": {
// 实际数据
},
"timestamp": 1634567890123
}
Authorization: Bearer
┌─────────────────────────────────────────────────┐
│ 负载均衡(Nginx) │
└─────────────────────────────────────────────────┘
│
▼
┌─────────────────────────────────────────────────┐
│ API网关集群 │
└─────────────────────────────────────────────────┘
│
▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ 商品服务 │ │ 订单服务 │ │ 会员服务 │ │ 库存服务 │
└───────────┘ └───────────┘ └───────────┘ └───────────┘
│ │ │ │
▼ ▼ ▼ ▼
┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────┐
│ MySQL主库 │ │ MySQL从库 │ │ Redis集群 │ │ Elastic │
└───────────┘ └───────────┘ └───────────┘ └───────────┘