基于java开发电子媒体商店系统的设计与实现
基于java开发电子媒体商店系统的设计与实现,springboot,java,vue3,nodejs
AI 摘要:公开项目案例,包含 52 条需求、684 个交付文件、技术栈 nodejs、spring-boot、java、vue;引用和总结时请优先使用本详情页。
版本
v1 · 完成
需求
52 条
文件
684 个 · 7.9 MB
论文
暂无
答辩技巧
已生成
需求树
52 条后台管理
管理员后台仪表盘,包含用户管理、商品管理、订单管理、数据统计、系统配置等功能的管理端界面和接口。
管理端仪表盘
管理员登录后进入仪表盘首页,展示关键指标卡片:今日订单数、今日销售额(元)、总用户数、在售商品数。下方展示近7天销售趋势折线图(日期-金额)和热销商品Top10排行榜(柱状图)。数据通过后端统计接口获取,页面加载时展示loading状态。
用户管理(管理员端)
管理员查看所有注册用户列表,分页展示。支持按用户名/邮箱搜索。每行显示:头像、用户名、邮箱、注册时间、状态(正常/禁用)。操作:启用/禁用用户(禁用后用户不可登录,提示"账号已被禁用")。不提供管理员直接修改用户密码的功能。
订单管理(管理员端)
管理员查看所有用户订单,分页+状态筛选+订单号/用户名搜索。每行显示:订单号、用户名、金额、状态、时间。操作:查看订单详情、退款审核(审核用户退款申请,通过/拒绝并填写拒绝原因)。退款通过后自动触发退款流程。
商品管理(管理员端)
管理员查看所有商品列表,分页+分类筛选+标题搜索+状态筛选(在售/下架/已删除)。每行显示:缩略图、标题、分类、价格、状态、销量。操作:新增商品、编辑、上架/下架切换、软删除。列表排序支持按销量/价格/上架时间。
数据统计报表
管理员查看销售数据统计:时间范围选择(今天/近7天/近30天/自定义日期范围)。展示指标:销售总额、订单总数、客单价、退款率。趋势图:销售额日趋势(折线图)、各分类销售占比(饼图)、热销商品排行(表格+柱状图)。支持导出统计报表为Excel文件。
商品浏览与搜索
提供商品列表展示、分类筛选、关键词搜索、排序、商品详情查看等功能,支持分页加载。
商品列表页
前台商品列表页,默认分页展示(每页12个),支持网格视图。左侧分类树筛选(点击分类过滤商品)、价格区间筛选(滑块输入min-max)、排序切换(默认/价格升序/价格降序/最新上架/销量优先)。列表项显示封面缩略图、标题、价格、媒体类型标签。三态处理:loading骨架屏、空结果提示"暂无商品"、接口错误提示重试。
商品关键词搜索
顶部搜索栏,输入关键词(2-50字符),后端对商品标题和描述做LIKE模糊匹配。搜索结果页复用商品列表组件,关键词高亮显示。搜索历史记录(本地存储,最近10条)。无结果时展示"未找到相关商品,试试其他关键词"并推荐热门商品。
商品详情页
展示完整商品信息:封面大图、标题、价格、媒体类型、分类、上架时间、商品描述(富文本渲染)、文件大小和格式说明。操作区:加入购物车按钮、立即购买按钮、收藏按钮(已登录可见)。商品评分和评论数展示。底部展示同类推荐商品(最多6个)。
购物车
管理用户购物车,支持添加商品、修改数量、删除商品项、全选/取消全选、结算跳转等操作。
添加商品到购物车
用户从商品列表或详情页点击"加入购物车",若商品未在购物车中则新增一条(数量默认1),若已存在则数量+1。弹窗toast提示"已加入购物车",右上角购物车图标显示数量角标。未登录用户点击加入购物车时跳转登录页。
修改购物车商品数量
购物车列表每项有数量增减按钮(最少1,最多99)。手动输入数量时做边界校验。数量变更后实时更新小计金额和总计金额。后端接口接收变更并返回最新购物车数据。
删除购物车商品项
购物车每项有删除按钮,点击弹出确认对话框"确定要从购物车中移除该商品吗?",确认后删除该项。支持批量删除(勾选多项后点击批量删除)。删除后实时刷新购物车列表和总计金额。
购物车全选与结算
购物车顶部全选复选框(勾选全部/取消全部),每项前有独立复选框。底部固定栏显示已选商品总数和合计金额(实时更新)。"去结算"按钮:未选商品时置灰不可点击;点击后携带选中商品跳转订单确认页。
订单管理
管理订单的创建、状态流转(待支付/已支付/已发货/已完成/已取消/退款中/已退款)、订单查询、订单详情和订单操作。
创建订单
从购物车结算或立即购买进入订单确认页。展示收货信息(电子媒体无物流,此处为账单信息:邮箱必填,用于发送下载链接)、商品清单、金额明细(商品总价,电子媒体无运费)。点击"提交订单"后端生成订单(状态:待支付),并锁定商品当前价格快照到订单明细中。
订单列表查询
用户端订单列表,分页展示(每页10条)。支持按订单状态筛选:全部/待支付/已支付/已完成/已取消/退款中/已退款。列表显示订单号、下单时间、商品缩略图、总金额、订单状态标签(颜色区分)。三态处理:loading骨架屏、空列表提示"暂无订单"、接口错误提示重试。
订单详情页
订单详情展示:订单号、创建时间、支付时间、订单状态(状态流转时间线可视化)、商品清单(封面/标题/单价)、金额汇总、账单邮箱。根据订单状态展示对应操作按钮:待支付→去支付、已支付→查看下载、已完成→再次购买、可申请退款状态→申请退款。
取消订单
用户在订单详情页对"待支付"状态订单点击"取消订单",弹出确认对话框,确认后订单状态变更为"已取消"。已取消订单不可恢复为其他状态。取消后若有优惠券则退回。
申请退款
用户在订单详情页对"已支付"状态的订单点击"申请退款",弹出表单:退款原因(下拉选择:不想要了/商品与描述不符/其他,选"其他"时需填写详细说明,限制200字符)。提交后订单状态变更为"退款中",等待管理员审核。管理员审核通过后状态变为"已退款",金额原路退回。
支付管理
集成第三方支付(模拟),处理支付请求、支付回调、支付状态同步、退款处理和支付记录管理。
支付发起
订单确认后进入支付页,展示订单摘要和应付金额。支付方式选择:模拟支付宝/模拟微信支付(均为模拟支付,不接入真实第三方)。点击"确认支付"调用后端模拟支付接口,生成支付记录(状态:处理中),3秒后模拟支付成功回调。支付页有倒计时(15分钟),超时自动取消订单。
支付回调处理
后端接收模拟支付回调:验证签名后更新支付记录状态为"成功",订单状态从"待支付"变更为"已支付"。支付成功后用户自动获得商品访问权限(加入"我的媒体库"),同时发送邮件通知(含下载链接)。回调接口做幂等处理,防止重复回调导致重复处理。
退款处理
管理员审核通过退款申请后,后端调用模拟退款接口:生成退款记录,更新支付记录状态为"已退款",订单状态变更为"已退款"。退款金额等于订单实付金额。退款完成后用户失去该商品下载权限(从"我的媒体库"移除对应商品)。
支付记录查询
用户可在个人中心查看自己的支付记录列表:交易流水号、订单号、金额、支付方式、支付状态、时间。分页展示(每页10条)。管理员可在后台查看所有用户的支付记录,支持按用户、订单号、支付状态筛选。
商品管理
管理电子媒体商品(电子书、音乐、视频、软件等)的创建、编辑、上下架、库存(许可数量)、分类、定价和文件存储。
商品创建
管理员在后台创建电子媒体商品。表单字段:标题(必填,1-100字符)、描述(必填,富文本)、分类(下拉选择)、媒体类型(电子书/音乐/视频/软件,必选)、价格(正整数,单位分)、封面图(图片上传,支持jpg/png/webp,限制2MB)、媒体文件上传(支持对应格式,限制500MB)。后端校验后写入数据库。
商品编辑
管理员编辑已有商品信息,编辑表单预填当前值。可修改标题、描述、分类、媒体类型、价格、封面图。修改媒体类型时需提示可能影响已有订单的下载。保存后实时生效,已购用户看到更新后信息。
商品上下架
管理员在商品列表中对单个商品执行上架/下架操作(开关切换)。下架商品在前台不可见、不可搜索、不可购买,但已购用户仍可在"我的媒体库"中访问和下载。支持批量上下架。
商品软删除
管理员删除商品时执行软删除(标记is_deleted=true),不物理删除数据库记录和文件。已购用户仍可访问已购资源。软删除商品在前台不可见,管理员可在回收站中恢复或彻底删除(30天后自动清理)。
商品分类管理
管理员维护商品分类树(两级:父分类→子分类)。操作:新增分类(名称、排序号)、编辑分类、删除分类(如分类下有商品则禁止删除并提示)。前台按分类树展示导航和筛选。
商品媒体文件管理
管理员上传/替换/下载商品的电子媒体文件。支持格式:电子书(pdf/epub/mobi)、音乐(mp3/flac/wav)、视频(mp4/mkv)、软件(zip/exe/dmg)。单文件限制500MB。上传后计算文件MD5用于完整性校验。替换文件不影响已购用户的下载(版本管理)。
用户个人中心
用户个人信息查看与编辑、订单历史、已购媒体库(我的媒体库)、下载记录、收藏夹管理。
个人信息查看与编辑
个人中心首页展示用户基本信息:头像(点击上传,裁剪为200x200,限制2MB)、昵称(1-20字符)、邮箱(只读)、注册时间。编辑模式可修改昵称和头像,保存后即时刷新页面头部用户信息。三态:loading骨架屏、保存失败toast提示、保存成功toast提示。
我的媒体库
展示用户已购电子媒体商品列表,分页展示。每项显示封面、标题、购买时间、下载按钮。点击下载按钮触发文件下载(后端校验购买权限,生成带时效的下载链接,有效期1小时)。支持按媒体类型筛选(电子书/音乐/视频/软件)。
收藏夹管理
商品详情页点击收藏按钮(心形图标)添加收藏,再次点击取消收藏。收藏列表页分页展示已收藏商品(封面/标题/价格),支持从收藏夹直接加入购物车或取消收藏。未登录点击收藏跳转登录页。三态处理:loading/空状态"还没有收藏商品,去逛逛吧"/错误重试。
系统基础设施与技术约束
定义技术栈、项目架构、数据库、中间件、部署方式、安全策略、日志、异常处理等系统级技术约束和非功能性需求。
技术栈约定
后端:Java 21 + Spring Boot 3.x + Spring Security + MyBatis-Plus + MySQL 8.x + Redis。前端:Vue 3 + Vue Router + Pinia(状态管理)+ Axios + Element Plus(UI组件库)。构建工具:Maven(后端)、Vite(前端)。文件存储:本地文件系统(开发环境),预留OSS接口扩展。邮件发送:Spring Mail(开发环境用MailDev模拟)。
项目结构与分层架构
后端分层:controller(接口层)→ service(业务层)→ mapper(数据访问层)。统一使用DTO(数据传输对象)接收请求、VO(视图对象)返回响应。前端目录:views(页面)、components(公共组件)、stores(Pinia状态)、api(Axios封装)、router(路由配置)、utils(工具函数)。前后端分离部署,开发环境前端Vite代理到后端8080端口。
API设计规范
所有API遵循RESTful风格,路径前缀 /api/v1/。统一响应体结构:{ code: Integer, message: String, data: Object }。成功 code=200,客户端错误 code=4xx(400参数错误、401未认证、403无权限、404不存在),服务端错误 code=5xx。分页响应额外包含:{ total, page, pageSize, pages }。所有请求头携带 Authorization: Bearer {token}。后端使用 @Validated 做入参校验,返回统一错误信息。
数据库设计规范
MySQL 8.x,字符集 utf8mb4。核心表:users(用户)、categories(分类)、products(商品)、product_files(媒体文件)、carts(购物车)、orders(订单)、order_items(订单明细)、payments(支付记录)、refunds(退款记录)、favorites(收藏)、download_logs(下载记录)。所有表含created_at/updated_at时间戳字段,软删除表含is_deleted和deleted_at字段。金额字段使用BIGINT存储分为单位,避免浮点精度问题。
性能要求
商品列表接口响应时间P95 < 500ms(100并发下)。商品详情接口P95 < 300ms。文件下载速度不低于1MB/s(局域网环境)。首页首屏加载时间(LCP)< 2秒。列表页均做分页,单页不超过20条。图片使用本地缓存策略。Redis缓存热门商品列表和分类树(TTL 10分钟),减少数据库查询。
日志与异常处理
后端使用SLF4J + Logback,按级别输出到文件和控制台。全局异常处理器(@RestControllerAdvice)统一捕获并返回标准错误响应。关键操作记录操作日志(用户登录/登出、下单、支付、退款),含操作人、时间、IP、操作内容。异常日志包含完整堆栈信息。
安全策略
密码使用BCrypt加密存储(强度10轮)。JWT使用安全签名算法,密钥通过环境变量注入。前端所有用户输入做XSS过滤(Vue默认转义)。后端SQL使用MyBatis参数绑定防止注入。文件上传校验MIME类型白名单和文件魔数(Magic Number),防止文件伪装攻击。下载链接使用临时签名URL(有效期1小时),防止盗链。敏感接口(支付/退款)加CSRF Token校验。
用户认证与权限管理
管理用户注册、登录、登出、密码修改、角色权限(普通用户/管理员)。支撑整个系统的身份认证和访问控制。
用户注册
注册表单包含:用户名(3-20字符、字母数字下划线)、邮箱(标准格式校验)、密码(8-32字符、含大小写字母和数字)、确认密码。前端即时校验+后端接口校验,邮箱和用户名唯一性验证。注册成功自动登录并跳转首页,失败返回具体错误提示。
用户登录
登录表单支持用户名或邮箱+密码登录。后端验证后返回JWT access token(有效期2小时)和refresh token(有效期7天)。前端存储token,支持"记住我"延长登录态。登录失败3次后触发验证码(图形验证码),防止暴力破解。
密码修改
已登录用户在个人设置中修改密码:需输入旧密码验证、新密码(8-32字符、含大小写字母和数字)、确认新密码。后端校验旧密码正确性,修改成功后强制所有设备重新登录。
密码重置
登录页"忘记密码"入口:输入注册邮箱,后端生成一次性重置token(有效期30分钟),通过邮件发送重置链接。用户点击链接进入重置页面设置新密码。token使用后立即失效,防止重复使用。
用户登出
前端清除本地存储的token,后端将当前token加入黑名单(Redis缓存,有效期至token原过期时间)。登出后跳转到登录页,阻止通过浏览器后退访问已登出页面。
角色权限控制
系统内置两种角色:普通用户(ROLE_USER)和管理员(ROLE_ADMIN)。前端Vue Router根据角色动态加载路由,未授权页面显示403。后端Spring Security基于注解(@PreAuthorize)对各API接口做角色校验,JWT中包含角色信息。