1.行驶中,车辆故障异常处理,添加订单故障状态字段,
并修改 订单支付金额为0 ,将状态修改成9待评价。
4个文件已修改
81 ■■■■■ 已修改文件
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/XpOrderDetailVO.java 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderCancelService.java 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderCancelServiceImpl.java 16 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java 58 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/model/vo/XpOrderDetailVO.java
@@ -21,6 +21,10 @@
@ApiModel(value = "订单详情VO", description = "订单详情响应对象")
public class XpOrderDetailVO {
    @ApiModelProperty(value = "是否能取消 false/true")
    private Boolean cancelShow;
    // ========== 基础信息 ==========
    @ApiModelProperty(value = "订单id")
    private Long id;
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/IXpOrderCancelService.java
@@ -3,6 +3,8 @@
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.api.model.order.XpOrderCancel;
import java.util.List;
/**
 * <p>
 * 订单取消 服务类
@@ -13,4 +15,5 @@
 */
public interface IXpOrderCancelService extends IService<XpOrderCancel> {
    List<XpOrderCancel> userFindListByOrderId(Long orderId);
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderCancelServiceImpl.java
@@ -1,10 +1,13 @@
package com.xiaopeng.order.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.xiaopeng.api.model.order.XpOrderCancel;
import com.xiaopeng.order.mapper.XpOrderCancelMapper;
import com.xiaopeng.order.service.IXpOrderCancelService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
import java.util.List;
/**
 * <p>
@@ -17,4 +20,17 @@
@Service
public class XpOrderCancelServiceImpl extends ServiceImpl<XpOrderCancelMapper, XpOrderCancel> implements IXpOrderCancelService {
    @Override
    public List<XpOrderCancel> userFindListByOrderId(Long orderId){
        LambdaQueryWrapper<XpOrderCancel> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(XpOrderCancel::getDeleted,0);
        queryWrapper.eq(XpOrderCancel::getOrderId,orderId);
        queryWrapper.eq(XpOrderCancel::getCancelSource,1);
        return super.list(queryWrapper);
    }
}
xp-robotaxi-order-boot/src/main/java/com/xiaopeng/order/service/impl/XpOrderServiceImpl.java
@@ -1633,6 +1633,7 @@
            redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 0, 24L, TimeUnit.HOURS);
            return;
        }
        /*
        order.setStatus(0);
        order.setAppUserId(null);
        baseMapper.updateById(order);
@@ -1643,7 +1644,7 @@
        xpOrderCancel.setCancelSource(1);
        xpOrderCancel.setCancelReason("用户取消订单");
        xpOrderCancelService.save(xpOrderCancel);
        */
        // 移除mongo数据
        xpPricingClient.deleteXpGeoQueryEntity(order.getId().toString());
@@ -1989,6 +1990,15 @@
        this.updateById(xpOrder);
         //结束行程,修改状态和计算费用
        this.endTrip(xpOrder.getId(),appUserId.toString());
        //将支付金额修改成0 并将状态修改成 订单状态9
        XpOrder xpOrder1 = new XpOrder();
        xpOrder1.setId(xpOrder.getId());
        xpOrder1.setPayMoney(BigDecimal.ZERO);
        xpOrder1.setStatus(OrderStatusEnum.PENDING_PAYMENT.getCode());
        xpOrder1.setUpdateTime(LocalDateTime.now());
        baseMapper.updateById(xpOrder1);
        redisService.setCacheObject("ORDER_STATUS:" + xpOrder.getId(), xpOrder1.getStatus(), 24L, TimeUnit.HOURS);
        return R.ok();
    }
@@ -2874,26 +2884,20 @@
        XpOrder order = this.getById(dto.getOrderId());
        order.setStatus(9);
        order.setAppUserId(null);
        if(order.getCarAbnormal()){//是故障单 支付金额未0 @todo yyy 这里应该有问题
            order.setPayMoney(BigDecimal.ZERO);
        }else{
            if(order.getCouponId()!=null){
                UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
                useUserCouponDto.setUserCouponId(order.getCouponId());
                R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
                if(decimalR.getCode()==200){
                    order.setCouponMoney(decimalR.getData());
                    if(order.getCouponMoney().compareTo(order.getOrderMoney())>0){
                        order.setPayMoney(BigDecimal.ZERO);
                        order.setCouponMoney(order.getOrderMoney());
                    }else {
                        order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
                    }
        if(order.getCouponId()!=null){
            UseUserCouponDto useUserCouponDto = new UseUserCouponDto();
            useUserCouponDto.setUserCouponId(order.getCouponId());
            R<BigDecimal> decimalR = xpAppUserCouponClient.useUserCoupon(useUserCouponDto);
            if(decimalR.getCode()==200){
                order.setCouponMoney(decimalR.getData());
                if(order.getCouponMoney().compareTo(order.getOrderMoney())>0){
                    order.setPayMoney(BigDecimal.ZERO);
                    order.setCouponMoney(order.getOrderMoney());
                }else {
                    order.setPayMoney(order.getOrderMoney().subtract(decimalR.getData()));
                }
            }
        }
        baseMapper.updateById(order);
        redisService.setCacheObject("ORDER_STATUS:" + order.getId(), 9, 24L, TimeUnit.HOURS);
        return R.ok();
@@ -3458,9 +3462,27 @@
            xpOrder.setAppUserId(null);
            this.updateById(xpOrder);
        }
        Boolean cancelShow = true; //是否能取消行程
        xpOrderDetailVO.setCancelShow(cancelShow);
        return xpOrderDetailVO;
    }
    /**
     * 取消行程:若处于“送驾中”且离目的地小于10分钟路程(后台配置),【取消行程】按钮应置灰;
     * 修改行程:
     * 1. 当前剩余里程 < 800米 (后台配置)或 剩余时间 < 5分钟(后台配置)(以先到者为准),禁止修改,按钮置灰。
     * 2. 单次行程最多允许修改 2次 (后台配置)目的地,防恶意高频调用
     * @return
     */
    private Boolean isCancelShow(){
        return true;
    }
    @Override
    public void changeAmount(Long id, BigDecimal amount) {
        if (Objects.isNull(id)) {