|
|
|
@ -0,0 +1,205 @@
|
|
|
|
|
package com.sky.entity;
|
|
|
|
|
|
|
|
|
|
import lombok.AllArgsConstructor;
|
|
|
|
|
import lombok.Builder;
|
|
|
|
|
import lombok.Data;
|
|
|
|
|
import lombok.NoArgsConstructor;
|
|
|
|
|
import java.io.Serializable;
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
|
|
import java.time.LocalDateTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* Orders类,用于表示订单相关的实体信息,是整个系统中对订单数据进行存储、查询、更新以及业务流程处理等操作的核心数据载体,
|
|
|
|
|
* 涵盖了订单从基本属性(如订单号、下单用户、金额等)到不同阶段的状态信息(订单状态、支付状态等)以及与配送、取消、备注等相关的多方面关键内容,
|
|
|
|
|
* 在订单管理、交易流程跟踪、配送安排以及售后处理等诸多业务场景下起着至关重要的作用。
|
|
|
|
|
* 该类实现了Serializable接口,这使得它可以被序列化,从而能够在诸如网络传输(例如在客户端与服务器之间传递订单数据、不同系统间同步订单信息等)、
|
|
|
|
|
* 持久化存储(保存到数据库中以便后续查询、统计和操作)等场景下正常流转,保障数据的完整性和可复用性。
|
|
|
|
|
* 通过使用Lombok提供的多个注解,有效简化了代码编写过程中对于构造函数、Getter/Setter方法以及对象构建方式等部分的代码量。
|
|
|
|
|
* @Data注解自动生成常用的Getter、Setter、toString、equals和hashCode等方法;
|
|
|
|
|
* @Builder注解便于使用建造者模式来创建该类的对象,使对象创建过程更加清晰灵活;
|
|
|
|
|
* @NoArgsConstructor和@AllArgsConstructor注解分别生成无参构造函数和包含所有参数的构造函数,以满足不同业务场景下创建对象的需求。
|
|
|
|
|
*/
|
|
|
|
|
@Data
|
|
|
|
|
@Builder
|
|
|
|
|
@NoArgsConstructor
|
|
|
|
|
@AllArgsConstructor
|
|
|
|
|
public class Orders implements Serializable {
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单状态相关的常量定义,用于清晰表示订单所处的不同业务阶段,方便在代码中进行状态判断和业务逻辑处理,使代码的可读性更强。
|
|
|
|
|
* 以下是各常量对应的具体含义:
|
|
|
|
|
* 1待付款,表示用户已经提交了订单,但尚未完成支付操作,此时订单处于等待用户付款的状态,系统可能会根据业务规则设定一定的付款期限等相关处理;
|
|
|
|
|
* 2待接单,意味着订单已生成但商家还未确认接收该订单,通常用于外卖、服务预订等业务场景中商家处理订单的前置阶段;
|
|
|
|
|
* 3已接单,代表商家已经确认接收了订单,会开始准备商品或安排相应服务等后续操作,标志着订单进入商家处理流程;
|
|
|
|
|
* 4派送中,说明商品或服务已经准备好,正在送往用户指定地址的过程中,用户可以通过此状态跟踪配送进度等;
|
|
|
|
|
* 5已完成,即订单的整个交易流程顺利结束,用户已收到商品或服务且无其他后续问题,商家可以进行相应的订单完结处理,如统计销售数据等;
|
|
|
|
|
* 6已取消,代表订单由于某些原因(如用户主动取消、不符合下单条件等)被终止,系统需要根据具体的取消原因进行相应的后续处理,比如退款、释放库存等操作;
|
|
|
|
|
* 7退款,用于表示订单已经进行了退款操作,可能是因为用户申请退款且符合退款条件,后续涉及财务退款流程以及订单状态更新等相关处理。
|
|
|
|
|
*/
|
|
|
|
|
public static final Integer PENDING_PAYMENT = 1;
|
|
|
|
|
public static final Integer TO_BE_CONFIRMED = 2;
|
|
|
|
|
public static final Integer CONFIRMED = 3;
|
|
|
|
|
public static final Integer DELIVERY_IN_PROGRESS = 4;
|
|
|
|
|
public static final Integer COMPLETED = 5;
|
|
|
|
|
public static final Integer CANCELLED = 6;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 支付状态相关的常量定义,用于明确订单在支付方面所处的不同情况,便于在业务逻辑中针对不同支付状态进行相应处理,增强代码的可维护性和可读性。
|
|
|
|
|
* 具体含义如下:
|
|
|
|
|
* 0未支付,说明订单虽然已经生成,但用户还未完成支付动作,系统需要提示用户付款或者根据业务规则进行相应的超时等处理;
|
|
|
|
|
* 1已支付,代表用户已经成功完成了订单的支付操作,此时订单可以进入后续的商家处理、配送等流程;
|
|
|
|
|
* 2退款,意味着订单发生了退款情况,可能是用户申请退款且经过审核通过等原因,后续需要涉及财务相关的退款处理以及更新订单相关状态等操作。
|
|
|
|
|
*/
|
|
|
|
|
public static final Integer UN_PAID = 0;
|
|
|
|
|
public static final Integer PAID = 1;
|
|
|
|
|
public static final Integer REFUND = 2;
|
|
|
|
|
|
|
|
|
|
private static final long serialVersionUID = 1L;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单的唯一标识符,通常对应数据库中订单记录的主键,凭借这个id能够在整个系统中精准地定位到具体的某一笔订单,
|
|
|
|
|
* 便于进行订单信息的各种操作,如查询、修改、删除以及与其他业务逻辑相关的操作,是订单实体在系统内的重要标识依据,对于订单管理、订单状态跟踪等业务场景起着关键作用。
|
|
|
|
|
*/
|
|
|
|
|
private Long id;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单号,是用于唯一标识每一笔订单的字符串,在整个系统中通过这个订单号可以快速且准确地找到对应的订单,
|
|
|
|
|
* 它在与外部系统交互(如支付平台回调、物流配送对接等)、用户查看订单详情以及内部业务逻辑处理(如订单查询、关联订单相关业务操作等)等场景下,都是非常重要的标识信息,方便各环节准确识别具体的订单。
|
|
|
|
|
*/
|
|
|
|
|
private String number;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单状态,以整数形式表示订单当前所处的不同阶段,取值对应上面定义的订单状态常量(PENDING_PAYMENT、TO_BE_CONFIRMED等),
|
|
|
|
|
* 系统根据这个状态值来决定接下来要执行的业务流程,例如对于待付款状态的订单,会提醒用户付款;已接单状态则通知商家准备商品等,方便对订单的整个生命周期进行管理和控制。
|
|
|
|
|
*/
|
|
|
|
|
private Integer status;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 下单用户id,用于关联到具体下单的用户,通过这个id可以查询出该用户的相关信息(如用户名、联系方式等),也便于进行用户相关的订单统计分析(如查看某个用户的历史订单情况等),
|
|
|
|
|
* 在订单处理、用户订单管理等业务场景中,是建立订单与用户之间联系的重要标识,确保订单数据与对应的用户信息准确对应。
|
|
|
|
|
*/
|
|
|
|
|
private Long userId;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 地址id,用于关联到用户的收货地址信息,通过这个id可以获取到详细的收货地址(如省市区、详细街道地址、收货人等信息),
|
|
|
|
|
* 在订单派送、地址管理以及物流配送等业务场景中,是确定商品最终送达位置的关键标识,确保订单能够准确无误地送到用户指定的地点。
|
|
|
|
|
*/
|
|
|
|
|
private Long addressBookId;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 下单时间,使用LocalDateTime类型精确记录订单创建的时间点,这个时间信息对于统计订单的下单时间分布、分析业务高峰期、查看订单时效性等业务分析操作非常有帮助,
|
|
|
|
|
* 同时也可以作为订单处理流程中的时间参考依据,比如判断是否超过了付款期限等情况,有助于系统进行相关的时间敏感型业务处理。
|
|
|
|
|
*/
|
|
|
|
|
private LocalDateTime orderTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 结账时间,同样使用LocalDateTime类型来记录订单完成支付结算的时间,对于财务统计(如统计每日、每月的收款情况等)、订单处理流程跟踪(确定付款环节的具体时间)等业务场景有着重要作用,
|
|
|
|
|
* 它与下单时间等其他时间字段结合,可以清晰地展现订单从创建到完成支付这一过程的时间跨度以及具体时间节点。
|
|
|
|
|
*/
|
|
|
|
|
private LocalDateTime checkoutTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 支付方式,以整数形式表示用户选择的用于支付订单的具体途径,其中:
|
|
|
|
|
* 1表示微信支付,意味着用户通过微信平台提供的支付功能完成了订单付款;
|
|
|
|
|
* 2表示支付宝支付,即用户使用支付宝的支付服务来支付订单金额,这个字段方便系统对接相应的支付平台进行支付处理以及后续的支付记录统计分析等工作。
|
|
|
|
|
*/
|
|
|
|
|
private Integer payMethod;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 支付状态,以整数形式表示订单在支付方面的当前情况,取值对应上面定义的支付状态常量(UN_PAID、PAID、REFUND),
|
|
|
|
|
* 系统根据这个状态来决定是否需要进行支付提醒、是否启动退款流程等与支付相关的业务操作,便于对订单支付情况进行准确把控。
|
|
|
|
|
*/
|
|
|
|
|
private Integer payStatus;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 实收金额,使用BigDecimal类型来精确表示订单实际收到的金额数值,因为在涉及金额计算和记录时,需要保证精度和准确性,避免浮点数运算带来的精度丢失问题,
|
|
|
|
|
* 该金额是用户最终为订单支付的实际费用,对于财务核算、订单金额统计、与支付平台对账等业务操作是关键的数据依据。
|
|
|
|
|
*/
|
|
|
|
|
private BigDecimal amount;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 备注,是用户在下单时可以填写的一些额外说明信息,比如对商品的特殊要求(在外卖餐饮订单中)、配送时间的特殊期望、对商品的特殊备注等内容,
|
|
|
|
|
* 商家和配送人员可以根据这些备注信息来尽量满足用户的个性化需求,同时在订单处理和查看过程中,备注信息也有助于更全面地了解订单的具体情况,提升用户体验。
|
|
|
|
|
*/
|
|
|
|
|
private String remark;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 用户名,用于展示下单用户的名称信息,方便在订单相关的展示界面中让接收方(如商家、配送人员等)快速知晓是哪位用户下的订单,
|
|
|
|
|
* 同时也便于用户在查看自己的订单时,能够直观地确认订单归属,增强订单信息的可读性和辨识度。
|
|
|
|
|
*/
|
|
|
|
|
private String userName;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 手机号,记录下单用户的联系方式,在订单处理过程中,如果遇到问题(如配送地址不清楚、商品有疑问等情况),相关人员(如配送员、客服等)可以通过这个手机号与用户取得联系,
|
|
|
|
|
* 它是保障订单顺利完成以及进行用户沟通的重要信息,对于订单的配送、售后服务等环节起着关键作用。
|
|
|
|
|
*/
|
|
|
|
|
private String phone;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 地址,用于展示用户的详细收货地址信息,将收货地址以字符串形式呈现出来,方便相关人员(如配送员等)直接查看并准确找到送货地点,
|
|
|
|
|
* 与地址id关联获取的地址信息相对应,是在订单展示等场景下更直观呈现地址内容的一种方式,确保订单能够准确送达目的地。
|
|
|
|
|
*/
|
|
|
|
|
private String address;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 收货人,明确记录了接收商品的人员姓名,在配送环节,配送员可以通过这个收货人姓名来确认将商品交付给正确的对象,
|
|
|
|
|
* 是收货地址信息中很重要的一部分,对于保证商品准确送达以及避免配送错误等情况有着重要意义,提升订单配送的准确性。
|
|
|
|
|
*/
|
|
|
|
|
private String consignee;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单取消原因,用于记录订单被取消的具体缘由,比如是用户主动取消(可能因为改变主意、不需要商品了等原因),还是因为系统原因(如库存不足无法发货、不符合下单规则等)导致的取消,
|
|
|
|
|
* 这个字段有助于后续进行数据分析、处理退款事宜以及向用户反馈取消原因等业务操作,对于订单取消流程的管理和用户沟通非常重要。
|
|
|
|
|
*/
|
|
|
|
|
private String cancelReason;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单拒绝原因,在一些业务场景下(例如商家拒绝接单等情况),用于记录订单被拒绝的具体原因,可能是因为商家无法提供相应服务、商品缺货等原因,
|
|
|
|
|
* 通过记录这个原因,便于系统进行相应的后续处理,如通知用户、调整订单状态以及进行相关业务数据统计分析等操作。
|
|
|
|
|
*/
|
|
|
|
|
private String rejectionReason;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 订单取消时间,使用LocalDateTime类型精确记录订单被取消的时间点,对于统计订单取消的时间分布、分析取消订单的规律以及涉及退款等业务操作的时间参考等方面有着重要作用,
|
|
|
|
|
* 它与下单时间、结账时间等时间字段共同构成了订单时间线的一部分,有助于全面了解订单的整个生命周期情况。
|
|
|
|
|
*/
|
|
|
|
|
private LocalDateTime cancelTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 预计送达时间,使用LocalDateTime类型来记录预估的商品送达用户手中的时间点,在配送安排等业务场景中,这个时间信息可作为重要参考,
|
|
|
|
|
* 商家可以根据这个时间来合理规划配送任务,配送员也可以据此安排自己的送货顺序等,同时也方便用户知晓大概何时能收到商品,提升用户体验。
|
|
|
|
|
*/
|
|
|
|
|
private LocalDateTime estimatedDeliveryTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 配送状态,以整数形式表示商品配送的时间安排情况,其中:
|
|
|
|
|
* 1表示立即送出,意味着订单完成支付后,商家会尽快安排商品进行配送,无需用户指定具体的配送时间,按照正常的业务流程尽快发货;
|
|
|
|
|
* 0表示选择具体时间,即用户在下单时指定了希望商品在某个特定时间进行配送,商家需要根据用户的要求来安排相应的配送计划,这个字段便于系统区分不同的配送时间安排方式并进行相应的配送业务处理。
|
|
|
|
|
*/
|
|
|
|
|
private Integer deliveryStatus;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 送达时间,使用LocalDateTime类型精确记录商品实际送达用户手中的时间点,对于统计配送时效、分析配送效率以及进行订单完成情况确认等业务操作有着重要作用,
|
|
|
|
|
* 它与预计送达时间对比,可以评估配送是否按时完成等情况,是衡量配送服务质量的重要依据之一。
|
|
|
|
|
*/
|
|
|
|
|
private LocalDateTime deliveryTime;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 打包费,以整数形式表示该订单的打包费用,在一些商品需要特殊包装或者商家对打包服务单独收费的业务场景下,这个字段记录了相应的打包费用金额,
|
|
|
|
|
* 它是订单总金额的一部分,对于财务统计、费用明细展示以及与用户确认最终费用等业务操作有着重要作用,确保费用计算准确透明。
|
|
|
|
|
*/
|
|
|
|
|
private int packAmount;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 餐具数量,用于记录用户在下单时所选择的餐具数量,比如在餐饮外卖等业务场景下,用户可以根据实际用餐人数等因素选择需要的餐具份数,
|
|
|
|
|
* 该数量信息对于商家准备餐具、配送餐具以及可能涉及的餐具收费等业务操作提供了明确的数据依据,确保满足用户需求同时合理安排相关资源。
|
|
|
|
|
*/
|
|
|
|
|
private int tablewareNumber;
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
* 餐具数量状态,以整数形式表示餐具数量的选择方式,其中:
|
|
|
|
|
* 1表示按餐量提供,意味着餐具数量是根据订单中商品的餐量情况自动匹配提供的,无需用户手动选择具体数量,一般按照一定的业务规则来确定;
|
|
|
|
|
* 0表示选择具体数量,即用户自己明确指定了需要的餐具具体份数,系统按照用户所选数量进行相应安排,这个字段便于系统区分不同的餐具数量确定方式并进行相应处理。
|
|
|
|
|
*/
|
|
|
|
|
private Integer tablewareStatus;
|
|
|
|
|
}
|