苍穹外卖学习day06——学习日记

今日完结任务:

今天完成了删除菜品、修改菜品接口的开发,并且把套餐管理相关的所有接口实现了。

今日收获:

今天写的和之前写的对员工、菜品、类别的操作基本都是一样的,算是对Curd的操作更加熟练了。

但是在一些多表关联的地方,自己的逻辑还是不足。例如在新增菜品和删除菜品的同时,也要同步更新口味表,或者在更新套餐数据时,还要同步的更新套餐内菜品的数据,这里采用的是先全部删除,再新增的操作。还有就是在删除菜品表的时候,还要考虑当前菜品是否在套餐中,如果在套菜中,是不能删除的。

所以说这些规定就要求我们在写代码进行项目开发时,要先在思路上整理清楚整体的操作框架,确定对那些表做什么样的修改,然后再写代码。

并且还要学习这种功能解构的思想,将一个复杂的接口不断拆分,实现接口的复用,减少代码。

总结:

昨天有点事,没有写昨天的日记,所以补到今天了。明天就要学习Redis这个新的知识点了,冲!

苍穹外卖项目 Day3 的学习内容主要集中在菜品管理的业务逻辑上,特别是删除菜品时的相关规则与处理。具体来说,在删除菜品时,需要首先判断该菜品是否处于起售状态。如果该菜品正处于起售状态,则不允许被删除[^1]。 此外,还需要检查该菜品是否包含在某个套餐中。如果该菜品已经被包含在一个或多个套餐中,则同样不允许删除该菜品。只有在满足可以删除的情况下,才能执行删除操作,并且在删除菜品的同时,也需要删除与之相关的口味信息[^1]。 ### 删除菜品的主要步骤 1. 判断菜品是否为起售状态,起售状态的菜品不能够被删除。 2. 检查菜品是否属于一个或多个套餐的一部分,如果是,则不能删除。 3. 如果以上两个条件都不满足,则允许删除该菜品及其关联的口味数据。 这些逻辑确保了系统的数据一致性,并避免了在业务运行过程中出现不一致或错误的状态。 ### 示例代码片段 以下是一个伪代码示例,用于展示删除菜品的基本逻辑: ```java public void deleteDish(Dish dish) { // 检查菜品是否处于起售状态 if (dish.getStatus() == 1) { // 假设1表示起售状态 throw new RuntimeException("起售状态的菜品不能删除"); } // 检查菜品是否被包含在套餐中 List<Setmeal> setmeals = setmealService.findSetmealsByDishId(dish.getId()); if (!setmeals.isEmpty()) { throw new RuntimeException("该菜品已被包含在套餐中,不能删除"); } // 删除菜品及其相关口味 dishRepository.deleteById(dish.getId()); flavorRepository.deleteByDishId(dish.getId()); } ``` ### 扩展知识点 除了上述基本逻辑外,还可以扩展一些其他功能,例如: - 添加日志记录,以便追踪删除操作的具体情况。 - 引入事务管理机制,确保删除菜品和对应口味的操作具有原子性。 - 在删除之前进行权限验证,确保用户有权限执行删除操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值