电商系统的售后模块设计

文章目录

    • 售后单实体
      • 方案一
      • 方案二
    • 服务类型
        • 可选售后服务判断规则
    • 退款类型
    • 售后截止时间
    • 金币和优惠券如何返还
    • 买家端订单列表的“售后按钮”逻辑说明
      • 服务端处理逻辑
      • 买家端操作“售后按钮”页面跳转逻辑
    • 商家管理后台订单列表的“售后处理”逻辑说明
      • 服务端处理逻辑
      • 商家端操作“售后处理”的文字按钮页面跳转逻辑
    • 销售子单的售后状态
      • 售后状态流转图
    • 销售子单的退款状态
      • 退款状态流转图
    • 销售子单的退货状态
      • 退货状态流转图
    • 售后单状态
      • 实物+线上+非预售+非定制+非拼单+快递的业务模式下
        • 申请退款/退货,买家移动端销售子单的售后按钮显示名称推演
        • 申请换货,买家移动端销售子单的售后按钮显示名称推演
        • 申请退款/退货,商家管理后台PC端的销售子单的售后处理显示名称推演
        • 申请换货,商家管理后台PC端的销售子单的售后处理显示名称推演
        • 仅退款的退款单的状态流转图
        • 退货退款的退款单的状态流转图
        • 换货单的状态流转图
      • 服务+线上+非预售+非定制+非拼单+线上/到店/上门的业务模式下
      • 虚拟+线上+非预售+非定制+非拼单+线上的业务模式下
      • 实物+线上+非预售+非定制+非拼单+自提的业务模式下
        • 仅退款的退款单的状态流转图
        • 退货退款的退款单的状态流转图
        • 换货单的状态流转图
    • 售后原因
      • 实物+线上+非预售+非定制+非拼单+快递的业务模式下
        • 仅退款原因
        • 退货退款原因
        • 换货原因
    • 售后系统设计更为简单的方案
      • 1、商品可否售后设置
      • 2、销售子单保留“售后状态”,去掉“退款状态”和“退货状态”
      • 3、只允许一次成功售后
      • 4、去掉售后协商历史,售后申请取消或者拒绝就直接结束

售后单实体

方案一

在这里插入图片描述

方案二

在这里插入图片描述

服务类型

分为“仅退款”、“退货退款”

可选售后服务判断规则

  1. 买家付款后,卖家发货前,买家只能申请退款,且不允许选择商品数量,不允许编辑退款金额

  2. 卖家发货后,买家可以申请退款、退货、换货,且退货/换货允许选择商品数量

退款类型

退款类型分为:售中、售后
退款行为发生买家收货或者服务之前,则称之为“售中”的退款行为,发生在买家收货或者服务之后,则称为“售后”的退款行为

售后截止时间

买家确认收货后,根据收货时间+7天(后台可配置)计算得到售后截止时间

金币和优惠券如何返还

  • 买家用于抵扣的金币,根据抵扣金额折算成金币返还到买家的金币账户

  • 买家用于抵扣的无偿优惠券付款后不返还,付款前取消订单可以返还

  • 买家用于抵扣的有偿优惠券的抵扣金额折算成金币返还到买家的金币账户

买家端订单列表的“售后按钮”逻辑说明

服务端处理逻辑

在这里插入图片描述

买家端操作“售后按钮”页面跳转逻辑

在这里插入图片描述

商家管理后台订单列表的“售后处理”逻辑说明

服务端处理逻辑

在这里插入图片描述

商家端操作“售后处理”的文字按钮页面跳转逻辑

在这里插入图片描述

销售子单的售后状态

  • 订单付款成功后,售后状态存“可以售后”

  • 生成订单时,售后状态存“无需售后”

  • 售后取消成功后,需要判断子单的售后截止时间是否到期,到期则将子单的售后状态改为“售后关闭”,否则将子单的售后状态存为“可以售后”

  • 生成售后单后,关联销售子单的售后状态存“售后中”

售后状态流转图

销售子单的退款状态

  • 订单付款成功后,退款状态存“未退款”

  • 生成订单时,退款状态存“无需退款”

退款状态流转图

