算法:初探12306售票算法。

阅读: 评论:0

澳大利亚参团旅游算法:初探12306售票算法。
以G71列车为例,⾸先对车次站台进⾏占位编码(从1开始到最后⼀站递加)
对以上占位简单描述以下:G71总共18个站点那么我们的单个座位的座位标识可以⽤⼗⼋位长度的⼆进制字符串表⽰10000000000000000每⼀位代表⼀个站点,每天放票前初始化到下⾯的订票表中,数据如下余票根据座位标识中的0的个数决定最⼤余票数量
印度人口多少亿订票表中的始发受限站点和终到受限站点可以灵活搭配(这个就可以实现限制站点发售)
限售渠道⼗进制 7 代表 1(车站)| 2(互联⽹)|4(电话)=7 即该票允许  车站, 互联⽹, 电话同时出售
那么还可以是 1|4 = 5  即该票只接受在车站和电话预定
扩展 8(代售点) 16 (⼿机端)
查询余票
如果我们要⽤互联⽹渠道查询⽇期为2016-06-11,始发站保定东站(3)到韶关站(15)的G71⼆等座F座位余票情况只需要执⾏如下sql(该SQL可以实现选座位和选车厢等功能)
美国金门大桥
select GUID,车次编码,车次类型,座位类型,车厢号码,座位编码,座位位置,车票版本号 from 订票表
where  座位标识=~((~坐标标识)|000111111111111000)
and 发车⽇期='2016-06-11'
and 车次编码='G71'
三亚度假村酒店and 始发受限车站=始发受限车站|000100000000000000
北京朝阳区五星级酒店and 终到受限车站=终到受限车站|000000000000001000
and 车次类型='⼆等座'
and 座位位置='F'and 受限渠道=2|受限渠道order by 余票数量 asc ,车厢 asc  --先卖余票少的,防⽌打乱更多的长途票
预定票
根据第⼆步中查询条件获取⼀条记录然后将车票状态改为锁定
待锁定成功后进⾏⽀付
update 订票表 set 座位标识=座位标识 | 000111111111111000,车票版本号=车票版本号+1,余票数量 = 余票数量-(15-3)
where GUID = Md5(车次+座位编码+发车⽇期) and 座位标识=~((~坐标标识)|000111111111111000)--乐观锁
根据更新结果是否为1则可以判定购票成功
⽀付成功后然后将保定到韶关的票保存到另外⼀张客户的车票表中
如果指定时间没有⽀付,那么直接调⽤退票sql
九寨沟观光车多少钱
退票
获得该车次保定到韶关的票 (000111111111111000)与对应的票进⾏异或^运算,则即可回归票池⼦了
选座
update 订票表 set 座位标识=座位标识 ^000111111111111000,余票数量 = 余票数量+(15-3),车票版本号=车票版本号+1 where GUID = Md5(车次+座位编码+发车⽇根据返回结果为1则标识退票成功

本文发布于:2023-08-29 11:03:08,感谢您对本站的认可!

本文链接:http://www.035400.com/whly/4/219920.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:座位   受限   车站   车票   标识   编码   站点   保定
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2024-2030 Comsenz Inc.Powered by © 文化旅游网 滇ICP备2022007236号-403 联系QQ:1103060800网站地图