基于SpringBoot+微信小程序的农产品销售平台

一、项目背景介绍:

随着人们收入的不断增加、生活水平的普遍提高,对生活质量的要求也日益凸显。而作为关乎每个人的生命、健康安全的食品卫生、质量无疑更被人们所重视。所以,…

2.

其他国家的绿色有机食品所占其国家食品市场比重比较大,如德国在99年便已达到40%,美国24%,日本30%,而中国当时还不足1%,显然差距很大。中国…

3.

就目前国内市场上的各种农产品市场情况来看,为广大消费者提供服务的,大部分是农副产品市场,而其中都是多个商贩分散经营这样一来,很多对农副产品卫.

二、项目技术简介:
  1. JAVA:Java是一门 面向对象编程语言 ,不仅 吸收了C++语言的各种优点 ,还摒弃了C++里难以理解的 多继承、指针 等概念,因此Java语言具有 功能强大和简单易用 两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程。
  2. Vue:Vue (发音为 /vjuː/,类似 view) 是一款用于构建用户界面的JavaScript框架。它基于标准HTML、CSS和JavaScript构建,并提供了一套声明式的、组件化的编程模型,帮助开发者高效地开发用户界面。 Vue是一个独立的社区驱动的项目,它是由尤雨溪在2014年作为其个人项目创建, 是一个成熟的、经历了无数实战考验的框架,它是目前生产环境中使用最广泛的JavaScript框架之一,可以轻松处理大多数web应用的场景,并且几乎不需要手动优化,并且Vue完全有能力处理大规模的应用。
  3. Element-UI:Element,一套为开发者、设计师和产品经理准备的基于 Vue 2.0 的桌面端组件库。
  4. SpringBoot:Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来 简化 新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
  5. Mybatis-Plus:MyBatis-Plus(简称 MP)是一个 MyBatis的增强工具,在 MyBatis 的基础上只做增强不做改变,为 简化开发、提高效率而生。
  6. smart:微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用“触手可及”的梦想,用户扫一扫或搜一下即可打开应用。 全面开放申请后,主体类型为企业、政府、媒体、其他组织或个人的开发者,均可申请注册小程序。微信小程序、微信订阅号、微信服务号、微信企业号是并行的体系。 微信小程序是一种不用下载就能使用的应用,也是一项创新,经过将近两年的发展,已经构造了新的微信小程序开发环境和开发者生态。微信小程序也是这么多年来中国IT行业里一个真正能够影响到普通程序员的创新成果,已经有超过150万的开发者加入到了微信小程序的开发,与我们一起共同发力推动微信小程序的发展,微信小程序应用数量超过了一百万,覆盖200多个细分的行业,日活用户达到两个亿,微信小程序还在许多城市实现了支持地铁、公交服务。微信小程序发展带来更多的就业机会,2017年小程序带动就业104万人,社会效应不断提升。

三、系统功能模块介绍:

四、数据库设计:

1:‘管理员’(admins)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

user_name

varchar

NULL

用户名(select)

pass_word

varchar

NULL

密码

head_img

varchar

NULL

头像(img)

nick_name

varchar

NULL

姓名

create_time

datetime

NULL

创建时间

2:‘购物车表’(cart)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

user_id

bigint

NULL

用户ID

farm_id

bigint

NULL

农产品ID

num

int

NULL

数量

create_time

datetime

NULL

创建时间

3:‘农产品信息表’(farm)

字段名

类型

默认值

列注释

id

bigint

NULL

农产品ID

name

varchar

NULL

农产品名称

info

text

NULL

简介

unit

varchar

NULL

单位

price

varchar

NULL

单价

detail

text

NULL

详细信息

create_time

datetime

NULL

创建时间

img_url

varchar

NULL

展示大图

type_id

bigint

NULL

分类ID

is_index

int

NULL

首页推荐[0:是,1:否]

banner

int

NULL

轮播[0:是,1:否]

4:‘农产品详情图片表’(farm_imgs)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

img_url

varchar

NULL

图片链接

farm_id

bigint

NULL

农产品ID

5:‘订单详情表’(order_detail)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

farm_id

bigint

NULL

农产品ID

num

int

NULL

数量

order_id

bigint

NULL

订单ID

create_time

datetime

NULL

创建时间

6:‘订单表’(orders)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

order_no

varchar

NULL

订单编号

create_time

datetime

NULL

创建时间

total_price

varchar

NULL

总价

status

int

NULL

订单状态[0:代付款,1:待发货,2:已发货,3:已完成,4:已退单]

user_id

bigint

NULL

用户ID

address

varchar

NULL

收货地址

7:‘农产品分类表’(type)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

type_name

varchar

NULL

分类名称

create_time

datetime

