(自用)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_cart 与 t_product 表关联)。
  • 订单确认页回显

    • 前端 :解析 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 定义业务参数)。

相关推荐
niucloud-admin6 分钟前
JAVA V6 多商户商城 开发文档——手机端前端
java·开发语言·前端
茉莉玫瑰花茶9 分钟前
GO [ 并发 ]
开发语言·后端·golang
云安全助手11 分钟前
自建接入VS聚合平台:企业 AI 调用的选型思路与迁移成本拆解
java·大数据·数据库·人工智能·ai大模型
樱花落木兰12 分钟前
SpringBoot + ECharts 后台数据统计报表模块实战
java·javascript·spring boot·ai·log4j·github·echarts
霸道流氓气质20 分钟前
Dify 可视化 LLM 应用开发平台完全指南:从Workflow编排到Java生产级集成实战
java·开发语言
m0_5873830025 分钟前
24小时自助健身房软硬件解决方案实战:从架构设计到部署指南
java·spring·小程序·架构·需求分析
辣知40 分钟前
辣知·化智68 半仙隐士渭水钓的不是鱼
学习
2601_9622186143 分钟前
深入理解C++中的thread_local线程局部变量的应用
开发语言·c++
CallFay云起未来44 分钟前
AI客服上线后多久才能回本?从TCO到ROI的完整测算方法
java·大数据·人工智能·架构·文心一言
Sam_Deep_Thinking44 分钟前
什么是CountDownLatch?
java·后端·面试·程序员