销售子单的退货状态

  • 订单付款成功后,退货状态存“无需退货”

  • 生成订单时,退货状态存“无需退货”

退货状态流转图

售后单状态

实物+线上+非预售+非定制+非拼单+快递的业务模式下

申请退款/退货,买家移动端销售子单的售后按钮显示名称推演

主单销售状态子单销售状态售后按钮售后状态退款状态退货状态备注
等待买家付款待付款无需售后无需退款无需退货允许取消订单。
等待商家发货待发货申请售后可以售后未退款无需退货允许申请退款,只能全额退款,不允许选择商品数量,不允许编辑退款金额。
等待商家发货待发货显示进行中的退款单状态售后中未退款无需退货已经申请退款。
等待商家发货待发货申请售后可以售后未退款无需退货买家取消了退款。业务逻辑说明:售后取消成功后,同步将关联销售子单的售后状态存为“可以售后”。
订单关闭退款成功已全额退款售后完成已全额退款无需退货已完成退款。
等待买家收货已发货申请售后可以售后未退款未退货允许申请退款、退货、换货,退货/换货允许选择商品数量
等待买家收货已发货显示进行中的退款单状态售后中未退款未退货已经申请退货(部分退货)
等待买家收货已发货申请售后可以售后已部分退款已部分退货已完成退货
等待买家收货已发货显示进行中的退款单状态售后中已部分退款已部分退货再次申请退货,选择余下的商品数量
订单关闭退款成功已全额退款售后完成已全额退款已全部退货已完成退货。业务逻辑说明:买家端请求订单详情数据时,判断子单售后状态为“售后完成”,则表示子单需要显示售后按钮,按钮名称为“已全额退款”,并且要获取关联售后单的ID返回给前端。(前端判断售后状态为“售后完成”,售后单ID多个,则打开售后单列表,如果售后单ID仅1个,则打开售后详情)
交易成功已收货申请售后可以售后已部分退款已部分退货部分退货后,余下商品买家确认收货了
交易成功已收货显示进行中的退款单状态售后中已部分退款已部分退货再次申请退货,又选择部分数量
交易成功已收货已部分退款售后关闭已部分退款已部分退货已完成退货,且售后截止时间到期。
交易成功已收货售后关闭未退款未退货未申请过退款,且售后截止时间到期

申请换货,买家移动端销售子单的售后按钮显示名称推演

主单销售状态子单销售状态售后按钮售后状态退款状态退货状态备注
等待买家收货已发货申请售后可以售后未退款未退货允许申请退款、退货、换货,退货/换货允许选择商品数量
等待买家收货已发货显示进行中的换货单状态售后中未退款未退货已经申请换货
等待买家收货已发货申请售后可以售后未退款未退货已完成换货
等待买家收货已发货显示进行中的换货单状态售后中已部分退款已部分退货部分退款后,再申请换货
等待买家收货已发货申请售后可以售后已部分退款已部分退货已完成换货
交易成功已收货已部分退款售后关闭已部分退款已部分退货已完成换货,且售后截止时间到期
交易成功已收货售后关闭未退款未退货已完成换货,且售后截止时间到期

申请退款/退货,商家管理后台PC端的销售子单的售后处理显示名称推演

主单销售状态子单销售状态售后处理售后状态退款状态退货状态备注
等待买家付款待付款无需售后无需退款无需退货允许取消订单
等待商家发货待发货可以售后未退款无需退货允许申请退款,只能全额退款,不允许选择商品数量,不允许编辑退款金额
等待商家发货待发货显示进行中的退款单状态售后中未退款无需退货已经申请退款
等待商家发货待发货可以售后未退款无需退货买家取消了退款
订单关闭退款成功已全额退款售后完成已全额退款无需退货已完成退款
等待买家收货已发货可以售后未退款未退货允许申请退款、退货、换货,退货/换货允许选择商品数量
等待买家收货已发货显示进行中的退款单状态售后中未退款未退货已经申请退货(部分退货)
等待买家收货已发货已部分退款可以售后已部分退款已部分退货已完成退货
等待买家收货已发货显示进行中的退款单状态售后中已部分退款已部分退货再次申请退货,选择余下的商品数量
订单关闭退款成功已全额退款售后完成已全额退款已全部退货已完成退货
交易成功已收货已部分退款可以售后已部分退款已部分退货部分退货后,余下商品买家确认收货了
交易成功已收货显示进行中的退款单状态售后中已部分退款已部分退货再次申请退货,又选择部分数量
交易成功已收货已部分退款售后关闭已部分退款已部分退货已完成退货,且售后截止时间到期
交易成功已收货售后关闭未退款未退货未申请过退款,且售后截止时间到期

