从0到1构建电商平台之订单系统(3):处理订单

虽然每个公司的具体需求与业务场景不一样,我们平台的功能需求可能其他平台不尽相同,但整个订单的产生到结束的,主要有以下3个流程:

首先,用户选好商品之后会提交订单,经过一系列判断之后,用户成功提交了订单,此时订单状态为待付款,并且会写入数据库(多商家的订单就按商家拆单后写入);然后用户就开始支付订单,经过一系列判断成功支付后,这时就需要商家处理订单,进行发货等操作,同时用户也可以进行一些操作。

一、完整订单字段1.订单信息

1)订单编号

该订单的唯一ID,对于管理/商家后台来说方便查找;生成规则是用的雪花算法,这里不做展开。

2)订单类型

可以分为“自己购买/好友代付/任务活动”等。

标记订单类型有两个目的:一是不同的订单类型在客户端和后台可能有不同的页面展示和操作流程,二是可以进行数据统计并分析;所以订单类型可以分得越细越好。

这个字段可以就不放给商家后台了,仅限管理后台筛选。

3)订单备注

这个字段在后台订单详情里可以放在较显眼的位置,以防工作人员漏掉。

2.商品信息

1)商品编号

添加商品时的编号,方便查找商品(但在数据库里不是商品的唯一ID,因为商家数量够大时会产生重复的情况,但又不能做防止重复的限制)。

2)商品名称

商品名称是较大概率会产生重复的情况;从商家的角度来说,名称怎么取,与搜索引擎和推荐商品的匹配程度具有相当大的关联。

3)sku(商品的属性规格)

4)购买数量

分为普通商品/活动区域一/活动区域;活动区域是一个替代名词,在我们平台会有几个不同的活动区域,在后台的营销系统里,可以直接往不同的活动区域里添加不同的商品,并设置相应的如活动价格/单人限购数量等信息;区分的作用主要是用于数据统计并分析。

3.金额信息商品结算价金币抵扣邮费实际支付金额支付方式4.用户信息

1)账户信息(昵称/账号)

(注:账户信息可不放给商家后台)

接下来是客户端的各订单状态对应操作,与后台的各商品状态对应操作。需要注意的是为什么客户端是订单状态,而后台是商品状态?

我们可以先来讨论一下:

为什么客户端的订单状态是订单状态而不是商品状态?

商家发货肯定有个先后顺序,一个多商品的订单中肯定会存在其中一部分发货了,而另外一部分没发货的情况,那此时该订单到底是待发货还是待收货?那么,是不是订单的状态跟着商品走会更好一点?

如果设计成客户端的状态跟着商品走,当一个订单中存在多个商品状态,用户取消可以对商品取消而不是整个订单(优惠券、抵扣等也可以避免),确认收货可以对商品而不是订单(比如订单中有3个商品,商家只有其中1个商品一直没货,而其他商品用户早就收货了,此时订单就一直不能确认收货,商家可能就会因为这一个商品,而迟迟不能结算其余的商品金额)等等一系列操作可能都会简便一点。

我个人认为功能为什么这样做:要么就是逻辑流程必须要这样做,要么就是这样做用户体验更好。

在客户端订单状态这个问题上,我暂时没找到必须这样做的理由,只能认为这样做用户体验会更好,毕竟前人总结的经验。所以,主流电商平台的客户端,用户看到的是订单状态而不是商品状态;希望有大佬能指出,一起探讨。

刚才说的是客户端是订单状态,根据主流电商平台这样设计作为前提(当然用户也养成习惯了,我不可能去更改),然后来说后台的为什么是商品状态。

首先,发货肯定是对商品发货(比如一个订单中有A、B、C三个商品,A、B可能合并发成一个包裹,C拆分成两个包裹发出去),刚才也说了对于多商品的订单来说商家发货,填写物流单号肯定有个先后顺序。

为了方便商家查看哪些商品已发货,用户也可以知道哪些商品是哪个包裹,哪些商品已经发货了,所以在后台一般状态是跟着商品走,而不是订单走。

但是这就涉及到客户端订单状态与后台商品状态的对应关系了,下面会进行介绍。

二、客户端订单状态对应管理/商家后台商品状态

红色虚线为对应关系,我来解释一下为什么存在一对多的情况(待付款,待发货,已关闭都是一对一的情况就不解释了),从客户端的状态来说:

1.待收货

对应后台可能是部分发货和已发货;为什么有部分发货这个状态?

因为后台的状态是跟着商品走的,所以部分发货不是订单中一个商品发了一个没发的情况,而是商家发了其中一部分购买数量的情况;比如用户买的某商品购买数量为2,商家只发了其中1个,第二个得等到明天再发,如果不标记出来,商家可能就会不知道。

