商家拒单业务

文章目录

概要

商家拒单是电子商务、外卖平台、在线零售等多个行业中可能出现的情况,指的是商家拒绝接受或完成某个订单。这种情况的发生可能由多种原因引起,同时也涉及到商家、平台和消费者的利益平衡。

需求分析以及接口设计

技术细节

1.Controller层:

@ApiOperation("拒单")
    @PutMapping("/rejection")
    public Result rejection(@RequestBody OrdersRejectionDTO ordersRejectDTO){
        log.info("接单,{}",ordersRejectDTO);
        orderService.rejection(ordersRejectDTO);
        return Result.success();
    }

2.Service层:

public void rejection(OrdersRejectionDTO ordersRejectionDTO) {
        //根据id查询该订单
        Orders order = orderMapper.getById(ordersRejectionDTO.getId());
        //查询该订单的状态
        Integer status = order.getStatus();
        if (status == null || status.equals(Orders.TO_BE_CONFIRMED)){
            throw new OrderBusinessException(MessageConstant.ORDER_STATUS_ERROR);
        }
        //获取到支付状态
        Integer payStatus = order.getPayStatus();
        if (payStatus == Orders.PAID) {
            //用户已支付,需要退款(略)

        }
        //更新订单(状态,取消原因,取消时间)
        Orders orders = new Orders();
        orders.setId(orders.getId());
        orders.setStatus(Orders.CANCELLED);
        orders.setRejectionReason(ordersRejectionDTO.getRejectionReason());
        orders.setCancelTime(LocalDateTime.now());
        orderMapper.update(orders);
    }

3.Mapper层:

<update id="update" parameterType="com.sky.entity.Orders">
        update orders
        <set>
            <if test="cancelReason != null and cancelReason!='' ">
                cancel_reason=#{cancelReason},
            </if>
            <if test="rejectionReason != null and rejectionReason!='' ">
                rejection_reason=#{rejectionReason},
            </if>
            <if test="cancelTime != null">
                cancel_time=#{cancelTime},
            </if>
            <if test="payStatus != null">
                pay_status=#{payStatus},
            </if>
            <if test="payMethod != null">
                pay_method=#{payMethod},
            </if>
            <if test="checkoutTime != null">
                checkout_time=#{checkoutTime},
            </if>
            <if test="status != null">
                status = #{status},
            </if>
            <if test="deliveryTime != null">
                delivery_time = #{deliveryTime}
            </if>
        </set>
        where id = #{id}
    </update>

效果展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值