NULL

创建时间

8:‘用户收藏表’(user_collect)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

farm_id

bigint

NULL

农产品ID

user_id

bigint

NULL

用户ID

create_time

datetime

NULL

9:‘用户表’(users)

字段名

类型

默认值

列注释

id

bigint

NULL

主键ID

user_name

varchar

NULL

用户名

pass_word

varchar

NULL

密码

address

varchar

NULL

收货地址

nick_name

varchar

NULL

昵称

head_img

varchar

NULL

头像

create_time

datetime

NULL

创建时间

五、功能模块:
  1. 小程序首页:轮播图,产品推荐,协同过滤,后台设置

  1. 农产品分类:关键词模糊搜索,分类搜索

  1. 农产品详情:详细信息,添加至购物车

  1. 用户购物车:农产品购买

  1. 个人中心:个人信息,历史订单

  1. 后台管理:用户管理,管理员管理,农产品管理,订单管理,商品分类管理,轮播图设置

六、代码示例:
小程序首页
async getBanner() {let res = await homeApi.getBanner()this.bannerList = res.datalet arr = res.dataif (arr && arr.length > 0) {let arr1 = []for (let i in arr) {arr1.push(arr[i].imgUrl)}this.bannerImgList = arr1}console.log("页面home中方法getBanner(获取首页轮播图)返回结果为:", res.data)},click(e) {console.log(this.bannerList[e])uni.navigateTo({url: "/pages/detail/detail?framId=" + this.bannerList[e].id})},async getIndexData() {let res = await homeApi.getIndexData()this.indexList = res.dataconsole.log("页面home中方法getIndexData(获取首页推荐)返回结果为:", res.data)},

农产品分类
getDataList() {console.log(this.pageSize)let param = {}param.current = this.pageNumparam.pageSize = this.pageSizeparam.typeId = this.typeIdparam.name = this.keywordthis.farmPage(param)},typeClick(item) {this.typeId = this.typeList[item.index].keythis.pageNum = 1this.getDataList()},searchClick() {this.pageNum = 1this.getDataList()},async getAllType() {let res = await typeApi.getAllType()this.typeList = res.datalet arr = res.dataif (arr && arr.length > 0) {this.typeId = arr[0].keylet arr1 = []for (let i in arr) {arr1.push({name: arr[i].value})}this.typeNameList = arr1}this.getDataList()console.log("页面type中方法getAllType(获取所有分类)返回结果为:", res.data)},async farmPage(param) {let res = await typeApi.farmPage(param)if (this.pageNum == 1) {this.itemList = res.data.records} else {this.itemList = [...this.itemList, ...res.data.records]}this.totalPage = res.data.pagesconsole.log("====", res.data)}

农产品详情
async addOrder() {if (!this.isLogin) {Util.showMyToast("尚未登录")uni.navigateTo({url: '/pages/login/login'})return}if (!this.userInfo.address) {Util.showMyToast("请前往个人中心完善收货地址")return}let param = {}param.totalPrice = this.detail.priceparam.status = 0param.userId = this.userInfo.idparam.address = this.userInfo.addresslet res = await orderApi.ordersSaveUpdate(param)let id = res.data.idlet orderDetail = {}orderDetail.farmId = this.farmIdorderDetail.num = 1orderDetail.orderId = idlet res1 = orderApi.orderDetailSaveUpdate(orderDetail)Util.showMyToast("添加订单成功!")},

用户购物车
async addCard() {if (!this.isLogin) {Util.showMyToast("尚未登录")uni.navigateTo({url: '/pages/login/login'})return}let param = {}param.userId = this.userInfo.idparam.farmId = this.farmIdparam.num = 1let res = cartApi.cartSaveUpdate(param)Util.showMyToast("添加购物车成功!")},

个人中心
async submit() {if (this.userInfo.passWord) {if (!this.userInfo.nextPassword) {Util.showMyToast("请第二次输入密码")return}if (this.userInfo.nextPassword != this.userInfo.passWord) {Util.showMyToast("两次密码不一致")return}}let param = {}param.id = this.userInfo.idparam.nickName = this.userInfo.nickNameif (this.userInfo.passWord) {param.passWord = this.userInfo.passWord}param.address = this.userInfo.addresslet res = mineApi.userSaveUpdate(param)app.globalData.userInfo = this.userInfoUtil.showMyToast("修改成功")uni.navigateTo({url: '/pages/mine/mine'})}

后台管理
  @GetMapping("/banner")public ReturnMsg getBanner() {LambdaQueryWrapper<FarmDTO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(FarmDTO::getBanner, 0);return ReturnMsg.ok(baseService.list(queryWrapper));}@GetMapping("/index")public ReturnMsg getIndexData() {LambdaQueryWrapper<FarmDTO> queryWrapper = new LambdaQueryWrapper<>();queryWrapper.eq(FarmDTO::getIsIndex, 0);return ReturnMsg.ok(baseService.list(queryWrapper));}