虽然用户在购买的时候会锁库存,购买数量为2就代表着你此时库存系统中至少有2件,但是要考虑到很多小商家操作可能并不是那么正规,库存很有可能是乱填的并不联动,也有可能商家暂时仓库里只有1件,但是库存还是有的,我们没法去规避这样的人为情况。

为了对应,我认为可以加上部分发货这个状态。

为什么客户端的订单中没部分发货这个状态?

一个是这种情况也是少数,加上去反而复杂了用户的认知,可能会造成用户觉得怎么一些发了一些没发,降低用户体验;一个是后端的逻辑会更复杂一些。

当订单中任意一件商品发货后,客户端订单状态就会变为待收货,为什么这样设计?

一个是上面说的,发货有个先后顺序,订单中一部分发了,一部分没发,客户端展示为待收货肯定比待发货更能减轻用户的焦虑心理(订单中有商品发了货,这个也没毛病);一个是待发货的订单,用户是可以无成本的直接取消订单的,有商品发出了,但用户确直接取消了,这肯定不合理。

综上所述,比如用户在同一商家购买A商品2件,B商品2件,当用户看到订单处于待收货货状态时,实际有可能A商品只发了一件(A处于部分发货),A已发货B待发货,A,B都已发货。

2.待评价、已完成

为什么客户端的订单状态的待评价和已完成,都对应后台的已发货,而不是后台中的待评价和已完成?

是因为我们在需求评审的时候砍掉了后台的这两个状态,分析一下为什么商家需要看到待评价和已完成的订单,是因为他可能需要去找到这笔订单后再去看用户评价了吗?

然后说一下,淘宝的后台有退款中这个订单状态,我没这样设计的原因是,我把订单状态和售后单状态是完全分开的;比如购买数量为2,用户收到货后发现其中一个商品有问题,申请退货数量为1,那这个订单是待收货还是退款中呢?

如果要加这个状态,又要加一些判断,比如申请数量为1的时候,订单状态为待收货,申请数量为2的时候,状态为退款中,就是说需要判断订单中是否全部申请退款;又比如订单中两个商品都申请退款,这时订单状态为退款中,但是其中一个退款单被打回,退款单状态变为已关闭,这时又从退款中变为待收货,不光对后端逻辑,对用户来说也很乱。

所以订单和售后单状态完全独立,比如待评价的订单中只有一个商品,用户对该商品申请退款并成功后,订单状态依然为待评价,如果变为已关闭,我觉得不合理,就算用户退货退款,也不能剥夺用户评价的权利。

三、客户端订单状态对应操作1.待付款

1)去支付

支付时的判断流程与在支付页面的判断流程是一样的(商品状态/sku信息是否更改),点击支付按钮后如果支付失败,则可以触发自动取消订单。

2)取消订单

取消后状态变为已关闭,金币等抵扣原路返回,释放库存。

3)朋友代付

2.待发货

1)取消订单

如果大家有好的方案,我们可以一起来讨论一下。

2)提醒发货

3.待收货

1)查看物流

当订单内有多条物流信息时,有以下几种情况:

单商品多物流:一个商品在发货时分为多个包裹发出,即填写了多个物流单号;多商品单物流:多个商品在发货时合为一个包裹,即填写了一个物流单号;多商品多物流:比如A、B商品合为一个包裹,C商品分为多个包裹。

以上几种情况都需要有单独的页面来告知用户,哪些商品在哪个物流单号里。

2)确认收货

确认收货分为两种:用户主动确认与系统自动确认。

前面说了,多商品的订单其中一个商品发货后,订单状态立即变为待收货;但这样同样会带来一个问题,当订单中存在未发货的商品时,当用户点击确认订单时,应不应该让用户确认收货呢?

我的做法是不让,同时给一条提示语告知用户,虽然感觉不大合理,但暂时没想到更好的方案了。

3)申请售后

在此状态的申请售后需要做3个判断

点击时同样需要判断当前商品是否已发货(后台商品状态处于待发货和部分发货则不能点击);如果该商品有售后申请记录且处于进行中状态,则按钮置灰;比如购买数量为5,申请数量为1,如果不做限制,则最多还可以申请4次售后,商家可能就会一次性处理5次售后单,所以在非完全申请的情况下,只有当第一条售后单状态处于已完成或已关闭状态时才可继续申请;该商品是否已完全申请过售后,比如购买数量为5,已全部申请过售后且通过并完全,则按钮置灰,不能再申请售后。4.待评价

与待收货时的判断条件一致。

