近年来,随着移动互联网的快速发展,电子商务越来越受到网民们的欢迎,电子商务对国家经济的发展也起着越来越重要的作用。简单的流程、便捷可靠的支付方式、快捷畅通的物流快递、安全的信息保护都使得电子商务越来越赢得网民们的青睐。越来越多的商家使用计算机来开展业务、宣传各种产品。各种商业系统和软件已经解放了商家的双手,并使商家能够最大限度地获得利益。因此,计算机技术在商业领域占有非常重要的地位。
“动能”运动膳食微信小程序基于微信开发,通过运动与膳食结合了解健康生活的意义。本文主要是对“动能”运动膳食微信小程序进行需求分析,功能设计和功能实现。通过系统测试调整功能,实现可以使用的“动能”运动膳食微信小程序。
关键词:运动与膳食;Thinkphp框架;微信小程序
Development of PHP "kinetic energy" sports diet WeChat applet
Abstract
In recent years, with the rapid development of the mobile internet, e-commerce has become increasingly popular among netizens, and e-commerce is also playing an increasingly important role in the development of the national economy. Simple processes, convenient and reliable payment methods, fast and smooth logistics delivery, and safe information protection have all made e-commerce increasingly popular among netizens. More and more businesses use computers to conduct business and promote various products. Various commercial systems and software have freed businesses' hands and enabled them to maximize their benefits. Therefore, computer technology occupies a very important position in the commercial field.
The "Kinetic Energy" sports diet WeChat applet is developed based on WeChat to understand the significance of healthy life through the combination of exercise and diet. This article is mainly about the demand analysis, functional design, and functional implementation of the "kinetic energy" sports diet WeChat applet. Realize usable "kinetic energy" sports diet WeChat applet through system testing and adjustment functions.
Key words:Exercise and diet; Thinkphp framework; WeChat applet
目 录
一、 绪论
(一) 研究背景与意义
(二) 本文的组织结构
二、 开发工具及相关技术介绍
(一) PHP开发语言
(二) JavaScript脚本语言
(三) Mysql数据库
(四) AJAX技术
(五) Thinkphp框架介绍
(六) 微信开发者工具
三、 系统分析
(一) 可行性分析
1. 经济可行性
2. 技术可行性
3. 操作可行性
(二) 功能性需求分析
(三) 非功能性需求分析
(四) 业务流程分析
四、 系统设计
(一) 功能模块设计
(二) 数据库设计
1. 概念模型设计
2. 数据库表设计
五、 系统实现
(一) 用户登录的实现
(二) 系统前台主要功能实现
(三) 系统后台主要功能实现
六、 系统测试
(一) 系统可靠性测试
(二) 系统功能性测试
(三) 系统合格性测试
(四) 测试结果
七、 总结与展望
参考文献
致谢
随着体育运动的发展和大众健身的兴起,体质健康问题备受广泛关注,对运动营养学的研究也更加深入和重视。合理的膳食营养是运动人员最基本的保障,是保持良好的运动能力的物质基础。营养膳食作为训练外的强力手段之一,对运动人员的运动能力的提高和运动后恢复起到至关重要的作用。合理营养加体育锻炼获得健康同时,同样也获得健康身体素质。该文旨在分析合理饮食习惯及膳食制度在运动能力和健康状况上的重要作用,对营养搭配和体育锻炼中存在问题提出解决方案,为更好地加强自身营养意识进一步提高体育锻炼的效果提出合理化建议。在从营养学的基本理论着手,带动运动加强营养的认识和重视并建立正确的营养膳食观念,对维护和促进运动的健康具有指导意义。
本文的内容包括开发本系统的目的和意义、开发所用的到技术和和方法、系统的需求分析、系统的总体分析、系统的数据库设计、系统的实现过程、系统的编码设计、系统测试等。本文重点描述了系统的组成结构和功能结构,描述了一个系统从无到有的过程,实现了系统的所有功能。最后通过系统测试验证系统的可靠性和可用性。
PHP是一种面向对象的程序设计语言,类是PHP程序的基本组成单元,类中又包含了属性和方法,在类中又可以创建无数个对象。类中包含的主要成员是字段和方法,字段是指一种数据变量,方法是指对字段进行操作的集合,包括给其他变量赋值、调用方法等。PHP代码都是编写在类体中,类体中的每个数据项都可以看作是一个对象,PHP不支持类的多重继承,但可以支持接口的多重继承,并且支持类和接口的实现。由于PHP通常在网络环境中使用,所以PHP提供了一个防止代码恶意攻击的安全机制,同时,PHP具有强类型机制、自动收集垃圾和异常处理等特性,这些都是PHP语言健壮性的重要保证。
1、PHP语言具有如下特点:
(1)PHP 结合 C、Java、Perl 以及自创的新语法形成了自己独特的语法。
(2)PHP可以更快速的执行动态网页,当然这只是相对于CGI或者Perl来说,PHP可以在HTML文档中嵌入程序,而且去执行,另外PHP能够实现CGI的所有功能,因此说明PHP具有很强大的功能。
(3)大部分当下流行的数据库和操作系统PHP语言都能够支持。
(4)PHP语言的最重要特点就是可以让C、C++进行扩展
2、PHP语言具有如下优势:
(1)开放源代码:事实上PHP的所有源代码都可以得到。
(2)免费性:PHP是开源代码并且免费
(3)快捷性:PHP对于初学者来说,它不止编辑简单可以嵌入与HTML语言中,而且对于程序开发和运行也是非常快速的,并且非常容易掌握。
(4)跨平台性强:PHP是可以在服务器运行的脚本语言,所以在UNIX、Android、Mac OS、WINDOWS等操作平台上都可以运行。
(5)效率高:PHP对系统资源的消耗相当少,所以它的效率高。
(6)图像处理:PHP不止是可以使用GD2对图像进行处理,而且他还可以完成对图像的创建。
(7)面向对象:php4、php5对于PHP在面向对象上,有了许多的改进,PHP语言开发大型商业程序也是可以胜任的。
此作品中,其中包含了页面的搭建,以及前后台数据接口的连接等,而对于实现用户页面交互以及一些页面逻辑性判断等功能都是用JavaScript完成的[7],而JavaScript是已经被广泛用于Web应用开发,是一种属于网络的脚本语言,常用来为网页添加各式各样的动态功能,为用户提供更流畅美观的浏览效果。通常JavaScript脚本是通过嵌入在HTML中来实现自身的功能。JavaScript作为一种描述语言,作用于web前端,它基于对象(object)和事件驱动(Event Driven)并且安全性也较好。它可以有效的在客户端运行并为服务器减轻负担。
1、JavaScript具有的特点:
(1)脚本语言。JavaScript是一种脚本语言并具有解释性,在程序运行过程中,它就可以进行解释。
(2)基于对象。JavaScript可以创建对象,而且还可以使用现在存在的对象,它是基于对象的脚本语言。
(3)简单。JavaScript不对使用的数据类型有着严格的要求,应用的是弱类型的变量类型,设计是十分紧凑简单。
(4)动态性。JavaScript是可以不经过Web服务器对用户的操作做出相应,是可以采用事件驱动的脚本语言。
(5)跨平台性。JavaScript可以不依赖操作系统,但需要浏览器的支持。所以在编写JavaScript脚本后可以在任意机器上使用,但要注意的一点,使用的浏览器是支持JavaScript脚本语言,现在大多浏览器也支持JavaScript。
2、JavaScript的用途
JavaScript的用途是解决页面交互和数据交互,最终目的是丰富客户端效果以及数据的有效传递。
(1)实现页面交互,提升用户体验实现页面特效。即js操作html的dom节构或操作样式。
(2)客户端表单验证。当数据传送到服务端前,可以将用户填入并上交的信息快速有效的验证,进行了数据的交互,为服务器减轻了负担。
Mysql Database,通常简称为Mysql,是一款关系型数据库的管理系统。Mysql数据库系统是目前最流行的关系型数据库管理系统之一,其系统具有良好的可移植性,功能强大且使用十分方便。Mysql支持很多系统和硬件,包括HP-UX,Linux,MicrosoftWindows,SunSolaris,AppleMac等。
Mysql系统的特点:
(1)Mysql的多线索服务器的体系结构使其只利用很少的资源就能够支持多用户的、大数据的高性能事务处理;
(2)Mysql支持大量的多媒体数据,例如声音、动画、二进制图形和多维数据结构等;
(3)Mysql提供了安全保密管理系统,具有良好的安全性、一致性和完整性;
(4)具有新的分布式数据库能力和分布处理的能力;
(5)提供了一些高级语言的接口软件,可以帮助快速开发基于客户端的应用程序,具有良好的移植性、可连结性和可兼容性。
Mysql数据库逻辑结构包含表空间(tablespace)、段(segment)、范围(extend)、数据块(datablock)、和模式对象(schemaobject) 。每一个数据库都可以逻辑划分为一个或多个表空间,每一个表空间都是由一个或多个数据文件来组成。Mysql数据库分为系统表空间和非系统表空间,每一个Mysql数据库都包含一个称作SYSTEM的系统表空间。
AJAX是创建交互式网页的一种开发技术,利用AJAX技术可以实现以无刷新网页的方式更新HTML元素中的内容。传统的网页如果要更新网页内容,必须重新加载整个页面,而AJAX使用异步数据传输在网页和Web服务器之前传递HTTP请求,这样可以使网页只请求少量信息,而不用刷新整个页面。
ThinkPHP是为了简化企业级应用开发和敏捷WEB应用开发而诞生的。最早诞生于2006年初,2007年元旦正式更名为ThinkPHP,并且遵循Apache2开源协议发布。ThinkPHP从诞生以来一直秉承简洁实用的设计原则,在保持出色的性能和至简的代码的同时,也注重易用性。并且拥有众多原创功能和特性,在社区团队的积极参与下,在易用性、扩展性和性能方面不断优化和改进。
ThinkPHP是一个快速、兼容而且简单的轻量级国产PHP开发框架,诞生于2006年初,原名FCS,2007年元旦正式更名为ThinkPHP,遵循Apache2开源协议发布,从Struts结构移植过来并做了改进和完善,同时也借鉴了国外很多优秀的框架和模式,使用面向对象的开发结构和MVC模式,融合了Struts的思想和TagLib(标签库)、RoR的ORM映射和ActiveRecord模式。
ThinkPHP可以支持windows/Unix/Linux等服务器环境,正式版需要PHP5.0以上版本支持,支持MySql、PgSQL、Sqlite多种数据库以及PDO扩展,ThinkPHP框架本身没有什么特别模块要求,具体的应用系统运行环境要求视开发所涉及的模块。
作为一个整体开发解决方案,ThinkPHP能够解决应用开发中的大多数需要,因为其自身包含了底层架构、兼容处理、基类库、数据库访问层、模板引擎、缓存机制、插件机制、角色认证、表单处理等常用的组件,并且对于跨版本、跨平台和跨数据库移植都比较方便。并且每个组件都是精心设计和完善的,应用开发过程仅仅需要关注您的业务逻辑。
微信开发者工具现在已经被小程序开发团队开发运行,目前微信开发者工具任然在不断的完善中,在开发小程序时经常要不断的更新。可以使用微信扫码登陆开发者工具,开发者工具将使用这个微信帐号的信息进行小程序的开发和调试。
机型选择:小程序以智能手机的屏幕尺寸为设计标准,进行切图。
预览界面:写好视图布局后点击编译,用来刷新视图界面。
控制台:方便调试打印输出信息。
上传代码:上传到腾讯服务器,提交审核必经步骤。上传代码时可以填写版本号和备注信息。
资源文件:一般可以在资源文件进行对应项目的文件目录的断点调试。
显示远程调试:手机端和PC端开发工具联调对用户而言是非常实用的。
本地数据存储:显示的是本地存储的数据。
视图调试:标组件以子父层级结构呈现,方便调试。
本系统将在经济、技术、操作这三个角度上进行可行性分析。
整个系统从设计到开发以及测试过程严谨步骤齐全,所有工作任务全部由本人完成,并未获取外部技术支持,节约了一切服务成本开销以及人工成本,在硬件方面,为节约成本使用一台二手移动工作站作为项目部署服务器以及数据库服务器,成本在一万元一下,真个网络部署也是由本人独立完成不涉及到其他人工费用,整个开发过程本着低成本,低消耗的原则。
技术可行性分析的目的是确认该系统能否利用现有技术实现,并评估开发效率和完成情况。技术的可行性是指在当前的技术条件下,计算机软件和硬件的开发是否能够满足发展的要求。因为该系统的开发基于PHP语言,所以开发该系统所需的软件和硬件条件可以在普通计算机上满足。因为它占用的内存相对较少,所以用Mysql数据库开发和设计软件理论上没有问题,因为它占用的内存太少。上述技术可以有效地保证系统的成功和高效开发。
“动能”运动膳食微信小程序的使用界面简单易于操作,采用常见的界面窗口来登录界面,通过电脑进行访问操作,用户只要平时使用过电脑都能进行访问操作。此系统的开发采用PHP技术开发,人性化和完善化是B/S结构开发比较显要的特点使得用户操作相比较其他更加简洁方便。易操作、易管理、交互性好在本系统操作上体现得淋漓尽致。
前台需求:
(1)用户模块:主要包括用户的注册和登陆、用户个人信息管理等功能。
(2)健身知识模块:主要包括健身知识浏览、展示、搜索等功能。
(3)产品展示模块:主要包括健康运动膳食产品的展示,便于用户进行浏览选购。
(4)购买订单模块:主要包括添加购买订单、查看我的购买订单和删除购买订单等功能。
(5)订单模块:主要包括生成订单、我的订单、查看订单详细信息、在线支付等功能。
(6)网站公告模块:主要包括前台公告的展示以及查看。
(7)订单物流模块:主要可以查询用户订单的物流详情信息。
(8)意见反馈模块:主要可以在线进行意见反馈的提交。
后台需求:
(1)用户管理:主要包括用户列表、用户等级管理等功能。
(2)商城中心管理:主要包括产品列表、产品品类管理、产品添加、产品信息管理等功能。
(3)订单管理:主要包括订单确认、支付查看等功能。
(4)健身科普管理:主要是发布健身知识内容等。
(5)订单物流管理:维护管理用户订单的物流信息。
(6)订单售后管理:处理用户的订单售后问题。
(7)意见反馈管理:审核回复用户提交的意见反馈。
(8)公告管理:对公告列表可以进行增删改查操作。
用户用例图如下所示。
图1 用户用例图
管理员用例图如下所示。
图2 管理员用例图
产品添加用例描述如下表所示。
表1产品添加用例描述
用例名称 |
添加新产品 |
|
参与者 |
管理员 |
|
用例概述 |
本用例用于管理员进行添加新产品操作 |
|
前置条件 |
管理员添加新产品前必须登录系统 |
|
后置条件 |
系统中添加一个新产品 |
|
基本事件流 |
参与者动作 |
系统响应 |
4、管理员填写新产品信息,点击“添加”按钮。 |
2、系统打开添加新产品界面。 3、系统检查管理员输入的产品信息是正确有效的。 5、系统将产品添加到数据库中。 6、系统提示“操作成功”。 7、系统跳转到产品管理界面。 |
|
其他事件流 |
1、系统验证管理员输入的产品名为空,则提示“*请填写产品名称!”。 2、系统验证管理员输入的价格不是数字格式,则提示“*价格必须是数字格式!” |
健身科普添加用例描述如下表所示。
表2健身科普添加用例描述
用例名称 |
添加健身科普 |
|
参与者 |
管理员 |
|
用例概述 |
本用例用于管理员进行添加健身科普操作 |
|
前置条件 |
管理员添加健身科普前必须登录系统 |
|
后置条件 |
系统中添加一个健身科普 |
|
基本事件流 |
参与者动作 |
系统响应 |
1、管理员在后台主界面选择“健身科普管理”。 4、管理员选择一个健身科普,点击“添加”按钮。 6、管理员点击“确定”按钮。 |
2、系统从数据库中获取健身科普信息列表 3、系统打开健身科普列表界面。 5、系统提示“你确定要添加吗?”。 7、系统将健身科普从数据库中添加。 8、系统提示“添加成功”。 9、系统跳转到健身科普管理界面。 |
|
其他事件流 |
无 |
用户编辑用例描述如下表所示。
表3用户编辑用例描述
用例名称 |
修改用户 |
|
参与者 |
管理员 |
|
用例概述 |
本用例用于管理员进行修改用户信息操作 |
|
前置条件 |
管理员已经登录系统 |
|
后置条件 |
系统中更新一条用户记录 |
|
基本事件流 |
参与者动作 |
系统响应 |
1、管理员在后台主界面选择“用户管理”。 4、管理员在用户列表中选择一个用户,点击“编辑”按钮。 6、管理员填写用户信息,点击“保存修改”按钮。 |
2、系统从数据库中获取用户信息。 3、系统打开用户列表界面。 5、系统打开修改用户信息界面。 7、系统将更改后的添加到数据库中。 8、系统提示“操作成功”。 9、系统跳转到用户管理界面。 |
|
其他事件流 |
无 |
产品购买用例描述如下表所示。
表4产品购买用例描述
用例名称 |
产品购买 |
|
参与者 |
用户 |
|
用例概述 |
本用例用于用户进行对产品购买操作 |
|
前置条件 |
用户已经登录系统 |
|
后置条件 |
系统中增加一条用户购买记录 |
|
基本事件流 |
参与者动作 |
系统响应 |
1、用户在前台首页选择任意一个产品分类。 4、管理员在用户列表中选择一个产品。 7、用户填写购买订单,点击“购买”按钮。 |
2、系统从数据库中获取产品列表信息。 3、系统打开产品列表界面。 5、系统从数据库中获取产品信息。 6、系统打开产品信息及购买界面。 8、系统检查用户输入的信息是正确有效的。 9、系统将购买记录添加到数据库中。 |
|
其他事件流 |
1、系统验证用户输入的字段为空,则提示“*购买数量不能为空!”。 |
随着用户量的增加,系统可能会需要同时服务上千、上万个页面,服务器需要同时响应大量用户的操作,这就要求系统需要有良好的可扩展性,否则系统会出现延迟,卡顿甚至服务器崩溃的问题。高扩展性可以使软件保持旺盛的生命力,同时也能够使系统更好的适应用户增加、提高性能需求、增加应用功能等改变。
系统中保存了大量用户和管理员的个人信息,因此,保证系统服务器和数据安全是在开发过程中需要考虑的重要问题。安全性包括服务器安全、操作系统安全、数据库安全、程序代码安全以及用户个人信息和支付安全等,系统可以通过采用防火墙技术、加密技术、认证技术等来增强其安全性,只有一个健壮安全的系统才能具有长久的生命力。
“动能”运动膳食微信小程序的前台中,用户模块和产品商品模块进行数据交互,实现购买的功能。前台的功能主要包括用户模块、健身知识模块、产品模块、物流信息模块、购买模块和订单售后模块。
“动能”运动膳食微信小程序的后台中,管理员对用户在前台提交申请产生的数据进行处理,以满足用户的需求。前台系统和后台系统有数据交互,整个系统各个部分相互独立又密不可分。后台的功能主要包括用户管理、商城管理、订单管理、健身科普管理、物流信息管理、订单售后管理。
通过软件的需求分析已经获得了系统的基本功能需求。根据各大功能模块的不同,将系统分为各种功能大块。系统功能结构如下图所示。
图4系统功能结构图
注册/登录
游客(未进行注册或登陆的用户)可以浏览、搜索产品信息,但不能进行收藏和购买。用户注册首先需要进行表单验证,来验证账号和密码是否合法,然后验证账号是否已经存在,验证通过即可注册。
注册成功后,用户可以通过输入用户名来登录系统,输入密码后进行验证。登录成功后,用户可以使用产品收藏、产品购买、查看我的订单、产品展示、个人信息管理等功能。
个人信息管理
用户登录系统后,在账户设置中,可以修改昵称、头像、登陆密码、收货地址等个人基本信息。
健身知识搜索
系统首页展示了健身知识搜索输入框,用户在输入框内输入与健身知识标题相关的关键字,系统通过模糊查询搜索到用户需要的健身知识并展示。
产品信息展示
用户在浏览产品时,点击某一个产品,跳转到该产品的信息展示页。在产品信息页面展示了产品的具体信息,比如产品名称,价格详情等,用户通过浏览信息了解产品的具体信息,最终决定是否购买。
产品购买
在产品信息页面,用户可以通过点击“购买”进行购买产品,点击后跳转到订单生成页面。订单生成页面会展示产品信息,收货地址,配送信息等,用户确认后信息无误点击“提交”生成订单,订单生成后跳转到支付页面,支付完成则购买成功。
查看订单详情
用户在查看我的订单列表时,可以点击某一个订单来查看该订单的详细信息,主要包括订单编号、订单状态、订单日期、订单中的上商品信息、交易金额等。订单详情还可以查看订单的配送信息。
订单物流列表
管理员可以在“订单物流列表”中展示订单的物流信息,包含商品明细、快递公司、快递单号等具体信息。管理员可以对订单物流进行管理维护。
概念设计包括实体和联系两部分,如该系统中,用户是一个实体,其属性包括用户 ID 标识、用户名、密码、电话、地址等属性。联系是指实体之间有意义的关联,包括一对一、一对多、多对多三种类型。
系统E-R图如下所示。
图5系统E-R图
在图中,用户购买产品,关系为1:N,管理员管理产品信息,关系为1:N,用户和订单的关系为1:N。
数据库表是设计和实现系统的一个重要基础。以下列出了“动能”运动膳食微信小程序几个重要的数据库表。
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
address_id |
int |
10 |
0 |
N |
Y |
收货地址: |
|
2 |
name |
varchar |
32 |
0 |
Y |
N |
姓名: |
|
3 |
phone |
varchar |
13 |
0 |
Y |
N |
手机: |
|
4 |
postcode |
varchar |
8 |
0 |
Y |
N |
邮编: |
|
5 |
address |
varchar |
255 |
0 |
N |
N |
地址: |
|
6 |
user_id |
mediumint |
8 |
0 |
N |
N |
用户ID:[0,8388607]用户获取其他与用户相关的数据 |
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
9 |
default |
bit |
1 |
0 |
N |
N |
0 |
默认判断 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
article_id |
mediumint |
8 |
0 |
N |
Y |
文章id:[0,8388607] |
|
2 |
title |
varchar |
125 |
0 |
N |
Y |
标题:[0,125]用于文章和html的title标签中 |
|
3 |
type |
varchar |
64 |
0 |
N |
N |
0 |
文章分类:[0,1000]用来搜索指定类型的文章 |
4 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击数:[0,1000000000]访问这篇文章的人次 |
5 |
praise_len |
int |
10 |
0 |
N |
N |
0 |
点赞数 |
6 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
7 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
8 |
source |
varchar |
255 |
0 |
Y |
N |
来源:[0,255]文章的出处 |
|
9 |
url |
varchar |
255 |
0 |
Y |
N |
来源地址:[0,255]用于跳转到发布该文章的网站 |
|
10 |
tag |
varchar |
255 |
0 |
Y |
N |
标签:[0,255]用于标注文章所属相关内容,多个标签用空格隔开 |
|
11 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文:文章的主体内容 |
|
12 |
img |
varchar |
255 |
0 |
Y |
N |
封面图 |
|
13 |
description |
text |
65535 |
0 |
Y |
N |
文章描述 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
type_id |
smallint |
5 |
0 |
N |
Y |
分类ID:[0,10000] |
|
2 |
display |
smallint |
5 |
0 |
N |
N |
100 |
显示顺序:[0,1000]决定分类显示的先后顺序 |
3 |
name |
varchar |
16 |
0 |
N |
N |
分类名称:[2,16] |
|
4 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
5 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]描述该分类的作用 |
|
6 |
icon |
text |
65535 |
0 |
Y |
N |
分类图标: |
|
7 |
url |
varchar |
255 |
0 |
Y |
N |
外链地址:[0,255]如果该分类是跳转到其他网站的情况下,就在该URL上设置 |
|
8 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
auth_id |
int |
10 |
0 |
N |
Y |
授权ID: |
|
2 |
user_group |
varchar |
64 |
0 |
Y |
N |
用户组: |
|
3 |
mod_name |
varchar |
64 |
0 |
Y |
N |
模块名: |
|
4 |
table_name |
varchar |
64 |
0 |
Y |
N |
表名: |
|
5 |
page_title |
varchar |
255 |
0 |
Y |
N |
页面标题: |
|
6 |
path |
varchar |
255 |
0 |
Y |
N |
路由路径: |
|
7 |
position |
varchar |
32 |
0 |
Y |
N |
位置: |
|
8 |
mode |
varchar |
32 |
0 |
N |
N |
_blank |
跳转方式: |
9 |
add |
tinyint |
3 |
0 |
N |
N |
1 |
是否可增加: |
10 |
del |
tinyint |
3 |
0 |
N |
N |
1 |
是否可删除: |
11 |
set |
tinyint |
3 |
0 |
N |
N |
1 |
是否可修改: |
12 |
get |
tinyint |
3 |
0 |
N |
N |
1 |
是否可查看: |
13 |
field_add |
text |
65535 |
0 |
Y |
N |
添加字段: |
|
14 |
field_set |
text |
65535 |
0 |
Y |
N |
修改字段: |
|
15 |
field_get |
text |
65535 |
0 |
Y |
N |
查询字段: |
|
16 |
table_nav_name |
varchar |
500 |
0 |
Y |
N |
跨表导航名称: |
|
17 |
table_nav |
varchar |
500 |
0 |
Y |
N |
跨表导航: |
|
18 |
option |
text |
65535 |
0 |
Y |
N |
配置: |
|
19 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
20 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
cart_id |
int |
10 |
0 |
N |
Y |
购物车ID: |
|
2 |
title |
varchar |
64 |
0 |
Y |
N |
标题: |
|
3 |
img |
varchar |
255 |
0 |
N |
N |
0 |
图片: |
4 |
user_id |
int |
10 |
0 |
N |
N |
0 |
用户ID: |
5 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
6 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
7 |
state |
int |
10 |
0 |
N |
N |
0 |
状态:使用中,已失效 |
8 |
price |
double |
9 |
2 |
N |
N |
0.00 |
单价: |
9 |
price_ago |
double |
9 |
2 |
N |
N |
0.00 |
原价: |
10 |
price_count |
double |
11 |
2 |
N |
N |
0.00 |
总价: |
11 |
num |
int |
10 |
0 |
N |
N |
1 |
数量: |
12 |
goods_id |
mediumint |
8 |
0 |
N |
N |
商品id:[0,8388607] |
|
13 |
type |
varchar |
64 |
0 |
N |
N |
未分类 |
商品分类: |
14 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]用于产品规格描述 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
collect_id |
int |
10 |
0 |
N |
Y |
收藏ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
收藏人ID: |
3 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
4 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
5 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
6 |
title |
varchar |
255 |
0 |
Y |
N |
标题: |
|
7 |
img |
varchar |
255 |
0 |
Y |
N |
封面: |
|
8 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
comment_id |
int |
10 |
0 |
N |
Y |
评论ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
评论人ID: |
3 |
reply_to_id |
int |
10 |
0 |
N |
N |
0 |
回复评论ID:空为0 |
4 |
content |
longtext |
2147483647 |
0 |
Y |
N |
内容: |
|
5 |
nickname |
varchar |
255 |
0 |
Y |
N |
昵称: |
|
6 |
avatar |
varchar |
255 |
0 |
Y |
N |
头像地址:[0,255] |
|
7 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
8 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
9 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
10 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
11 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
feedback_id |
int |
10 |
0 |
N |
Y |
意见反馈ID |
|
2 |
theme |
varchar |
64 |
0 |
Y |
N |
主题 |
|
3 |
related_pictures |
varchar |
255 |
0 |
Y |
N |
相关图片 |
|
4 |
feedback_content |
text |
65535 |
0 |
Y |
N |
反馈内容 |
|
5 |
user |
int |
10 |
0 |
Y |
N |
0 |
用户 |
6 |
contact_number |
varchar |
64 |
0 |
Y |
N |
联系电话 |
|
7 |
examine_state |
varchar |
16 |
0 |
N |
N |
未审核 |
审核状态 |
8 |
examine_reply |
varchar |
16 |
0 |
Y |
N |
审核回复 |
|
9 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
10 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
11 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
goods_id |
mediumint |
8 |
0 |
N |
Y |
产品id:[0,8388607] |
|
2 |
title |
varchar |
125 |
0 |
Y |
N |
标题:[0,125]用于产品和html的 |
|
3 |
img |
text |
65535 |
0 |
Y |
N |
封面图:用于显示于产品列表页 |
|
4 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]用于产品规格描述 |
|
5 |
price_ago |
double |
8 |
2 |
N |
N |
0.00 |
原价:[1] |
6 |
price |
double |
8 |
2 |
N |
N |
0.00 |
卖价:[1] |
7 |
sales |
int |
10 |
0 |
N |
N |
0 |
销量:[0,1000000000] |
8 |
inventory |
int |
10 |
0 |
N |
N |
0 |
商品库存 |
9 |
type |
varchar |
64 |
0 |
N |
N |
商品分类: |
|
10 |
hits |
int |
10 |
0 |
N |
N |
0 |
点击量:[0,1000000000]访问这篇产品的人次 |
11 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文:产品的主体内容 |
|
12 |
img_1 |
text |
65535 |
0 |
Y |
N |
主图1: |
|
13 |
img_2 |
text |
65535 |
0 |
Y |
N |
主图2: |
|
14 |
img_3 |
text |
65535 |
0 |
Y |
N |
主图3: |
|
15 |
img_4 |
text |
65535 |
0 |
Y |
N |
主图4: |
|
16 |
img_5 |
text |
65535 |
0 |
Y |
N |
主图5: |
|
17 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
18 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
19 |
customize_field |
text |
65535 |
0 |
Y |
N |
自定义字段 |
|
20 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
21 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
22 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
23 |
user_id |
int |
10 |
0 |
Y |
N |
0 |
添加人 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
type_id |
int |
10 |
0 |
N |
Y |
商品分类ID: |
|
2 |
father_id |
smallint |
5 |
0 |
N |
N |
0 |
上级分类ID:[0,32767] |
3 |
name |
varchar |
255 |
0 |
Y |
N |
商品名称: |
|
4 |
desc |
varchar |
255 |
0 |
Y |
N |
描述: |
|
5 |
icon |
varchar |
255 |
0 |
Y |
N |
图标: |
|
6 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
7 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
8 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
hits_id |
int |
10 |
0 |
N |
Y |
点赞ID: |
|
2 |
user_id |
int |
10 |
0 |
N |
N |
0 |
点赞人: |
3 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
4 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
5 |
source_table |
varchar |
255 |
0 |
Y |
N |
来源表: |
|
6 |
source_field |
varchar |
255 |
0 |
Y |
N |
来源字段: |
|
7 |
source_id |
int |
10 |
0 |
N |
N |
0 |
来源ID: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
mall_center_id |
int |
10 |
0 |
N |
Y |
商城中心ID |
|
2 |
brand |
varchar |
64 |
0 |
Y |
N |
品牌 |
|
3 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
4 |
cart_title |
varchar |
125 |
0 |
Y |
N |
标题:[0,125]用于产品html的标签中 |
|
5 |
cart_img |
text |
65535 |
0 |
Y |
N |
封面图:用于显示于产品列表页 |
|
6 |
cart_description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]用于产品规格描述 |
|
7 |
cart_price_ago |
double |
8 |
2 |
N |
N |
0.00 |
原价:[1] |
8 |
cart_price |
double |
8 |
2 |
N |
N |
0.00 |
卖价:[1] |
9 |
cart_inventory |
int |
10 |
0 |
N |
N |
0 |
商品库存 |
10 |
cart_type |
varchar |
64 |
0 |
N |
N |
未分类 |
商品分类: |
11 |
cart_content |
longtext |
2147483647 |
0 |
Y |
N |
正文:产品的主体内容 |
|
12 |
cart_img_1 |
text |
65535 |
0 |
Y |
N |
主图1: |
|
13 |
cart_img_2 |
text |
65535 |
0 |
Y |
N |
主图2: |
|
14 |
cart_img_3 |
text |
65535 |
0 |
Y |
N |
主图3: |
|
15 |
cart_img_4 |
text |
65535 |
0 |
Y |
N |
主图4: |
|
16 |
cart_img_5 |
text |
65535 |
0 |
Y |
N |
主图5: |
|
17 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
18 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
notice_id |
mediumint |
8 |
0 |
N |
Y |
公告id: |
|
2 |
title |
varchar |
125 |
0 |
N |
N |
标题: |
|
3 |
content |
longtext |
2147483647 |
0 |
Y |
N |
正文: |
|
4 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
5 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
order_id |
int |
10 |
0 |
N |
Y |
订单ID: |
|
2 |
order_number |
varchar |
64 |
0 |
Y |
N |
订单号: |
|
3 |
goods_id |
mediumint |
8 |
0 |
N |
N |
商品id:[0,8388607] |
|
4 |
title |
varchar |
32 |
0 |
Y |
N |
商品标题: |
|
5 |
img |
varchar |
255 |
0 |
Y |
N |
商品图片: |
|
6 |
price |
double |
10 |
2 |
N |
N |
0.00 |
价格: |
7 |
price_ago |
double |
10 |
2 |
N |
N |
0.00 |
原价: |
8 |
num |
int |
10 |
0 |
N |
N |
1 |
数量: |
9 |
price_count |
double |
8 |
2 |
N |
N |
0.00 |
总价: |
10 |
norms |
varchar |
255 |
0 |
Y |
N |
规格: |
|
11 |
type |
varchar |
64 |
0 |
N |
N |
未分类 |
商品分类: |
12 |
contact_name |
varchar |
32 |
0 |
Y |
N |
联系人姓名: |
|
13 |
contact_email |
varchar |
125 |
0 |
Y |
N |
联系人邮箱: |
|
14 |
contact_phone |
varchar |
11 |
0 |
Y |
N |
联系人手机: |
|
15 |
contact_address |
varchar |
255 |
0 |
Y |
N |
收件地址: |
|
16 |
postal_code |
varchar |
9 |
0 |
Y |
N |
邮政编码: |
|
17 |
user_id |
int |
10 |
0 |
N |
N |
0 |
买家ID: |
18 |
merchant_id |
mediumint |
8 |
0 |
N |
N |
0 |
商家ID: |
19 |
create_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间: |
20 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间: |
21 |
description |
varchar |
255 |
0 |
Y |
N |
描述:[0,255]用于产品规格描述 |
|
22 |
state |
varchar |
16 |
0 |
N |
N |
待付款 |
订单状态:待付款,待发货,待签收,已签收,待退款,已退款,已拒绝,已完成 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
order_after_sales_id |
int |
10 |
0 |
N |
Y |
订单售后ID |
|
2 |
order_number |
varchar |
64 |
0 |
Y |
N |
订单号 |
|
3 |
user_no |
int |
10 |
0 |
Y |
N |
0 |
用户编号 |
4 |
trade_name |
varchar |
64 |
0 |
Y |
N |
商品名称 |
|
5 |
after_sales_type |
varchar |
64 |
0 |
Y |
N |
售后类型 |
|
6 |
related_pictures |
varchar |
255 |
0 |
Y |
N |
相关图片 |
|
7 |
after_sales_content |
text |
65535 |
0 |
Y |
N |
售后内容 |
|
8 |
examine_state |
varchar |
16 |
0 |
N |
N |
未审核 |
审核状态 |
9 |
examine_reply |
varchar |
16 |
0 |
Y |
N |
审核回复 |
|
10 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
11 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
12 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
编号 |
名称 |
数据类型 |
长度 |
小数位 |
允许空值 |
主键 |
默认值 |
说明 |
1 |
order_logistics_id |
int |
10 |
0 |
N |
Y |
订单物流ID |
|
2 |
user |
int |
10 |
0 |
Y |
N |
0 |
用户 |
3 |
order_number |
varchar |
64 |
0 |
Y |
N |
订单号 |
|
4 |
courier_services_company |
varchar |
64 |
0 |
Y |
N |
快递公司 |
|
5 |
courier_number |
varchar |
64 |
0 |
Y |
N |
快递单号 |
|
6 |
commodity_details |
text |
65535 |
0 |
Y |
N |
商品明细 |
|
7 |
recommend |
int |
10 |
0 |
N |
N |
0 |
智能推荐 |
8 |
create_time |
datetime |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
创建时间 |
9 |
update_time |
timestamp |
19 |
0 |
N |
N |
CURRENT_TIMESTAMP |
更新时间 |
用户注册完成后,点击“登陆”进入到登陆页面,输入用户名和密码,点击“登陆”按钮,对用户名和密码进行验证,根据传入的用户名和密码在数据库中是否能查询到一条用户信息,若不能返回用户信息则登陆失败,页面提示用户名或密码错误。
登陆拦截管理器,在config文件夹下的WebAppConfig.java文件,代码如下:
return [
// 数据库类型
'type' => 'mysql',
// 服务器地址
'hostname' => '127.0.0.1',
// 数据库名
'database' => 'CS85950_20211206165410',
// 用户名
'username' => 'root',
// 密码
'password' => 'root',
// 端口
'hostport' => '3306',
// 连接dsn
'dsn' => '',
// 数据库连接参数
'params' => [],
// 数据库编码默认采用utf8
'charset' => 'utf8',
// 数据库表前缀
'prefix' => '',
// 数据库调试模式
'debug' => true,
// 数据库部署方式:0 集中式(单一服务器),1 分布式(主从服务器)
'deploy' => 0,
// 数据库读写是否分离 主从式有效
'rw_separate' => false,
// 读写分离后 主服务器数量
'master_num' => 1,
// 指定从服务器序号
'slave_no' => '',
// 自动读取主库数据
'read_master' => false,
// 是否严格检查字段是否存在
'fields_strict' => true,
// 数据集返回类型
'resultset_type' => 'array',
// 自动写入时间戳字段
'auto_timestamp' => true,
// 时间字段取出后的默认时间格式
'datetime_format' => 'Y-m-d H:i:s',
// 是否需要进行SQL性能分析
'sql_explain' => false,
// Builder类
'builder' => '',
// Query类
'query' => '\\think\\db\\Query',
// 是否需要断线重连
'break_reconnect' => false,
// 断线标识字符串
'break_match_str' => [],
];
登录界面如下图所示。
图5-1登录界面
用户登录的关键代码如下。
public function login()
{
if (Request::isPost()) {
$request = Request::param();
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->login($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function login($request=[],$table_name = ''){
$username = $request['username'];
$password = $request['password'];
$bol = $this->where(['username'=>$username])->find();
if ($bol){
$password = md5($password);
if ($request['password']==$bol['password']) {
//添加token信息
$access_token['create_time'] = date('Y-m-d H:i:s');
$access_token['update_time'] = date('Y-m-d H:i:s');
$access_token['info'] = json_encode($bol);
// $access_token['info'] = $bol;
$access_token['token'] = md5(date('Y-m-d H:i:s'));
$bol_token = Db::name('AccessToken')->insert($access_token);
if ($bol_token){
$data['obj'] = $bol;
$data['obj']['token'] = $access_token['token'];
return ['result' => $data];
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,token生成失败']];
}
} else {
return ['error' => ['code' => 5000, 'message' => '登录失败,密码不正确']];
}
}else{
return ['error' => ['code' => 5000, 'message' => '登录失败,账号不存在']];
}
}
用户界面要尽量简洁大方,使用户能够方便找到需要的功能入口,浏览健身知识、网站公告、产品商城进行产品下单等,且要易于修改和维护,同时还要保证用户合法和系统安全。
首页界面如下图所示。
图5-2首页界面
用户进入系统首页后,点击“注册”链接进入到注册页面,按照页面提示输入用户名、密码和产品号,页面进行表单验证,验证输入的用户名是否合法,表单验证通过后,点击“立即注册”按钮,利用 Ajax 技术,对用户名实现页面无刷新验证,检测数据库中是否已经存在该用户名,若数据库中不存在,则注册成功,注册成功后,自动跳转到登录页面。
用户注册界面如下所示。
图5-3用户注册界面
用户注册逻辑代码如下:
public function register()
{
if (Request::isPost()) {
$request = Request::param();
$request['create_time'] = isset($request['create_time']) ? $request['create_time'] : date('Y-m-d H:i:s');
$request['update_time'] = isset($request['update_time']) ? $request['update_time'] : date('Y-m-d H:i:s');
$result = $this->validate($request, $this->validate);
if (true !== $result) {
// 验证失败 输出错误信息
$data['error'] = 30000;
$data['message'] = $result;
} else {
$request['password'] = md5($request['password']);
$result = $this->model->register($request, $this->table);
$data = $result;
}
} else {
$data['error'] = 30000;
$data['message'] = "field的值不能为空!";
}
return json_encode($data);
}
public function register($request=[],$table_name = ''){
$username = $request['username'];
$bol = $this->where(['username'=>$username])->find();
if (!$bol){
$result = self::allowField(true)->save($request);
if ($result) {
return ['result' => 1];
} else {
return ['error' => ['code' => 3000, 'message' => '注册失败']];
}
}else{
return ['error' => ['code' => 3000, 'message' => '注册失败,账号已存在']];
}
}
健身知识页面,如下图所示。
图5-4健身知识页面
健身知识的关键代码如下。
@PostMapping("/add")
@Transactional
public Map
service.insert(service.readBody(request.getReader()));
return success(1);
}
@Transactional
public Map
service.insert(map);
return success(1);
}
系统首页提供了搜索产品的输入框,用户在输入框内输入想要查找产品的关键字,点击搜索按钮,系统将用户输入的关键字传递到后台。首先创建一个实体类 PageBean,该实体类的属性包括页码 pageCode、每页记录数 pageSize、总记录数 totalRecord 和一个 List 集合 beanList,用循环将搜索到的结果分页展示。
产品列表界面如下图所示。
图5-5产品列表界面
产品列表的关键代码如下。
public function avg_group()
{
$request = Request::param();
if (isset($request['groupby']) && isset($request['field'])) {
if (!empty($request['groupby']) && !empty($request['field'])) {
$result = $this->model->avg_group($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "groupby或者field的值不能为空!";
}
return json_encode($data);
}
用户在浏览产品信息时,对于心仪的想要购买的产品,可以将该产品添加到购买订单中。点击“添加购买订单”按钮,页面将该产品的数据传递到后台,首先查询数据库购买订单表中是否已经存在该产品,若存在直接将产品数量加一,若不存在则创建一个新的购买订单对象,添加购买订单成功,数据库中的购买订单表添加一条信息。用户还可以点击“我的购买订单”查看添加到购买订单的产品,系统通过读取 session获取到用户 ID,将用户 ID 传递到后台,在购买订单表中查询该用户的所有购买订单信息,返回数据到我的购买订单页面。
产品购买界面如下图所示。
图5-6产品购买界面
购物车界面如下图所示。
图5-7购物车界面
管理员对系统用户的管理,在管理员管理实现管理员用户的管理,包括录入、删除、修改,修改密码通过SESSION获取用户名,然后输入新密码,使用sql命令更新密码。
用户管理界面如下图所示。
图5-8用户管理界面
管理员可以获取系统中所有产品的列表并对其进行编辑。管理员在添加产品时,需要输入产品基本信息,如名称、价格等,还需要输入产品详情描述,包括对产品功能的描述以及展示图片等。添加产品完成,数据库产品表添加一条信息。管理员可以搜索产品,同时可以对已经添加的产品进行编辑。
商城管理界面如下图所示。
图5-9商城管理界面
商城管理关键代码:
public function avg()
{
$request = Request::param();
if (isset($request['field'])) {
if (!empty($request['field'])) {
$result = $this->model->avg_field($request, $this->table, $this->table_id);
$data = $result;
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
} else {
$data['error']['code'] = 30000;
$data['error']['message'] = "field的值不能为空!";
}
return json_encode($data);
}
管理员在后台管理界面点击订单物流界面,可以搜索当前所有用户订单物流信息,调用搜索全部订单物流的请求,向数据库表搜索当前所有订单物流并将信息以对象的形式层层返回到列表界面,显示出当前所有订单物流信息。
订单物流添加界面如下图所示。
图5-10订单物流添加界面
订单物流管理界面如下图所示。
图5-11订单物流管理界面
以进入系统首页的访问速度为例展示系统的性能测试;系统的主要用户群体是购物理念较为先进的消费者,系统要在3秒钟内响应;需要完成页面的菜单栏、首页轮播图片、类目及产品信息、产品商城以及各功能模块入口等元素的显示。
功能性测试是指执行指定的工作流程,通过对一个系统的所有特性和功能都进行测试确保符合需求和规范。
系统功能性测试表如下表所示。
表11系统功能性测试表
编号 |
测试功能 |
测试内容 |
测试结果 |
1 |
用户登录 |
1.验证用户名与密码的正确性。 2.验证密码是否可见。 |
通过 |
2 |
首页展示 |
1.首页数据是否成功加载。 2.验证搜索功能的准确性。 3.验证是否可以异步加载。 4.验证导航栏按钮。 |
通过 |
3 |
个人信息修改 |
1.验证登录名是否可以正常更改。 2.验证联系方式是否可以更改。 3.验证收货地址可以正常修改。 4.验证密码是否可以修改。 |
通过 |
4 |
订单管理 |
1.购买订单清单是否可以生成。 2.验证消费信息是否准确。 |
通过 |
7 |
产品类目管理 |
1.验证类目新增是否可以成功。 2.验证类目删除是否可以成功。 |
通过 |
8 |
产品信息管理 |
1.产品信息是否与上传一致。 2.是否能完成价格修改。 3.验证库存信息修改。 |
通过 |
9 |
订单处理 |
1.能否正常上传单号完成发货。 2.验证数据准确性。 |
通过 |
10 |
添加产品 |
1.上传产品是否添加验证。 2.图片是否成功上传。 3.验证表单是否提交成功。 |
通过 |
11 |
用户管理 |
1.验证用户录入功能。 2.验证用户违规清理功能。 |
通过 |
集成测试后,所有的模块已经全部连接完毕,形成了一个完整的系统。合格性测试是在集成测试完毕后,进一步对系统进行综合性的检测。经过合格性测试,可以检查出系统是否符合系统的设计,能够完成需求的所有功能。本系统经过最后的测试,所有模块功能都能按预定要求工作。
在实际测试中,经过一系列系统性的测试,使我们能够及时发现一些系统在设计中出现的疏忽和漏洞。经过严密的测试,不仅发现了模块内部的错误,也查找到模块连接后产生的错误。经过测试,对系统产生错误的地方进行优化、修改和完善,使得系统能够实现最初设计的基本功能。
本文针对“动能”运动膳食微信小程序的特点和用户需求,利用 PHP相关技术、Thinkphp框架等技术,通过详细的需求分析、页面设计和功能设计,最终实现了一个基于PHP的“动能”运动膳食微信小程序。
系统利用JQuery 技术和 CSS 技术进行了页面设计,实现了包括用户模块、产品商城模块、订单模块和产品商城模块的前台系统以及包括用户管理模块、产品信息管理模块、订单管理模块的后台系统。另外,系统还进行了数据安全设计和产品知识模块设计,并添加了用户的访问控制,建立了一个完整、健壮、安全稳定的“动能”运动膳食微信小程序。
由于时间限制和本人能力条件有限,还存在一些不足,今后也会出现许多新的开发技术,未来还可以对程序做出如下改进:
(1)优化程序页面,使页面更加美观且方便操作;
(2)优化产品搜索功能,提供多条件选择查询搜索;
(3)优化推荐功能,提高推荐的精准度;
(4)优化在线支付功能,提供更多支付接口,使用户付款更加方便;
(5)进一步提高使用程序的安全性,使其更加健壮;
(6)优化数据和代码,提升软件效率,方便维护和扩展。
[7]王柯梦,王瑞平.基于B2C网上商城前台系统数据库设计与实现[J].广西质量监督导报,2020(09):70-71.
[8]黄舒珣. 基于文本挖掘的迪卡侬网上商城顾客满意度影响因素研究[D].广西民族大学,2020.
[9]孙建英.分布式、集中式、区块链技术在网上商城中的应用[J].商场现代化,2020(01):13-15.
[10]李贝贝. 考虑策略型消费者的网上商城动态定价研究[D].大连大学,2019.
[11]王一凡. 基于MOT的云南移动网上商城O2O手机营销策略优化研究[D].云南大学,2019.
[12]袁嘉. 零售商多渠道供应链的定价决策与渠道选择[D].重庆交通大学,2019.
[13]徐光耀. 基于Dubbo分布式架构网上商城的研究与实现[D].沈阳师范大学,2019.
[14]刘芳羽.新华书店“网上商城”上线运营[J].时尚北京,2018(06):158-159.
时光飞逝,转眼间我在学校的这些年生活即将结束,回顾这几年的学习生活,收获良多,既有幸福也有难过,学校生活的结束对于我来说也是一个新的开始。论文即将完成,在此,我心中有许多想要感谢的人。首先感谢我的导师,不仅在学习研究方面加以指导,也在生活和为人处世上给予帮助。还要感谢授课老师,你们严谨的学术精神和积极向上的工作态度都在激励我的成长和进步。感谢多年来一直生活在一起的室友,谢谢你们多年来的陪伴和照顾。最后,要感谢各位论文评审老师,感谢您们在百忙之中抽空评阅本论文并给出宝贵的意见和建议。