当前位置: 首页 > news >正文

Java项目-苍穹外卖_Day2

项目来源:

黑马程序员 Java项目实战《苍穹外卖》】

[https://www.bilibili.com/video/BV1TP411v7v6]

@ZZHow(ZZHow1024)

  • 以下笔记省略功能测试部分
    • 测试方式:
      • 通过接口文档测试。
      • 通过前后端联调测试。
    • 注意:由于开发阶段前端和后端是并行开发的,后端完成某个功能后,此时前端对应的功能可能还没有开发完成,导致无法进行前后端联调测试。所以在开发阶段,后端测试主要以接口文档测试为主。

新增员工

  • 需求分析和设计

    • 表单项:
      • 账号必须是唯一的
      • 手机号为合法的 11 位手机号码
      • 身份证号为合法的 18 位身份证号码
      • 密码默认为 123456
    • 接口设计:
      • Path:/admin/employee
      • Method:POST
      • 备注:
        • 管理端发出的请求统一使用 /admin 作为前缀。
        • 用户端发出的请求统一使用 /user 作为前缀。
    • 数据库设计(employee 表)
  • 代码开发

    • 根据新员工接口设计对应的 DTO。
  • 代码完善

    • 存在的问题:
      • 录入的用户名已存在,抛出异常后没有处理。
        • 使用全局异常处理器。
      • 新增员工时,创建人 ID 和修改人 ID 设置为了固定值。
        • 使用 ThreadLocal。
        • ThreadLocal 不是一个 Thread,而是 Thread 的局部变量。
        • ThreadLocal 为每个线程提供单独一份存储空间,具有线程隔离的效果,只有在线程内才能获取到对应的值,线程外则不
        • 常用方法:
          • 没置当前线程的线程局部变量的值:public void set (T value)
          • 返回当前线程所对应的线程局部变量的值:public T get()
          • 移除当前线程的线程局部变量:public void remove()

员工分页查询

  • 产品原型
    • 业务规则:
      • 根据页码展示员工信息。
      • 每页展示 10 条数据。
      • 分页查询时可以根据需要,输入员工姓名进行查询。
    • 接口设计:
      • Path:/admin/employee/page
      • Method:GET
  • 代码开发
    • 根据分页查询接口设计对应的 DTO。
    • 所有分页查询统一封装成 PageResult 对象。
    • 员工信息分页查询后端返回的对象类型为 Result。
  • 代码完善
    • 存在的问题:后端返回的时间数据可读性较差。
    • 解决方式:
      • 方式一:在属性上加入注解,对日期进行格式化:@JsonFormat (pattern = "yyyy-MM-dd HH:mm:ss")
      • 方式二:在 WebMvcConfiguration 中扩展 Spring MVC 的消息转换器,统一对日期类型进行格式化处理。

启用禁用员工账号

  • 需求分析和设计
    • 业务规则:
      • 可以对状态为“启用”的员工账号进行“禁用”操作。
      • 可以对状态为“禁用”的员工账号进行“启用”操作。
      • 状态为“禁用”的员工账号不能登录系统。
    • 接口设计:
      • Path:/admin/employee/status/{status}
      • Method:POST
  • 代码开发
    • 根据接口文档进行开发。

编辑员工

  • 需求分析和设计
    • 业务规则:
      • 回显数据(根据 ID 查询员工信息)。
      • 修改员工信息。
    • 编辑员工功能涉及到两个接口:
      • 根据 ID 查询员工信息
        • Path:/admin/employee/{id}
        • Method:GET
      • 编辑员工信息
        • Path:/admin/employee
        • Method:PUT
  • 代码开发
    • 根据接口文档进行开发。

开发分类管理模块功能

  • 需求分析和设计
    • 业务规则:
      • 分类名称必须是唯一的。
      • 分类按照类型可以分为菜品分类和套餐分类。
      • 新添加的分类状态默认为“禁用”。
    • 接口设计:
      • 新增分类
      • 分类分页查询
      • 根据 ID 删除分类
      • 修改分类
      • 启用禁用分类
      • 根据类型查询分类
  • 代码开发
    • 此业务模块与上一部分(员工管理业务)模块实现类似。
http://www.xdnf.cn/news/1361701.html

相关文章:

  • Ubuntu24.04配置yolov5
  • 使用 Gemini CLI作为 Claude Code的 subagent
  • 分布式锁设计实战:多级缓存防御设计优化同步性能
  • 《眼科学》10月版面征稿论文速递
  • Nestjs生命周期中全局方法执行顺序
  • 嵌入式开发学习———Linux环境下网络编程学习(六)
  • MySQL 行转列与列转行的实现方式
  • 在新塘SDK下面,有四中文件夹,GCC、IAR、KEIL、和Keil_AC6.这4个工程有什么区别。各自是怎样配置寄存器并实现SPI功能的
  • Aligning Effective Tokens with Video Anomaly in Large Language Models
  • Node.js面试题及详细答案120题(43-55) -- 性能优化与内存管理篇
  • 《飞算Java开发实战:从入门安装到项目部署》
  • 【GEE+Python 实战】用 Sentinel-2 监测 2024 年研究区 NDVI 变化(附完整源码与避坑指南)
  • Codejock Suite ProActiveX COM Crack
  • 一文掌握 Java 键盘输入:从入门到高阶(含完整示例与避坑指南)
  • LIANA | part1 intro部分
  • VMware Workstation 不可恢复错误:(vcpu-0)
  • 详细的周任务清单(Week1-Week24,每周具体目标+任务)
  • Socket some functions
  • 基于PHP服装租赁管理系统/基于php的服装管理系统的设计与实现
  • C#_gRPC
  • 【图像处理基石】基于 Python 的图像行人删除技术:实现街景无干扰化处理
  • 6.1Element UI布局容器
  • leetcode 162 寻找峰值
  • Polkadot - JAM
  • 13种常见机器学习算法总结
  • 青少年软件编程(python六级)等级考试试卷-客观题(2023年3月)
  • 学习制作记录(选项UI以及存档系统)8.24
  • 基于RISC-V架构的国产MCU在eVTOL领域的应用研究与挑战分析
  • 【Ollama】本地OCR
  • 波兰密码破译机bomba:二战密码战的隐形功臣