基于ThinkPHP的灯光互动系统设计

2018-11-23 05:23张玉杰刘玉梅
照明工程学报 2018年5期
关键词:花样管理员服务器

张玉杰,刘玉梅

(陕西科技大学电气与信息工程学院,陕西 西安 710021)

引言

LED以其独有的寿命长、节能环保、安全可靠等优点,在智能路灯、景观照明、商业展示等广泛应用,但是在传统的照明应用中,LED灯光通常只是以“单向传播”的方式向观众展示提前设定好的内容和花样,缺乏参与感和新意[1-3]。基于此本文提出LED灯光互动的概念,使得LED灯光不但能作为显示屏显示,还能让用户随时参与互动,灯光随着用户的操控实现不同的花样展示,使用户享受掌控灯光的乐趣。

系统以ThinkPHP框架为基础,借助微信这款社交软件,开发实现微信客户端对LED的远程控制和实时传输数据。ThinkPHP框架的使用让MVC设计模式得意轻松实现,既能缩短设计开发周期又能降低系统后期维护。而微信和物联网技术的融合使手机不再单纯的具备普通的通话、短信和上网等功能,而是一个基于物联网的以微信为终端的智能系统,能实现智能控制、微信支付等功能。

1 TinkPHP框架和MVC模式

ThinkPHP框架是开源PHP框架,作为系统整体开发框架,自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、表单处理等常用的组件,并且能够解决系统应用开发中的大多数需要,对于跨版本、跨平台和跨数据库移植都比较方便[4]。框架中每个组件都是经过开发人员精心设计和完善的,应用开发过程中仅仅需要关注应用的业务逻辑即可。

MVC(模型Model、视图View、控制Controller)是一种把系统的显示界面、业务逻辑和数据三者相互分离的设计模式,这种设计模式的中心目的就是让Web的分工明确,从而提高开发效率,增强代码的重用性。在 ThinkPHP 中应用 MVC 模式,使得开发更加简单快速。

模型,系统所有的核心数据都在这里,还要完成系统功能所需的计算和逻辑关系控制,模型返回的数据具有独立性,输出的数据可供不同的视图使用。模型的主要任务有:代表应用程序的状态、响应状态查询、处理业务流程、通知视图状态更新。

控制,也可以称为控制器,它主要被用来接收视图传进来的数据,首先把数据给到视图对应的模型,然后把经模型处理返回的数据返回给视图,最终完成系统和用户的交互。可以简单的说控制器自身并不会产生任何东西,只是负责数据的传递。

视图,顾名思义就是系统用来和用户交流的显示界面,它的作用就是接受控制器发来的数据处理结果并展示给用户,还负责将用户输入传给控制器。三者之间各部分的交互过程分别如图1所示。

图1 MVC各部分交互过程Fig.1 MVC part of the interaction process

2 系统设计

2.1 系统功能需求分析

系统的主要功能是用户通过手机控制LED灯幕实现花样显示。从系统使用者角度分析,系统使用的对象为参与互动的用户和系统的管理人员,所以从两个方面去分析功能需求:

微信客户端:本系统中以微信H5网页的形式作为系统客户端,为互动用户提供控制的操作界面,通过页面操作实现用户与LED灯光系统的花样互动。具体功能包括:

1)扫码功能:互动现场提供二维码,用户扫描二维码后即可进入系统界面,参与互动;

2)花样列表:系统首页显示各类花样产品;

3)微信支付:选择收费花样或者自定义花样后可通过微信支付付款,操作方便;

4)个人信息:显示用户头像、昵称等;

5)历史记录:可查看历史购买记录;显示已选择花样的状态(已完成/已取消/待付款/已付款,正在排队);对于已付款但尚未处理的花样可选择取消。

管理员控制台:系统提供可视化的管理控制台,管理员利用该平台维护LED互动系统的日常工作,对系统中区域、花样、用户等各项数据进行统一管理,包括:

1)区域管理:管理活动区域的信息,一个活动场地只能对应一个区域二维码;

2)花样管理:管理各活动区域花样产品的增加和删除;设置产品参数,包括演示持续时长、费用等;

3)订单管理:查看和管理所有用户的订单信息;

4)用户管理:查看、管理用户信息;

5)统计功能:查看当前参与人数及所需时长、历史参与总人数/人次的统计数据;

2.2 系统方案设计

根据系统的功能需求将系统主要分为四个部分,分别是:云服务器、用户端、管理员控制台和LED控制器,并设计系统框图如图2所示。云服务器作为整个系统的数据交互中心,需要提供多用户与多控制器管理、可靠的远程通信、稳定准确的数据及状态查询以及文件的传输与存储等服务。用户端使用微信作为系统客户端,为用户提供参与互动的入口和控制LED灯光的操作界面。管理员控制台为方便管理员在可视化界面更方便集中的管理各项数据,维护系统日常工作。LED控制器主要负责与云服务器通信,获取控制指令,并控制LED灯具实现花样的展示。

图2 系统框图Fig.2 System block diagram

3 系统实现

THinkPHP 3.2架构采用模块化的设计方式,每个模块可以方便的卸载和部署,并且支持公共模块[5,6]。根据系统功能需求分析设计LED灯光互动系统共有四个模块组成,分别是:公共模块(Common)、用户操作模块(Home)、管理员控制台模块(Admin)、服务器与控制器通信接口模块(API)。

