退款文档.md 8.6 KB

1. 退款介绍

1.1 退款流程图

img

2. 数据库实体

2.1 OrderRefund

买家可以对交易下的订单发起退款操作,一次可选择一个订单退款,也可以选择一个订单下的单个商品退款。并且,一个订单只允许发起一次退款维权,单个商品退款可选择退款数量。 无论退款最终是成功还是失败,下一次都不能再次发起。

2.2.1 退款单表结构

/**
 * 记录ID
 */
@TableId
private Long refundId;
/**
 * 退款编号
 */
private String refundSn;
/**
 * 店铺ID
 */
private Long shopId;
/**
 * 买家ID
 */
private String userId;
/**
 * 订单ID
 */
private Long orderId;
/**
 * 退款单类型(1:整单退款,2:单个物品退款)
 */
private Integer refundType;
/**
 * 订单项ID
 */
private Long orderItemId;
/**
 * 退货数量(0:为全部订单项)
 */
private Integer goodsNum;
/**
 * 退款金额
 */
private Double refundAmount;
/**
 * 申请类型:1,仅退款,2退款退货
 */
private Integer applyType;
/**
 * 是否接收到商品(1:已收到,0:未收到)
 */
private Boolean isReceiver;
/**
 * 申请原因
 */
private String buyerReason;
/**
 * 申请说明
 */
private String buyerDesc;
/**
 * 联系方式
 */
private String buyerMobile;
/**
 * 文件凭证json
 */
private String photoFiles;
/**
 * 处理退款状态:(1.买家申请 2.卖家接受 3.买家发货 4.卖家收货 5.退款成功 6.买家撤回申请 7.商家拒绝 -1.退款关闭)详情见ReturnMoneyStsType
 */
private Integer returnMoneySts;
/**
 * 拒绝原因
 */
private String rejectMessage;
/**
 * 卖家备注
 */
private String sellerMsg;
/**
 * 申请时间
 */
private Date applyTime;
/**
 * 受理时间
 */
private Date handelTime;
/**
 * 发货时间
 */
private Date shipTime;
/**
 * 收货时间
 */
private Date receiveTime;
/**
 * 撤销时间
 */
private Date cancelTime;
/**
 * 退款时间
 */
private Date refundTime;
/**
 * 决定时间
 */
private Date decisionTime;
/**
 * 更新时间
 */
private Date updateTime;
/**
 * 拒绝时间
 */
private Date rejectTime;

由于字段过多,我们进行简单的切块分类

2.2.2 基础字段

字段 类型 备注说明
refundId Long 记录ID
refundSn String 退款编号
shopId Long 店铺ID(关联店铺表)
userId String 买家ID(关联用户表)
orderId Long 订单ID(关联订单表)
refundType Integer 退款单类型(1:整单退款,2:单个物品退款)
orderItemId Long 订单项ID(单个物品退款有效)
goodsNum Integer 退货数量(单个物品退款有效,0:为全部数量)
refundAmount Double 退款金额

说明:退款可选择两种方式,即:整个单退款、单个物品退款,所以需要通过三个字段维护 refundType orderItemId goodsNum,单个物品退款可选择退款数量。

2.2.3 买家申请字段

界面如下:

img

字段如下:

字段 类型 备注说明
applyType Integer 申请类型:1,仅退款,2退款退货
isReceiver String 是否接收到商品(1:已收到,0:未收到)
buyerReason String 退款原因
buyerDesc String 买家退款申请说明
buyerMobile String 联系方式(手机号码)
photoFiles String 图片举证数组,以逗号分隔

退款原因:

