当前位置: 首页 > news >正文

电商设计文档

电商后台管理系统架构设计与数据库表设计
系统架构设计
1. 整体架构图
┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   前端展示层     │    │    网关层        │    │    应用层       │
│                 │    │                  │    │                 │
│ Vue2 + Element │◄──►│   Nginx反向代理  │◄──►│   Node.js API   │
│     UI         │    │   负载均衡       │    │    Express      │
└─────────────────┘    └──────────────────┘    └─────────────────┘


┌─────────────────┐    ┌──────────────────┐    ┌─────────────────┐
│   数据存储层     │    │    缓存层        │    │    搜索层       │
│                 │    │                  │    │                 │
│    MySQL       │◄──►│     Redis        │◄──►│  Elasticsearch  │
│  主从复制       │    │   集群缓存       │    │  商品搜索       │
└─────────────────┘    └──────────────────┘    └─────────────────┘


2. 技术栈说明
前端技术栈:

Vue 2.6 + Vue Router + Vuex

Element UI 2.x

Axios + 拦截器

ECharts 数据可视化

后端技术栈:

Node.js + Express

JWT 身份认证

Sequelize ORM

Redis 缓存 + Session存储

Elasticsearch 商品搜索

Joi 参数验证

数据库:

MySQL 8.4 (主从复制)

Redis 7.2.4

ELK 8 冷热数据架构

