⓶惊!12306业务系统升级也能被普通人推动?

⓵悟!从12306改签困惑到数据库设计——高铁随记

前情提要

L老师准备去北京参加DTCC大会,便预订了从福州到北京的G302次高铁票。临时有事,L老师尝试将G302(7:23出发)改签到G322(9:14出发),结果发现系统提示G322"售罄",无法完成改签。

实际情况是如果系统支持车内分段分配新座位,L老师是可以顺利完成全程订票。然而,现有系统只能查询和分配全程相同的座位,无法识别这种分段组合的可能性。

L老师很无奈的放弃了改签,被迫保持原定行程,于是在车上写下了“高铁随记”,故事就从这里开始。

参考链接:从12306改签困惑到数据库设计——高铁随记

1. 车内换座上线,“高铁随记”立功

今天,我像往常一样4点准时起床,便收到老朋友曾力的消息。他告诉我12306真的开始支持车内换座了,并附了一篇来自987私家车广播公众号的文章链接——12306新增“车内换座”功能。

在这里插入图片描述

在这里插入图片描述

文中可以看出来,网友们对这项功能还是很开心的。

对于这一新功能,不少网友表示“头一次听说,感觉很高级的样子,很人性化了,值得点赞”“把运力潜能尽量发挥出来”“新的功能,先试行,再慢慢完善,挺好的”。也有网友表示:“不管推出什么功能,只求我的‘十一假期’能候补到票。”

我和曾力同样也很开心。为什么呢?因为我一个月前,我刚写了一篇文章《从12306改签困惑到数据库设计——高铁随记》,详细说明了无法车内换座导致的的改签失败问题,并分享了具体实现车内换座的核心代码。看来,12306还是会接受来自民间的建议啊!

随后,我收到了更多朋友发来的微信链接,权威的有人民网这样的公众号文,内容都一样,就是12306实现了我高铁随记的车内换座的功能。于是,我用百度搜索了一下,还真发现了不少关于车内换座的信息。

在这里插入图片描述

不过,有一点倒是出乎我的意料,我在文章中提到,如果乘客嫌麻烦,可以通过提供折扣优惠来增加换座的接受度,当时我的建议如下。‍

如果有人嫌这种方式麻烦,其实铁路部门还是可以考虑对分段乘坐做一个折扣优惠。这样看在钱的份上,大家也不会嫌弃中途换座位的麻烦。当然了,在春运这种一票难求的时候,就不用考虑折扣了,能多送一个乘客回家团圆,那可是功德无量的事。

结果浓眉大眼的铁路部门居然还卖的更贵了,看部分报道如下。

车内换座方案和以往的中转换乘有何不同?价格如何?

中新经纬23日下午以消费者身份咨询12306平台,客服表示,车内换座功能是近期刚上线的,具体来看,车内换座属于中转票的一种,是分段售卖,之前需要消费者一段一段去查,现在是12306系统可以优先算出这一趟车的线路并做出提示,用户可以分段购买同一趟车次的车票,到了中转站在车上直接换座即可。“其实就相当于买了两段行程,只不过两段行程是在同一辆车上,不需要换乘。”客服表示。

上述客服称,价格方面,会比直达的车票贵一些,“因为是分段售卖,每段加起来的价格一般会比直接买全程价格高。”

12306平台另一客服也表示,车内换座是为没抢到直达车票的用户提供的功能,即使有优惠的话分段票价加起来也比直达的要贵。

哈哈,看起来我还是太为铁路部门操心了。

2. 启发技术实现,交流推动落地

回想一个月前(8月21日)我去北京参加DTCC大会,由于改签失败,我在车上想到:为何不支持车内换座?于是就在车上写了这篇《从12306改签困惑到数据库设计——高铁随记》。在文章中,我详细说明了车内换座的改签困惑及如何实现车内换座的思路。其中业务逻辑的核心是这一部分,如下。

在这里插入图片描述

代码的核心则是如下(代码窗口支持左右滑动)。

WITH AVAILABLE_SEATS AS (
    SELECT 
        CAR_NO,              -- 车厢号
        SEAT_NO,             -- 座位号
        SEGMENT,             -- 行程段(1:福州到杭州,2:杭州到南京,3:南京到北京)
        STATUS,              -- 座位状态
        ROW_NUMBER() OVER (
            PARTITIONBY SEGMENT 
            ORDERBY CAR_NO, SEAT_NO
        ) AS RN               -- 为每个行程段的可用座位分配一个唯一的行号
    FROM TRAIN_SEATS
    WHERE TRAIN_ID = 'G322'-- 只选择G322列车的座位
    AND STATUS = 'AVAILABLE'-- 只选择可用的座位
)
SELECT 
    CASE 
        -- 如果三个行程段都有可用座位,则可以全程乘坐
        WHENCOUNT(DISTINCT SEGMENT) = 3THEN'可以全程乘坐'
        -- 如果至少有一个行程段有可用座位,则需要换座
        WHENCOUNT(DISTINCT SEGMENT) >= 1THEN'需要换座'
        -- 如果没有任何可用座位,则无法完成行程
        ELSE'无法完成行程'
    ENDAS TRAVEL_PLAN,
    -- 使用LISTAGG函数将所有可用座位信息连接成一个字符串
    LISTAGG('段'|| SEGMENT || ':'|| CAR_NO || '车'|| SEAT_NO || '座', ' -> ') 
    WITHINGROUP (ORDERBY SEGMENT) AS SEAT_ARRANGEMENT
