黑马的苍穹外卖day09,关于第九天由于缺少商标文件导致不能用正常的业务代码逻辑来开发

1.关于业务流程被影响的功能有  用户的订单支付功能和取消订单功能,员工的取消订单和拒单功能  一共四个
2.订单支付功能代码
2.1controller
@PutMapping("/payment")
@ApiOperation("订单支付")
public Result<OrderPaymentVO> payment(@RequestBody OrdersPaymentDTO ordersPaymentDTO) throws Exception {
    log.info("订单支付:{}", ordersPaymentDTO);
    //下面这句注释的代码才是真正的业务逻辑,由于本项目缺少一些文件,所以直接采用修改订单状态来模拟支付成功
   /* OrderPaymentVO orderPaymentVO = orderService.payment(ordersPaymentDTO);
    log.info("生成预支付交易单:{}", orderPaymentVO);
    return Result.success(orderPaymentVO);*/
    orderService.paySuccess(ordersPaymentDTO.getOrderNumber());
    return Result.success();
}
2.2 serviceImpl
/**
 * 支付成功,修改订单状态
 *
 * @param outTradeNo
 */
@Transactional
public void paySuccess(String outTradeNo) {

    // 根据订单号查询订单
    Orders ordersDB = orderMapper.getByNumber(outTradeNo);

    // 根据订单id更新订单的状态、支付方式、支付状态、结账时间
    Orders orders = Orders.builder()
            .id(ordersDB.getId())
            .status(Orders.TO_BE_CONFIRMED)
            .payStatus(Orders.PAID)
            .checkoutTime(LocalDateTime.now())
            .build();

    orderMapper.update(orders);
}
3. 用户取消订单功能
2.1controller
@PutMapping("/cancel")
@ApiOperation("取消订单")
public Result cancelById(@RequestBody OrdersCancelDTO ordersCancelDTO) throws Exception {
    log.info("取消订单,ordersCancelDTO:{}",ordersCancelDTO);
    orderService.cancelById(ordersCancelDTO);
    return Result.success();
}
2.2serviceImpl
@Override
public void cancelById(OrdersCancelDTO ordersCancelDTO) {
    //获取订单id
    Long orderId = ordersCancelDTO.getId();
    Orders orderDB = orderMapper.getById(orderId);

    Orders orders = new Orders();

    if (orderDB.getPayStatus().equals(Orders.PAID)){
        //DOTO 调用微信支付退款接口,这段代码在真正的开发逻辑里需要加上
    /*weChatPayUtil.refund(
            orderDB.getNumber(), //商户订单号
            orderDB.getNumber(), //商户退款单号
            new BigDecimal(0.01),//退款金额,单位 元
            new BigDecimal(0.01));//原订单金额*/
        //支付状态修改为 退款,这条语句在真正的业务不用加上,需要等微信后台退款成功来调用接口才使用
        orders.setPayStatus(Orders.REFUND);
    }

    orders.setId(orderId);
    orders.setStatus(Orders.CANCELLED);
    orders.setCancelReason(ordersCancelDTO.getCancelReason());
    orders.setCancelTime(LocalDateTime.now());
    orderMapper.update(orders);
}
4.员工的取消订单
4.1controller
@PutMapping("/cancel")
@ApiOperation("取消订单")
public Result cancelById(@RequestBody OrdersCancelDTO ordersCancelDTO) throws Exception {
    log.info("取消订单,ordersCancelDTO:{}",ordersCancelDTO);
    orderService.cancelById(ordersCancelDTO);
    return Result.success();
}
4.2serviceImpl
@Override
public void cancelById(OrdersCancelDTO ordersCancelDTO) {
    //获取订单id
    Long orderId = ordersCancelDTO.getId();
    Orders orderDB = orderMapper.getById(orderId);

    Orders orders = new Orders();

    if (orderDB.getPayStatus().equals(Orders.PAID)){
        //DOTO 调用微信支付退款接口,这段代码在真正的开发逻辑里需要加上
    /*weChatPayUtil.refund(
            orderDB.getNumber(), //商户订单号
            orderDB.getNumber(), //商户退款单号
            new BigDecimal(0.01),//退款金额,单位 元
            new BigDecimal(0.01));//原订单金额*/
        //支付状态修改为 退款,这条语句在真正的业务不用加上,需要等微信后台退款成功来调用接口才使用
        orders.setPayStatus(Orders.REFUND);
    }

    orders.setId(orderId);
    orders.setStatus(Orders.CANCELLED);
    orders.setCancelReason(ordersCancelDTO.getCancelReason());
    orders.setCancelTime(LocalDateTime.now());
    orderMapper.update(orders);
}
5.员工的拒单功能
5.1controller
@PutMapping("/rejection")
@ApiOperation("拒单")
public Result rejectById(@RequestBody OrdersRejectionDTO ordersRejectionDTO) throws Exception {
    log.info("拒单,ordersRejectionDTO:{}",ordersRejectionDTO);
    orderService.rejectById(ordersRejectionDTO);
    return Result.success();
}
5.2serviceImpl
@Override
public void rejectById(OrdersRejectionDTO ordersRejectionDTO) throws Exception {
    //获取订单id
    Long orderId = ordersRejectionDTO.getId();
    Orders orderDB = orderMapper.getById(orderId);
    //当前订单的状态不为 待接单
    if (orderDB==null || !orderDB.getStatus().equals(Orders.TO_BE_CONFIRMED)) {
        throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);
    }

    Orders orders = new Orders();
    // 订单处于待接单状态下取消,需要进行退款

    if (orderDB.getPayStatus().equals(Orders.PAID)){
        //DOTO 调用微信支付退款接口,这段代码在真正的开发逻辑里需要加上
    /*weChatPayUtil.refund(
            orderDB.getNumber(), //商户订单号
            orderDB.getNumber(), //商户退款单号
            new BigDecimal(0.01),//退款金额,单位 元
            new BigDecimal(0.01));//原订单金额*/
        //支付状态修改为 退款,这条语句在真正的业务不用加上,需要等微信后台退款成功来调用接口才使用
        orders.setPayStatus(Orders.REFUND);
    }

    orders.setId(orderId);
    orders.setStatus(Orders.CANCELLED);
    orders.setRejectionReason(ordersRejectionDTO.getRejectionReason());
    orders.setCancelTime(LocalDateTime.now());
    orderMapper.update(orders);
}
6.说明

