Spring Boot实训项目 瑞吉外卖功能实现(三)

简介: Spring Boot实训项目 瑞吉外卖功能实现(三)

6.3 分类管理

6.3.1 查看功能

可以查看当前显示所有菜品或套餐类型。

6.3.2 添加功能

对新的菜品和套餐类型进行添加操作。

6.3.3 修改功能

对于一些错误的菜品或套餐信息进行更改。

6.3.4 删除功能

对于某些过时或者冷门的菜品或套餐进行删除。

6.4 菜品管理

6.4.1 查询功能

可以根据个人需求查找当前现有菜品信息。

6.4.2 添加功能

对于当前热门菜品可以新增到菜品管理中。

6.4.3 修改功能

对一些冷门菜品可以对其价格进行修改。

6.4.4 删除功能

对于一些冷门菜品可以进行停售或删除操作。

菜品信息修改核心代码:

1. @PutMapping("/edit")
2. 
3.     public R<String> update(@RequestBody DishDto dishDto) {
4. 
5.         // 更新dish表
6. 
7.         dishService.updateById(dishDto);
8. 
9.         // 清理当前菜品口味信息,dish_flavor表的delete操作
10. 
11.         // 不能使用removeById, 因为dishDto的id不是dish_flavor的主键
12. 
13.         LambdaQueryWrapper<DishFlavor> queryWrapper = new LambdaQueryWrapper<>();
14. 
15.         queryWrapper.eq(DishFlavor::getDishId, dishDto.getId());
16. 
17.         dishFlavorService.remove(queryWrapper);
18. 
19.         // 重新插入菜品口味信息,dish_flavor表的insert操作
20. 
21.         List<DishFlavor> dishFlavor = new ArrayList<>();
22. 
23.         for (DishFlavor item :dishDto.getFlavors()) {
24. 
25.             item.setDishId(dishDto.getId());
26. 
27.             dishFlavor.add(item);
28. 
29.         }
30. 
31.         dishFlavorService.saveBatch(dishFlavor);
32. 
33.         return R.success("修改成功");
34. 
35.     }

6.5 套餐管理

6.5.1 查询功能

对于所需要的套餐类型进行检索。

6.5.2 添加功能

对于新的套餐类型加入到套餐管理中。

6.5.3 修改功能

针对一些信息有误的套餐进行修改。

6.5.4 删除功能

某些套餐长期无人购买可以选择性进行删除。

6.6 订单明细

6.6.1 查询功能

在订单明细中可以查看用户的所有订单和派送状态。

6.6.2 订单查看

点击查看订单可以看到用户的个人信息以及地址详情等。

6.7 用户管理

6.7.1 登录管理

在移动端, 手机用户需要输入手机号验证码登录后进入APP进行点餐。

6.7.2 点餐-菜单

在点餐界面需要展示出菜品分类/套餐分类, 并根据当前选择的分类加载其中的菜品信息, 供用户查询选择。

6.7.3 点餐-购物车

用户选中的菜品就会加入用户的购物车, 主要包含查询购物车、加入购物车、删除购物车、清空购物车等功能。

减少购物车菜品核心代码:

1. @PostMapping("/sub")
2. 
3.     public R<String> sub(@RequestBody ShoppingCart shoppingCart, HttpSession session) {
4. 
5.         // 1.获取当前用户
6. 
7.         User user = (User) session.getAttribute("employee");
8. 
9.         // 2.查询当前用户、当前商品在购物车表里是否已存在
10. 
11.         LambdaQueryWrapper<ShoppingCart> lambdaQueryWrapper = new LambdaQueryWrapper<>();
12. 
13.         lambdaQueryWrapper.eq(ShoppingCart::getUserId, user.getId())  // 筛选用户ID
14. 
15.                 .eq(shoppingCart.getDishId() != null, ShoppingCart::getDishId, shoppingCart.getDishId())  // 如果传入的商品ID不为空,筛选商品ID
16. 
17.                 .eq(shoppingCart.getSetmealId() != null, ShoppingCart::getSetmealId, shoppingCart.getSetmealId());  // 如果传入的套餐ID不为空,筛选套餐ID
18. 
19.         ShoppingCart shoppingCart1 = shoppingCartService.getOne(lambdaQueryWrapper);  // 返回符合条件的购物车记录
20. 
21.         int shoppingCartNumber = shoppingCart1.getNumber();
22. 
23.         try {
24. 
25.             if (shoppingCartNumber > 1) {  // 如果记录的数量大于1,则减少数量
26. 
27.                 shoppingCartNumber = shoppingCart1.getNumber() - 1;  // 记录的数量减1
28. 
29.                 shoppingCart1.setNumber(shoppingCartNumber);  // 更新记录的数量
30. 
31.                 shoppingCartService.updateById(shoppingCart1);  // 更新购物车记录
32. 
33.             } else {  // 如果记录的数量为1,则删除该记录
34. 
35.                 shoppingCartService.removeById(shoppingCart1.getId());
36. 
37.             }
38. 
39.         } catch (Exception e) {
40. 
41.             return R.error("删除失败");
42. 
43.         }
44. 
45.         return R.success("删除成功");
46. 
47.     }

