农产品销售|助农惠农|基于Springboot实现农产品销售管理系统

简介: 农产品销售|助农惠农|基于Springboot实现农产品销售管理系统

项目编号:BS-SC-054

一,环境介绍

语言环境:Java:  jdk1.8

数据库:Mysql: mysql5.7

应用服务器:Tomcat:  tomcat8.5.31

开发工具:IDEA或eclipse

后台开发技术:  springboot+mybatis+springmvc

前台开发技术: HTML5+CSS+JQUERY+Bootstrap

二,项目简介

本系统主要基于Springboot框架开发实现,实现了一个以农产品为主题的商城系统。在本商城系统中,可以实现在线购买农产品,在线支付,管理个人订单,管理个人收货地址,确认收货等功能。用户浏览商城的农产品产品后可以将农产品商品添加到购物车中,然后下单支付购买。用户登陆后可以在个人中心中管理自己的购物车信息、订单信息、收货地址信息等。同样在商城前端页面中提供了全文搜索功能,用户可以根据农产品的关键字来查询符合自己要的农产品商品。

系统同样提供了强大的后台管理系统,在后台管理模块中可以实现能前台注册用户的管理操作,可以管理所有用户的订单信息,根据订单支付情况进行发货等操作。同样可以管理产品的分类,可以管理商品的信息,以图文的形式来添加商品信息。为了更好了了解商品的销售情况,在后台使用echart实现了商品销售的图形报表和订单的统计报表功能。

     系统使用了SpringSecurity框架来管理系统的用户登陆和权限认证操作,以保证系统的安全性。本系统功能完整,页面简洁大方,运行无误,适合做毕业设计使用。

 前端页面是产品的重要展示窗口,也是和用户进和交互的主要阵地,前端的页面设计一是要美观大方,二是要功能齐全。现在整个商业形态中都在以用户体验为中心,各家商家为了给用户更好的体验花费不少功夫。本项目的前端用户交互设计以异步请求为主,提高系统的响应时间和用户的体验。在功能设计上主要满足,电子产品分类浏览,添加购物车,产品下单购买,个人订单管理等功能。具体如下图1所示:

图1 前端用户用例图

基于Springboot实现的茶叶商城网站后台数据管理功能,主要完成对前端页面所产生的相关业务数据进行管理。比如对注册用户的管理、茶叶的管理、用户的订单管理、产品分类的管理等等。后台管理可以有效的帮助网站运营者查看相关信息等等,是至关重要的一环。基于Springboot实现的茶叶商城网站后台管理的用例图如下图2所示:

基于Springboot实现的农产品销售管理系统选择关系型数据库管理数据。系统使用MySQL提供的方法、技术,对已经确定的数据库逻辑结构,以较优的存储结构等进行设计,设计出对应的数据库表。

(1)用户信息表(s_user)的内容是有关用户的信息,包含前端用户信息和后台管理用户信息,通过字段type来进行区别,0表示管理,1表示普通用户,详细内容如表4.1所示。

