1. 地址管理模块
-
地址展示
-
前端 :通过
showAddress()
发起 Ajax GET 请求,动态渲染地址列表表格,使用#{tag}
、#{name}
等占位符替换真实数据。 -
后端:
-
控制器层调用
AddressService
,通过AddressMapper
查询用户地址数据。 -
SQL 按
is_default
降序排序,优先展示默认地址。
-
-
-
设置默认地址
-
前端 :点击"设为默认"触发
setDefault(aid)
,发送 POST 请求。 -
后端:
-
服务层事务操作:先将用户所有地址
is_default
设为 0,再设置指定aid
的地址为 1。 -
SQL 通过两个
<update>
标签分别处理用户 ID 和地址 ID 的更新。
-
-
-
三级联动地址选择
-
前端 :基于省、市、区下拉框的
change
事件,动态加载下级区域数据。 -
后端:
- 控制器调用
DistrictService
,查询t_dict_district
表,按parent
字段返回层级数据。
- 控制器调用
-
-
地址添加
-
前端 :提交表单数据,触发
/address/saveAddress
请求。 -
后端:
-
检查用户地址数量(上限 10 条),首次添加设为默认地址。
-
通过
DistrictMapper
查询省市区名称,填充完整地址信息。 -
SQL 插入语句覆盖地址表全字段。
-
-
2. 购物车与订单模块
-
购物车勾选与统计
-
前端:通过勾选事件实时计算选中商品的总数量和总金额,同步更新隐藏域数据。
-
后端:
- 控制器接收勾选的购物车 ID 数组,联合查询商品信息(
t_cart
与t_product
表关联)。
- 控制器接收勾选的购物车 ID 数组,联合查询商品信息(
-
-
订单确认页回显
-
前端 :解析 URL 参数(
ct
、tp
、ids
),展示商品列表和支付总金额。 -
后端 :通过
CartService
查询勾选商品详情,返回CartVO
列表。
-
-
预支付订单生成
-
前端 :提交地址和总金额,触发
/orders/createOrder
请求,跳转支付页。 -
后端:
-
生成唯一订单号(UUID),关联用户地址信息。
-
使用 Redis 缓存订单数据(30 分钟过期),避免重复提交。
-
-
3. 关键技术点
-
前后端交互:Ajax 异步请求、JSON 数据格式、URL 参数传递。
-
数据库操作:
-
MyBatis 动态 SQL(如
<foreach>
遍历数组)。 -
事务管理(
@Transactional
注解)。
-
-
缓存应用:Redis 存储临时订单数据,防止支付超时。
-
安全控制 :用户会话(
HttpSession
)管理,参数合法性校验。
4. 核心代码结构
-
前端:
-
jQuery DOM 操作(
append()
、replace()
)。 -
事件监听(
change
、click
)。
-
-
后端:
-
Spring MVC 分层架构(Controller → Service → Mapper)。
-
实体类映射(
Address
、District
、Order
)。 -
配置文件(
application.yml
定义业务参数)。
-