Skip to content

mall 电商系统 - 开发上下文

本文档供 AI 开发者快速了解项目状态,每次迭代后需同步更新。新会话开始任务前请先阅读此文件。


1. 当前开发阶段

阶段状态说明
Phase 1-1 后台权限系统✅ 已完成登录/验证码/管理员/角色/菜单/资源/仪表盘
Phase 1-2 后台商品管理✅ 已完成分类/品牌/属性/单规格商品/运费模板
Phase 1-3 后台订单管理✅ 已完成订单列表/详情/发货/退货审核/操作日志
Phase 1-4 前台用户系统✅ 已完成注册/登录/个人信息/收货地址
Phase 1-5 前台购物✅ 已完成首页/搜索/详情/购物车/下单/支付/售后
前端重构✅ 已完成后台管理全站 shadcn/ui 风格重写
Phase 2-1 多规格商品✅ 已完成SPU/SKU 模型、规格选择器、SKU 价格/库存联动
Phase 2-2 促销活动✅ 已完成秒杀活动、优惠券、满减促销(后端+前端)
Phase 2-3 内容管理✅ 已完成专题管理、优选专区、话题管理(后端CRUD+前端页面)
Phase 2-4 会员体系✅ 已完成后台会员管理、会员等级、积分/成长值、自动升降级
Phase 2-5 前台增强✅ 已完成商品评论(后端+前端)、收藏/浏览历史、会员中心增强

2. 项目概况

  • 项目名:mall 电商系统
  • 定位:B2C 电商平台(单商户模式)
  • 代码路径D:\workspace\PM\Project\mall\

技术栈

技术
后端Spring Boot 3.5.14 + JDK 17 + MyBatis + Spring Security (JWT)
前端(后台)Vue 3 + TypeScript + Element Plus + Pinia + Vite 7 + TailwindCSS
数据库MySQL 8.0 (root/123456, 库名 mall)
缓存Redis (localhost:6379)
其他PageHelper 分页, Druid 连接池, Hutool, SpringDoc OpenAPI

模块结构

mall (父 POM)
├── mall-common      → 工具类及通用代码
├── mall-mbg         → MyBatis Generator DAO 代码(73张表)
├── mall-security    → Spring Security 封装(JWT + 动态权限)
├── mall-admin       → 后台管理系统 API (端口 8080) ✅ 主要开发
├── mall-admin-web   → 后台管理前端 (端口 5173) ✅ shadcn/ui 风格
├── mall-portal      → 前台商城系统 API (端口 8085)
└── mall-search      → Elasticsearch 搜索(待配置 ES 服务)

依赖顺序

mall-commonmall-mbgmall-securitymall-admin / mall-portal / mall-search


3. 需求文档索引

文档路径内容
PRD 索引docs/prd/index.md19 份模块 PRD 入口文档
API 接口规范docs/prd/mall_api_spec.md统一接口规范
数据字典docs/prd/mall_data_dictionary.md73 张表的字段级业务含义

4. 开发规范

通用规则

  1. 数据库:使用 docs/sql/mall.sql,不新增表
  2. 验收条件:每个模块末尾有 AC-xxx 格式验收标准
  3. 权限:新增 API 需注册到资源管理,新增页面需注册到菜单管理
  4. 日志:所有订单操作必须写 oms_order_operate_history

后端约定

  • Controller 路径
    • mall-admin 统一使用 /api/ 前缀,如 @RequestMapping("/api/order")
    • mall-portal 会员接口使用 /member/,地址使用 /api/member/address/
  • 分页:使用 PageHelper.startPage(pageNum, pageSize),Example 类无 setLimit
  • 参数格式:统一使用 @RequestBody JSON Body(不用 @RequestParam)
  • 安全白名单:在 application.ymlsecure.ignored.urls 中配置
  • 操作日志:发货日志格式 "发货:{物流公司},运单号:{运单号}"
  • 获取当前用户
    • 后台管理员:SecurityContextHolder.getContext().getAuthentication().getName()
    • 前台会员:memberService.getCurrentMember()

