京东订单查询询中,没有退订见面

求思路,让3小时内没有付款的订单自动取消【java吧】_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:724,213贴子:
求思路,让3小时内没有付款的订单自动取消收藏
在写一个火车订票的系统,怎么做让3小时内没有付款的订单自动取消该订单
51CTO学院12年行业品牌,1600万用户选择,中国专业IT技能学习平台.java资深大牛授课,0基础从入门到精通,java报名与培训中心.
,单独搞个线程 每分钟查询一次~~~
1.线程去定时扫描、、简单的就用quartz定时任务、2.加一个过期时间字段、整个监听(好像也得用线程)、、
好贴、、、、、、表示 自带板凳坐等大神粗线解决、、、、、、
电话联系铁道部咨询。
弄个计时器,当计时器为0时订单取消。
给每个订单对象添加一个属性,用于记录该订单是何时创建的,也就是记录当时的时间点。当用户需要查询或操作此订单时,取得当前时间,减去订单对象中的时间点,如果差值超过3小时,设置订单为无效状态。自己设置时间周期,去找出超时订单并设置为无效,然后把所有无效的订单从数据库中删除。这个就不需要太频繁了。
楼主做个卖给12306的么
睡眠3个小时,查询状态,没有付款执行取消
订单表应该有创建时间字段和状态字段,定义个后台线程每分钟扫瞄数据库未付款状态的订单,时间超过了3小时就更新下订单状态为己取消状态
订单有一个未付款状态。在提交订单时候就会写入。然后写个定时器方法,倒计时三小时后去扫描状态。如果还是未付款就会取消订单。相反则否。不可没分钟扫描。这样太占服务器消耗了。写一个定时器专用方法就好了。所有订单都会调用。一个方法搞定所有订单。具体定时器根据业务来做。
很简单。卖票查询的时候去看看那些票超时就行了。因为你不卖票,票超不超时有什么关系呢?你可售的票就是未售的票 + 订票超时的票。多简单的问题。。。。
写个工具,就是把下单时间距现在超过3小时,且还未过期的订单的设置过期。crontab每分钟调用一次。别总用纯java思维,什么工具合适就用什么。
给订单表加几个字段,一个为下单时间,一个为付款标示,每次查票的时候先查询下单时间距离现在时候3小时且未付款的订单,如果有,取消,否则,查询总票数-成功订单的票数
恩,获取订单列表时只能获取3个小时以内的。然后每隔1天左右清理一次过期订单。建个订单就建个线程(或建个任务)很明显不可取。
判断该订单创建的时间,如果3个小时内没做什么操作就不显示了!
可以用cookie吗?
目测只有线程轮询了
重新写个跑批的程序,使用spring定时器定时跑批扫面
数据库触发器能实现么?想起来还从来没用过
这我感觉挺简单的 表里面存一个时间字段就是3小时后. 另外你肯定有付款标志.根据这俩条件查询订单就可以了...如果未付款的 且时间也过了 那肯定就是作废订单了 你页面也查询不到了.
其实我已经放弃了,这个问题牵扯到服务器,数据库,加锁,解锁等太多的问题。。。。。。
16L办法不错,至于其他有些人还没搞清问题就来...
没分钟一次效率实在太低了,订单数量过多的时候没人访问也会崩溃,我想的一点点优化不知道怎么样,一般不管他,每次和订单相关的人登录进入系统才开始这个线程
事务调度器
用session或者cookie,付款以后清除或者3小时以后清除
用TOP-K算法。开一个线程 监听就行
感觉一条 update 的sql语句就能搞定没几分钟调用一次好了
spring可以实现。
登录百度帐号穷游大洋洲
更多疑问请点击这里哦
出境游尽在穷游App
千万旅行者的选择
IOS/Android扫码下载
Booking的第二个问题,希望大神们都来解答下!订单在app上取消了,订单消失了却没有收到取消邮件
第一个问题已经得到大家的解答…感谢!现在有第二个问题,想问下。有一笔订单,我在的App上取消了,订单也从待住订单中消失了,但是没有收到确认邮件,所以也没在意!谁知道&,确扣钱了,问了是说我没取消成功,到时间未入住,没有收到确认邮件就不算取消成功,也不可能订单消失,费用要我自己承担…我不晓得大神们有遇到这个状况吗?这该如何处理?
 1220人浏览
 8 个回答
 1 人关注