2)去评价

5.已完成

2)申请售后

这两项操作的判断与待评价状态下一致。

3)再次购买

这项操作的目的是为了多一个入口来暗示用户再买一次;如果该订单内有1个商品,点击后跳转至商品详情页,如果有多个商品,则跳转并加入至购物车;为什么不是直接跳转至提交订单页面?

因为所有对商品状态,sku信息是否更改过的判断在详情页或购物车完成对用户体验肯定更好一些。

这几种不同类型的已关闭订单,需要在页面体现出取消的原因,以起到告知用户的作用。

四、后台商品状态对应操作

我们平台综合考虑后,待付款的订单暂时不进入后台

1.待发货

1)发货

需要进行的操作有:选择发货数量/选择物流公司/填写物流单号;当发货数量小于购买数量时,商品运输状态会变为部分发货;发货可能进行的操作是添加物流,比如用户购买的一个套装,购买数量虽然为1,但需要2个包裹发出,所以需要有添加多个物流的操作;发货后就需要扣除库存。

3)修改收货信息如果用户联系商家,希望修改收货信息,只要涉及到地区的修改,就有可能会影响到邮费的计算,比如用户提交订单的收货地区为重庆,邮费为10元,但希望商家改为西藏,邮费为20元,多出来的10元就需要商家和用户线下解决。

2.部分发货

前面说了,此状态下的发货操作不会影响客户端订单的状态。

2)查看物流

查看物流弹窗需要加上修改物流单号的操作,以防填错。

3.已发货/已关闭

操作都为查看物流。

以上就是订单系统的全部内容了,做一个总结:

首先用户需要提交订单,在提交订单页面可以看到并选择哪些字段,同时后端需要经过一系列判断之后才能成功提交订单;用户在成功提交订单后,该拆单就拆单,该写入数据库就写入,然后用户需要支付该笔订单,后端又经过一系列判断之后才能支付成功;最后就需要商家来处理订单了,正常流程就是商家发货,用户确认收货,异常流程就是用户或商家取消订单,申请售后之类的操作。

如果有认为我在流程或者逻辑上设计有问题,或者不清楚的地方,欢迎各位大佬指出,一起来讨论一下

