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

相关推荐
Aurorar0rua21 小时前
CS50 x 2024 Notes C -14
c语言·开发语言·学习方法
小短腿的代码世界1 天前
从.qrc到rcc编译器:Qt资源系统的隐秘运作机制与大型项目性能突围
开发语言·qt
MY_TEUCK1 天前
【2026最新Python+AI学习基础】Python 入门笔记篇
笔记·python·学习
qq_571099351 天前
学习周报四十五
学习
2401_833269301 天前
Java网络编程入门
java·开发语言
金銀銅鐵1 天前
[Java] 如何将 Lambda 表达式对应的类保存到 class 文件中?
java·后端
青瓦梦滋1 天前
C++的IO流与STL的空间配置器
开发语言·c++
五月君_1 天前
Bun v1.3.14 发布,Rust 版即将进 Claude Code 内测,下一版可能就告别 Zig
开发语言·后端·rust
それども1 天前
Gradle 构建疑难杂症 Could not find netty-transport-native-epoll-linux-aarch_64.ja
java·服务器·gradle·maven
正儿八经的少年1 天前
application.yml 系列配置文件作用与区别
java·配置文件