6.7.4 订单支付

用户选完菜品/套餐后, 可以对购物车菜品进行结算支付, 这时就需要进行订单的支付。

6.7.5 个人信息

在个人中心页面中会展示当前用户的基本信息, 用户可以管理收货地址, 也可以查询历史订单数据。

地址修改与删除核心代码:  

1. @PutMapping
2. 
3.     public R<String> addressBookupdate(@RequestBody AddressBook addressBook, HttpSession session){
4. 
5.         //设置修改时间
6. 
7.         addressBook.setUpdateTime(LocalDateTime.now());
8. 
9.         //设置修改人
10. 
11.         addressBook.setUpdateUser((Long)session.getAttribute("user"));
12. 
13.         addressBookService.updateById(addressBook);
14. 
15.         return R.success("修改地址成功!");
16. 
17.     }
18. 
19.     @DeleteMapping
20. 
21.     public R<String> detele(@RequestParam("ids") Long id){
22. 
23.         addressBookService.removeById(id);
24. 
25.         return R.success("删除地址成功!");
26. 
27.     }

7 测试

7.1 员工管理功能测试

员工管理测试表

测试用例

期望结果

实际结果

查询员工

通过账号登录进入后可以根据员工姓名查找该员工信息

测试通过

添加员工

通过输入新员工的信息实现对新员工的添加操作。

测试通过

修改员工

点击编辑可以对所选员工的个人信息进行修改

测试通过

禁用员工

点击禁用能够有效的禁止该员工的登录权限

测试通过

根据上面的测试结果来看,该功能通过所有的测试用例并且符合需求。

7.2 分类管理功能测试

分类管理测试表

测试用例

期望结果

实际结果

查看菜品/套餐

员工可以查看当前显示所有菜品或套餐类型

测试通过

添加菜品/套餐

员工能够对新的菜品或套餐类型进行添加操作

测试通过

修改菜品/套餐

员工可以对于信息错误的菜品或套餐进行更改

测试通过

删除菜品/套餐

员工能够对于过时或冷门的菜品或套餐进行删除

测试通过

根据上面的测试结果来看,该功能通过所有的测试用例并且符合需求。

7.3 地址管理功能测试

地址管理测试表

测试用例

期望结果

实际结果

查看地址

用户可以查看当前显示的所有个人地址信息

测试通过

添加地址

用户能够对新的地址信息进行添加操作

测试通过

修改地址

用户可以对于错误的地址信息进行更改

测试通过

删除地址

用户能够对于一些不常用的地址进行删除

测试通过

根据上面的测试结果来看,该功能通过所有的测试用例并且符合需求。

8 部署

  1. 首先打开项目Maven工具栏,确定将要打包的模块,点开Lifecycle选项,然后选择Install开始打包。
  2. 先在IDEA控制台上单击切换到Terminal终端页面,然后在项目所在位置后的指令输入提示位置指令部署即可。

9 总结

通过实训我们学习到MyBatisPlus是MyBatis的增强工具,它为MyBatis提供了更加方便快捷的使用方式,同时也提供了更多的扩展功能。

它提供了大量的注解和接口,如@TableField注解可以定义表字段的属性等等。另外它还提供了一些高级特性,如分页查询、逻辑删除和多表关联查询等。

在这次实训中,我通过编写代码、模拟实际场景等方式,来提升自己的编程能力,同时需要注重代码规范和功能的完整性,不断优化和完善项目。

