长江大学 湖北省武汉430000
1系统的详细设计与实现
1.1系统总体设计
系统总体设计采用的是B/S模式,是一种商品的供应商直接对消费者的电子商务模式。该系统基于MINA框架,其响应式数据绑定系统可以轻松实现数据和视图的同步;使用MINA框架的Web请求的高并发可以通过NIMA框架的数据库来进行操作;手机模拟器渲染的页面由Vue框架编译和打包,生成HTML、CSS和JS文件。 服务器和模拟器之间的HTTPS请求在传输过程中能够保护数据。系统总体设计如图1所示:
图1 系统总体设计图
1.2前后端分离设计
MINA后端框架的设计模式是MVT,以前使用Template来渲染主页,但这次前端和后端框架是分开开发的,Vue框架被用来渲染页面,前端页面被Vue单独设计更加方便调试页面。
前端框架Vue的设计模型是MVVM,ViewModel在View和Model部分之间进行沟通,使页面数据能够动态呈现。浏览器不能够识别.vue类型的文件,所以前期运用Vue框架之后需要将这些文件进行打包成让浏览器可以识别的文件。前后端分离框架图如图2所示:
图2 前后端分离框架图
1.3数据库设计
拼夕夕微信团购小程序所使用的数据库是采用MySQL与Redis的配合的方式搭建的。把表中经常访问、复杂且不经常变动的数据记录放在Redis中,用户查询时先去查询Redis再去查询MySQL,实现读写分离,降低读取数据库的时间。数据库设计图如图3所示:
图
3 数据库设计图
1.4用户模块
MINA框架自带了用户和用户组的模型类可以直接生成对应的数据表,但是本项目需要在原有的数据表上进行改动。在app.js的onLaunch中获取到openid,然后赋予app.globalData.openid中。第二次登陆,在首页中查看是否存在缓存openid,如果不存在,说明客户肯定是第一次登陆,则清除所有的缓存和去全局;如果存在,还分为2种情况,此时需要用wx.checkSession来检测是否登录过期。第一种情况:没有登录过期,则直接使用缓存即可;第二种情况:登录过期,则清除所有状态。后续操作中都使用全局。在第一种情况下,把缓存openid赋值给全局openid。
1.5商品模块
商品表为(nideshop_goods_attribute),包括字段:id,goods_id,attribute_id,value。其中@RequestMapping注解没有指定content-type的类型,为了统一操作将图片Uri转file路径后再放到uploadImage里去。如果上传的文档为空文件,则说明“上传文件不能为空”。
1.6订单和购物车模块
订单表单和购物车表单的数据相同字段很多,为了方便起见,订单表的设计在购物车表的基础上添加了收货地址、收货手机、快递公司、快递号单号等字段,由于需要 "封存 "已填充的订单数据,订单数据表中不允许有外键,只能单独创建必要的字段。
2系统实现
采用了MySQL+Redis的方式,后台管理中,可以通过Tomcat增加、删除、修改、查询某一信息,也可以在Navicat Premium通过修改数据表的信息进行操作。运用微信开发团队推出的一款开发软件“微信开发者工具”,来模拟操作的真实界面。前端开发语言主要用WXML、WXSS及JavaScript。支持后端开发的语言有Java。微信的密钥一般选择RSA2方式加密,因此需要在Open SSL官方网站下载Windows的Open SSL安装包进行安装,生成公私钥命令。使用第三方组件的项目需要了解组件内的数据结构,并需要在Vue生命周期内执行操作。本系统相对于真正上线的产品来说存在着不足,功能上来说也并不完美,比如说页面较为简单,支付的接口最终没有连接成功,这些技术难点需要克服。