申请换货,商家管理后台PC端的销售子单的售后处理显示名称推演

主单销售状态子单销售状态售后处理售后状态退款状态退货状态备注
等待买家收货已发货可以售后未退款未退货允许申请退款、退货、换货,退货/换货允许选择商品数量
等待买家收货已发货显示进行中的换货单状态售后中未退款未退货已经申请换货
等待买家收货已发货可以售后未退款未退货已完成换货
等待买家收货已发货显示进行中的换货单状态售后中已部分退款已部分退货部分退款后,再申请换货
等待买家收货已发货已部分退款可以售后已部分退款已部分退货已完成换货
交易成功已收货已部分退款售后关闭已部分退款已部分退货已完成换货,且售后截止时间到期
交易成功已收货售后关闭未退款未退货已完成换货,且售后截止时间到期

仅退款的退款单的状态流转图

在这里插入图片描述

退货退款的退款单的状态流转图

在这里插入图片描述

换货单的状态流转图

在这里插入图片描述

服务+线上+非预售+非定制+非拼单+线上/到店/上门的业务模式下

  • 不可以退货和换货

  • 子单在【待服务】和【待确认】状态下,允许买家申请退款

  • 服务商品只有可否退款开关,没有可否退货和可否换货开关

虚拟+线上+非预售+非定制+非拼单+线上的业务模式下

  • 不可以申请售后

实物+线上+非预售+非定制+非拼单+自提的业务模式下

仅退款的退款单的状态流转图

在这里插入图片描述

退货退款的退款单的状态流转图

在这里插入图片描述

换货单的状态流转图

在这里插入图片描述

售后原因

实物+线上+非预售+非定制+非拼单+快递的业务模式下

仅退款原因

1、不喜欢/不想要

2、空包裹

3、快递/物流一直未送到

4、快递/物流无跟踪记录

5、货物破损已拒签

退货退款原因

1、7天无理由退货

2、商品描述的与实物不符合

3、做工质量问题

4、少件/漏发

5、包装/商品破损、污渍

6、假冒品牌

7、卖家发错货

换货原因

1、7天无理由换货

2、商品质量问题

3、包装/商品破损、污渍

4、卖家发错货


售后系统设计更为简单的方案

1、商品可否售后设置

注意:这些设置并不是用于判断有哪些可选售后服务

  • 方案一:商品设置可否退款,可否退货,可否换货      推荐
  • 方案二:设置商品可否售后,那么售后就包括了退款、退货、换货

2、销售子单保留“售后状态”,去掉“退款状态”和“退货状态”

售后状态:无需售后,售后中,可以售后,售后关闭,售后完成

  • 无需售后,不要显示售后按钮
  • 售后中,要售后按钮,文案显示进行中的售后单状态
  • 可以售后,要售后按钮,文案显示“申请售后”,点击打开【选择售后服务】界面,可选售后服务有哪些-需要结合可选售后服务判断规则和商品自身的售后设置来判断
  • 售后关闭,不要显示售后按钮,售后截止时间到期将“可以售后”改成“售后关闭”
  • 售后完成,要售后按钮,显示已完成的售后单状态,点击打开已完成的售后单详情

3、只允许一次成功售后

  • 申请退款时,退款金额可以编辑,只允许存在一条“退款成功”的记录,也就是说无论全额退款还是部分退款,退款成功后不可再发起退款,退款成功后,销售子单的售后状态为“售后完成”

  • 申请退货时,允许选择退货数量,只允许存在一条“退货成功”的记录,也就是说无论全部退货还是部分退货,退货成功后不可再发起售后,退货成功后,销售子单的售后状态为“售后完成”

  • 申请换货时,允许选择换货数量,只允许存在一条“换货成功”的记录,也就是说无论全部换货还是部分换货,换货成功后不可再发起售后,换货成功后,销售子单的售后状态为“售后完成”

