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

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

本周开发纪实:

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

本周总结与反思:

  1. 主要成就与挑战:

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

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

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

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