1)公共模块。Common模块是一个特殊的模块,是应用的公共模块,访问所有的模块之前都会首先加载公共模块下面的配置文件(Conf/config.php)和公共函数文件(Common/function.php)。在本系统中Common模块主要负责的是:(a)系统中各模块都会用到的功能,避免各模块都重复定义,造成浪费;(b)系统配置,比如:域名配置,系统数据库配置。ThinkPHP内置了抽象数据库访问层,把不同的数据库操作封装起来,只需要使用公共的Db类进行操作,而无需针对不同的数据库写不同的代码和底层实现,Db类会自动调用相应的数据库驱动来处理,所以在Common的配置文件中配置系统使用的数据库,如图3所示。

图3 配置数据库Fig.3 Configuration database

2)用户操作模块。系统利用微信作为用户进入控制LED灯幕的入口,通过“扫一扫”进入LED控制界面参与互动,首先得使第三方服务器对接微信公众平台,才能利用微信公众平台提供的开放接口实现微信支付、获取用户信息等功能[7]。对接微信公众平台:①申请云服务器;②注册微信公众账号,完成信息登记,成为微信公众平台开发者;③微信公众平台接口测试账号申请;④在微信公众平台配置URL,接入第三方服务器、进行微信认证后开通微信支付功能。

用户操作模块包含了两个子模块:花样选择和个人主页。用户通过“扫一扫”进入操作模块后首先进入花样选择界面,花样选择界面显示各类花样产品,包括“免费花样”、“收费花样”和“自定义花样”。“自定义花样”是用户可根据个人喜好上传手机中的图片或者编辑文字参与互动。个人主页包括:个人信息和互动订单管理。

用户操作模块中需要支付的时候就会用到微信公众平台提供的开放接口,当有需要调起支付的时候调用下面的支付函数。需要注意的是再调起微信支付之前得先将微信支付sdk导入到框架的/ThinkPHP/Library/Vendor/Weixinpay目录下,并且进行参数配置。

public function unifyorder(MYMboby, MYMtotal_fee, MYMout_trade_no, MYMopenid)

{

vendor(′WeixinPay.Weixinpay′);// 导入微信支付sdk

MYMconfig = C(′WEIXINPAY_CONFIG′);

MYMWeixinpay = new Weixinpay(MYMconfig);

MYMWeixinpay->body = MYMboby;// 商品描述

MYMWeixinpay->total_fee = MYMtotal_fee;// 订单金额

MYMWeixinpay->out_trade_no = MYMout_trade_no;// 订单号

MYMWeixinpay->openid = MYMopenid;// 获取到的openid

MYMjsApiParameters = MYMWeixinpay->getParameters();

return MYMjsApiParameters;

}

3)管理员控制台模块。管理控制台主要是给系统中管理员提供的可视化管理模块,在该系统中管理员控制台对维护日常互动工作的稳定运行非常重要。

管理员控制模块包含五个子模块,分别有:区域管理、产品管理、用户管理、订单管理、数据统计。一个互动场所即是一个区域,在实际应用中必然会有多个互动区域。每个互动区域对应一个唯一标识的二维码,方便用户扫描二维码后进入当前区域的互动操作界面,同时每个区域的花样也不尽相同,所以区域管理主要的功能有:添加新的互动区域并生成唯一标识的二维码、查看/修改/删除所有已添加的区域。产品管理主要包含:添加新的花样产品、查看/修改/删除所有已添加的产品。单独设置产品管理模块而不是和区域信息放在一起管理可以让区域和产品分块查询、互不影响,提高检索速率,使管理更加高效和直观。

用户管理可以对系统所有的用户进行统一管理,例如查看、删除。因为用户互动的时候可以自行上传手机中的图片,为了防止有用户上传一些不良图片,在用户管理这里设置了用户冻结/解冻的功能。

订单管理模块和数据统计模块都属于信息查看模块,方便管理员了解灯光互动的日常流水工作。订单管理用来查看和管理所有互动订单。数据统计可查看当前参与人数及所需时长、历史参与总人数/人次的统计数据。

4)服务器与控制器通信接口模块。用户在微信端完成互动下单后,订单信息便保存在云服务器中的数据库。系统为云服务器与控制器的通信提供接口,控制器通过访问API接口获取存在数据库中的控制指令,在指令完成后向服务器返回完成指令。基于此需求,设计获取订单信息接口、订单完成确认接口。同时设置心跳机制接口,控制器端每隔2秒访问一次服务器,服务器端更新控制器的访问时间updattime,用户端只需查看数据库中的updattime,即可知道控制器端是否掉线,若出现异常情况,及时提醒用户不要继续参与互动,提升用户体验性。

4 总结

本文就该LED灯光互动系统从系统框架、系统设计到系统的具体实现进行了详细描述。我们提出灯光互动的系统以ThinkPHP框架为基础,采用B/S架构,并将云服务技术接入LED控制领域,实现用户通过手机就可参与LED灯光互动活动,增强用户参与感,使LED灯光展示性更灵活。

猜你喜欢
花样管理员服务器
我是小小午餐管理员
花样童年
服务器组功能的使用
我是图书管理员
我是图书管理员
洁齿的花样
可疑的管理员
通信控制服务器(CCS)维护终端的设计与实现
PowerTCP Server Tool
计算机网络安全服务器入侵与防御