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 部署
- 首先打开项目Maven工具栏,确定将要打包的模块,点开Lifecycle选项,然后选择Install开始打包。
- 先在IDEA控制台上单击切换到Terminal终端页面,然后在项目所在位置后的指令输入提示位置指令部署即可。
9 总结
通过实训我们学习到MyBatisPlus是MyBatis的增强工具,它为MyBatis提供了更加方便快捷的使用方式,同时也提供了更多的扩展功能。
它提供了大量的注解和接口,如@TableField注解可以定义表字段的属性等等。另外它还提供了一些高级特性,如分页查询、逻辑删除和多表关联查询等。
在这次实训中,我通过编写代码、模拟实际场景等方式,来提升自己的编程能力,同时需要注重代码规范和功能的完整性,不断优化和完善项目。
其次,我深刻的认识到Java编程需要掌握各种开发工具和框架,如IntelliJ IDEA、Spring boot等,这些工具和框架可以提高开发效率。因此,在实训中也应该注重培养学员的独立学习能力,让他们自主学习并运用各种工具和框架。
最后,Java编程需要具备良好的团队协作能力,因为实际项目中不可能仅仅由单人完成,需要多人协作完成。在实训中也应该注重培养个人的沟通技巧和团队合作精神,如果能够在团队中融洽合作,就能极大地提高项目的实战效果。
注:由于源码量过多,需要的朋友可在资源中下载,也可私信我拿取!