开始

当商家发货后,订单的状态就变成了商家已发货。用户就可以点击确认收货。
image.png
确认收货,触发的事件
image.png
传入用户id和订单id
image.png
重新渲染数据
image.png

超时未付款就是交易关闭
如果订单超时就会处于交易关闭的状态。用户可以点击后面的删除订单。
image.png

交易关闭的就可以删除订单
image.png
删除订单
image.png

image.png

后端-确认收货

先从controller往下写
image.png

  1. @ApiOperation(value = "商家发货",notes = "商家发货",httpMethod ="GET" )
  2. @GetMapping("/confirmReceive")
  3. public IMOOCJSONResult confirmReceive(
  4. @ApiParam(name = "orderId",value = "订单id",required = true)
  5. @RequestParam String orderId,
  6. @ApiParam(name = "userId",value = "订单id",required = true)
  7. @RequestParam("userId") String userId
  8. ) throws Exception{
  9. return IMOOCJSONResult.ok();
  10. }

要判断用户的userid和订单id是否有关联关系
image.png

/**
     * 查询我的订单
     * @param userId
     * @param orderId
     * @return
     */
    public Orders queryMyOrder(String userId,String orderId);

实现类,订单是不能被删除的,查询订单状态是不是删除的状态
image.png

@Override
    public Orders queryMyOrder(String userId, String orderId) {
        Orders orders=new Orders();
        orders.setUserId(userId);
        orders.setId(orderId);
        orders.setIsDelete(YesOrNo.NO.type);

        return null;
    }
 @Autowired
    private OrdersMapper ordersMapper;

image.png

image.png

@Override
    public Orders queryMyOrder(String userId, String orderId) {
        Orders orders=new Orders();
        orders.setUserId(userId);
        orders.setId(orderId);
        orders.setIsDelete(YesOrNo.NO.type);

        return ordersMapper.selectOne(orders);
    }

MyOrdersController内增加方法checkUserOrder
image.png

 public IMOOCJSONResult checkUserOrder(String orderId, String userId) throws Exception{
        Orders order =myOrderService.queryMyOrder(userId, orderId);

        if(order==null){
            return IMOOCJSONResult.errorMsg("订单不存在!");
        }

        return IMOOCJSONResult.ok();
    }

先来验证订单和用户id的关系。
image.png

@ApiOperation(value = "商家发货",notes = "商家发货",httpMethod ="GET" )
    @GetMapping("/confirmReceive")
    public IMOOCJSONResult confirmReceive(
            @ApiParam(name = "orderId",value = "订单id",required = true)
            @RequestParam String orderId,
            @ApiParam(name = "userId",value = "订单id",required = true)
            @RequestParam("userId") String userId
            ) throws Exception{
        IMOOCJSONResult checkResult = checkUserOrder(userid, orderId);
        if(checkResult.getStatus()!= HttpStatus.OK.value()) {
            return checkResult;
        }


        return IMOOCJSONResult.ok();
    }

删除订单

用户删除的controller。代码和上面的确定收货的代码 基本一致。其实可以合成一个接口。但是不建议这么去做。这样代码的耦合度增加了。如果后续在确认收货和订单删除他们各自有自己的业务的话,这样代码会越来越多。耦合度也会越来越大。
image.png

 @ApiOperation(value = "用户订单删除",notes = "用户订单删除",httpMethod ="POST" )
    @PostMapping("/delete")
    public IMOOCJSONResult delete(
            @ApiParam(name = "orderId",value = "订单id",required = true)
            @RequestParam String orderId,
            @ApiParam(name = "userId",value = "订单id",required = true)
            @RequestParam("userId") String userId
    ) throws Exception{
        IMOOCJSONResult checkResult = checkUserOrder(userId, orderId);
        if(checkResult.getStatus()!= HttpStatus.OK.value()) {
            return checkResult;
        }


        return IMOOCJSONResult.ok();
    }

结束