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定义业务参数)。
-