==========================================
数据库表设计
1. 用户权限相关表
用户表 (users)
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(50) NOT NULL COMMENT '用户名',
`password` varchar(255) NOT NULL COMMENT '密码',
`name` varchar(50) NOT NULL COMMENT '姓名',
`email` varchar(100) NOT NULL COMMENT '邮箱',
`phone` varchar(20) DEFAULT NULL COMMENT '手机号',
`avatar` varchar(255) DEFAULT NULL COMMENT '头像',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`last_login` datetime DEFAULT NULL COMMENT '最后登录时间',
`department_id` int(11) DEFAULT NULL COMMENT '部门ID',
`role_id` int(11) NOT NULL COMMENT '角色ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_username` (`username`),
UNIQUE KEY `uk_email` (`email`),
KEY `idx_department` (`department_id`),
KEY `idx_role` (`role_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='用户表';


部门表 (departments)
CREATE TABLE `departments` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '部门名称',
`code` varchar(50) NOT NULL COMMENT '部门编码',
`parent_id` int(11) DEFAULT '0' COMMENT '父部门ID',
`leader_id` int(11) DEFAULT NULL COMMENT '部门负责人ID',
`sort` int(11) DEFAULT '0' COMMENT '排序',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent` (`parent_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门表';

角色表 (roles)
CREATE TABLE `roles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '角色名称',
`code` varchar(50) NOT NULL COMMENT '角色编码',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`data_scope` tinyint(1) DEFAULT '1' COMMENT '数据权限范围:1-全部,2-本部门,3-本部门及子部门,4-仅自己',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色表';

权限表 (permissions)
CREATE TABLE `permissions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '权限名称',
`code` varchar(100) NOT NULL COMMENT '权限编码',
`type` tinyint(1) NOT NULL COMMENT '权限类型:1-菜单,2-按钮,3-接口',
`parent_id` int(11) DEFAULT '0' COMMENT '父权限ID',
`path` varchar(200) DEFAULT NULL COMMENT '路由路径',
`component` varchar(200) DEFAULT NULL COMMENT '组件路径',
`icon` varchar(100) DEFAULT NULL COMMENT '图标',
`sort` int(11) DEFAULT '0' COMMENT '排序',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`description` varchar(500) DEFAULT NULL COMMENT '描述',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent` (`parent_id`),
KEY `idx_type` (`type`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='权限表';


角色权限关联表 (role_permissions)
CREATE TABLE `role_permissions` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`role_id` int(11) NOT NULL COMMENT '角色ID',
`permission_id` int(11) NOT NULL COMMENT '权限ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_role_permission` (`role_id`,`permission_id`),
KEY `idx_permission` (`permission_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='角色权限关联表';


2. 商品相关表
商品分类表 (categories)
CREATE TABLE `categories` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '分类名称',
`code` varchar(50) NOT NULL COMMENT '分类编码',
`parent_id` int(11) DEFAULT '0' COMMENT '父分类ID',
`level` tinyint(1) DEFAULT '1' COMMENT '分类层级',
`image` varchar(255) DEFAULT NULL COMMENT '分类图片',
`sort` int(11) DEFAULT '0' COMMENT '排序',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`description` text COMMENT '描述',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_code` (`code`),
KEY `idx_parent` (`parent_id`),
KEY `idx_level` (`level`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品分类表';


品牌表 (brands)
CREATE TABLE `brands` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL COMMENT '品牌名称',
`logo` varchar(255) DEFAULT NULL COMMENT '品牌Logo',
`description` text COMMENT '品牌描述',
`first_letter` char(1) DEFAULT NULL COMMENT '品牌首字母',
`sort` int(11) DEFAULT '0' COMMENT '排序',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_first_letter` (`first_letter`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='品牌表';

商品表 (products)
CREATE TABLE `products` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(200) NOT NULL COMMENT '商品名称',
`sub_title` varchar(500) DEFAULT NULL COMMENT '商品副标题',
`product_sn` varchar(100) NOT NULL COMMENT '商品编号',
`category_id` int(11) NOT NULL COMMENT '分类ID',
`brand_id` int(11) DEFAULT NULL COMMENT '品牌ID',
`main_image` varchar(255) DEFAULT NULL COMMENT '主图',
`gallery` json DEFAULT NULL COMMENT '商品相册',
`price` decimal(10,2) NOT NULL COMMENT '价格',
`original_price` decimal(10,2) DEFAULT NULL COMMENT '原价',
`stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存',
`unit` varchar(20) DEFAULT NULL COMMENT '单位',
`weight` decimal(8,2) DEFAULT NULL COMMENT '重量',
`keywords` varchar(200) DEFAULT NULL COMMENT '关键词',
`description` text COMMENT '商品描述',
`detail` text COMMENT '商品详情',
`specifications` json DEFAULT NULL COMMENT '规格参数',
`sales` int(11) DEFAULT '0' COMMENT '销量',
`reviews` int(11) DEFAULT '0' COMMENT '评价数',
`rating` decimal(3,2) DEFAULT '0.00' COMMENT '评分',
`sort` int(11) DEFAULT '0' COMMENT '排序',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-下架,1-上架,2-审核中',
`is_hot` tinyint(1) DEFAULT '0' COMMENT '是否热销',
`is_new` tinyint(1) DEFAULT '0' COMMENT '是否新品',
`is_recommend` tinyint(1) DEFAULT '0' COMMENT '是否推荐',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_product_sn` (`product_sn`),
KEY `idx_category` (`category_id`),
KEY `idx_brand` (`brand_id`),
KEY `idx_status` (`status`),
KEY `idx_hot` (`is_hot`),
KEY `idx_new` (`is_new`),
KEY `idx_recommend` (`is_recommend`),
KEY `idx_sales` (`sales`),
FULLTEXT KEY `ft_name_desc` (`name`,`sub_title`,`keywords`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品表';


商品SKU表 (product_skus)
CREATE TABLE `product_skus` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_id` int(11) NOT NULL COMMENT '商品ID',
`sku_code` varchar(100) NOT NULL COMMENT 'SKU编码',
`specifications` json NOT NULL COMMENT '规格属性',
`price` decimal(10,2) NOT NULL COMMENT '价格',
`original_price` decimal(10,2) DEFAULT NULL COMMENT '原价',
`stock` int(11) NOT NULL DEFAULT '0' COMMENT '库存',
`low_stock` int(11) DEFAULT '0' COMMENT '预警库存',
`image` varchar(255) DEFAULT NULL COMMENT 'SKU图片',
`sales` int(11) DEFAULT '0' COMMENT '销量',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-禁用,1-启用',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_sku_code` (`sku_code`),
KEY `idx_product` (`product_id`),
KEY `idx_status` (`status`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='商品SKU表';


订单相关表
订单表 (orders)
CREATE TABLE `orders` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_sn` varchar(100) NOT NULL COMMENT '订单号',
`user_id` int(11) NOT NULL COMMENT '用户ID',
`total_amount` decimal(10,2) NOT NULL COMMENT '订单总金额',
`discount_amount` decimal(10,2) DEFAULT '0.00' COMMENT '优惠金额',
`shipping_amount` decimal(10,2) DEFAULT '0.00' COMMENT '运费',
`pay_amount` decimal(10,2) NOT NULL COMMENT '应付金额',
`payment_method` tinyint(1) DEFAULT NULL COMMENT '支付方式:1-支付宝,2-微信,3-银行卡',
`payment_time` datetime DEFAULT NULL COMMENT '支付时间',
`status` tinyint(1) NOT NULL COMMENT '订单状态:0-待付款,1-待发货,2-已发货,3-已完成,4-已取消,5-退款中,6-已退款',
`shipping_name` varchar(100) DEFAULT NULL COMMENT '收货人姓名',
`shipping_phone` varchar(20) DEFAULT NULL COMMENT '收货人电话',
`shipping_address` varchar(500) DEFAULT NULL COMMENT '收货地址',
`remark` varchar(500) DEFAULT NULL COMMENT '订单备注',
`confirmed` tinyint(1) DEFAULT '0' COMMENT '用户确认收货',
`confirm_time` datetime DEFAULT NULL COMMENT '确认收货时间',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
`updated_at` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_sn` (`order_sn`),
KEY `idx_user` (`user_id`),
KEY `idx_status` (`status`),
KEY `idx_payment_time` (`payment_time`),
KEY `idx_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单表';


订单商品表 (order_items)
CREATE TABLE `order_items` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`order_id` int(11) NOT NULL COMMENT '订单ID',
`product_id` int(11) NOT NULL COMMENT '商品ID',
`product_sku_id` int(11) NOT NULL COMMENT '商品SKU ID',
`product_name` varchar(200) NOT NULL COMMENT '商品名称',
`product_image` varchar(255) DEFAULT NULL COMMENT '商品图片',
`specifications` json DEFAULT NULL COMMENT '规格属性',
`price` decimal(10,2) NOT NULL COMMENT '价格',
`quantity` int(11) NOT NULL COMMENT '数量',
`total_amount` decimal(10,2) NOT NULL COMMENT '总金额',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_order` (`order_id`),
KEY `idx_product` (`product_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='订单商品表';


系统相关表
操作日志表 (operation_logs)
CREATE TABLE `operation_logs` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`user_id` int(11) NOT NULL COMMENT '用户ID',
`username` varchar(50) NOT NULL COMMENT '用户名',
`operation` varchar(100) NOT NULL COMMENT '操作内容',
`method` varchar(10) NOT NULL COMMENT '请求方法',
`url` varchar(500) NOT NULL COMMENT '请求URL',
`params` text COMMENT '请求参数',
`ip` varchar(50) DEFAULT NULL COMMENT 'IP地址',
`user_agent` varchar(500) DEFAULT NULL COMMENT '用户代理',
`execution_time` int(11) DEFAULT NULL COMMENT '执行时间(ms)',
`status` tinyint(1) DEFAULT '1' COMMENT '状态:0-失败,1-成功',
`error_message` text COMMENT '错误信息',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_user` (`user_id`),
KEY `idx_operation` (`operation`),
KEY `idx_created` (`created_at`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='操作日志表';

文件表 (files)
CREATE TABLE `files` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`original_name` varchar(255) NOT NULL COMMENT '原始文件名',
`filename` varchar(255) NOT NULL COMMENT '存储文件名',
`path` varchar(500) NOT NULL COMMENT '文件路径',
`size` int(11) NOT NULL COMMENT '文件大小',
`mime_type` varchar(100) NOT NULL COMMENT '文件类型',
`bucket` varchar(100) DEFAULT NULL COMMENT '存储桶',
`uploader_id` int(11) NOT NULL COMMENT '上传者ID',
`created_at` datetime DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
KEY `idx_uploader` (`uploader_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='文件表';


===============================================================
系统配置
Redis键设计
// 用户相关
USER_TOKEN: 'user:token:{userId}', // 用户token
USER_PERMISSIONS: 'user:permissions:{userId}', // 用户权限缓存
USER_INFO: 'user:info:{userId}', // 用户信息缓存

// 商品相关
PRODUCT_DETAIL: 'product:detail:{productId}', // 商品详情缓存
PRODUCT_CATEGORIES: 'product:categories', // 商品分类缓存
HOT_PRODUCTS: 'product:hot', // 热销商品缓存

// 订单相关
ORDER_DETAIL: 'order:detail:{orderId}', // 订单详情缓存
CART: 'cart:{userId}', // 购物车数据

// 系统配置
SYSTEM_CONFIG: 'system:config', // 系统配置缓存
VERIFICATION_CODE: 'verification:code:{phone}', // 验证码


接口设计规范
// 统一响应格式
{
code: 200,        // 状态码
message: '成功',   // 消息
data: {},         // 数据
timestamp: 1630000000000 // 时间戳
}

// 分页响应格式
{
code: 200,
message: '成功',
data: {
records: [],    // 数据列表
total: 100,     // 总记录数
page: 1,        // 当前页
size: 10        // 每页大小
}
}

//todo  。。。。。。。。。。。。。。。。


http://www.dtcms.com/a/577810.html

相关文章:

  • 金丝桃属植物中呫吨酮的生物合成提供苯甲酰辅酶 A--文献精读173
  • Linux一些基本命令--黑马学习
  • 【C++:AVL树】深入理解AVL树的平衡之道:从原理、旋转到完整实现代码
  • 【HOT100|1 LeetCode 1. 两数之和】
  • 中专服装设计专业职业发展指南
  • RHCE练习
  • 旅行社网站建设规划书论文网站开发需要多钱
  • 云南抖音推广南昌快速优化排名
  • 【GESP2509四级】排兵布阵
  • 矩阵的运算
  • linux TCP
  • 专业做网站报价安徽网站建设系统
  • 网站建设对产品推销作用大吗wordpress主题购物
  • 基于SpringMVC的在线文档管理系统3yy4cg58(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。
  • Qt中使用系统级全局热键
  • 零基础新手小白快速了解掌握服务集群与自动化运维(十八)监控模块--Zabbix监控--Rocky9基于MySQL安装Zabbix7
  • pc微信ccd 3.55算法。
  • DeepSpeed 分布式训练
  • 昭和仙君(五十七)标签票据模板渲染技术——东方仙盟筑基期
  • QScrollArea技术详解:构建流畅滚动体验
  • 基础数据结构之链表的反转链表:反转整个链表(leecode 206题 简单题)
  • 广东省网站集约化建设方案建设网站需要哪个软件
  • 网站开发技术视频教程wordpress添加菜单分类目录是灰的
  • 一种双重形式化表征方法:为人工智能与人类智慧的协同进化提供了全新的方法论基础
  • ETCD 权限配置
  • 数据结构(c++版):深入理解哈希表
  • HIKVISION前端一面面经整理
  • Rocky9基于MySQL安装Zabbix7
  • 安庆网站制作1688阿里巴巴国际站首页
  • 阿里云微服务引擎 MSE 及 API 网关 2025 年 10 月产品动态