七、项目总结:
农产品销售平台的开发制作,从题目确定到成品完成,自己投入的精力与心血是非常多的。从农产品销售平台的前台页面实现,到农产品销售平台的后台代码的编辑,我用到的软件包括了数据库软件MySQL,Java开发工具IDEA,办公软件Office,浏览器软件Fireworks,图像处理软件Photoshop等,这也是我第一次使用Java语言,开发的这个比较简单的农产品销售平台。

 农产品销售平台开发过程中,自己之前觉得比较抽象的许多门课程,例如数据库原理,软件工程,动态网站开发等课程开始变得很清晰,只有自己独立开发程序,才会觉得这些开发类的课程在实践中具有的重要作用。为了让自己设计的作品能够顺利的完成,我把所学知识全部运用在程序的开发流程中,包括了程序的需求分析环节,程序的编码环节,程序的测试环节等,让程序软件在开发周期内完成制作,并能够保证程序质量达标,力求程序开发流程规范化,程序对应的配套文档标准化。本次开发的系统整体界面还是比较清晰简明,功能上面考虑得比较全,几乎可以满足用户使用要求。尽管我对这次的毕设付出了许多的努力,但是程序还是有很多不足的地方,系统界面整体感觉还行,但是字体字号的选取上面还是有些不符合现实审美,在程序的CSS样式编码上面,我还有许多不熟悉的地方,虽然经过反复的测试与调试选中了现在这样的程序界面,但是我还是明显感觉到自己对一些常用CSS样式的不熟悉,编码过程中,我还要多次进行资料查看才知道。另外我编写的代码写作不是很规范,可读性比较差,幸运的是,我最终还是实现了系统中所要求的功能。

八、源码获取:

此源码非开源,若需要此源码可扫码添加微信进行咨询!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/298367.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于51单片机和MAX1898的智能手机充电器设计

**单片机设计介绍&#xff0c;基于51单片机和MAX1898的智能手机充电器设计 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于51单片机和MAX1898的智能手机充电器设计概要 一、引言 随着智能手机的普及&#xff0c;其电池续航…

AcWing1402.星空之夜

【题目链接】1402. 星空之夜 - AcWing题库 夜空深处&#xff0c;闪亮的星星以星群的形式出现在人们眼中&#xff0c;形态万千。 一个星群是指一组非空的在水平&#xff0c;垂直或对角线方向相邻的星星的集合。 一个星群不能是一个更大星群的一部分。 星群可能是相似的。 如…

在深度学习模型中引入先验

当面对复杂问题的时候&#xff0c;在深度学习模型提取特征的过程中完全抛弃知识是非常不明智的策略。虽然有很多研究者在深度网络处理数据之前&#xff0c;利用具有某种知识的模型驱动方法对数据进行预处理&#xff0c;但是这种方法没有进行实质性地改造深度网络&#xff0c;且…

【美团笔试题汇总】2023-09-02-美团春秋招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新美团近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

Windows 2008虚拟机安装、安装VM Tools、快照和链接克隆、添加硬盘修改格式为GPT

一、安装vmware workstation软件 VMware workstation的安装介质&#xff0c;获取路径&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1AUAw_--yjZAUPbsR7StOJQ 提取码&#xff1a;umz1 所在目录&#xff1a;\vmware\VMware workstation 15.1.0 1.找到百度网盘中vmwa…

数字乡村创新实践探索:科技赋能农业现代化与乡村治理体系现代化同步推进

随着信息技术的飞速发展&#xff0c;数字乡村作为乡村振兴的重要战略方向&#xff0c;正日益成为推动农业现代化和乡村治理体系现代化的关键力量。科技赋能下的数字乡村&#xff0c;不仅提高了农业生产的效率和品质&#xff0c;也为乡村治理带来了新的机遇和挑战。本文旨在探讨…

哈希(数字+字符串)

模拟散列表 维护一个集合&#xff0c;支持如下几种操作&#xff1a; I x&#xff0c;插入一个整数 x&#xff1b;Q x&#xff0c;询问整数 x 是否在集合中出现过&#xff1b; 现在要进行 N 次操作&#xff0c;对于每个询问操作输出对应的结果。 输入格式 第一行包含整数 …

测开——Java、python、SQL、数据结构面试题整理

一、Java 1.Java中finally、final、finalize的区别 1.性质不同 &#xff08;1&#xff09;final为关键字; &#xff08;2&#xff09;finalize()为方法; &#xff08;3&#xff09;finally为为区块标志,用于try语句中; 2. 作用 &#xff08;1&#xff09;final为用于标识…

