◆杨晟 罗奇
(湖南信息职业技术学院 湖南 410200)
随着手机等智能设备的普及,传统的线下影院购票方式将逐渐淡出历史舞台,在线购票已经成为主流[1-2]。一方面通过在线影院购票平台可以实时了解最新电影动态[3],帮助观影者根据个人喜好、评分及位置场次信息对电影进行最优选择。另一方面在线售票可以让观影者快捷的选购所需要观看的电影,并根据电影场次合理安排出行,节约大量的排队时间和等候时间[4-5]。
国内电影市场总体正处于快速发展期,影院规模和荧幕数量迅速增长[6]。在线售票影院系统为影院提供了一个广阔的市场平台,吸引了更多客源;同时还可以提升服务质量、节约人力成本。因此设计一款高效简洁的在线影院售票系统具有较大的社会价值和意义[7]。
本文设计了一个基于Spring Boot的在线影院售票系统。影院负责人可以使用系统进行影院信息、放映厅信息、放映场次以及订单信息的管理;观影者可以使用系统可以方便快捷地进行电影票的选购;系统管理员可以对影院负责人及观影者等用户信息进行维护。
如图1所示,系统总体功能有用户信息管理、电影信息管理、影院信息管理、放映厅信息管理、放映场次信息管理、订单信息管理和评论信息管理七个部分。管理员具有用户信息管理和电影信息管理等功能;影院负责人具有影院信息管理、放映厅信息管理、订单信息管理等功能;观影者具有订单信息管理、评论信息管理等功能。
图1 系统总体用例图
不同角色的用户登录系统后,会进入到不同的页面,执行不同的操作。为了保证系统运行的安全性,防止越权访问和恶意操作,需要建立基于角色的访问控制(RBAC)策略。根据上文所示的功能需求为管理员、商家和顾客三个不同的角色赋予不同的权限。当用户登录系统后,针对其每一个操作,系统判断当前用户所对应角色是否具有指定的操作权限,若具有该权限,则允许当前操作执行;否则禁止当前操作,并强制当前用户退出系统。
(1)用户信息管理模块设计
用户包含三种,分别是管理员、影院负责人和观影者,通过给不同用户设置不同的角色编码来进行区分。管理员账户由系统拥有者在数据库中直接创建,并赋予其角色编码ADMIN,使其具有管理员角色,管理员可以有多个;观影者需要通过注册才能成为系统用户,注册完成后,系统为其赋予角色编码CUSTOMER;影院负责人由管理员添加后成为系统用户,添加成功后,系统为其赋予角色编码MERCHENT。管理员登录系统后课进行影院负责人和观影者信息的维护。观影者信息维护包括查询观影者信息和冻结观影者信息等功能。影院负责人信息维护则包括添加影院负责人信息、修改影院负责人信息、查询影院负责人信息、删除影院负责人信息、冻结影院负责人信息等功能。
(2)电影信息管理模块设计
管理员登录系统后,可以对电影信息进行维护:包括添加电影信息、查询电影信息、修改电影信息、删除电影信息等功能。影院负责人和观影者具有查看电影信息的功能。
(3)影院信息管理模块设计
影院负责人登录系统后,可以对影院信息进行维护:包括添加影院信息、修改影院信息、查询影院信息、删除影院信息等操作。
(4)放映厅信息管理模块设计
影院负责人可以对放映厅信息进行维护:包括添加放映厅信息、修改放映厅信息、查询放映厅信息、删除放映厅信息等操作。
(5)放映场次管理
影院负责人可以对放映场次信息进行维护:包括添加放映场次信息、修改放映场次信息、查询放映场次信息、删除放映场次信息。
(6)订单信息管理模块设计
观影者和影院负责人都具有订单管理的相关功能。观影者具有创建订单、查询订单信息、删除订单信息等功能。影院负责人具有查询订单信息的功能。在创建电影票订单时需要选座,同一场次中已经被选购的座位不能被再次选购。每一个订单可以包含多张电影票,订单中还会保存电影、影院、场次、座位的详细信息作为快照,确保即使后续由于信息变更而导致纠纷时,可以使用快照作为判断依据。
(7)评论信息管理
观影者和影院负责人都可以查看商品的所有评论信息。此外,观影者还具有创建评论的功能,观影者在购买电影票之后,可以对电影进行评论。
顾客选购电影票过程流程如图2所示。
图2 顾客选购电影票过程流程图
(1)用户登录控制
为了保证系统运行的安全性,避免数据被恶意获取和篡改。系统所有功能都必须在用户成功登录后才能访问,并使用SHA-256哈希算法对数据库中的用户密码进行加密,防止用户密码泄露。
(2)用户操作权限控制
为了控制不同用户的操作权限,防止越权访问,系统采用RBAC访问控制策略,并使用Spring Security进行安全访问的控制。
如前3.1所述,本系统中,数据库中用户表结构中每个用户都有一个角色编码,用于标识用户的角色信息。同时数据库中还存在一个角色权限关联表,包含了角色与操作权限的对应关系,当用户登录成功后,系统将根据用户角色,从数据库的角色权限关联表中读取用户的操作权限信息。当用户执行某项的操作时,若包含对应的操作权限,则允许用户进行操作,反之则禁止当前操作,并强制用户退出系统。
图3 系统安全控制流程图
本系统采用开源的MySQL数据库系统进行数据存储。包含的数据表有电影信息表、影院信息表、省市区信息表、放映厅信息表、放映场次信息表、订单信息表、电影票信息表、评论信息表、用户信息表等、权限信息表。
电影信息表(电影id、电影名称、电影类型、放映时长、综合评分、导演、主演、图片存储路径、电影描述信息、删除标志位、创建人id、创建时间、修改人id、修改时间);
影院信息表(影院id、影院名称、所在省份id、所在市id、所在区/县id、详细地址、删除标志位、创建人id、创建时间、修改人id、修改时间);
省市区信息表(区域id、区域编码、区域名称、父区域id、删除标志位、创建人id、创建时间、修改人id、修改时间);
放映厅信息表(放映厅id、放映厅名称、座位横排总数、座位纵排总数、影院id、删除标志位、创建人id、创建时间、修改人id、修改时间);
放映场次信息表(场次id、影院id、电影id、语言版本、放映厅id、电影票单价、放映时间、删除标志位、创建人id、创建时间、修改人id、修改时间);
订单信息表(订单id、订单编号、客户id、电影场次id、电影名称、影院名称、影院位置、电影票单价、放映时间、放映时长、语言版本、放映厅名称、订单总金额、订单状态、删除标志位、创建人id、创建时间、修改人id、修改时间);
电影票信息表(电影票id、座位所在横排,座位所在纵排、订单id、删除标志位、创建人id、创建时间、修改人id、修改时间);
评论信息表(评论id、评论人id、电影id、所属订单id、评分、详细评论信息、删除标志位、创建人id、创建时间、修改人id、修改时间);
用户信息表(用户id、用户名、密码、昵称、性别、联系电话、邮箱、角色编码、删除标志位、创建人id、创建时间、修改人id、修改时间);
权限信息表(角色编码、权限编码)。
系统的E-R图如图4所示。
图4 系统E-R图
本文设计了一款在线影院购票系统,能够有效实现观影者方便快捷地选购电影票的需要,节约排队等候时间,提升影院服务质量,节约人力成本;还可以为影院提供了吸引客源的广阔市场平台。同时,使用Spring Security进行访问权限控制,确保了系统的安全性能。