4、去掉售后协商历史,售后申请取消或者拒绝就直接结束

  • 售后申请被取消后,申请单就结束了,售后状态改为“可以售后”,允许再次申请售后
  • 售后申请被拒绝后,申请单就结束了,售后状态改为“可以售后”,允许再次申请售后

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/335716.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Gradle技巧–显示buildscript依赖性

在Gradle中如何显示和分析buildscript依赖项(例如插件)的简单方法 介绍 这是我的Gradle技巧迷你系列的第三部分,该系列与可视化和依赖性分析有关。 在第一篇文章中,我介绍了如何显示多项目构建中所有子项目的依赖关系的方法。 在…

任意采样率转16K采样率

import osdef OtherTo16bit(Path, data):InPath Path \\ dataOutPath os.getcwd() \\16home\\ data.split(".")[0] ".wav"os.system(ffmpeg -i InPath -acodec pcm_s16le OutPath)# path定义要获取的文件名称的目录(C盘除外&#…

python中元组和列表转化_4.Python列表/元组/集合/字典

4.1 Python列表• 列表用 [ ] 标识,是Python 最通用的复合数据类型。• 列表用 [ ] 表示,列表具有可嵌套性4.1.1 Python列表截取• 列表可以使用 [头下标:尾下标] 截取相应的子列表, 从左到右索引默认 0 开始,从右到左索引默认-1开…

JavaBean中的属性

