(自用)Java学习-5.19(地址管理,三级联动,预支付)

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_cartt_product 表关联)。
  • 订单确认页回显

    • 前端 :解析 URL 参数(cttpids),展示商品列表和支付总金额。

    • 后端 :通过 CartService 查询勾选商品详情,返回 CartVO 列表。

  • 预支付订单生成

    • 前端 :提交地址和总金额,触发 /orders/createOrder 请求,跳转支付页。

    • 后端

      • 生成唯一订单号(UUID),关联用户地址信息。

      • 使用 Redis 缓存订单数据(30 分钟过期),避免重复提交。


3. 关键技术点
  • 前后端交互:Ajax 异步请求、JSON 数据格式、URL 参数传递。

  • 数据库操作

    • MyBatis 动态 SQL(如 <foreach> 遍历数组)。

    • 事务管理(@Transactional 注解)。

  • 缓存应用:Redis 存储临时订单数据,防止支付超时。

  • 安全控制 :用户会话(HttpSession)管理,参数合法性校验。


4. 核心代码结构
  • 前端

    • jQuery DOM 操作(append()replace())。

    • 事件监听(changeclick)。

  • 后端

    • Spring MVC 分层架构(Controller → Service → Mapper)。

    • 实体类映射(AddressDistrictOrder)。

    • 配置文件(application.yml 定义业务参数)。

相关推荐
独特的螺狮粉几秒前
开源鸿蒙跨平台Flutter开发:手机清理小助手应用
开发语言·flutter·游戏·智能手机·开源·harmonyos·鸿蒙
星辰徐哥1 分钟前
C++测试与调试:确保代码质量与稳定性
开发语言·c++
jghhh012 分钟前
VC++ 屏幕锁定、关机、托盘工具源代码
开发语言·c++
wjs20242 分钟前
C++ 字符串
开发语言
蜡台4 分钟前
JavaScript Object Function ERROR
开发语言·javascript·ecmascript·error
鬼先生_sir5 分钟前
Dubbo:从入门到精通
java·dubbo·springcloud
Shadow(⊙o⊙)11 分钟前
C语言学习中需要的额外函数
c语言·开发语言·学习
还是大剑师兰特12 分钟前
pinia-plugin-persistedstate详解与Vue3使用示例
开发语言·javascript·ecmascript
艾莉丝努力练剑14 分钟前
【Linux线程】Linux系统多线程(四):线程ID及进程地址空间布局,线程封装
java·linux·运维·服务器·c语言·c++·学习
方便面不加香菜14 分钟前
C++ 类和对象(二)
开发语言·c++