《89基于微信小程序的识图购物生鲜商城.docx》由会员分享,可在线阅读,更多相关《89基于微信小程序的识图购物生鲜商城.docx(51页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、基于微信小程序的识图购物生鲜商城摘 要目前,微信小程序由于具有快捷的获取和传播的特点,并且容易被开发者快速开发,已经成为基于移动应用的开发热点,在日常生活中得到了广泛的应用,也给人们的生活和工作带来了极大的便利。本系统基于微信小程序来开发识图购物生鲜商城,通过request接口实现与服务器端的实时交互;通过该系统,用户可以使用快速的识图购物功能,方便快捷。本文详细的介绍了目前我国小程序的应用现状,分析了小程序开发所需要的环境和技术,确定了论文选用的技术和平台。针对目前购物过程中检索不方便的问题,论文提出了识图购物的解决方案。在小程序中,因为是基于微信平台的,所以用户在进行注册的时候,只需要通过
2、request接口实现与微信账号的绑定即可完成注册。注册完成之后,就可以使用小程序进行购物了,在购物的过程中,可以通过识图的方法快速的锁定目标产品,也可以通过关键词检索的方式进行查看。系统采用tomcat服务器和MySQL数据库管理系统来确保系统的稳定运行。经测试表明,该小程序运行稳定,界面简洁且易于使用,扩展性良好且维护性较好,达到了预期的设计要求。关键词: 微信小程序;识图购物;MySQL;RequestMap Shopping in Fresh Market Based on WeChat AppletsAbstractAt present, WeChat applets have be
3、come the hot spot based on mobile applications due to the characteristics of quick access and dissemination and easy development. They are widely used in daily life and provide great convenience to peoples life and work. This system develops the map shopping in fresh market by interacting request in
4、terface with server. Users can experience the function of quick map shopping by using the system.This paper introduces the application status of applets in China at present and analyzes the environment and technology needed for applets development, and determines the technology and platform selected
5、 in the paper. For the problem of inconvenient retrieval in the current shopping, the paper puts forward the solution of map shopping. The applet is based on WeChat, so users can complete the registration only through the binding of request interface with WeChat account. After the registration, peop
6、le can use the applet to do shopping. In the process of shopping, people can quickly find the target product by using the way of map recognition or keyword retrieval. The system adopts tomcat server and MySQL database to ensure the stability. The test results show that the applet is stable, simple a
7、nd easy to use and has good expansibility and maintainability, meeting the expected design requirements.Key words: WeChat applets; map shopping; MySQL; request目 录1. 绪论11.1 研究背景11.2 国内外现状12.1 功能需求42.1.1 业务流程分析42.1.2 系统数据流分析52.1.3 系统总体功能分析52.2 性能需求62.3 可行性分析72.3.1 技术可行性72.3.2 经济可行性72.3.3 操作可行性72.4 技术介
8、绍72.4.1 微信小程序72.4.2 开发环境介绍83. 概要设计103.1 项目总体架构103.2 项目开发方法及环境部署103.3 各功能模块分析113.3.1 用户登录113.3.2 商品分类导航113.3.3 智慧识图113.3.4 模糊搜索商品123.3.5 热门商品推荐123.3.6 商品购买123.3.7 商品购物车功能123.3.8 订单管理123.4 数据库设计123.4.1 数据库概念结构设计123.4.2 数据库表详细设计164. 详细设计184.1 客户端与服务器的交互设计184.2 客户端的MVC模式设计194.3 客户端用户Token管理机制设计205. 软件功能
9、及核心代码225.1 小程序首页功能225.2 监听摄像头和识别苹果核心功能255.3 后台核心功能296. 系统测试336.1 测试目的336.2 测试方法336.3 系统测试337. 总结37参考文献38致 谢391. 绪论“互联网+”在我国的应用不断增多,促使了各行各业在发展模式上的转变。就从最基本的购物而言,如今人们更多依赖于互联网网上购物,尤其对年轻人而言,这种购物方式不仅节约了时间,还能在最短的时间内查看到更多的产品,实现了足不出户网罗天下商品的目的,并且这些商品的价格更加透明,“货比三家”的购物理念得到了真正实现。不仅如此,如今随着智能手机的大量普及,移动互联网的发展速度更快。许
10、多购物平台推出了自己的移动端购物应用,使得人们的购物更加便捷,随时随地就可以进行购物和商家交流等,并且可以通过识图购物的方式帮助人们快速获取生活中的物品信息。其中微信小程序是微信社交式微商发展的一个新方向,微信小程序依靠其无需下载,即用即走的特点迅猛发展,在两年多的发展中,就收获了大量的忠实粉丝。微信小程序也提供很多的内部接口,可以帮助开发者在较短的时间内容完成一款功能强大的小程序的开发。正是因为有了如此多的优点,加之当前人们对识图购物的迫切需求,本文以微信小程序为切入点和实现方式,设计和实现了一款识图购物生鲜商城,切实满足人们便捷的购物需求。1.1 研究背景社交媒体在我国的发展起步较晚,但是
11、发展速度很快,尤其随着微信的出现,社交平台的发展可以说是达到了巅峰。据数据统计表明,2019年度微信月活跃用户量已经突破11亿,从其庞大的数据及占比可以发现,微信在我们生活中已是必不可少的一部分。为了能够更好的服务于用户,在2012年8月微信推出了“微信公众平台”,可以说是微信的服务面有了进一步的提升,为中小型商户的发展提供了新的机遇,无论是新媒体还是新零售,在微信平台中都得到了有利的助力。面对如此庞大的客户群体,腾讯于2017年推出了微信小程序。它的出现进一步满足了人们工作生活的需求,它省去了在PC端和APP端的复杂安装,真正实现了即用即走,逐渐成为当前我国中小型线下零售转战的舞台,提供了这
12、些企业在新零售上的发展平台。微信小程序特点明显,首先正如“微信之父”张小龙所言,即用即走,无需下载也不需要安装,操作便捷,扫码或者获得链接就可以打开使用应用,满足了人们的便捷式应用需求,打造了一款轻量级的应用软件。其次是微信小程序内部提供了强大的接口支持,让开发者能够快速的进行开发,并且开发成本较低。1.2 国内外现状我国在网上购物平台的发展可以说是近几年的事情,尤其随着淘宝购物平台的快速发展,人们逐渐开始了在网上购物的新体验。通过这些年来的发展,网络购物已经成为了人们购买物品的习惯。只要想到购买物品,往往首先打开电脑或者手机进行搜寻,然后经过货比三家,快速下单,完成购物。加之我国电商发展得到
13、了物流快递行业的发展支持,使得我国企业产品的销售对电子商务平台的依赖性更强。在我国当前的电商平台中,阿里巴巴的淘宝购物网站、京东商城是比较有代表性的,他们的出现促使了我国网购零售平台的丰富发展。从淘宝商城的功能来看,包括了PC端和移动端应用。用户可以通过快速注册功能成为平台会员,然后在平台中搜索购物,可以对购买的物品进行评价,可以在线支付,可以和销售方进行沟通交流,可以完成购物过程中把商品在购物车中存放,可以在线下单和取消订单等,并且近年来的发展逐渐向移动端方向迈进,通常通过移动端淘宝APP购买同样的商品会获得更大力度的优惠,这也代表了当前电商平台的发展方向。京东商城在发展中,更加注重产品购买
14、后的物流体验,通过京东物流实现对客户购买物品的快速运输,尤其在京东擅长的电器销售中,提供了上门安装服务,使得在商城购买的物品免除了后顾之忧。其实,我国的许多电商发展思路是从国外类似平台的发展中演化而来的,加上本地化创新,使得这样的平台在我国的发展速度很快。在国外电商平台发展中有着许多的交易应用。并且在欧美等发达国家中,他们更加注重对信用体系的建设,从而使得电商平台的发展有了更加安全的保障。美国是信息技术发展的引领者,该国的网络电商平台多且精准。比如thredUP,它主要是面向妇女儿童实现商品销售,努力打造的是对受众群体的精准营销。此外,另一个比较有代表性的平台是Poshmark,它就如同我国的
15、咸鱼平台,在这里可以发布商品信息,寻找购买者。但通常可以先找到商品的购买者,然后进行销售活动。可以在平台上发布商品图片、文字信息等,实现对商品的宣传和展示,促使交易快速达成。此外,也有针对国外华人提供精准服务的APP应用,其中华人生活APP就是其中典型的代表,其创建办者是华人,服务目标是国外华人,更加准确的说是北美华人,通过提供更加符合这些人需求的物品,从而提升华人在这些国家的适应度。因此,该应用的商品交易达成度很高。通过对国内外类似平台的调查分析可以看出,国外在平台发展上灵活性更高,客户定位准确,服务层次全面,并且创新性高。国内在类似平台的发展中,往往寻求行业领先,以大而全为其显著特征,因此
16、服务的精准度存在问题。因此,急需要推出更加灵活的购物应用,以满足人们日渐个性化的购物需求。本文在研究中,以满足我国电商平台发展需求,推动新零售发展为目标,打造微信小程序购物新阵地,结合时下流行的识图购物的便捷性,为购物者和销售者打造新的连接桥梁。2. 需求分析2.1 功能需求2.1.1 业务流程分析通过本文的研究旨在为广大购物者提供一款更加易于使用的微客户端小程序,提供识图购物功能,帮助购物者实现更加便捷的购物体验。在系统研究中需要完成三方面的开发工作,一是微信小程序的开发,无需下载安装即开即用;二是服务器端应用程序的开发,可以发布小程序中所有的商品信息;三是系统数据库的设计和实现。在本系统的
17、开发中主要的业务流程是如图2-1。图2-1 业务流程图当购物者打开该小程序以后,程序会对用户的身份进行识别,确定购物者是否是第一次访问系统,如果是,那么系统会对用户进行相关信息的获取,用户需要对小程序的获取请求进行授权。如果不是第一次打开应用,那么用户就可以在小程序中搜寻要购买的物品,包括添加购物、浏览商品、下订单、清空购物车以及结算处理等。当用户的购物流程完成以后,系统中会形成对应的历史订单记录信息,便于后续用户进行查询。小程序会在用户购物环节中对用户的身份进行判断,防止出现错误。尤其在结算付款环节,如果检查到用户还没有进行授权,那么程序会进行提示,并由用户完成相应的操作许可。2.1.2 系
18、统数据流分析在识图购物生鲜商城小程序中,数据流包括三个部分,即小程序本地手机缓存、应用程序服务器以及微信服务器。通过小程序本地手机缓存可以存放用户的购物信息,提供购物者更加快速的查看体验。通过应用程序服务器则是提供购物者商品信息。通过微信服务器则是提供小程序的其他功能,包括购物者微信信息的获取、支付功能等。在图2-2中把这三个核心的系统数据流程进行了表述。图2-2 系统业务数据流图当用户打开识图购物生鲜商城微信小程序后,程序会对用户的身份进行获取。在得到授权后,用户开始浏览商城中的商品信息。该小程序中主要完成客户信息的处理、商品信息的处理以及订单信息的处理等。当用户提交购买请求以后,会通过显示
19、层提交用户请求,程序接收这些用户请求,并通过控制器实现对用户请求的响应,由程序接收用户请求和进行下一步处理,若购物过程结束,则进行支付;若还没有结束,那么可以通过购物车实现商品购买信息的本地保存。如果需要向应用程序服务器发起交互,则由系统的模型层构建和数据库操作之间的联系,并对数据库实现数据调取或者更新操作,其中用到了数据层的处理程序。2.1.3 系统总体功能分析微信小程序的核心目标是提供服务更加精准、使用更加便捷的购物体验。因此,在本文的研究中对系统的定位是生鲜商品销售。具体是果蔬品类的销售服务,以线上果蔬销售和线下实体店结合方式进行。程序中提供识图购物功能,充分借助微信平台中用户资源,实现
20、销售行为的达成。通过对系统功能进行整合,提升系统中功能使用的高效性,系统功能以图2-3中的六大核心功能模块需求为主。图2-3 小程序客户端整体功能结构图1、用户登录功能。实现小程序访问时获取用户微信信息的用户授权,并允许用户对其中细节内容进行必要补充,比如送货地址、联系方式等。2、商品信息展示功能。实现小程序中对果蔬产品的信息展示,包括详细信息以及广告显示等。3、商品分类功能。实现对销售商品的分类管理,便于用户按照商品分类进行商品信息的查找。4、购物车功能。通过该功能实现对购物者商品信息的暂存,便于用户对购买商品进行查看以及最终下单。5、下单结算功能。生产小程序中的购物订单,并且支持订单信息管
21、理和最终支付结算。6、个人信息管理功能。可以对用户的个人信息进行管理,可以对历史订单记录进行查看等。2.2 性能需求(1)响应需求:对于简单的业务操作而言,系统的响应时间要控制在5s以内,能够快速的对用户的操作请求作出响应。(2)扩展性需求:随着业务的不断优化和改进,系统要能够顺应这种变化的需求,能够适应环境的变化。(3)实用性需求:小程序开发的最终目的是向用户提供便利性,所以实用性是该系统的最基本的需求,要向用户提供简单的操作界面,能够针对不同的问题作出科学合理的响应。(4)维护性需求:要想持续稳定的向用户提供信息服务,就需要不断的对系统进行维护升级,所以该系统要具有一定的维护性。2.3 可
22、行性分析2.3.1 技术可行性目前,微信这一个平台已经非常的成熟和稳定,微信给小程序的应用提供了良好的环境基础。在对小程序进行开发的时候,选用Java语言和Tomcat服务器技术,本人在校期间学习过这方面的知识,并且在实习的过程中也参与了一些应用小程序的开发,具有一定的实践经验。所以,在技术方面,识图购物生鲜商城小程序的开发是可行的。2.3.2 经济可行性微信平台提供了免费的服务接口,Java语言开源免费,所以在该系统的研究中,基本不需要投入成本。然而,该系统研发完成之后,可以给人们带来极大的便利,能够方便人们足不出户就可以进行识图购物,对于商家而言,可以节省一大部分的广告费和实体运营费,在经
23、济方面,该程序的研发具有非常重要的意义。2.3.3 操作可行性目前,几乎每个人都注册了微信,都能够熟练的使用微信,微信小程序不需下载安装,应用非常的方便,在操作方面是可行的。2.4 技术介绍2.4.1 微信小程序微信小程序近年来的发展尤为迅速,通过小程序,可以向用户提供便捷的服务,在智能手机端,通过微信就可以连接小程序进行使用,而不需要安装任何的插件或者是应用程序。用户要想使用小程序的话,只需要使用微信的扫一扫功能或者获得小程序的链接,就能够打开使用小程序;通过小程序的使用历史及收藏的小程序,在微信的上方就可以找到并进入,用户再次访问的时候,只需要通过微信进入即可,这种方式不但方便快捷,而且对
24、客户端的要求不高,运行速度非常的快,不会对智能手机产生很大的消耗。在对微信小程序进行开发的时候,经常使用到一种框架,那就是MINA 框架,该框架是向小程序的开发人员提供专业的服务的,通过该框架可以实现文件的传输、网络的实时通信、任务的并发处理以及数据的安全防护等。可以说,通过MINA 框架给小程序的上层开发,提供了全套的JavaScript API,这样就能够通过小程序来实现一些应用功能的开发和实现。MINA 框架向软件开发人员提供了多项选择,可以在众多的编程语言中选择合适的,比如:WXML 、WXSS语言等。MINA 框架基于JavaScript的逻辑层来进行服务的处理,该框架也分为了三层,
25、分别是:视图层、逻辑层和数据层,图2-4给出了框架架构图。图2-4 微信MINA框架架构图2.4.2 开发环境介绍小程序的运行是依赖于微信的,不需要安装任何的软件和应用程序。为了满足开发人员的需要,微信官方向开发人员提供了专业的小程序的开发工具微信开发者工具,这一工具不仅不依赖于操作系统,而且使用非常的方便快捷。微信小程序服务器端采用的是Tomcat服务器,开发语言选用的是PHP,数据库服务器选用的是MySQL,下面对所用到的相关的开发工具进行简单的介绍。Tomcat包括了服务器(Server)可以进行灵活的打开或者关闭、容器(Container)以及连接器(Connector)等。该服务器配
26、置工具开源且免费,在访问用户量需求不大的中小型企业应用中可以很好的提供服务。服务器程序运行后占用的资源很少,可以更好的支持应用系统运行,实现对动静态网页的良好支持。在JSP动态网页编程中,Servlet运行在服务器端应用程序中,能够对浏览器端用户的访问请求进行处理,起传递信息的作用,也就使扮演一个传输者的角色。Servlet位于网络服务器内部的服务器端。与传统的命令行模式启动的Java程序不同的是,Servlet需要由网络服务器来进行加载,因此需要有JVM的支持能力。PHP是一种通用开源脚本语言,又叫做超文本预处理器。PHP语法吸收了C语言,Java和Perl的特征。入门门槛较低,学习难度不大
27、且用途十分广泛,在 万维网开发领域有很强的适用性。PHP的语言的与众不同的地方在于,它可以比其他语言更快地执行动态网页,PHP语言被看作是一种多用途的脚本语言,在进行互联网应用系统开发的时候,可以很好的与其他语言所开发的应用程序进行数据交互,从而极大的提升了系统的可扩展性。通过良好的软件系统架构设计,可以实现与Java程序、.net程序的相互通信,从而在极短的时间内完成系统的扩展。并且相应的应用系统具有良好的跨平台性以及可移植性,可以帮助企业在控制成本投入的同时取得更好的开发效果。MySQL数据库是一款体积小、响应速度好以及大数据量处理能力强的关系型数据库。借助该数据库管理系统可以很好的实现对
28、识图购物生鲜商城中各种数据的安全存储和管理。3. 概要设计3.1 项目总体架构在该程序的研究过程中,分为三大部分,分别是:客户端、服务器和数据管理,其中,客户端主要是通过“MINA”框架来实现的,该框架提供了丰富的组件,用户可以根据需要直接使用。在对系统的体系架构进行设计的时候,采用的是MVC设计模式,通过这种模式,可以向前端用户提供良好的购物体验。而服务器端则采用的是ThinkPHP5来向前端提供应用服务的,采用MySQL数据库管理系统向前台提供数据支持。ThinkPHP5对于服务器而言,是一个外部的框架,通过这一框架,可以向前端用户提供良好的交互体验,可以将选购的物品放入到购物车,可以对购
29、物车进行编辑维护,可以对提交的订单进行支付或跟踪管理。小程序可以通过本地服务器来提高业务处理效率,除此之外,大部分的业务功能还是需要在服务器端来完成的,主要就是通过API接口来实现交互。MySQL数据库管理系统则主要就是向程序提供数据支持的,MySQL数据库管理系统需要与TP5相互配合来完成数据的共同管理。图3-1给出了系统总体结构的设计描述。图3-1 系统总体架构图3.2 项目开发方法及环境部署在对该系统进行开发的时候,采用的是面向对象的设计思想和方法,面向对象的设计方法有很多的优点,比如:封装性、继承性等,通过封装技术,可以将业务逻辑进行封装处理,这样可以大大的提高了模块的内聚性,只需要通
30、过接口向外提供服务,利于程序后续的维护和升级。在对系统的解决方案进行设计的时候,面向对象的设计方法无疑是最好的选择,通过面向对象的方法,可以将一些基础的业务进行封装处理,这样不仅可以提高了代码的复用性,而且还提高了程序的开发效率。比如:在对用户进行身份校验的时候,不管在任何的情况下对用户进行身份校验的话,都是一样的业务逻辑处理,所以,我们就可以将这一业务逻辑进行封装,这样不管在任何的业务处理是进行身份校验,只需要通过接口调用封装好的方法即可。从系统维护性的角度而言,通过封装技术,可以将内部逻辑进行封装处理,让系统需要升级或维护的时候,只需要对相关的模块进行逻辑处理即可,而不需要大动干戈,对所有
31、的模块都进行处理。在该程序开发的过程中,选用的开发工具和技术都是开源免费的,这些软件只需要按安装一次就可以,对于客户端而言,并不需要安装任何的软件,也不需要进行相关的配置,只需要通过微信扫一扫关注之后就可以访问使用。通过对比了常用的软件开发工具以及开发技术之后,决定采用 PHPstorm 来开发后台服务器的 PHP 代码,在数据库访问方面,使用的是Navicat确保前端与后台的实时连接,数据库管理方面,选用的是MySQL。3.3 各功能模块分析3.3.1 用户登录程序基于微信平台开发,用户登录系统的时候,一般使用微信账号登录,当用户使用微信账号扫一扫识别小程序的时候,这时候就将微信账号与小程序
32、进行了绑定,当再次访问小程序的时候,会自动的获取微信账号,通过身份识别,进入到小程序进行业务功能的使用。3.3.2 商品分类导航识图购物生鲜商城向用户提供了很多中产品,为了方便用户的检索,在小程序中按照类型将产生进行分类管理。这样,用户在选择产品的时候,可以逐级的筛选,能够提高信息检索的效率。3.3.3 智慧识图智慧识图有两个入口,“识别体验”入口进入后,小程序会自动调取摄像头,点击识别后会获得图片,将图片的base64编码作为参数,调用百度算法进行识别,最后获得结果,再将结果作为关键字进行查找,跳转到商品列表;“选择图库识别”进入后,可以选择图片直接进行编码,再进行后续操作。3.3.4 模糊
33、搜索商品当用户需要对产品进行检索的时候,可以通过模糊检索的方式,在检索功能框中,用户输入关键词,系统就会采用模糊查询的方式,先通过中文分词器,将关键字进行分词,再根据所得的分词与已发布的商品名称进行关键字匹配,搜索到符合用户要求的商品,快捷高效。3.3.5 热门商品推荐根据商品的销量,按照从高到低的排序,依次排列在首页下方的商品列表中,为购物需求不明确的客户进行商品的推荐,提高交易量。3.3.6 商品购买用户选择了自己喜欢的商品之后,就可以提交订单进行支付处理,在小程序中进行支付的时候,可以根据自己的情况,选择适合的方式进行支付。用户可以在小程序查看自己提交过的所有的订单信息,后台管理员也会接
34、收到订单信息。3.3.7 商品购物车功能用户在选购产品的时候,可能一次性需要购买很多的产品,不可能每一个产品都提交一个订单,所以提供了购物车功能,用户可以将选择的产品添加到购物车,选择完成之后,再统一的提交订单。3.3.8 订单管理用户通过小程序提交了订单之后,可以对自己提交的所有的订单进行跟踪。后台管理员在对订单进行处理之后,订单的状态会自动的更新,必要的时候,可以以信息推送的方式将订单的状态变化情况推送给用户。3.4 数据库设计3.4.1 数据库概念结构设计按照系统数据库概念设计,在系统中如果要借助数据库进行数据管理,需要对数据实体进行获取,明确实体之间的关系,还需要对实体所具有的属性进行
35、分析,便于后期进行数据库的实现。业务处理过程中,不同的业务之间都具有一定的关系,所以业务所产生的这些实体之间也具有一定的关系,一般采用E-R图来对概念模型进行设计。E-R模型用E-R图表示,属性则是对实体特性的描述。在系统设计当中数据库起着决定性的因素。具体来说:1、商品实体用来记录程序中展示的所有商品的基本信息的,其属性结构设计见图3-2。图3-2 商品信息实体图 2、用户实体该实体主要用来记录在程序中注册过的所有的用户信息的,其属性结构设计见图3-3。图3-3 用户信息实体图 3、订单实体该实体主要是用来记录用户所提交的所有的订单信息的,其属性结构设计见图3-4。 图3-4 订单信息实体图
36、 4、用户地址为了购物的方便,用户可以将常用的一些地址维护到程序中,当需要提交订单的时候,只需要选择地址即可,所以一个用户可能对应多个地址,用户地址实体就是用来记录这些信息的,其属性结构设计见图3-5。 图3-5 用户地址信息实体图 5、订单商品用户在提交订单的时候,一个订单可能包含有很多的商品,所以该实体主要就是用来记录每一个订单中所包含的商品的信息的,其属性结构设计见图3-6。 图3-6 订单商品信息实体图 6、商品分类为了方便维护和管理,为了方便用户的商品检索,需要将商品进行分类管理,商品分类实体主要就是用来记录这些分类信息的,其属性结构设计见图3-7。 图3-7 商品分类信息实体图 得
37、出了以上的实体之后,通过对这些实体之间的关系进行分析,可以得出系统的E-R图,见图3-9。 图3-9 系统总体E-R图 3.4.2 数据库表详细设计获取了系统的E-R图之后,还需要将其转换为数据库表,论文选用的是MySQL数据库管理系统来实现对这些数据表的维护和管理的,部分表结构的设计如下:(1)商品信息表表31商品信息表数据名称数据含义goods_id商品IDgoods_name商品名称category_id分类idcontent商品详情goods_ price商品单价goods_image商品图片goods_ stock库存create_time创建时间update_time更新时间(2)
38、用户信息表表32用户信息表数据名称数据含义user_id用户iduser_name用户昵称logon_time注册时间up_time更新时间delet_time删除时间remarks备注(3)订单信息表表33订单信息表数据名称数据含义order_id订单IDorder_no订单编号续表1-3pay_time支付时间order_totale订单总额delivery_time发货时间receipt_status收货状态receipt_time收货时间order_status订单状态user_id用户idcreate_time创建时间update_time更新时间(4)收获地址表表34收获地址表数据
39、名称数据含义address_id主键IDuser_id用户IDname姓名phone电话province省city市area县区full_address详细地址delete_time删除时间update_time更新时间(5)订单商品表表35订单商品表数据名称数据含义order_id订单IDgoods_id商品IDnumber数量续表3-5delete_time删除时间update_time更新时间4. 详细设计本文所研究的小程序与其它的购物平台最大的区别在于能够通过识图的方式能够快速的识别物品,检索出类似的商品供用户选择。在对系统进行设计的时候,不仅需要注意这些功能性方面的设计,还需要注意小
40、程序运行界面的布局设计,采用 MINA 框架来对运行界面进行设计,确保操作界面的美观大方。整个程序运行的过程中,要确保前台与后台的实时连接,微信小程序客户端与本地服务器和微信服务器中 API 逻辑接口的支持,实现对业务逻辑的处理;为了能够提高智慧识图的准确性,系统调用的百度算法,不仅简单好用,而且准确度比较高;产生的业务逻辑信息存储在数据库中统一维护和管理,设计选用MySQL数据库管理系统。为了确保程序前台的业务逻辑的交互设计,系统采用MVC设计模式来进行不同模块的设计处理。为了能够满足用户的日常购物需要,将系统分为了5大模块,每一个模块内部对业务逻辑进行封装处理,通过接口完成模块间的交互,下
41、面采用时序图、流程图等来对具体的功能模块的详细设计给出描述。4.1 客户端与服务器的交互设计识图购物小程序通过前端接收用户的操作请求,在对用户的操作请求进行处理的时候,以wxml文件的形式来对信息进行包装处理的,将wxml文件传输给业务逻辑层之后,对其进行解析处理,客户端与服务器的交互原理见图4-1。图 4-1 客户端与服务器交互原理图当用户通过小程序提交操作请求的时候,客户端小程序会将请求进行封装,封装成js类文件,并使用HTTP协议进行信息的发送,当服务器API端接收到操作请求的时候,将封装后的请求进行解析处理,得到最终的操作请求,并在服务器端执行,将执行后的结果记录到数据库中,并且服务器
42、会先将结果返回到 js 文件的请求函数中。在整个的业务处理过程中,如果涉及到的具体的业务数据信息,都是以wxml文件的形式进行记录和传输的,这些数据信息最终在前台界面以信息列表的形式显示。上面以静态类的方式来对交互过程进行描述的,在实际的业务处理过程中,不同的页面以及不同的类之间都是动态交互的,这就需要使用控制器来进行动态的调度管理。当客户端用户提交操作请求的时候,首先,需要获取到用户的动作也就是用户的操作请求,然后在根据具体的操作请求,调用相关的方法,响应用户的操作请求。在对用户的操作请求进行获取的时候,是通过wxml的相关属性来进行定义和获取的,当用户发出某个操作请求的时候,一般以even
43、t 事件的形式进行交互处理。视图层接收到了用户的操作请求之后,需要调用js文件来对相关的事件进行相应处理,并通过HTTP协议将请求发送给服务器端的API接口,将最终的处理结果反馈给js文件,并在前台界面显示。4.2 客户端的MVC模式设计MVC是一种成熟的软件领域的设计模式,MVC由三部分组成,分别是:Model、View和Controller。通过这三个部分,也就将应用系统分为了三层,分别是:表示层、业务层和数据层,这三个层次相互独立,又相互协作,共同来完成完整业务的处理。通过MVC软件开发模式可以更好的实现软件的耦合度,使得软件在不改变其他部分的情况就可以通过单独开发层的转变进行实现。通过
44、MVC进行软件开发,不会因为程序的变动而调整全部,这在传统软件开发中几乎是不可能做到的。而在MVC模式中则可以进行分别调整,比如用户视图发生变化可以只改动视图,模型处理则只调整模型层的处理代码。这种变化使得程序人员的处理效率以及准确性得到了改善。按照这种设计思想,系统中的视图层(View)包括的程序文件是.wxml和.wxss为后缀的文件,在控制器层(Controller)中用到的是.js文件,而在模型层(Model)中只需要处理好model.js文件即可。系统中的配置文件则通过.json文件进行管理。于是,小程序就可以通过前端的显示层对用户的请求进行接收和简单处理,然后通过控制器做出具体的响
45、应,然后根据逻辑处理需求选择对应的模型进行数据的处理,从而实现了用户和系统服务器的交互。该小程序总体上的运行原理可以通过图4-2中的结构进行表示。图4-2 小程序客户端的MVC模式设计原理图其中,在模型层中的数据处理是通过网络向服务器中的应用程序发起的接口交互,然后通过服务端的应用程序获取MySQL中的数据,并根据需要进行数据的添加或者处理。在服务器端完成数据的响应以后,通过API再把数据返回到微信小程序,并通过前端的View层把处理结果显示出来。在系统开发中通过这样的方式实现了前后端的分离,确保了各个部分单独负责系统中数据的显示或者处理,使得程序的耦合度得到了降低,并且由于有了这种清晰的系统
46、结构,也使得程序的后续维护变得简答。当需要对系统进行功能升级的时候,可以按照相同的流程对系统进行完善。4.3 客户端用户Token管理机制设计在传统的网站系统中,用户在网站中进行商品的购买需要其登录系统来完成。网站会对用户的登录信息进行验证,并记录下用户的个人信息。通常会通过cookie的方式进行保存。在其他一些APP应用中也是一样的道理。但是在微信小程序中则不同。该程序中是通过Token令牌机制来对用户的身份进行标识和管理的。通过图4-3中的时序图可以看出该小程序中用户登录和Token的获取过程。图4-3 用户获取token令牌时序图在该小程序中,用户登录小程序时会获取其微信账号信息,微信则
47、会通过wx.login()方法来为用户的登录做出响应,并产生唯一的code码,这时候小程序会和开发者服务器建立连接,并发送该code码。并由服务器借助getToken()方法向微信服务器发送相关信息,并由从微信服务器中获取响应。这时候返回的数据中会带有两个重要的参数信息,分别是用户id 、session_key。其中用户id是用户身份的标识,并且是唯一的。在服务器端把该参数保存下来,如果用户登录就会自动对应该标识。考虑到该数据的安全性,通常会把该数值保存为一定时效性的token 令牌。这样只要用户访问微信小程序,就会自动和开发者服务器中保存的用户id 进行对应,并完成认证和判断过程。从而确保了访问用户的安全性,如果系统中没有对应的数据,那么该用户需要向微信服务器进行申请。具体的验证路程可以通过图4-4中的内容进行表示。该Token令牌会保存到小程序客户端的缓存中,如果程序校验过程中发生错误,需要用户再次进行Token的获取。但是考虑到在实际业务进行过程中,小程序会频繁的发生各种业务,比如在线支付、下订单操作等,因此可以通过创建一个全局基类的方式实现对Token的统一管理