表4-1 s_user(用户账户表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

用户编号

username

varchar

20

yes

登陆名称

Password

varchar

20

yes

登陆密码

Type

Int

1

No

用户类型

(2)商品类型表(s_product_type)的存储的是商品的类型信息,主要包含商品分类的名字以及编号和说明信息,具体内容如表4.2所示。

表4-2 s_product_type(商品分类表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

分类编号

product_type_name

varchar

20

yes

分类名称

product_type_desc

varchar

50

yes

分类描述

product_type_icon

varchar

100

No

分类图标

(3)商品信息表(s_product)的存储的是茶叶详细信息,主要包含商品名称、展示图片、销售价格、所属商品分类、商品详情图片、所属品牌以及具体的功能说明信息等,具体内容如表4.3所示。

表4-3 s_product (商品信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

茶叶编号

product _name

varchar

20

yes

茶叶名称

product_image

varchar

200

yes

茶叶图片

price

double

100

No

茶叶价格

product_type

varchar

100

No

茶叶类型

product_desc

varchar

100

No

茶叶详情图

create_time

datetime

0

No

添加时间

product_brand

varchar

100

No

茶叶品牌

product_miaoshu

varchar

200

NO

茶叶描述

(4)商品订单表(s_order)的存储的是用户购买商品的订单信息,主要包含订单编号、创建时间、收货地址编号、用户编号和状态等,具体内容如表4.4所示。

表4-4 s_order(商品订单表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

订单编号

create_time

datetime

0

yes

下单时间

receiving_address

varchar

50

yes

收货地址

user_id

varchar

100

No

下单用户

status

Int

11

NO

订单状态

(5)商品订单明细表(s_order_product)的存储的是用户购买商品的订单明细信息,它关联订单基础信息表,并包含所购商品的编号以及数量等,具体内容如表4.5所示。

表4-5 s_order_product(商品订单明细表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

明细编号

order_id

varchar

32

yes

下单编号

product_id

varchar

32

yes

产品编号

product_num

Int

11

NO

产品数量

(6)商品品牌表(s_brand)的存储的是用户购买商品的品牌信息,在发布商品时,要指定它的所属品牌,以便让消费者选择,主要包含品牌名称、品牌类型、品牌图片等,具体内容如表4.6所示。

表4-6 s_brand(商品品牌表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

品牌编号

brand_name

varchar

32

yes

品牌名称

brand_type

varchar

32

yes

品牌类型

brand_img

varchar

200

NO

品牌图片

(7)轮播图信息表(s_carousel)的存储的是前端展示的轮播图片信息等,具体内容如表4.7所示。

表4-6 s_carousel(轮播图信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

url

varchar

100

yes

图片地址

sequence_num

int

2

NO

序号

(8)收货地址信息表(s_receiving_address)的存储的是用户在线下单购买茶叶时指定收货地址信息,每个用户可以指定多个收货信息,也可以设置默认的收货地址等,具体内容包含收货地址、收件人名称,联系人电话,用户编号以及是否为默认地址等,如表4.8所示。

表4-8 s_receiving_address (收货信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

地址编号

receiving_address

varchar

100

yes

地址信息

receiving_person

varchar

100

yes

收货人

mobile_phone

bigint

20

NO

联系电话

user_id

varchar

32

NO

用户编号

is_default

int

1

NO

是否默认

(9)搜索历史信息表(s_search_history)的存储的是前端用户搜索的历史信息,根据用户关键词的信息给用户进行相应的进示,主要包含搜索关键词、搜索次数、搜索时间,如表4.9所示。

表4-9 s_search_history(搜索信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

search_words

varchar

100

yes

搜索词

num

int

2

NO

次数

search_time

datetime

0

NO

搜索时间

(10)购物车信息表(s_shop_cart)的存储的是前端用户使用的购物车基本信息,如表4.10所示。

表4-10 s_shop_cart(购物车信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

Cart_id

varchar

64

yes

购物车编号

User_id

varchar

64

NO

用户编号

(11)购物车明细表(s_shop_cart_product)的存储的是前端用户使用的购物车中的详细信息,如表4.11所示。

表4-11 s_shop_cart_product(购物车详细信息表)

ColumnName

Type

Length

IsNull

Comment

Id

int

11

no

主键编号

shop_cart_id

varchar

64

yes

购物车编号

product_id

varchar

64

NO

茶叶编号

product_num

int

6

NO

数量

三,系统展示

系统前端功能首页

注册

登录

分类查看

商品详情

购物车

收货地址管理

我的订单

全文检索

后台管理功能展示

轮播图管理

分类管理

品牌管理

商品管理

订单管理

图形报表统计

四,核心代码展示

package com.yw.eshop.controller.admin;
import com.yw.eshop.domain.Brand;
import com.yw.eshop.domain.ProductType;
import com.yw.eshop.service.BrandService;
import com.yw.eshop.service.ProductTypeService;
import com.yw.eshop.utils.PageModel;
import com.yw.eshop.service.BrandService;
import com.yw.eshop.service.ProductTypeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
/**
 * 品牌管理
 */
@Controller
@RequestMapping("/admin/brand")
public class BrandController {
    @Autowired
    private BrandService brandService;
    @Autowired
    private ProductTypeService productTypeService;
    @RequestMapping("/list")
    public String list( @RequestParam(defaultValue = "1") Integer pageNo,
                       @RequestParam(defaultValue = "5")Integer pageSize,
                       Model model){
        try {
            PageModel<Brand> brandPages = brandService.queryBrandPages(pageNo, pageSize);
            model.addAttribute("brandPages", brandPages);
        } catch (Exception e) {
            e.printStackTrace();
            model.addAttribute("errMessage", "查询失败:"+e.getMessage());
            return  "500";
        }
        return "admin/brand/list";
    }
    @RequestMapping("addPage")
    public String addPage(Model model){
        List<ProductType> productTypes= productTypeService.queryProductTypeAll();
        model.addAttribute("productTypes",productTypes);
        return "admin/brand/add";
    }
    @RequestMapping("/add")
    private String addBrand(Brand brand,Model model){
        try {
            int i = brandService.addBrand(brand);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        model.addAttribute("url", "admin/brand/list");
        return "success";
    }
    @RequestMapping("updatePage")
    public String updatePage(String id,Model model){
       Brand brand= brandService.queryBrandById(id);
        List<ProductType> productTypes= productTypeService.queryProductTypeAll();
        model.addAttribute("productTypes",productTypes);
        model.addAttribute("brand",brand);
        return "admin/brand/update";
    }
    @RequestMapping("/update")
    private String update(Brand brand,Model model){
        try {
            int i = brandService.updateBrand(brand);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        model.addAttribute("url", "admin/brand/list");
        return "success";
    }
    @RequestMapping("deletePage")
    public String deletePage(String id,Model model){
        model.addAttribute("id",id);
        return "admin/carousel/delete";
    }
    @RequestMapping("/delete")
    public String delete(String id, Model model){
        try {
            int i = brandService.delete(id);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        model.addAttribute("url", "admin/brand/list");
        return "success";
    }
    @RequestMapping("batchDel")
    @ResponseBody
    public String batchDel(String[] ids) {
        System.out.println("进来了");
        brandService.batchProductTypeDel(ids);
        return "/admin/brand/list";
    }
}
package com.yw.eshop.controller.front;
import com.yw.eshop.domain.Order;
import com.yw.eshop.domain.OrderProduct;
import com.yw.eshop.domain.User;
import com.yw.eshop.service.OrderProductService;
import com.yw.eshop.service.OrderService;
import com.yw.eshop.service.OrderProductService;
import com.yw.eshop.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import javax.servlet.http.HttpSession;
import java.util.List;
/**
 * 前台订单控制器
 */
@Controller
@RequestMapping("front/order")
public class FrontOrderController {
    @Autowired
    private OrderService orderService;
    @Autowired
    private OrderProductService orderProductService;
    /**
     * 前台个人中心订单查询
     * @param session
     * @param model
     * @return
     */
    @RequestMapping("index")
    private String index(HttpSession session, Model model){
        try {
            User user = (User) session.getAttribute("user");
            if (user == null) {
                return "redirect:/front/login/loginPage";
            } else {
                List<Order> list = orderService.queryAllOrder(user.getId());
                for (Order order : list) {
                    List<OrderProduct> orderProducts = orderProductService.queryOrderProByOrderId(order.getId());
                    order.setList(orderProducts);
                }
                model.addAttribute("list", list);
                return "front/order/order";
            }
        }catch (Exception e){
            e.printStackTrace();
            model.addAttribute("errMessage","服务器繁忙"+e.getMessage());
            return "500";
        }
    }
    /**
     *  前台用户取消订单:条件是未发货状态
     * @param id
     * @param model
     * @return
     */
    @RequestMapping("/delete")
    @ResponseBody
    public String delete(String id, Model model){
        model.addAttribute("id", id);
        try {
            int i = orderService.delete(id);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        //return "forward:/front/order/index";
        model.addAttribute("url", "/front/order/index");
        return "success";
    }
    /**
     *  前台用户确认收货:条件是己发货状态
     * @param id
     * @param model
     * @return
     */
    @RequestMapping("/update")
    @ResponseBody
    public String update(String id,Integer status, Model model){
        model.addAttribute("id", id);
        try {
            int i = orderService.updateStatus(id,status);
            if (i==0){
                model.addAttribute("errMessage","服务器繁忙操作失败");
                return "500";
            }
        }catch (Exception e){
            model.addAttribute("errMessage",e.getMessage());
            return "500";
        }
        //return "forward:/front/order/index";
        model.addAttribute("url", "/front/order/index");
        return "success";
    }
}

五,项目总结

本系统基于Springboot开发框架集成Mybatis框架实现了一个农业商品销售管理系统,前端设计美丽大方,功能实现完整,适合做毕业设计使用。


相关文章
|
23天前
|
Web App开发 编解码 Java
B/S基层卫生健康云HIS医院管理系统源码 SaaS模式 、Springboot框架
基层卫生健康云HIS系统采用云端SaaS服务的方式提供,使用用户通过浏览器即能访问,无需关注系统的部署、维护、升级等问题,系统充分考虑了模板化、配置化、智能化、扩展化等设计方法,覆盖了基层医疗机构的主要工作流程,能够与监管系统有序对接,并能满足未来系统扩展的需要。
48 4
|
21天前
|
运维 监控 安全
云HIS医疗管理系统源码——技术栈【SpringBoot+Angular+MySQL+MyBatis】
云HIS系统采用主流成熟技术,软件结构简洁、代码规范易阅读,SaaS应用,全浏览器访问前后端分离,多服务协同,服务可拆分,功能易扩展;支持多样化灵活配置,提取大量公共参数,无需修改代码即可满足不同客户需求;服务组织合理,功能高内聚,服务间通信简练。
33 4
|
25天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的教师管理系统的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的教师管理系统的详细设计和实现
39 2
|
25天前
|
小程序 JavaScript Java
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
基于SpringBoot+Vue+uniapp微信小程序的健身管理系统及会员微信小程序的详细设计和实现
35 0
|
1月前
|
人工智能 监控 前端开发
springboot数字化智慧城市管理系统源码
支持对城市街道画面进行实时分析,系统可以实现违规摆摊检测、街道垃圾监测、违章停车识别、违规广告、出店经营检测、公共设施破坏、游摊小贩识别等违规识别。AI视频智识别分析系统通过AI技术手段提高城管对城市各个街道的巡查监管的工作效率。可以真正做到事前预警、事中高效检测预警。
21 5
|
1月前
|
消息中间件 Java 关系型数据库
JAVA云HIS医院管理系统源码、基于Angular+Nginx+ Java+Spring,SpringBoot+ MySQL + MyCat
JAVA云HIS医院管理系统 常规模版包括门诊管理、住院管理、药房管理、药库管理、院长查询、电子处方、物资管理、媒体管理等,为医院管理提供更有力的保障。 HIS系统以财务信息、病人信息和物资信息为主线,通过对信息的收集、存储、传递、统计、分析、综合查询、报表输出和信息共享,及时为医院领导及各部门管理人员提供全面、准确的各种数据。
34 1
|
1月前
|
JavaScript 前端开发 Java
Springboot+vue地方废品回收机构管理系统
Spring Boot和Vue.js结合打造Web应用。Spring Boot简化企业级应用开发,Vue.js专注用户界面。示例展示了一个简单的废品回收系统,包含用户管理、废品分类和回收记录模块。后端提供获取废品分类的API,前端使用Vue.js和Axios展示分类列表。实际项目需扩展登录、权限等更多功能。
30 7
|
1月前
|
前端开发 JavaScript Java
Springboot+vue的医患档案管理系统
这是一个医患档案管理系统,包含用户管理、病历管理和预约管理模块。示例展示了一个Spring Boot后端接口,用于获取所有病历信息,以及一个Vue.js前端,使用Axios调用该接口显示病历列表。实际项目需考虑登录、权限及病历CRUD功能,可按需求和技术栈扩展。
28 7
|
1月前
|
JavaScript Java 关系型数据库
基于 java + Springboot + vue +mysql 大学生实习管理系统(含源码)
本文档介绍了基于Springboot的实习管理系统的设计与实现。系统采用B/S架构,旨在解决实习管理中的人工管理问题,提高效率。系统特点包括对用户输入的验证和数据安全性保障。功能涵盖首页、个人中心、班级管理、学生管理、教师管理、实习单位管理、实习作业管理、教师评分管理、单位成绩管理和系统管理等。用户分为管理员、教师和学生,各自有不同的操作权限。
|
2月前
|
存储 监控 NoSQL
SpringBoot 后台管理系统
SpringBoot 后台管理系统
20 0