让我们一步一步了解: 成员变量 public class Test { //成员变量 private String n; }属性 属性是 getXxx()方法去掉 get 后,将首字母小写的那个单词,此处属性名与成员变量名相同,都是“n” 注:属性名和成员变量名通…

重置线程中断状态_记住要重置线程上下文类加载器

重置线程中断状态我很难思考与Java 加载有关的东西,而不是与类加载器有关的东西。 在使用应用程序服务器或OSGi的情况下尤其如此,在这些应用程序服务器或OSGi中,经常使用多个类加载器,并且透明地使用类加载器的能力降低。 我同意O…

【WebRTC---源码篇】(十一)WebRTC编码与发送H264持续更新中

H264在WebRTC中是如何编解码的? h264编解码代码位于文件src\modules\video_coding\codecs\h264下 #ifndef MODULES_VIDEO_CODING_CODECS_H264_INCLUDE_H264_H_ #define MODULES_VIDEO_CODING_CODECS_H264_INCLUDE_H264_H_#include <memory> #include <vector>#i…

python大一题库西农_生态学(西北农林科技大学)知到智慧树2020章节测试答案...

生态学(西北农林科技大学)知到智慧树2020章节测试答案更多相关问题【单选题】在测定食品中灰分含量时,灼烧残留物不可能存在的是( )A. 蔗糖 B. 钠 C. 钾 D. 氯【单选题】对于老年骨质疏松说法错误的是( )A. 老年骨质疏松症属于继发性骨质疏松症 B. 是使骨质脆性增加导致骨折危险…

EL表达式学习笔记

文章目录EL 表达式是干什么用的EL 表达式的底层原理EL 表达式可以用在哪些地方EL 表达式用来访问 JavaBean 的属性EL 表达式获取请求参数的值EL 表达式用于运算&#xff0c;将结果作为标签的属性值或者直接输出Struts2 的 EL 表达式EL 表达式翻译为 Java 代码的含义EL 表达式示…

【WebRTC---源码篇】(十二)WebRTC/RTX协议

在SDP中可以查询到提前协商好的RTX信息 接受到RTCP NACK 重传RTX包,有效荷载前两个字节为原始seqnumber 如何知道重传的是哪个包 发送RTX

stackoverflow_Stackoverflow:您尚未发现的7个最佳Java答案

stackoverflow您可以在Stackoverflow上找到哪些最有趣的答案&#xff1f; Stackoverflow是开发人员的金矿。 它可以帮助我们找到遇到的特定问题的最有用答案&#xff0c;并且我们总是从中学习新事物。 在以下文章中&#xff0c;我们研究了最受欢迎的Java问题和答案&#xff0…

json请求 post vue_Spring Boot+Vueaxios异步请求数据的12种操作(上篇)

Java大联盟致力于最高效的Java学习关注Spring Boot Vue 前后端分离最核心的操作就是通过异步请求完成数据同步&#xff0c;这其中又可以分为很多种不同的情况&#xff0c;比如是 GET 请求还是 POST 请求&#xff1f;参数是普通变量还是 JSON&#xff1f;基于 RESTful 架构如何…

数据库SQL语言分类(DDL/DML/DQL/TCL/DCL)

文章目录一、数据定义语言 DDL&#xff08;一&#xff09;create 数据库对象的创建&#xff08;二&#xff09;alter 修改数据库对象&#xff08;三&#xff09;drop 删除数据库对象&#xff08;四&#xff09;truncate 清空表数据二、数据操纵语言 DML&#xff08;一&#xff…

【WebRTC---源码篇】(十三)WebRTC/Pacer

pacer作用 NextSendTime Timestamp PacingController::NextSendTime() const {Timestamp now = CurrentTime();if (paused_) {return last_send_time_ + kPausedProcessInterval;}// If probing is active, that always takes priority.if (prober_.IsProbing()) {Timest…

卡夫卡如何分区_通过分区在卡夫卡实现订单担保人

卡夫卡如何分区Kafka最重要的功能之一是实现消息的负载平衡&#xff0c;并保证分布式集群中的排序&#xff0c;否则在传统队列中是不可能的。 首先让我们尝试了解问题陈述 让我们假设我们有一个主题&#xff0c;其中发送消息&#xff0c;并且有一个消费者正在使用这些消息。 …

全景视觉空间直线检测_视觉SLAM深度解读

近年来&#xff0c;SLAM技术取得了惊人的发展&#xff0c;领先一步的激光SLAM已成熟的应用于各大场景中&#xff0c;视觉SLAM虽在落地应用上不及激光SLAM&#xff0c;但也是目前研究的一大热点&#xff0c;今天我们就来详细聊聊视觉SLAM的那些事儿。视觉SLAM是什么&#xff1f;…

HTTP网页请求响应的状态码/状态代码

文章目录1开头 询问客户端是否还有请求消息2开头 &#xff08;请求成功&#xff09;表示成功处理了请求的状态代码3开头 &#xff08;请求被重定向&#xff09;表示要完成请求&#xff0c;需要进一步操作。 通常&#xff0c;这些状态代码用来重定向4开头 &#xff08;请求错误&…

某人想在h小时内钓到_为某人命名以重新连接到您的服务器

某人想在h小时内钓到在进行测试自动化时&#xff0c;通常需要知道当前计算机的名称&#xff0c;以提示另一台计算机连接到它&#xff0c;特别是在并行运行测试的情况下。 本周&#xff0c;我试图对服务器进行测试&#xff0c;以使其连接回在从属测试计算机上运行的WireMock服务…

对象必须实现 iconvertible。_java面向对象最全入门笔记(通俗易懂,适合初学者)...

前言:面向对象的三大特征封装 (Encapsulation)继承 (Inheritance)多态 (Polymorphism)编程思想&#xff1a;面向过程&#xff1a;做某件事情都需要自己亲历亲为&#xff0c;按照步骤去完成面向对象&#xff1a;做某件事情不需要自己亲历亲为&#xff0c;只需指定特定的对象去完…

C++ 【随想录】(一)模拟矩阵相乘

#include<iostream> using namespace std; const int N 105; int R1[N][N], R2[N][N], ans[N][N];int main() {int m, p, n;cin >> m >> p >> n;for (int i 0; i < m; i) {//录入第一个矩阵for (int j 0; j < p; j) {cin >> R1[i][j];}…

HH SaaS电商系统的结算系统设计

文章目录一、第三方卖家销售货款结算流程说明&#xff1a;销售货款结算逻辑流程图预期收入如何统计二、第三方卖家推广分销佣金结算佣金结算逻辑流程图逾期佣金收入如何统计三、采购货款结算租户采购货款结算流程说明商城采购货款结算流程说明店铺商家的采购货款结算流程说明四…