其次,我深刻的认识到Java编程需要掌握各种开发工具和框架,如IntelliJ IDEA、Spring boot等,这些工具和框架可以提高开发效率。因此,在实训中也应该注重培养学员的独立学习能力,让他们自主学习并运用各种工具和框架。

最后,Java编程需要具备良好的团队协作能力,因为实际项目中不可能仅仅由单人完成,需要多人协作完成。在实训中也应该注重培养个人的沟通技巧和团队合作精神,如果能够在团队中融洽合作,就能极大地提高项目的实战效果。

注:由于源码量过多,需要的朋友可在资源中下载,也可私信我拿取!

目录
相关文章
|
28天前
|
XML Java 应用服务中间件
SpringBoot项目打war包流程
本文介绍了将Spring Boot项目改造为WAR包并部署到外部Tomcat服务器的步骤。主要内容包括:1) 修改pom.xml中的打包方式为WAR;2) 排除Spring Boot内置的Tomcat依赖;3) 添加Servlet API依赖;4) 改造启动类以支持WAR部署;5) 打包和部署。通过这些步骤,可以轻松地将Spring Boot应用转换为适合外部Tomcat服务器的WAR包。
132 64
SpringBoot项目打war包流程
|
1月前
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
基于springboot+thymeleaf+Redis仿知乎网站问答项目源码
136 36
|
8天前
|
网络协议 Java Shell
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
java spring 项目若依框架启动失败,启动不了服务提示端口8080占用escription: Web server failed to start. Port 8080 was already in use. Action: Identify and stop the process that’s listening on port 8080 or configure this application to listen on another port-优雅草卓伊凡解决方案
40 7
|
23天前
|
自然语言处理 IDE Java
SpringBoot start.aliyun.com创建项目,解决properties乱码的问题
通过确保文件和开发环境的编码一致,配置 Maven 编码,设置 Spring Boot 应用和嵌入式服务器的编码,可以有效解决 properties 文件的乱码问题。以上步骤可以帮助开发者确保在 Spring Boot 项目中正确处理和显示多语言字符,避免因编码问题导致的乱码现象。
36 5
|
2月前
|
设计模式 XML Java
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
本文详细介绍了Spring框架的核心功能,并通过手写自定义Spring框架的方式,深入理解了Spring的IOC(控制反转)和DI(依赖注入)功能,并且学会实际运用设计模式到真实开发中。
【23种设计模式·全精解析 | 自定义Spring框架篇】Spring核心源码分析+自定义Spring的IOC功能,依赖注入功能
|
2月前
|
存储 JSON 前端开发
【Spring项目】表白墙,留言板项目的实现
本文主要介绍了表白墙项目的实现,包含前端和后端代码,以及测试
|
2月前
|
JSON 前端开发 Java
|
2月前
|
缓存 前端开发 Java
【Spring】——SpringBoot项目创建
SpringBoot项目创建,SpringBootApplication启动类,target文件,web服务器,tomcat,访问服务器
|
2月前
|
存储 JavaScript 前端开发
基于 SpringBoot 和 Vue 开发校园点餐订餐外卖跑腿Java源码
一个非常实用的校园外卖系统,基于 SpringBoot 和 Vue 的开发。这一系统源于黑马的外卖案例项目 经过站长的进一步改进和优化,提供了更丰富的功能和更高的可用性。 这个项目的架构设计非常有趣。虽然它采用了SpringBoot和Vue的组合,但并不是一个完全分离的项目。 前端视图通过JS的方式引入了Vue和Element UI,既能利用Vue的快速开发优势,
151 13
|
29天前
|
XML Java 应用服务中间件
Spring Boot 两种部署到服务器的方式
本文介绍了Spring Boot项目的两种部署方式:jar包和war包。Jar包方式使用内置Tomcat,只需配置JDK 1.8及以上环境,通过`nohup java -jar`命令后台运行,并开放服务器端口即可访问。War包则需将项目打包后放入外部Tomcat的webapps目录,修改启动类继承`SpringBootServletInitializer`并调整pom.xml中的打包类型为war,最后启动Tomcat访问应用。两者各有优劣,jar包更简单便捷,而war包适合传统部署场景。需要注意的是,war包部署时,内置Tomcat的端口配置不会生效。
233 17
Spring Boot 两种部署到服务器的方式