java 商家取消订单流程

Wesley13
• 阅读 347

商家取消订单的过程中,关联:退款、恢复库存、核减销量过程

一、使用表格:

req_order_ops             订单发起请求操作表

goods_order2               订单表

goods                           商品表

goods_order2_oplog    订单日志表

refund_order                 退款订单表

二、开发运行流程:

(1)商家取消订单,数据生成至req_order_ops表格中;状态为:商家取消订单,请求处理系统未扫描;

(2)生成扫描器,定时扫描req_order_ops表,获取状态为:商家取消订单、请求处理系统未扫描的对象(如果goods_order2状态显示其已取消,忽略它);

(3)根据获取的对象,将其存入refund_order表,goods_order2表状态显示为:商家发起取消订单 | 已取消;req_order_ops 状态为:请求处理系统已扫描 | 请求处理成功;

  goods_order2_oplog 状态为:已取消

(4)生成扫描器,定时扫描refund_order 表,获取未被提交给微信扫描的对象,将退款申请提交给微信,refund_order  状态为:提交给微信已扫描 | 退款申请提交给微信 ;goods_order2_oplog

  状态为:退款申请提交给微信

(5)生成扫描器,定时扫描 refund_order 表,获取:退款进度未被扫描,提交给微信已扫描 | 退款申请提交给微信 的对象,将其参数发送给微信进行退款,若退款成功:

  refund_order 表的状态为:退款进度已被扫描 | 资金已成功退回;若退款失败:refund_order 表的状态为:退款进度已被扫描

(6)生成扫描器,定时扫描 refund_order 表,获取 退款进度已被扫描 | 资金已成功退回 退款结果同步处理器未扫描 的对象,goods_order2_oplog 显示状态为:订单资金

  已成功退回,goods_order2 状态为:已退款 | 微信退款进度已扫描 , 状态为:退款结果同步处理器已扫描 | 退款结果已经同步到原始订单

(7)生成扫描器,恢复库存,定时扫描 goods_order2 ,获取 已取消,未删除,已完成支付,已退款,未扫描 的对象,根据该对象恢复 goods 库存,若恢复库存成功:

  goods_order2 状态为:已扫描 | 已加回库存;若失败:goods_order2 状态为:已扫描

(8)生成扫描器,核减销量,定时扫描器扫描 goods_order2 ,获取 已取消,未删除,已完成支付,已退款,未扫描销量 的对象,根据该对象核减 goods销量,若核减销量

  成功:goods_order2 状态为:销量已扫描 | 已核减销量;若失败:goods_order2 状态为:销量已扫描

  至此完成商家取消订单业务流程。

点赞
收藏
评论区
推荐文章
Easter79 Easter79
2年前
thinkcmf+jsapi 实现微信支付
首先从小程序端接收订单号、金额等参数,然后后台进行统一下单,把微信支付的订单号返回,在把订单号发送给前台,前台拉起支付,返回参数后更改支付状态。。。回调publicfunctionnotify(){$wechatDb::name('wechat')where('status',1)find();
Stella981 Stella981
2年前
Nginx + lua +[memcached,redis]
精品案例1、Nginxluamemcached,redis实现网站灰度发布2、分库分表/基于Leaf组件实现的全球唯一ID(非UUID)3、Redis独立数据监控,实现订单超时操作/MQ死信操作SelectPollEpollReactor模型4、分布式任务调试Quartz应用
Wesley13 Wesley13
2年前
mysql按月统计六个月内不同类型订单的成交金额
mysql按月统计六个月内不同类型订单的成交金额创建数据库CREATEDATABASEtest;创建订单表CREATETABLEt_order(idbigint(4)NOTNULLAUTO_INCREMENTCO
Wesley13 Wesley13
2年前
mysql数据行转列
在你找工作的经历当中,是否有面试官问过你:数据库行转列如何实现? 一个典型的例子如下:    有这样一个订单表(om\_order)一条记录包含订单号、创建日期、订单总金额; 让你统计不同年份对应各月份的销售情况,要求每一年的销售情况一行展示,效果如下:
Easter79 Easter79
2年前
SpringBoot+RabbitMQ+Redis实现商品秒杀
业务分析一般而言,商品秒杀大概可以拆分成以下几步:1.用户校验校验是否多次抢单,保证每个商品每个用户只能秒杀一次2.下单订单信息进入消息队列,等待消费3.减少库存消费订单消息,减少商品库存,增加订单记录4.付款十五分钟内完成支付,修改支付状态创建表goods\_info商品库存表
Stella981 Stella981
2年前
RabbitMQ队列延迟
RabbitMQ队列延迟1\.场景:“订单下单成功后,15分钟未支付自动取消”1.传统处理超时订单采取定时任务轮训数据库订单,并且批量处理。其弊端也是显而易见的;对服务器、数据库性会有很大的要求,并且当处理大量订单起来会很力不从心,而且实时性也不是特别好。当然传统的手法还可以再
Stella981 Stella981
2年前
SpringBoot+RabbitMQ+Redis实现商品秒杀
业务分析一般而言,商品秒杀大概可以拆分成以下几步:1.用户校验校验是否多次抢单,保证每个商品每个用户只能秒杀一次2.下单订单信息进入消息队列,等待消费3.减少库存消费订单消息,减少商品库存,增加订单记录4.付款十五分钟内完成支付,修改支付状态创建表goods\_info商品库存表
Wesley13 Wesley13
2年前
JPA(三)之实体关系一对多(多对一)
1.背景介绍:  对于购买商品时,订单信息(Order)和订单商品信息(OrderItem)的关系就是一对多的关系。2.实体bean:  Order.java代码packagecom.sinoi.bean;importjava.util.HashSet;importjava.util.Set;
鲍忠 鲍忠
1年前
七月在线深度学习集训第三期一片孤城万仞山
七月在线深度学习集训第三期一片孤城万仞山如何关闭到期订单?在电子商务、支付等系统中,一般先创建一个订单(付款单),然后给用户一定的时间进行支付。如果没有按时付款,之前的订单(付款单)需要取消。类似的场景还有很多,到期自动收货,超时自动退款,