12306业务系统升级也能被普通人推动?分段换座上线
前情提要
参考链接:12306分段换座设计怎么做?简化版拿捏了!
1
车内换座上线,“高铁随记”立功
对于这一新功能,不少网友表示“头一次听说,感觉很高级的样子,很人性化了,值得点赞”“把运力潜能尽量发挥出来”“新的功能,先试行,再慢慢完善,挺好的”。也有网友表示:“不管推出什么功能,只求我的‘十一假期’能候补到票。”
随后,我收到了更多朋友发来的微信链接,权威的有人民网这样的公众号文,内容都一样,就是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实际上是将所有结果合并成一行3
回顾总结经验,分享交流思考
分享多了,自然也就会融入到圈子中,而圈子对一个技术人员的成长至关重要。加入DTCC就是融入数库圈子最好的方式之一。DTCC为广大的技术人员提供了极佳的交流平台。比如,这次在大会上,我与许多不同领域的技术专家进行了深入讨论,包括12306的专家,这是一个难得的跨行业接触和成长的机会。大家可以积极参与这类活动,共同交流进步。
希望大家在心态上能积极主动,停止抱怨,深入思考,精准建议。