广漂码农第二周:手撕验证码Session,给订单系统“安家落户”

核心任务: 独立完成车位项目订单系统后端接口、前端页面及数据库设计。

本周开发纪实:

  1. 周一: 复盘上周工作,为本周冲刺蓄力。
  2. 周二: 承接新需求:
    记住手机号: 提升用户体验。
  3. 自定义弹窗: 实现灵活交互。
  4. 价格需求: 核心业务逻辑。
  5. 技术选型: 确定使用 HttpSession 存储 手机号:验证码 键值对,作为临时认证方案。
  6. 周三: 功能实现日
    完成“记住手机号” ✅
  7. 集成验证码登录 ✅ (注意点: 接口参数类型需严格匹配,Session ID 不一致会导致校验失败 - 已解决)
  8. 实现协议勾选及自定义弹窗 ✅
  9. 兼容性问题: 确认微信浏览器不支持 datalist 元素。 (已找到替代方案-采用div来自定义下拉框✅)
  10. 周四: 优化与设计
    验证码生命周期优化: 将清除逻辑从固定5分钟 (setInterval),升级为 登录成功即销毁5分钟到期销毁,更贴合实际场景。
  11. 数据库设计: 新增 订单表 (order)
    关键设计:通过 spot_id 外键关联车位表。
  12. 决策说明:未直接复用车位表 user_id 字段 (因车位归属逻辑与订单用户逻辑存在差异)。
  13. 周五: 数据库深化
    完善 订单表 结构,清晰记录交易信息。
  14. 设计 优惠规则表 (discount_rule),定义车位关联的折扣类型与规则。 (终于给优惠上了“户口本”)
  15. 周六: 逻辑实现 & 性能飞跃
    完成订单金额计算引擎,支持匹配优惠规则。
  16. 接口性能重大优化:
    问题: 原有设计需两个接口拉取 全量用户车位数据,效率低下。
  17. 方案: 重构为单一接口,精准查询 当前用户订单信息
  18. 成果: 响应速度显著提升,数据库压力大幅降低。 ( 成功给臃肿接口“瘦身” )

本周总结与反思:

  1. 主要成就与挑战:

独立完成: 成功独立完成了车位及订单模块的后端接口开发、前端订单页面设计以及相关数据库设计。
2. 关键挑战: 如何在后端安全、有效地存储和验证用户专属的短信验证码,避免多用户共用同一验证码的风险。
3. 解决方案: 采用基于 HttpSession 的存储方案:
Key: 用户手机号
4. Value: 对应的验证码
5. 生命周期管理:用户成功登录后或 Session 超时(设置 5 分钟)自动销毁。
6. 成长点: 深入理解了 HttpSession 机制在后端数据临时存储中的应用。
7. 反思与改进点:

需求理解: 未来开发前,应更深入地与客户/产品沟通需求细节,以便更好地支持后续扩展性开发。
8. 数据库设计: 反思当前设计是否足够精细?例如 user 表可考虑增加 user_typecreated_atlast_login_at 等字段增强功能性和可追溯性。
9. 设计文档: 意识到个人设计文档的详细度有待提高,需加强文档规范。
10. 未来优化方向:

沟通: 加强沟通,确保需求理解透彻,及时同步进展。
11. 数据库:
精细化核心表结构(如扩展 user 表字段)。
12. 建立更清晰的表关系。
13. 后端架构:
进行更清晰的分层设计(Controller / Service / Repository / Entity)。
14. 将车位管理、用户收藏等模块进行逻辑拆分,提高可维护性。
15. 前端:
加强浏览器兼容性测试(如已发现的微信 datalist 问题)。
16. 持续进行界面加载速度优化。
17. 目标: 通过以上改进,全面提升开发效率、代码质量和系统健壮性,促进个人技术能力的成长。


广漂码农第二周:手撕验证码Session,给订单系统“安家落户”
https://zhengcookie.github.io/zhengcookie/广漂码农第二周:手撕验证码Session,给订单系统“安家落户”/
作者
zhengcookie
发布于
2025年7月27日
许可协议