跳到主要内容

售后架构

说明:此处取消订单均为订单状态处于确认付款之后确认收货之前

将取消订单作为售后的一种类型:取消订单表示用户拒收商品,需要展示订单相关信息

流程图

流程整理

取消订单流程(支持原路返回):用户选择取消订单-商家审核-商家确认收货-商家退款-完成

取消订单流程(不支持原路返回):用户取消订单-商家审核-商家确认收货-平台打款-完成

退货流程(支持原路退回):用户申请退货-商家审核-用户发货-商家确认收货-商家退款-完成

退货流程(不支持原路退回):用户申请退货-商家审核-用户发货-商家确认收货-平台确认打款-完成

换货流程:用户申请-商家审核-用户发货-商家确认收货-商家确认换新(新生成订单,订单默认为已付款状态)-完成

补发商品:用户申请-商家审核-商家确认发货(新生成订单,订单默认为已付款)-完成

取消订单流程图

image-20191216165055163

取消订单涉及退款流程,退款具体流程请查询退款流程图

退货流程图

image-20191216165416831

退货流程涉及到退款,退款具体流程请参考退款流程图

退款流程图

image-20191216163059082

换货流程

image-20191216172715778

补发商品流程

image-20191216173700625

类图

DO和VO类图

image-20191216182936738

状态/操作枚举

image-20191216184802707

售后业务模型

image-20191217150415555

退款业务模型

image-20191217150124292

数据结构

售后服务单基本信息(es_as_order)

字段类型说明索引
idint(10)主键
snvarchar(50)售后单号
order_snvarchar(50)订单编号
member_idint(10)用户ID
member_namevarchar(100)用户名
seller_idint(10)店铺id
seller_namevarchar(255)店铺名称
create_timeInt(20)创建时间
mobilevarchar(50)手机号
service_typevarchar(50)售后类型:
RETURN_GOODS-退货;
CHANGE_GOODS-换货;
SUPPLY_AGAIN_GOODS-补发货品;
ORDER_CANCEL-取消订单(订单确认付款且未收货之前)
service_statusvarchar(50)售后单状态:
APPLY-待审核
PASS-审核通过
REFUSE-审核拒绝
WAIT_FOR_MANUAL-待人工处理
STOCK_IN-入库
REFUNDING-退款中
REFUNDFAIL-退款失败
COMPLETE-完成
reasonvarchar(255)申请原因
apply_vouchersvarchar(255)申请凭证
problem_desctext问题描述
goods_jsontext售后商品信息
disabledvarchar(50)删除状态 DELETED:已删除 NORMAL:正常
audit_remarkvarchar(255)审核备注
stock_remarkvarchar(255)入库备注
refund_remarkvarchar(255)退款备注
close_reasonvarchar(255)关闭原因
return_addrvarchar(500)退货地址
new_order_snvarchar(50)新订单编号
create_channelvarchar(50)售后服务单创建渠道
NORMAL:正常渠道创建,
PINTUAN:拼团失败自动创建
字段类型说明索引
idint(10)主键
service_snvarchar(255)售后单号
imgvarchar(255)图片链接

申请售后服务退款相关信息表(es_as_refund)

主要用于取消订单、退货时使用,这两种方式需要进行退款操作

字段类型说明索引
idint(10)主键
service_snvarchar(255)售后服务单号
refund_pricedecimal(20,2)申请退款金额
agree_pricedecimal(20,2)同意退款金额
actual_pricedecimal(20,2)实际退款金额
refund_wayvarchar(255)退款方式(原路退回,线下支付)
account_typevarchar(255)账号类型
return_accountvarchar(255)退款账号
bank_namevarchar(255)银行名称
bank_account_numbervarchar(255)银行账户
bank_account_namevarchar(255)银行开户名
bank_deposit_namevarchar(255)银行开户行
pay_order_novarchar(255)订单支付方式返回的交易号
refund_timeint(20)退款时间

售后服务收货地址信息表(es_as_change)

主要是换货、补发商品时使用,这两种方式需要卖家重新发货

字段类型说明索引
idint(10)主键
service_snvarchar(50)售后服务单号
ship_namevarchar(50)收货人姓名
ship_addrvarchar(255)收货地址详细
province_idint(8)收货地址省份id
city_idint(8)收货地址城市id
county_idint(8)收货地址区县id
town_idint(8)收货地址城镇id
provincevarchar(255)收货地址省份
cityvarchar(255)收货地址城市
countyvarchar(255)收货地址区县
townvarchar(255)收货地址城镇
ship_mobilevarchar(50)收货人手机号

售后物流信息表(es_as_express)

退货、换货时使用,这两种方式需要买家将商品寄回卖家

字段类型说明索引
idint(10)主键
service_snvarchar(50)售后服务单号
courier_numbervarchar(255)物流单号
courier_company_idint(10)物流公司id
courier_companyvarchar(255)物流公司名称
ship_timeint(20)发货日期

售后商品表(es_as_goods)

字段类型说明索引
idint(10)主键
service_snvarchar(50)售后单号
goods_idint(10)商品id
sku_idint(10)商品skuid
ship_numint(10)发货数量
pricedecimal(20,2)商品成交价
return_numint(10)退还数量
storage_numint(10)入库数量
goods_namevarchar(255)商品名称
goods_snvarchar(255)商品编号
goods_imagevarchar(255)商品缩略图
spec_jsonvarchar(255)商品规格信息

售后退款单(es_refund)

