package com.ruoyi.system.domain.flash; import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; import java.math.BigDecimal; import java.util.Date; /** 独立闪送订单实体,不与餐饮订单或出租车订单共用状态。 */ @Data @TableName("flash_delivery_order") public class FlashDeliveryOrder { @TableId(type = IdType.AUTO) /** 主键 ID,数据库自增。 */ private Long id; /** 订单号,FD 前缀加 24 位随机大写串,用于展示与检索。 */ private String orderNo; /** 客户端请求幂等号,与 userId 共同建立唯一约束。 */ private String clientRequestId; /** 下单用户(寄件人)ID。 */ private Long userId; /** 创建订单时按收件手机号唯一匹配的普通用户;匹配后不再动态追溯。 */ private Long receiverUserId; /** 抢单前为空,原子抢单成功后绑定且不允许骑手主动放弃。 */ private Long riderId; /** 业务场景:HELP_SEND=帮送、HELP_PICKUP=帮取。 */ private String serviceType; /** 配送等级:NORMAL=普通、URGENT=一对一加急。 */ private String deliveryType; /** 用户下单选择的车型快照:1=机车,2=轿车。 */ private Integer vehicleType; /** 订单状态,取值见 FlashDeliveryStatus。 */ private String status; /** 用户申报的包裹类别和重量范围。 */ private String packageType; private Integer quantity; private String weightRange; /** 物品体积、尺寸等规格说明。 */ private String specification; /** NOW 为立即配送,SCHEDULED 为预约取件时段。 */ private String deliveryMode; /** 预约取件时间窗开始时间,仅 SCHEDULED 模式有值。 */ private Date scheduledPickupStartAt; /** 预约取件时间窗结束时间,仅 SCHEDULED 模式有值。 */ private Date scheduledPickupEndAt; /** 交付 PIN 只允许订单用户和平台读取,骑手响应必须剔除。 */ private Boolean pinRequired; /** 四位交付 PIN 明文,骑手送达时向收件人核对。 */ private String deliveryPinCode; /** 取件联系人和完整地址快照。 */ private String pickupName; private String pickupPhone; private String pickupAddress; private String pickupAddressDetail; private String pickupCity; private String pickupArea; private String pickupHandoffMethod; private BigDecimal pickupLongitude; private BigDecimal pickupLatitude; /** 收件联系人和完整地址快照。 */ private String deliveryName; private String deliveryPhone; private String deliveryAddress; private String deliveryAddressDetail; private String deliveryCity; private String deliveryArea; private String deliveryHandoffMethod; private BigDecimal deliveryLongitude; private BigDecimal deliveryLatitude; /** 服务端计算的路线结果;distanceSource 标识地图路线或降级直线距离。 */ private Integer distanceMeters; private String distanceSource; private Integer estimatedDurationSeconds; /** 最近一次定价(下单或待接单改址)的金额与计价配置快照;快照+距离恒可复算出金额,后台调价只影响之后的定价。 */ private Long amount; private String currency; /** 支付方式与主订单系统同域:4=现金、6=线下转账;闪送款项直达骑手,仅允许线下方式,下单时锁定。 */ private String payType; /** 下单时命中的运价配置 ID。 */ private Long pricingId; /** 下单时命中的运价配置版本。 */ private Integer pricingVersion; /** 命中运价的时段开始(HH:mm)。 */ private String pricingStartTime; /** 命中运价的时段结束(HH:mm)。 */ private String pricingEndTime; /** 起步距离(公里)。 */ private BigDecimal startingDistance; /** 起步价(整数 TWD)。 */ private Long startingFare; /** 距离计价步长(公里)。 */ private BigDecimal distance; /** 每个步长收取的运费(整数 TWD)。 */ private Long freight; /** 距离附加费(TWD),按超起步距离部分以每公里单价计算。 */ private Long distanceFee; /** 基础配送费(TWD),等于起步价加距离费。 */ private Long baseDeliveryFee; /** 加急费比例(百分比)。 */ private BigDecimal urgentRate; /** 最低加急费(TWD)。 */ private Long minimumUrgentFee; /** 加急费(TWD),URGENT 订单收取,普通配送为 0。 */ private Long urgentFee; /** 用户小费合计(TWD),待接单阶段可追加。 */ private Long tipAmount; /** 用户备注。 */ private String userNote; /** 订单条件更新版本号,用于记录并发状态变化次数。 */ private Integer version; /** 各履约节点的首次成功时间。 */ private Date acceptedAt; private Date pickedUpAt; private Date deliveredAt; private Date completedAt; private Date cancelledAt; /** 取消审计信息,操作人类型可为 USER 或 ADMIN。 */ private String cancelReason; private String cancelOperatorType; private Long cancelOperatorId; private Date createTime; private Date updateTime; }