FROM AVAILABLE_SEATS
WHERE RN = 1-- 只选择每个行程段的第一个可用座位
GROUPBY RN;  -- 由于RN总是1,这里的GROUP BY实际上是将所有结果合并成一行

当时在车上写完这篇文章,我本意是希望铁路部门能有所动作,但也考虑到技术圈子相对小众,不一定能被相关部门看到。其实,更多的是想让技术人员明白“俯首皆学问”的道理,给大家一些启发,没想到事情还真的有了转机。

到了北京参加DTCC大会,第一天在大会负责人黄围围引荐下,我见到了恰好来参加大会分享的12306技术专家,并进行了简单的交流,他表示他和同事们都看到了我的文章,对此表示认可和感谢!我最后说,希望12306能早日实现这个功能。他则回应说:“一定一定”。

第二天在大会上,我遇到围围时,告诉他我忘记加那位12306技术专家的微信了。围围开玩笑说 “你都在投诉他们了,还敢加他们微信”。我当时回应道,“这哪是投诉,我这是在提供一个乘客和铁路部门双赢的建议。这不仅是我的亲身经历,还细致到代码如何实现都写了”。随后我信誓旦旦地说,“12306一定会实现这个功能,自身有收益又惠民,名利双收,利国利民,何乐而不为?国庆,和春节出行高峰接踵而来,估计他们很快就会实现这个功能。” 围围也点头称是。

3. 回顾总结经验,分享交流思考

对于此事,我做了几点总结,也算是一个经验分享,希望能对广大技术从业人员有所帮助。

其一:乐于分享,收获惊喜

我在高铁上写的这篇文章,带来了一些小惊喜和成就感。能够不经意间为社会一份力量,我感到很开心。我最大的成就,是看到读者在我的影响下取得进步。许多人表示,看了我写的数据库书籍后,改变了他们的职业轨迹,让他们走上了数据库技术之路,这让我由衷地感到快乐。这也激励着我不断提升自己的技术水平,促进自身的成长。因此,我想说,分享不仅能帮助他人,还能促进自己的进步和扩大影响力,是一件非常有意义的事情。

其二:融入圈子,拓展视野

分享多了,自然也就会融入到圈子中,而圈子对一个技术人员对成长至关重要。加入DTCC就是融入数库圈子最好的方式之一。DTCC为广大的技术人员提供了极佳的交流平台。比如,这次在大会上,我与许多不同领域的技术专家进行了深入讨论,包括12306的专家,这是一个难得的跨行业接触和成长的机会。此外,我还活跃在其他多个技术社区中,如CSDN、PostgreSQL中文社区、dbaplus社群、信创数据库沙龙及TechTalk技术交流社区等。大家可以积极参与这些活动,共同交流进步。

在技术交流和实践中,工具和平台的支持也至关重要。特别感谢达梦提供的达梦在线服务平台,使我能在高铁上方便地验证代码。这种随时随地的便利,彰显了圈子的力量和朋友遍天下的好处。谈到具体的数据库产品方向,我建议大家拥抱原创的国产数据库,如:达梦、OceanBase、TiDB、Kingwow(金乌)、虚谷、PolarDB、崖山、Databend等,与时代共前行!

其三:停止抱怨,深入思考

这不仅仅是技术从业人员的问题。很多人遇到问题时,没有深入思考,也没有提出合适的解决方案,而是不断抱怨,这并没有什么作用。就拿我乘车改签失败这件事来说,如果仅仅停留在抱怨和投诉层面,是很难促成12306去完成这项改进的。如果你有深入思考,并给出详细的解决方案,那情况就会大有不同。

希望大家在心态上能积极主动,停止抱怨,深入思考,精准建议

未完待续…
⓷妙!探索12306车内换座的最优分配法

三分钟讲述个人感悟——感恩,回馈

公众号:收获不止数据库

系列回顾
“大白话人工智能” 系列
“数据库拍案惊奇” 系列
“世事洞明皆学问” 系列

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

收获不止数据库

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值