广漂码农第二周:手撕验证码Session,给订单系统“安家落户”
核心任务: 独立完成车位项目订单系统后端接口、前端页面及数据库设计。
本周开发纪实:
- 周一: 复盘上周工作,为本周冲刺蓄力。
- 周二: 承接新需求:
- 记住手机号: 提升用户体验。
- 自定义弹窗: 实现灵活交互。
- 价格需求: 核心业务逻辑。
- 技术选型: 确定使用
HttpSession存储手机号:验证码键值对,作为临时认证方案。
- 周三: 功能实现日
- 完成“记住手机号” ✅
- 集成验证码登录 ✅ (注意点: 接口参数类型需严格匹配,
Session ID不一致会导致校验失败 - 已解决) - 实现协议勾选及自定义弹窗 ✅
- 兼容性问题: 确认微信浏览器不支持
datalist元素。 (已找到替代方案-采用div来自定义下拉框✅)
- 周四: 优化与设计
- 验证码生命周期优化: 将清除逻辑从固定5分钟 (
setInterval),升级为 登录成功即销毁 或 5分钟到期销毁,更贴合实际场景。 - 数据库设计: 新增
订单表 (order)。- 关键设计:通过
spot_id外键关联车位表。 - 决策说明:未直接复用车位表
user_id字段 (因车位归属逻辑与订单用户逻辑存在差异)。
- 关键设计:通过
- 验证码生命周期优化: 将清除逻辑从固定5分钟 (
- 周五: 数据库深化
- 完善
订单表结构,清晰记录交易信息。 - 设计
优惠规则表 (discount_rule),定义车位关联的折扣类型与规则。 (终于给优惠上了“户口本”)
- 完善
- 周六: 逻辑实现 & 性能飞跃
- 完成订单金额计算引擎,支持匹配优惠规则。
- 接口性能重大优化:
- 问题: 原有设计需两个接口拉取 全量用户车位数据,效率低下。
- 方案: 重构为单一接口,精准查询 当前用户订单信息。
- 成果: 响应速度显著提升,数据库压力大幅降低。 ( 成功给臃肿接口“瘦身” )
本周总结与反思:
主要成就与挑战:
- 独立完成: 成功独立完成了车位及订单模块的后端接口开发、前端订单页面设计以及相关数据库设计。
- 关键挑战: 如何在后端安全、有效地存储和验证用户专属的短信验证码,避免多用户共用同一验证码的风险。
- 解决方案: 采用基于
HttpSession的存储方案:- Key: 用户手机号
- Value: 对应的验证码
- 生命周期管理:用户成功登录后或 Session 超时(设置 5 分钟)自动销毁。
- 成长点: 深入理解了
HttpSession机制在后端数据临时存储中的应用。
反思与改进点:
- 需求理解: 未来开发前,应更深入地与客户/产品沟通需求细节,以便更好地支持后续扩展性开发。
- 数据库设计: 反思当前设计是否足够精细?例如
user表可考虑增加user_type、created_at、last_login_at等字段增强功能性和可追溯性。 - 设计文档: 意识到个人设计文档的详细度有待提高,需加强文档规范。
未来优化方向:
- 沟通: 加强沟通,确保需求理解透彻,及时同步进展。
- 数据库:
- 精细化核心表结构(如扩展
user表字段)。 - 建立更清晰的表关系。
- 精细化核心表结构(如扩展
- 后端架构:
- 进行更清晰的分层设计(Controller / Service / Repository / Entity)。
- 将车位管理、用户收藏等模块进行逻辑拆分,提高可维护性。
- 前端:
- 加强浏览器兼容性测试(如已发现的微信
datalist问题)。 - 持续进行界面加载速度优化。
- 加强浏览器兼容性测试(如已发现的微信
- 目标: 通过以上改进,全面提升开发效率、代码质量和系统健壮性,促进个人技术能力的成长。
广漂码农第二周:手撕验证码Session,给订单系统“安家落户”
https://www.zhengcookie.site/2025/07/27/广漂码农第二周:手撕验证码Session,给订单系统“安家落户”/