THE END
1.?店小秘帮助中心订单页面属性介绍 (视频) http://help.dianxiaomi.com/pre/getContent.htm?id=566 订单页面相关信息介绍:1、包裹号: 是由小秘系统自动生成,以XM开头,用于向物流商申请运单号时,将包裹号作为物流商系统订单编号提交给物流商。 常见问题: Q:为什么不能直接提交平台订单号给物流商? A:1、部分物流商系统限制,同一...https://help.dianxiaomi.com/pre/getContent.htm?id=1371
2.——订单商品明细统计上海管易云ERP3.店铺名称:订单管理>订单查询>订单明细>店铺名称 4.单据编号:订单管理>订单查询>订单明细>订单编号 5.付款时间:订单管理>订单查询>支付明细>支付时间 6.到账时间:订单管理>订单查询>到账时间 7.分销商名称:订单管理>订单查询>分销商名称 8.平台单号:订单管理>订单查询>订单明细>平台单号 ...http://support.guanyierp.com/hc/kb/article/1396335/
3.商品订单业务管理系统←物流配送←产品中心←宏达管理软件体验...主表:ID 商品编号 商品名称 品牌 规格 单位 缺货 图片 【员工信息】 说明:员工信息中记录了员工的信息,在此可进行员工信息的增加、删除或修改。其中员工编号是增加新记录时自动生成的,不可以更改。 主表:ID 员工编号 员工姓名 性别 身份证号 联系电话 住址 备注 【供商信息】 说明:供商信息中记录了供商的...http://www.inmis.com/product_view.asp?id=1066
4.风行当您在我们的产品与/或服务中购买商品或服务的,您需要提供一些下单与完成交易所需要的信息(交易商品或服务信息、收货人姓名、收货地址及其联系电话),此外,我们也可能会再收集一些其他与订单相关的信息(订单号、交易金额、支付方式),我们收集这些信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服和...http://wx-tv.funshion.com/static/funVideo/mobile/privacy.html
5.在订单管理系统中,客户一次购物(一张订单)可以订购多种商品,有...刷刷题APP(shuashuati.com)是专业的大学生刷题搜题拍题答疑工具,刷刷题提供在订单管理系统中,客户一次购物(一张订单)可以订购多种商品,有订单关系R(订单单号,日期,客户名称,商品编号,数量),则R的主关键字是()A.订单号B.订单号,客户名称C.商品编号D.订单号,商品编码的答案https://www.shuashuati.com/ti/8e280574081b4c9687994271a5c4907e.html
6....包括商店编号,商店名称,电话;保存的商品的信息包括:商品编号...关系模型:商店(商店编号,商店名称,电话)商店编号(候选码)商店名称(外码) 员工(工号,姓名,年龄,性别,住址)工号(候选码)姓名(外码) 商品(商品编号,商品名称,价格)商品名称(候选码)商品名称(外码) SQL数据库: CREATE https://www.iteye.com/resource/LQMYyong-2500327
7.只知道订单编号怎么查商品点击进入该页面后,输入订单编号和购买时使用的手机号码或者账号密码进行登录。有些平台也会需要输入验证码。一般情况下,输入正确的订单编号后,平台会显示该订单的详细信息,如商品名称、商品价格、付款方式、配送方式等。 如果在官网查询商品的信息有疑问或者出现了订单信息被篡改的情况,可以与平台的客服联系,咨询订单相关...https://www.dugusoft.com/zixun/zixun629.html
8.SQL语句总结查询处理(持续更新)(1)查询已订购了商品客户的公司名称,联系人姓名和所订商品编号和订购数量。 select Companyname,Contactname,productid,sellordernumber from Customer C join Sell_Order S on C.CustomerID=S.CustomerID (2)查询“三川实业有限公司”的订单信息。 select C.CompanyName,productid,sellordernumber,employeeid,C.Cus...https://www.jianshu.com/p/5c1b4df86f79
9.B2C商品订单开放APIisMasterProduct boolean 是否属于套餐活动主体商品 配送信息(distInfo): 名称类型说明 express long 配送方式:-2:无需配送,-1:区域限售,0:快递,1:ems, 2:平邮,3:商家配送,4:送货上门,5:上门自提 expressNum String 快递单号 expressCompanyCode String 快递公司编号 expressAlias String 配送方式别名 receiverAddre...https://www.leapcloud.cn/website/docs/doc_api/dingdan/dingdan.html
10.销货单操作指南关联销货订单号 销货订单生成的销货单会记录源订单号 2.2 扫描枪录入商品 新增单据时,点击【扫描枪录入】打开开关,即可扫码录入商品。 其它录入商品的方式还有模糊搜索、选择、批量导入 模糊搜索:支持输入商品编号/商品条码/商品名称/规格型号等,中间空格隔开,可切换常用的查找方式。 选择:点击【选择】在弹框中选商...https://vip.kingdee.com/article/362294872176207104
11.《美菜商城隐私协议》您需要在订单中至少填写您的如下个人信息:收货人姓名、收货人地址(GPS位置)以及收货人手机号。同时该订单中会载明如下个人信息:交易流水号、您所购买的商品信息、支付金额及支付方式。上述所有信息构成您的“订单信息”。我们收集订单信息是为了帮助您顺利完成交易、保障您的交易安全、查询订单信息、提供客服与售后服务。https://material-page.yunshanmeicai.com/richText/1000719
1.抖店开放平台/logistics/newCreateOrderorder_id字段传非抖店订单号,order_channel字段传54或者按照接口文档里该字段的要求来传。 六、如何设置物流商的产品类型 /logistics/newCreateOrder入参 product_type 字段,字段具体值参考:附录3 七、如何设置物流商的增值服务 https://op.jinritemai.com/docs/guide-docs/1320/3307
2.货物出货单一般是客户单位6.业务库存和财务库存对不上,每月都需要调账,财务数据不准确 客户解决完方案: 1.发票管理:好会计发票管理,批量导入发票明细、扫一扫进项和销项发票,实现一键生成凭证入账 2.辅助核算:往来科目开启辅助核算,实时掌控供应商应付账款以及客户应收账款,提供财务报表实时跟踪应收应付状况 3.数量核算:科目支持按照商品和数量...https://h.chanjet.com/yxwz/7bc517617b4040588f0.html
3.中国(陕西)国际贸易单一窗口跨境电商出口退货申请单(回执报文) 报文结构 退货理货明细单回执报文头 退货申请单回执业务节点https://www.singlewindow.shaanxi.cn/c/a/0d58e3e9-5073-4ebc-81e6-0f6a6fc1b097
4.电商产品概念:SKU,SPU,商家编码,商品条形码分别是什么意思...SKU是平台生成;商家编码是商家生成。 商品条形码:商品条形码的编码遵循唯一性原则,以保证商品条形码在全世界范围内不重复,即一个商品项目只能有一个代码,或者说一个代码只能标识https://www.longtengec.com/taobao/03467.html
5.订单号(ordernumber)的详细阐述order number(订单号)是指在贸易活动中,商家在与消费者交易过程中,根据每一次交易为该交易产生的唯一编号,用来标识该笔交易的唯一性。 order number广泛应用于在线购物、电商交易、机票、酒店等在线预订、支付平台,其在商家内部流程中起到非常重要的作用。 https://www.506064.com/n/182126.html
6.商品购销电子合同(15篇)商品定价,乙方同意按参考、生产条件发生变化,需变动价格时,甲方需提前通知乙方。否则,造成损失由违约方承担经济责任。 第三条:预付货款 乙方会先预存1080元;等货款不足250元时续存。 第四条:付款日期及结算方式;每一个月的25--28号结账一次。 第五条:运输流程均已快递送货;除大件列外,应协商。 https://www.yjbys.com/hetongfa/gouxiao/1793147.html
7.大数据常见面试问题汇总江阴雨辰互联2.15.2 订单表跟订单详情表区别? 2.15.3 上卷和下钻 2.15.4 TOB和TOC解释 2.15.5 流转G复活指标 2.15.6 活动的话,数据量会增加多少?怎么解决? 2.15.7 哪个商品卖的好? 2.15.8 数据仓库每天跑多少张表,大概什么时候运行,运行多久? 2.15.9 哪张表数据量最大 ...https://www.yc00.com/news/1698791689a880360.html
8.Python学习笔记一、print()函数 1. 可以输出数字 print(520) print(98.5) 2. 可以输出字符串 复制代码 隐藏代码 print('hello world') print('hello world') 3. 可以输出含有运算符的表达式 复制代码 隐藏代码 pri...http://down.vvipblog.com/itprogram/python/pybeginner/2861.html
9.锦江会员商城小程序隐私政策B.购物服务:当您在锦江荟积分商城小程序购买商品时,我们会收集您的订单的下单时间、下单金额、商品数量、商品编号和订单编号以及完成订单后您提交的商品点评,同时我们需要您在线填写您的姓名、手机号码和收货地址,用于寄送您在商城购物之货物和纸质/电子发票。 https://h5.bestwehotel.com/view/7d4a94bc5e
10.电商后台系统产品逻辑全解析12657998的技术博客商品中心:主要管理SKU、SPU、属性、类目、品牌、价格等有关商品的数据。 订单中心:管理订单类型、订单状态,收集关于商品、优惠、用户、收货信息、支付信息等一系列的订单实时数据, 进行库存更新、订单下发等一系列动作。 支付中心:管理支付数据,调用第三方支付平台接口,记录支付信息(对应订单号、支付金额等),支付对账。https://blog.51cto.com/u_12667998/6565354
11....销售商及销售三个关系模式:产品(产品编号,产品名称,单价,库存...其中包括四个表,表中信息如下: 供应表apply(id、name、sid、price) 说明:id 供应厂家编号,name 供应厂家名称,sid 商品编号,price 商品价格。 顾客表customers(gid、name、address、balance) 说明:gid 顾客编号,address 地址,balance 余额。 订单表orders(sid、gid、date) 说明:sid 商品编号,gid 顾客编号,date ...https://blog.csdn.net/Edison__z/article/details/130305550
12.中燃慧生活app下载中燃慧生活燃气缴费v6.0.10安卓版8、在慧生活购买商品,支付成功后订单却显示未支付? 答:提供登录名、订单号、支付成功截图(含支付单号)给后台核查,若核实已付款成功,即可后台人工修改订单状态。 9、慧生活APP验证密码时,密码是身份证后6位,若尾数为X,怎么输入? 答:慧生活APP验密的,身份证后六位尾数是X的,以客服系统上面X的大小写为准,如果...https://m.qqtn.com/q/302839
13.隐私政策帮助中心(三)下单及订单管理 当您选择对商品/服务进行结算时,阳采集团会生成您购买商品的订单。您需要在订单中至少填写您的收货人姓名、收货地址以及手机号码,同时该订单中会载明订单号、您所购买的商品或服务信息、下单时间、您应支付的货款金额及支付方式。您可以另外填写收货人的联系电话、邮箱、邮编以增加更多的联系方式确保...https://www.lt95.com/article/item/id/213.html
14.阿狸子订单系统商品列表有:搜索、编辑、复制、评论、推广等功能,如下图: 二、添加商品 添加商品有:1.基本信息;2.价格套餐;3.商品图片;4.短信通知;5.广告设置;6.单页模板;如下图: 1.基本信息 商品编号:随机生成字母和数字,如果要修改,只能填写字母和数字。 名称:填写商品名称 ...https://www.alizi.net/doc/