前端约定

  • 页面风格:全站 shadcn/ui 风格,使用 PageCard 组件
  • 列表页模式:筛选搜索 → 数据列表,分页在 PageCard 内部
  • 表格el-table 不加 border,操作按钮用 type="primary" link
  • 通用组件PageCardPageHeaderProductCard(前台商品卡片)、useTableList<T, Q> composable
  • API 文件src/apis/*.ts,路径带 /api/ 前缀
  • 类型定义src/types/*.ts
  • Vite 代理
    • /apihttp://localhost:8080(后台管理)
    • /papihttp://localhost:8085(前台商城,rewrite 去掉 /papi 前缀)
    • /memberhttp://localhost:8085(会员接口)
  • Element Plus
    • 对话框用 v-model(不是 v-model:visible
    • el-radio 使用 :value 而非 :label

5. 已完成模块关键改动

Phase 1-1 后台权限系统

  • JWT Token 认证(7天有效期)
  • 图形验证码(Hutool LineCaptcha + Redis,5分钟过期)
  • 账号锁定(连续5次失败锁定30分钟)
  • RBAC 权限模型 + 动态权限控制
  • 所有 Controller 路径统一为 /api/ 前缀

Phase 1-2 后台商品管理

  • 商品分类树(三级限制 level 0/1/2)
  • 品牌管理(删除保护:有商品关联时拒绝)
  • 属性/属性值管理
  • 单规格商品 CRUD
  • 运费模板 CRUD
  • 分类删除保护:有子分类或有商品关联时拒绝

Phase 1-3 后台订单管理

  • 订单列表:日期范围搜索(createTimeStart/createTimeEnd)
  • 订单列表:商品信息列(图片+数量,SQL 子查询扩展字段)
  • 发货操作:日志记录物流公司+运单号+当前管理员用户名
  • 退货申请:审核流程(待处理→退货中→已完成/已拒绝)
  • Bug 修复:deliverySn 错误使用 orderSn、v-model:visible → v-model
  • 物流公司:8家预置(顺丰速运/圆通速递/中通快递/韵达快递/申通快递/邮政EMS/京东快递/极兔速递)

Phase 1-4 前台用户系统

  • 注册:POST /member/register,JSON Body,自动设置昵称=用户名、积分=0
  • 登录:POST /member/login,支持用户名或手机号
  • 用户信息:GET /member/info、POST /member/update(昵称/头像)
  • 收货地址:/member/address/(list/create/update/delete)
  • 地址上限:每用户最多 10 个
  • 默认地址:设置时自动取消其他默认,删除时自动选取最近创建的为默认
  • 字段映射:请求 phone → 模型 phoneNumber
  • 安全白名单:/member/register/member/login/member/getAuthCode 无需登录

Phase 1-5 前台购物

  • 后端 5 个 Controller 路径统一加 /api/ 前缀
  • 新增端点:listByCategory(按分类获取商品)、check(购物车选中切换)、returnApply/list(售后列表)
  • OmsCartItem 增加 selected 字段(内存级选中状态,ConcurrentHashMap 存储)
  • 安全白名单更新:/home/**/api/home/**/product/**/api/product/**
  • 地址 Controller 路径:/api/member/address/member/address(与会员接口统一)
  • 前端新增 Portal 模块:PortalLayout + 10 个页面(首页/分类/搜索/详情/购物车/确认订单/支付/订单列表/订单详情/售后)
  • 前台代理方案:/papi/ rewrite 到 portal 后端,解决 admin/portal 路径冲突
  • 会员 token 独立存储:portalHttp.ts 使用 localStorage('portal_token')
  • 模拟支付:直接调用 /api/order/paySuccess

Phase 2-1 多规格商品

  • SPU/SKU 模型:pms_product + pms_sku_stock 表关联
  • 后台商品编辑:支持多规格属性配置、SKU 价格/库存/图片批量设置
  • 前台商品详情:SKU 规格选择器(属性名匹配、可选值集合、库存联动)
  • 价格区间展示:未完全选择时显示最低价~最高价
  • 购物车多规格兼容:productSkuId 关联 SKU 记录

Phase 2-2 促销活动

  • 秒杀:sms_flash_promotion + sms_flash_promotion_session + sms_flash_promotion_product_relation,后台场次/商品管理,前台秒杀专区
  • 优惠券:sms_coupon + sms_coupon_history,后台 CRUD + 领取/使用流程,前台结算页优惠券选择
  • 满减:pms_full_reduction,商品关联满减促销

Phase 2-3 内容管理

  • 专题管理:cms_subject CRUD(后台+前端页面)
  • 优选专区:cms_preference_area CRUD(后台+前端页面)
  • 话题管理:cms_topic CRUD(后台+前端页面)

Phase 2-4 会员体系

  • 后台会员管理:会员列表/搜索/状态管理、积分/成长值调整
  • 会员等级:ums_member_level 等级配置、成长值阈值
  • 自动升降级:下单赠送成长值 → updateGrowthcheckAndUpdateMemberLevel 自动匹配等级
  • 积分变动记录:ums_integration_change_history

Phase 2-5 前台增强

  • 商品评论:PmsProductCommentController/api/product/comment/list/replayList/{commentId}),支持 type 筛选(全部/有图/好评/中评/差评)
  • 评论前端:商品详情页评论 Tab(统计区、筛选标签、评论列表、商家回复展开)
  • 收藏功能:MemberProductCollectionController(MongoDB),前台收藏/取消收藏按钮
  • 浏览历史:MemberReadHistoryController(MongoDB),商品详情页自动记录,按日期分组展示
  • 会员中心增强:成长值展示、收藏/浏览历史入口

前端重构

  • 布局重构Layout.vue 重构为 shadcn 风格,侧边栏/导航栏/主内容区统一 CSS 变量
  • TagsView:新增多标签页导航组件,支持关闭/刷新/右键菜单
  • 通用组件
    • PageCard — 替代旧式 el-card shadow="never",支持标题和 header 插槽
    • PageHeader — 页面标题组件
    • useTableList<T, Q> — 列表页通用 composable(分页/加载/搜索/重置)
  • 全站页面重写
    • 登录/仪表盘页面优化
    • UMS 模块:管理员、角色、菜单、资源(含分类列表)、分配菜单、分配资源
    • PMS 模块:商品列表、商品新增/编辑(含属性/规格/关联子组件)、分类、品牌、属性、运费模板
    • OMS 模块:订单列表、订单详情、发货列表、退货申请、退货详情、订单设置
    • SMS 模块:广告、品牌推荐、新品推荐、人气推荐、专题推荐、优惠券(含历史/详情)、秒杀(含场次/商品)
  • 代码规范
    • 所有 el-card shadow="never" 替换为 PageCard
    • 所有 el-table border 移除
    • 所有 el-radio :label 改为 :value
    • 统一分页样式 .pagination-container 右对齐
    • TypeScript 编译和 Vite 构建均无错误

6. 关键文件索引

后端 - mall-admin

模块ControllerServiceDAO/XML
订单OmsOrderControllerOmsOrderServiceImplOmsOrderDao.xml
退货OmsOrderReturnApplyControllerOmsOrderReturnApplyServiceImpl-
商品PmsProductControllerPmsProductServiceImpl-
分类PmsProductCategoryController--

后端 - mall-portal

模块ControllerService
会员UmsMemberController (/member/)UmsMemberServiceImpl
地址UmsMemberReceiveAddressController (/member/address/)UmsMemberReceiveAddressServiceImpl
首页HomeController (/api/home/)HomeServiceImpl
商品PmsPortalProductController (/api/product/)PmsPortalProductServiceImpl
购物车OmsCartItemController (/api/cart/)OmsCartItemServiceImpl
订单OmsPortalOrderController (/api/order/)OmsPortalOrderServiceImpl
售后OmsPortalOrderReturnApplyController (/api/returnApply/)OmsPortalOrderReturnApplyServiceImpl
评论PmsProductCommentController (/api/product/comment/)PmsProductCommentServiceImpl
收藏MemberProductCollectionController (/api/member/productCollection/)MongoDB
浏览历史MemberReadHistoryController (/api/member/readHistory/)MongoDB

前端 - mall-admin-web

模块页面目录API 文件
登录/仪表盘views/home/apis/admin.ts
管理员views/ums/admin/apis/admin.ts
角色views/ums/role/apis/role.ts
菜单views/ums/menu/apis/menu.ts
资源views/ums/resource/apis/resource.ts
商品管理views/pms/product/apis/product.ts
商品分类views/pms/productCate/apis/productCate.ts
品牌views/pms/brand/apis/brand.ts
属性views/pms/productAttr/apis/productAttr.ts
运费模板views/pms/feightTemplate/apis/feightTemplate.ts
订单views/oms/order/apis/order.ts
退货申请views/oms/apply/apis/returnApply.ts
营销(SMS)views/sms/*/apis/*.ts
专题管理views/cms/subject/apis/cmsSubject.ts
话题管理views/cms/topic/apis/cmsTopic.ts
优选专区views/cms/preferenceArea/apis/cmsPreferenceArea.ts
帮助管理views/cms/help/apis/help.ts
举报处理views/cms/memberReport/apis/memberReport.ts
会员管理views/ums/member/apis/memberManage.ts
前台商城views/portal/apis/portal.ts

配置

文件用途
mall-admin/src/main/resources/application.yml后台安全白名单
mall-portal/src/main/resources/application.yml前台安全白名单
mall-admin-web/vite.config.ts前端代理配置
mall-admin-web/src/router/index.ts前端路由

7. 启动命令

bash
# 后端编译
mvn compile -q

# 后台前端编译
cd mall-admin-web && npm run build

# 启动顺序
# 1. MySQL (localhost:3306, root/123456, 库名 mall)
# 2. Redis (localhost:6379)
# 3. mall-admin (端口 8080)
# 4. mall-admin-web (端口 5173, 开发模式)

8. 已知注意事项

  1. mall-portal 包名与目录不一致:文件在 com/mall/ 目录但 package 声明为 com.mall.portal.*,这是项目原有结构,编译正常通过,新建文件保持一致即可
  2. MyBatis Example 无 setLimit:分页必须用 PageHelper.startPage()
  3. Element Plus Dialog:使用 v-model 控制显隐,不要用 v-model:visible
  4. Element Plus Radio:使用 :value 绑定值,不要用已废弃的 :label
  5. mall-portal 的 DTO 放在 com.mall.dto:目录为 mall-portal/src/main/java/com/mall/dto/
  6. 数据库 73 张表:不需要新增表,使用现有 docs/sql/mall.sql
  7. 前端页面风格:所有页面已统一为 shadcn/ui 风格,使用 PageCard 组件,el-table 不加 border

9. 更新日志

日期阶段变更摘要
2026-07-13Phase 1-3订单列表日期范围搜索、商品信息列、发货日志完善、物流公司扩展、Bug修复
2026-07-14Phase 1-4会员注册登录(JSON Body)、手机号登录、用户信息改、收货地址CRUD、地址上限/默认切换
2026-07-15Phase 1-5前台购物完整实现:后端路径调整+新端点、前端 Portal 模块(10页面)、购物车/订单/支付/售后、代理方案
2026-07-15前端重构后台管理全站 shadcn/ui 风格重写:布局重构、TagsView、PageCard 组件、useTableList composable、30+ 页面重写
2026-07-16Phase 2-1SPU/SKU 多规格商品全链路:后台规格编辑器、前台 SKU 选择器、价格库存联动
2026-07-16Phase 2-2促销活动:秒杀活动/优惠券/满减促销后端+前端
2026-07-16Phase 2-3内容管理:专题/优选专区/话题后端CRUD+前端页面
2026-07-16Phase 2-4会员体系:后台会员管理、会员等级、积分/成长值、自动升降级
2026-07-16Phase 2-5前台增强:商品评论(后端+前端)、收藏/浏览历史、会员中心成长值展示
2026-07-15Bug修复Hamburger折叠空白页修复(visibility:collapse)、TagsView初始路径修正(/home→/admin/home)

最后更新于:

Mall 电商系统知识库