火车票信息查询系统需求分析文档 - ZJH9Rondo/LeetCode GitHub Wiki
需求分析文档
- 一、需求分析
由于目前的购票系统主要面向的是国内的市场需求,所以,在系统基本结构完成的同时主要考虑的是系统面向社会开放之后,所要在节假日承受的数以亿记的并发访问操作,以及国情导致,所以在设计时,需要考虑到使用用户的范围层次参差不一,不同文化程度的人是否能在购票中尽可能的拥有一致的体验,以及尽可能的逻辑设置不影响用户的操作。
- 1.个人用户需求
1. 个人购票业务
* 成人全票/学生票
2.个人退票业务
3.个人票务改签
4.个人购票选座业务
* 硬座/硬卧/软卧
5.个人票务查询业务
6.个人订票服务通知
- 2.团体用户需求
1.团体订票业务
2.团体退票业务
3.团体票务改签
4.团体购票选做需求
5.团体订票服务通知
- 三、模块分析
-
1.用户登录管理功能
1.支付宝第三方认证登录 2.微信第三方认证登录
- 为什么使用第三方登录验证?
由于目前火车票购票国家要求实名制,所以在使用App进行网上订票期间,需要实名认证的支持,由于微信和支付宝早已进行了实名认证,并且提供了开发者平台的登录认证接口,这样很方便的进行了登录认证,并且也合理的降低了项目的复杂度,便于用户数据管理。
- 如何将用户的第三方认证登录接入?
- 本地如何支持用户第三方登录?
因为目前所有的第三方登录都是基于开源的oAuth协议,对应的平台会在其服务端开启相应的接口,我们需要在开发平台注册相应的开发者账号,并且创建相应的应用,对应平台会给你所创建的项目对应的client_id和client_secert,并且我们需要为平台提供对应的请求url和认证成功后的响应跳转url,所以需要提供客户端请求(client)接口和服务端响应(client)接口,本地用户的客户端在触发请求之后,会向后端接口发出请求,获取存储在配置文件的client_id,携带此id向认证平台发送请求,认证平台在接受到认证请求之后会跳转至当前认证平台的登录接口,登录认证成功后会返回给当前在认证平台创建项目所设置的跳转链接,给此接口发送token,本地的服务端响应接口在接收到请求之后,会获取到认证平台返回的token,之后购票系统即可携带此token对用户在认证平台的部分信息进行访问。
第三方登录接口 1.客户端请求接口,跳转至认证平台登录链接,携带client_id 2.服务端响应接口,获取认证成功返回的token,发起请求,获取用户信息 3.客户端响应接口,处理用户返回数据。
- 本地如何对第三方登录用户信息进行保存?
服务端在用户认证成功之后,会进行识别,携带返回的认证平台ID,在数据库进行查重操作,判断当前用户是否已经在此平台登录注册过,近而判断是否需要对此用户在数据库进行用户注册操作,如果是初次登录,则在[判断之后,调去回调函数,依据设定的数据库users.model,创建用户,保存至数据库。
// 用户user.model user{ _id: 自动生成的id, ID: 认证平台_ID, name: 认证平台_姓名, phone: 认证平台_联系电话, age: 认证平台_年龄, ID_number: 认证平台_身份证号 } // 订单orders.model orders{ _id: 自动生成的id, ID:用户认证平台_ID, orders: [ 未使用订单_未过期 ], past_Orders: [ 未使用订单_过期 ], used_Orders: [ 已使用订单 ] }
- 用户个人信息数据调用接口设计汇总
用户第三方成功登录之后,可以进行后续购票操作,对于订单个人基本信息填写,直接从数据库查询获取进行初步填写(可更改),在用户成功下单之后,会生成用户的订单信息,订单信息包括未使用订单,已使用订单,过期订单,存放结构采用对象数组,订单信息存放在数据库单独的orders.model表中,在查询获取信息的时候,使用用户认证平台ID进行连表查询,获取相应的用户信息。
-