每日面经分享(Git经典题目,Git入门)

1. GitHub是什么 a. Git是一个分布式版本控制系统&#xff0c;作用是跟踪、管理和协调软件开发项目中的代码更改。 b. 提供了一种有效的方式来管理代码的版本历史&#xff0c;以及多人协作开发的能力。 2. Git的作用有哪些 a. 版本控制&#xff1a;Git可以记录每次代码更改的…

【机器学习】机器学习创建算法第4篇:K-近邻算法,学习目标【附代码文档】

机器学习&#xff08;算法篇&#xff09;完整教程&#xff08;附代码资料&#xff09;主要内容讲述&#xff1a;机器学习算法课程定位、目标&#xff0c;K-近邻算法定位,目标,学习目标,1 什么是K-近邻算法,1 Scikit-learn工具介绍,2 K-近邻算法API。K-近邻算法&#xff0c;1.4 …

EasyCVR视频汇聚平台海康Ehome2.0与5.0设备接入时的配置区别

安防视频监控/视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快&#xff0c;可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等&#xff0c;以及支持厂家私有协议与SDK接入&#xff0c;包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安…

Vue3学习笔记+报错记录

文章目录 1.创建Vue3.0工程1.1使用vue-cli创建1.2 使用vite创建工程1.3.分析Vue3工程结构 2.常用Composition2.1 拉开序幕的setup2.2 ref函数_处理基本类型2.3 ref函数_处理对象类型2.4 ref函数使用总结 1.创建Vue3.0工程 1.1使用vue-cli创建 查看vue/cli版本&#xff0c;确保…

小程序如何设置余额充值和消费功能

小程序中设置余额充值和消费功能非常重要的&#xff0c;通过让客户在小程序中进行余额充值&#xff0c;不仅可以提高用户粘性&#xff0c;还可以促进消费&#xff0c;增加用户忠诚度。以下是如何在小程序中设置余额充值和消费功能的步骤&#xff1a; 1. **设计充值入口**&…

全国航空机场分布矢量数据/旅游景点poi/全国港口码头分布/地铁站分布/火车站分布/POI矢量数据

民用航空机场是指针对包括跑道型机场、表面直升机场、高架直升机场、船上直升机场、直升机水上平台、滑翔机场、水上机场、有人操纵气球施放场以及其他专供民用航空器起降的划定区域。民用航空机场分为通用航空机场和公共运输机场&#xff1b;不包括临时机场和专用机场。 根据中…

src挖掘技巧总结分享

src挖洞技术分享 src推荐刚入门的新手首选公益src如漏洞盒子、补天src&#xff0c;因为漏洞盒子收录范围广&#xff0c;只要是国内的站点都收入&#xff0c;相比其它src平台挖掘难度非常适合新手。后续可以尝试先从一些小的src厂商入手。 首先是熟能生巧&#xff0c;我一开始挖…

10-用PySpark建立第一个Spark RDD

目录 RDD概念RDD特点建立RDD的方式不同工具建立RDD的方式使用PySpark Shell(交互环境)建立RDD使用VSCode编程建立RDD使用Jupyter Notebook建立RDD 总结 PySpark实战笔记系列第一篇 RDD概念 Apache Spark的核心组件的基础是RDD。所谓的RDD&#xff0c;即弹性分布式数据集&#…

C++读取.bin二进制文件

C读取.bin二进制文件 在C中&#xff0c;可以使用文件输入/输出流来进行二进制文件的读写操作&#xff0c;方便数据的保存和读写。 //C读取bin二进制文件 int read_bin() {std::ifstream file("data_100.bin", std::ios::in | std::ios::binary);if (file) {// 按照…

【美团笔试题汇总】2023-08-26-美团春秋招笔试题-三语言题解(CPP/Python/Java)

&#x1f36d; 大家好这里是KK爱Coding &#xff0c;一枚热爱算法的程序员 ✨ 本系列打算持续跟新小米近期的春秋招笔试题汇总&#xff5e; &#x1f4bb; ACM银牌&#x1f948;| 多次AK大厂笔试 &#xff5c; 编程一对一辅导 &#x1f44f; 感谢大家的订阅➕ 和 喜欢&#x1f…

[蓝桥杯 2017 国 C] 合根植物

[蓝桥杯 2017 国 C] 合根植物 题目描述 w 星球的一个种植园&#xff0c;被分成 m n m \times n mn 个小格子&#xff08;东西方向 m m m 行&#xff0c;南北方向 n n n 列&#xff09;。每个格子里种了一株合根植物。 这种植物有个特点&#xff0c;它的根可能会沿着南北…