上面四个模块改完苍穹外卖的基本流程到第九天的内容为止是可以正常走下来的,唯一有点诟病的就是支付完成后,由于没有返回正确的数据,所以会停留在支付界面,这时候你手动关掉这个页面去个人中心查看订单的状态即可,如果有帮助的话请点点关注和点赞,若有还不懂的可以私聊我看看,这是我第一次写博客,如果有错请各位海涵。

  • 12
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
黑马程序员苍穹外卖项目中的Nginx配置文件可以根据具体需求进行配置。根据引用\[1\]中的描述,可以通过双击nginx.exe启动Nginx,并在http://localhost/访问前端页面。这意味着Nginx的配置文件应该包含有关前端页面的相关配置。另外,根据引用\[2\]中的描述,Nginx还可以用作反向代理和负载均衡,因此配置文件还应包含有关反向代理和负载均衡的相关配置。最后,根据引用\[3\]中的描述,苍穹外卖项目还需要与第三方配送公司进行对接和管理,因此配置文件还应包含有关与第三方配送公司对接的相关配置。综上所述,黑马程序员苍穹外卖项目的Nginx配置文件应包含前端页面的相关配置、反向代理和负载均衡的相关配置以及与第三方配送公司对接的相关配置。 #### 引用[.reference_title] - *1* [黑马程序员_Java项目实战《苍穹外卖》_Day01_开发环境搭建](https://blog.csdn.net/BallerWang9/article/details/131824385)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* *3* [最适合新手的SpringBoot+SSM项目《苍穹外卖》实战—(一)项目概述](https://blog.csdn.net/qq_20185737/article/details/131575898)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值