字段类型说明索引
idint(10)主键
snvarchar(50)售后单号
order_snvarchar(50)订单编号
member_idint(8)用户ID
member_namevarchar(100)用户名
seller_idint(8)店铺id
seller_namevarchar(100)店铺名称
create_timeInt(20)创建时间
refund_wayvarchar(255)退款方式
account_typevarchar(255)退款账户类型
return_accountvarchar(255)退款账号
bank_namevarchar(255)银行名称
bank_account_numbervarchar(255)银行账号
bank_account_namevarchar(255)银行开户名
bank_deposit_namevarchar(255)银行开户行
mobilevarchar(50)手机号
refund_statusvarchar(50)退款单状态
APPLY-待退款
REFUNDING-退款中
REFUNDFAIL-退款失败
COMPLETE-完成
refund_pricedecimal(20,2)申请退款金额
refund_pointint(8)退还积分
payment_typevarchar(255)订单类型(在线支付,货到付款)
pay_order_novarchar(255)支付结果交易号
refund_fail_reasonvarchar(255)退款失败原因
refund_timeint(20)退款时间
agree_pricedecimal(20,2)商家同意退款金额
actual_pricedecimal(20,2)实际退款金额
goods_jsonlongtext售后商品信息
disabledvarchar(20)删除状态
DELETED:已删除
NORMAL:正常
create_channelvarchar(50)售后服务单创建渠道
NORMAL:正常渠道创建,
PINTUAN:拼团失败自动创建

售后日志(es_as_log)

字段类型说明索引
idint(10)主键
snvarchar(50)售后服务单编号
log_timeint(20)创建时间
log_detailtext详细信息
operatorvarchar(255)操作者

状态操作说明

流程是固定的,使用配置文件设置流程:

<?xml version="1.0" encoding="UTF-8"?>
<flows>
<!--取消订单 (订单付款之后,确认收货之前)-->
<flow name="ORDER_CANCEL">
<!--申请状态,商家可以审核-->
<status name="APPLY">
<allow>SELLER_AUDIT</allow>
</status>
<!--审核通过状态,商家可以入库-->
<status name="PASS">
<allow>STOCK_IN</allow>
</status>
<!--入库状态,商家可以退款-->
<status name="STOCK_IN">
<allow>SELLER_REFUND</allow>
</status>
<!--等待人工处理状态,管理员可以退款-->
<status name="WAIT_FOR_MANUAL">
<allow>ADMIN_REFUND</allow>
</status>
<!--异常状态 可以关闭售后服务-->
<status name="ERROR_EXCEPTION">
<allow>CLOSE</allow>
</status>
<!--关闭状态不能进行任何操作-->
<status name="CLOSED"/>
<!--审核未通过状态不能进行任何操作-->
<status name="REFUSE"/>
<!--完成状态不能进行任何操作-->
<status name="COMPLETED"/>
</flow>

<!--退货流程 -->
<flow name="RETURN_GOODS">
<!--申请状态,商家可以审核-->
<status name="APPLY">
<allow>SELLER_AUDIT</allow>
</status>
<!--审核通过状态,买家可以填写物流信息 -->
<status name="PASS">
<allow>FILL_LOGISTICS_INFO</allow>
</status>
<!--物流完善状态可以确认入库-->
<status name="FULL_COURIER">
<allow>STOCK_IN</allow>
</status>
<!--入库状态,商家可以退款-->
<status name="STOCK_IN">
<allow>SELLER_REFUND</allow>
</status>
<!--等待人工处理状态,管理员可以退款-->
<status name="WAIT_FOR_MANUAL">
<allow>ADMIN_REFUND</allow>
</status>
<!--异常状态 可以关闭售后服务-->
<status name="ERROR_EXCEPTION">
<allow>CLOSE</allow>
</status>
<!--关闭状态不能进行任何操作-->
<status name="CLOSED"/>
<!--审核未通过状态不能进行任何操作-->
<status name="REFUSE"/>
<!--完成状态不能进行任何操作-->
<status name="COMPLETED"/>
</flow>

<!--换货流程 -->
<flow name="CHANGE_GOODS">
<!--申请状态,商家可以审核-->
<status name="APPLY">
<allow>SELLER_AUDIT</allow>
</status>
<!--审核通过状态,买家可以填写物流信息 -->
<status name="PASS">
<allow>FILL_LOGISTICS_INFO</allow>
</status>
<!--物流完善状态可以确认入库-->
<status name="FULL_COURIER">
<allow>STOCK_IN</allow>
</status>
<!--异常状态 商家可以手动创建新订单也可以关闭售后服务单-->
<status name="ERROR_EXCEPTION">
<allow>CREATE_NEW_ORDER</allow>
<allow>CLOSE</allow>
</status>
<!--关闭状态不能进行任何操作-->
<status name="CLOSED"/>
<!--审核未通过状态不能进行任何操作-->
<status name="REFUSE"/>
<!--完成状态不能进行任何操作-->
<status name="COMPLETED"/>
</flow>

<!--补发商品流程 -->
<flow name="SUPPLY_AGAIN_GOODS">
<!--申请状态,商家可以审核-->
<status name="APPLY">
<allow>SELLER_AUDIT</allow>
</status>
<!--异常状态 商家可以手动创建新订单也可以关闭售后服务单-->
<status name="ERROR_EXCEPTION">
<allow>CREATE_NEW_ORDER</allow>
<allow>CLOSE</allow>
</status>
<!--关闭状态不能进行任何操作-->
<status name="CLOSED"/>
<!--审核未通过状态不能进行任何操作-->
<status name="REFUSE"/>
<!--完成状态不能进行任何操作-->
<status name="COMPLETED"/>
</flow>
</flows>

程序启动的时候加载配置文件,将售后单当前状态允许的操作放入缓存中,在使用时,调用校验方法校验是否允许操作。