《苍穹外卖》项目日记_Day8

前言:

今天完成了用户下单和微信支付两个任务,既有自己写代码操作,又有一个看视频学习的过程,主要是学习了用户下单的业务逻辑以及微信支付的具体流程,感觉收获还是挺多的。

今日完成任务:

  • 导入地址簿相关代码
  • 实现用户下单接口
  • 学习微信支付流程

今日收获:

1.用户下单接口

用户下单的话整体来看是比较简单的,就是业务逻辑部分有一些复杂,需要考虑到一些异常:比如地址簿为空、购物车数据为空等情况。这些地方虽然前端已经做了校验,如果地址簿为空、购物车为空无法发起下单,然后调用对应的api接口,但是这里后端再次进行校验,主要是为了防止有人携带自己的token,使用postman、apifox等接口测试工具,跳过前端的逻辑检验,直接向后端发送请求把,造成无地址、无商品的下单的情况吧。

然后就是实现对于下单的业务逻辑,这里考虑的地方还挺多的,一些字段的填充,以及数据库表的设计也挺漂亮的,同时设置一些冗余字段,防止使用逻辑外键地址簿,导致用户修改地址时,订单的地址也随之改变。

下面是具体的业务逻辑实现:

  /**
     * 用户下单 业务逻辑
     * @param ordersSubmitDTO
     * @return
     */
    @Override
    @Transactional
    public OrderSubmitVO submitOrder(OrdersSubmitDTO ordersSubmitDTO) {
   
   
        //地址簿填写异常
        AddressBook adress = addressBookMapper.getById(ordersSubmitDTO.getAddressBookId());
        if(adress == null){
   
   
            throw new AddressBookBusinessException(MessageConstant.ADDRESS_BOOK_IS_NULL);
        }
        //购物车为空异常
        ShoppingCart shoppingCart = new ShoppingCart();
        shoppingCart.setUserId(BaseContext.getCurrentId());
        List<ShoppingCart> shoppingCartList = shoppingCartMapper.getById(shoppingCart);
        if
苍穹外卖项目 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()); } ``` ### 扩展知识点 除了上述基本逻辑外,还可以扩展一些其他功能,例如: - 添加日志记录,以便追踪删除操作的具体情况。 - 引入事务管理机制,确保删除菜品和对应口味的操作具有原子性。 - 在删除之前进行权限验证,确保用户有权限执行删除操作。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值