问答探路者
擅长日本等地的问题
看到过有人遇到这种情况,所以我取消之后必查邮箱,如果没有收到邮件直接联系客服,发取消截图,要求重发取消确认信,同时联系确认取消。
问答探路者
擅长英国、美国、德国等地的问题
如果你说的是真的,感觉应该是APP的设计问题,取消信息发送出手机但并没达到的系统,而APP误认为你已取消而未显示存在订单,你如果能拿出证据是APP的问题,你就可以和好好撕一撕
不好意思我没法回答你的提问,但是看到你的经历吓得我赶紧去查我的订单,发现已经取消的并且已经收到取消邮件的订单却在APP里显示即将入住!
你好,我也遇到了同样的问题,在app上取消了,但是仍然扣款,说,没有取消记录。请问你上次的问题解决了吗?
正常取消预订后订单还是在列表里的,要手动删除订单,发现异常就应该马上联系客服
问答探路者
擅长马来西亚、缅甸、泰国等地的问题
死磕,必须要求给出已取消的证据,否则到时被扣钱真是要哭啊
看下取消的订单里面&有没有那个取消的&话说&真的是第一次遇见这样的情况
在你的预订里,"取消的预订"里可以看到,取消后必须收到邮件才能确保安全
打开微信,点击底部的“发现”,使用 “扫一扫” 即可将网页分享到我的朋友圈。
https://www.baidu.com/s?wd=在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
我先在要做这样的功能:
用户在创建订单后,订单表中记入的是未付款状态,如果用户在30分钟后,还未付款,然后就把该订单给取消。
关于用户创建订单,30分钟后还没付款,取消该订单的逻辑是怎么实现的。
我自己的想了两个方案:
(1):客户端记入这个订单,如果在30分钟后还没有付款,就发送一个请求,调用后台的接口,来取消这个订单。
(2):服务端写个脚本,然后crontab来执行,来监控在30分钟还没有付款的订单,如果有就取消订单。
各位大神,这是我想到的两个方案,不知道合不合适,求大神们指点指点,感激不尽。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
不知道你的客户端是什么,但是方案1很依赖客户端,订单决策不应该由客户端发起
方案2的话就要考虑你的执行密度,要知道每时每刻都会有新订单发起的,每时每刻也会有订单过期。
用一些成熟的带TTL控制的方案吧,比如redis。
我之前的做法是在每次查询这个订单时候检查过期,被动过期。
比如,查询订单细节时,再去检查是否过期然后再处理。当然,如果这条数据不被访问可能永远不会过期,直到有人访问它。
有点像薛定谔的猫,在你打开盒子(检查订单)之后,才知道它是否过期。所以叫被动过期
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
创建订单后,放个30分钟执行的任务到工作队列。
工作队列具体流程:
用户创建订单A
生成30分钟后执行的任务,任务内容是:检查订单A是支付成功,如果没支付则标记为失效订单
用户支付,如果订单已失效,说明已经过了30分钟,否则标记订单支付成功
Laravel自带的队列很方便:
胡思乱想:
直接用Redis的过期功能把订单删了并不好,或者要预留多一点时间,不要准确30分钟过期。
考虑这种情况:
对接微信支付,用户在29分59秒支付成功,微信在支付成功时发送异步给服务器,1.1秒后到达服务器,而这个时候订单已经被删了。
在生成微信的订单时判定一次即可。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
查询的时候直接拿当前时间加上30分钟过滤,配合被动取消订单很完美的解决方案
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
客户端数据被篡改就能无限修改这个时间阈值了
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
肯定不能依赖前端
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
守护进程处理
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我觉得性能最好的就是高票回答,也就是和php的session过期gc回收机制一样的原理。
如果理解不了那个方法,也可以试试看redis里面加过期时间的办法,这种方法有个缺陷就是如果某个redis节点当机,可能会导致那个节点下的用户订单丢失,这个时候就需要多机同步备份了。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
订单创建成功后放进redis
超时时间设置为30分钟
做个crontab定时任务
检查订单是否超过30分钟
推荐第一种方法
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
未付款的订单都扔到临时表里,客户端去判断是否过期。
服务器做个定时任务,每天清除一次临时表的过期订单数据。没必要总是去清理。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
普遍的做法是2,但是2比较尴尬crontab是分钟级别的。我觉得可以配合redis做一层下单时间校验。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
虽然不是干客户端的,但是我感觉从客户端去计算时间未免有点不靠谱吧,在下单的时候服务器就应该有信息了,然后服务端去加定时就可以了.
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
写个定时任务脚步,一分钟执行一次,查库操作。查询 未支付 并且 订单生产时间大于当前时间30分钟的每次查询10条,去执行取消订单逻辑
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
想到了一个 为每个订单创建一次性定时任务 以创建时间为起点三十分钟后 检查一次 处理逻辑
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
方案一 个人觉得是不可行的因为没有办法控制客户端能在半个钟准时的发送一个请求来撤销你的订单。
个人建议使用方案二,定时任务脚步,一分钟执行一次查询数据库 判断下单时间超过30分钟,取消订单。(如订单量大,不可用此方法)
另请注意,请判断好支付完成回调的验证,因为
用户下单后,20几分钟后再点击付款,再到支付页面停留,时间已经超过30分钟,然后支付成功回调时请注意判断验证回调的信息
另外希望有支付经验丰富的大哥指点指点。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
最近的项目也有类似的需求。我这边是被动更新 + crond 主动更新两种方式,因为是抢购,下单扣库存,5分钟不支付马上过期恢复库存。
当碰到支付完成到回跳时,订单刚好过期的时候,直接将订单设置为待退款状态,然后走另一个定时任务完成退款。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
其实没必要做成定时器之类的,你可以在订单生成的时候同时插入数据库 一个结束时间
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我刚好做过这样的功能,要看你取消订单后需不需要恢复库存了,不需要的话可以插入个结束时间来做标识,如果需要恢复库存的话可使用swoole里面的毫秒定时器swoole_timer_after来实现,如果使用的是laravel框架的话也可以使用延时队列来实现。
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
我的思路有点不同,有类似Redis,
或者打个比方说Cookie吧(当然不能直接就用cookie)
//新创建订单后
$order_sn = '123456'; //订单号
//这个方法自己看着建立,实际项目中没有这个函数方法,这只是思路!
cookie()-&push($order_sn, 1800);
//支付订单等操作时
//先检测cookie中是否还有这个订单号
if(!cookie()-&has($order_sn)){
die('该订单已过期!');
同步到新浪微博
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,学习技能、解决问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。分析订单状态:
在ecshop中控制订单的整个流程的状态有4种:
1,order_status
2,shipping_status发货状态
3,pay_status付款状态
4,综合状态
在代码中使用常量来进行配置
inc_onstant.php中配置了
/* 订单状态 */
define('OS_UNCONFIRMED',
0); // 未确认
define('OS_CONFIRMED',
1); // 已确认
define('OS_CANCELED',
2); // 已取消
define('OS_INVALID',
3); // 无效
define('OS_RETURNED',
4); // 退货
define('OS_SPLITED',
5); // 已分单
define('OS_SPLITING_PART',
6); // 部分分单
/* 支付类型 */
define('PAY_ORDER',
0); // 订单支付
define('PAY_SURPLUS',
1); // 会员预付款
/* 配送状态 */
define('SS_UNSHIPPED',
0); // 未发货
define('SS_SHIPPED',
1); // 已发货
define('SS_RECEIVED',
2); // 已收货
define('SS_PREPARING',
3); // 备货中
define('SS_SHIPPED_PART',
4); // 已发货(部分商品)
define('SS_SHIPPED_ING',
5); // 发货中(处理分单)
define('OS_SHIPPED_PART',
6); // 已发货(部分商品)
/* 支付状态 */
define('PS_UNPAYED',
0); // 未付款
define('PS_PAYING',
1); // 付款中
define('PS_PAYED',
2); // 已付款
/* 综合状态 */
define('CS_AWAIT_PAY',
100); // 待付款:货到付款且已发货且未付款,非货到付款且未付款
define('CS_AWAIT_SHIP',
101); // 待发货:货到付款且未发货,非货到付款且已付款且未发货
define('CS_FINISHED',
102); // 已完成:已确认、已付款、已发货
在lib_transaction.php中
lib_transaction.php 395行
if ($row['pay_status'] == PS_UNPAYED && $row['order_status']==1 )中
添加$row['handler'] =$row['handler'] . "&br&&a href=\"user.php?act=cancel_order&order_id=" .$row['order_id']. "\" onclick=\"if (!confirm('".$GLOBALS['_LANG']['confirm_cancel']."'))\"&".$GLOBALS['_LANG']['cancel']."&/a&";
460行cancel_order()函数中注释掉
//订单一旦确认,不允许用户取消
// if ( $order['order_status'] == OS_CONFIRMED)
$GLOBALS['err']-&add($GLOBALS['_LANG']['current_os_already_confirmed']);
ECSHOP 常量定义文件
ECSHOP订单自动确认
如何实现下订单后一个小时后未付款的订单自动取消
ECSHOP自动确认收货解决方案 【附代码】
订单超过15分钟未支付则关闭
确认订单页面
没有更多推荐了,以为中国没脾气?取消70万吨玉米订单,美国种植户:我们天台见以为中国没脾气?取消70万吨玉米订单,美国种植户:我们天台见小马金融百家号常言道:“人是铁饭是钢,一顿不吃饿的慌”,粮食对于我们来说是相当熟悉的。而我国作为一个14亿人口的人口大国,对粮食的需求更是无法比拟的。但是,我国本国所产的粮食,对于如此多人口的粮食需求来说仍是有些杯水车薪。这就需求我国进口国外粮食了,而进口国外粮食也有一定坏处,比方进口粮食花费较大,粮食进口把控严厉等等。我们都知道美国一直是世界粮食出口大国,据统计,美国每年粮食出口价值总达1490亿美元。美国幅员辽阔,三面环海,地理环境优胜,粮食产量高。由于美国农业机械化程度高,粮食栽培,收割速度快。而美国国内的粮食需求并不高,这也使得美国可以有大量粮食出口到世界各国。在很多粮食中,美国的玉米出口量是最高的,但是去年春节往后,美国粮食出口订单开端大量减少,很多现已下了订单的国家,也开端撤销订单,这是为什么?原来这是由于美国的大部分玉米都是转基因的,转基因的危害相信我们都有所了解。而我国作为进口美国数量最大的国家,也撤销了大量订单,这下美国可着急了。约有70万吨的玉米滞留在仓库等着发霉,这对于美国栽培户来说可谓是一场大灾难。其实早在2013年时我国就在美国玉米中查出含有MIR162转基因成分,之后便撤销了美国近百万吨的大米订单。美国频频发生同类型问题,是认为我国没脾气吗?这下我国不仅撤销了美国大量玉米订单,连带着美国大豆,高粱订单都大大减缩,真是山君不发威,拿我国当他们的k蒂猫啊!我国这选择是正确,必须给个赞,让美国自己吃个够吧本文由百家号作者上传并发布,百家号仅提供信息发布平台。文章仅代表作者个人观点,不代表百度立场。未经作者许可,不得转载。小马金融百家号最近更新:简介:理财咨询,关注我就够了作者最新文章相关文章

我要回帖

更多关于 京东订单查询 的文章

 

随机推荐