1. 项目背景与核心需求
动漫产业近年来呈现爆发式增长,根据行业报告显示,2023年全球动漫市场规模已突破3000亿美元。在这样的背景下,一个高效、易用的动漫商城管理系统显得尤为重要。传统动漫商城系统往往存在三个主要痛点:
- 前端交互体验差,页面加载缓慢
- 后台管理功能单一,扩展性不足
- 系统架构耦合度高,维护困难
我们设计的这套系统采用前后端分离架构,后端使用SpringBoot提供RESTful API服务,前端采用Vue.js+Layui的组合方案,数据库选用MySQL 8.0。这种技术选型主要基于以下考虑:
- SpringBoot的自动配置特性可以快速搭建稳定的后端服务
- Vue.js的响应式特性能够提供流畅的用户体验
- Layui的简洁UI组件库可以快速构建管理后台界面
- MySQL作为成熟的关系型数据库,在事务处理和复杂查询方面表现优异
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 系统架构设计
2.1 技术栈全景图
整个系统采用经典的三层架构设计:
code复制表示层:Vue 3 + Layui + ElementUI
业务层:SpringBoot 2.7 + MyBatis-Plus
数据层:MySQL 8.0 + Redis缓存
这种分层设计使得各层职责明确,便于团队协作和后期维护。特别值得一提的是,我们选择MyBatis-Plus而非JPA,主要考虑到:
- MyBatis-Plus的Wrapper条件构造器更适合复杂查询场景
- 对国内开发者更友好,文档和社区支持更完善
- 与SpringBoot的集成更加简单直接
2.2 数据库设计要点
数据库设计遵循第三范式,同时针对电商场景做了适当优化。以下是几个关键表的设计考量:
用户表(user)
sql复制CREATE TABLE `user` (
`user_id` bigint NOT NULL AUTO_INCREMENT COMMENT '用户ID',
`username` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '用户名',
`password_hash` varchar(64) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '密码哈希',
`email` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '邮箱',
`phone_number` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '手机号',
`avatar` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT '头像URL',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0-禁用,1-正常)',
`registration_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '注册时间',
`last_login_time` datetime DEFAULT NULL COMMENT '最后登录时间',
PRIMARY KEY (`user_id`),
UNIQUE KEY `idx_username` (`username`),
UNIQUE KEY `idx_email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='用户表';
商品表(product)
sql复制CREATE TABLE `product` (
`product_id` bigint NOT NULL AUTO_INCREMENT COMMENT '商品ID',
`product_name` varchar(100) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '商品名称',
`category_id` int NOT NULL COMMENT '分类ID',
`price` decimal(10,2) NOT NULL COMMENT '销售价格',
`original_price` decimal(10,2) DEFAULT NULL COMMENT '原价',
`stock` int NOT NULL DEFAULT '0' COMMENT '库存',
`sales` int NOT NULL DEFAULT '0' COMMENT '销量',
`cover_image` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT '封面图',
`detail_images` text COLLATE utf8mb4_unicode_ci COMMENT '详情图(JSON数组)',
`description` text COLLATE utf8mb4_unicode_ci COMMENT '商品描述',
`status` tinyint NOT NULL DEFAULT '1' COMMENT '状态(0-下架,1-上架)',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CUR