仅退款-未收到货申请原因 ​ 11(质量问题) ​ 12(拍错/多拍/不喜欢) ​ 13(商品描述不符) ​ 14(假货), 15(商家发错货) ​ 16(商品破损/少件) ​ 17(其他) 仅退款-已收到货申 ​ 51(多买/买错/不想要) ​ 52(快递无记录) ​ 53(少货/空包裹) ​ 54(未按约定时间发货) ​ 55(快递一直未送达) ​ 56(其他) 退货退款-申请原因 ​ 101(商品破损/少件) ​ 102(商家发错货) ​ 103(商品描述不符) ​ 104(拍错/多拍/不喜欢) ​ 105(质量问题) ​ 107(其他)

3.3.4 状态字段

字段 类型 备注说明
returnMoneySts Integer 处理退款状态:(1.买家申请 2.卖家接受 3.买家发货 4.卖家收货 5.退款成功 6.买家撤回申请 7.商家拒绝 -1.退款关闭)详情见ReturnMoneyStsType
rejectMessage String 拒绝原因(如果卖家不同意退款,可以说明拒绝原因)
sellerMsg String 卖家备注
applyTime Date 申请时间,对应退款状态1
handelTime Date 受理时间,对应退款状态2
shipTime Date 发货时间,对应退款状态3
receiveTime Date 收货时间,对应退款状态4
cancelTime Date 撤销时间,对应退款状态6
refundTime Date 退款时间,对应退款状态5
decisionTime Date 决定时间,对应退款状态5
rejectTime Date 拒绝时间,对应退款状态7
updateTime Date 更新时间

2.2 RefundDelivery

收货地址界面如下:

1566788134396

买家填写退货信息:

1008612

字段如下:

退款退货物流信息,当买家选择退款并退货时,并且卖家同意退货后,买家需要提填写退货快递的物流信息。

/**
 * 退货物流信息id
 */
@TableId
private Long refundDeliveryId;
/**
 * 店铺id
 */
private Long shopId;
/**
 * 用户id
 */
private String userId;
/**
 * 退款编号
 */
private String refundSn;
/**
 * 物流公司id
 */
private Long deyId;
/**
 * 物流公司名称
 */
private String deyName;
/**
 * 物流编号
 */
private String deyNu;
/**
 * 收件人姓名(卖家)
 */
private String receiverName;
/**
 * 收件人手机(卖家)
 */
private String receiverMobile;
/**
 * 收件人座机(卖家)
 */
private String receiverTelephone;
/**
 * 收件人邮政编码(卖家)
 */
private String receiverPostCode;
/**
 * 收件人地址(卖家)
 */
private String receiverAddr;
/**
 * 发送人手机号码(买家)
 */
private String senderMobile;
/**
 * 描述(买家)
 */
private String senderRemarks;
/**
 * 图片凭证,快递单(买家)
 */
private String imgs;
/**
 * 创建时间
 */
private Date createTime;
  1. 物流字段 deyId deyName deyNu
  2. 卖家字段 receiverName receiverMobile receiverTelephone receiverPostCode receiverAddr
  3. 买家字段 senderMobile senderRemarks imgs

2.3 RefundOrderSettlement

退款结算表,用于记录退款的结算记录

/**
 * 支付结算单据id
 */
@TableId
private Long settlementId;
/**
 * 订单编号
 */
private String orderNumber;
/**
 * 订单支付单号
 */
private String orderPayNo;
/**
 * 退款订单编号
 */
private String refundSn;
/**
 * 支付方式(1:微信支付 2支付宝支付)
 */
private Integer payType;
/**
 * 支付名称
 */
private String payTypeName;
/**
 * 退款金额
 */
private Double refundAmount;
/**
 * 订单总额
 */
private Double orderTotalAmount;
/**
 * 用户ID
 */
private String userId;
/**
 * 创建时间
 */
private Date createTime;
/**
 * 更新时间
 */
private Date updateTime;
/**
 * 版本号
 */
private Integer version;
/**
 * 支付状态(1:申请中 2:已完成 -1失败)
 */
private Integer payStatus;
/**
 * 是否清算(0:否 1:是)
 */
private Integer isClearing;
/**
 * 清算时间
 */
private Date clearTime;
  1. isClearing clearTime 两个字段暂时未使用