【开源】SpringBoot框架开发固始鹅块销售系统

news2024/10/5 22:22:16

在这里插入图片描述


目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、功能模块
    • 2.1 数据中心模块
    • 2.2 鹅块类型模块
    • 2.3 固始鹅块模块
    • 2.4 鹅块订单模块
    • 2.5 评论管理模块
  • 三、系统设计
    • 3.1 用例设计
    • 3.2 数据库设计
      • 3.2.1 鹅块类型表
      • 3.2.2 鹅块表
      • 3.2.3 鹅块订单表
      • 3.2.4 鹅块评论表
  • 四、系统展示
  • 五、核心代码
    • 5.1 查询鹅块
    • 5.2 查询鹅块类型
    • 5.3 鹅块下单
    • 5.4 撤销鹅块下单
    • 5.5 新增留言
  • 五、免责说明


一、摘要

1.1 项目介绍

基于JAVA+Vue+SpringBoot+MySQL的固始鹅块销售系统,包含了鹅块类型模块、固始鹅块模块、鹅块订单模块、评论管理模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,固始鹅块销售系统基于角色的访问控制,给鹅块销售管理员、消费者使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

1.2 项目录屏


二、功能模块

固始鹅块是深受当地人民喜爱的地方美食,近些年来逐渐走向全国。随着社会的不断发展,人们的生活习惯和消费方式都在不断改变,而目前固始鹅块的销售方式大多还是农贸市场销售、土特产销售店铺、大中型超市或餐饮门店等零售方式。传统固始鹅块销售模式的时间、地点都相对固定,占用资金量大,需要店铺租金、装修费用、硬件设施、人员、仓库等各种资金支出。网络技术的发展为固始鹅块销售模式的革新带来了新的机遇,结合现代网络技术,改变传统的面对面的销售方式,开发出基于B/S架构的固始鹅块销售系统。

在这里插入图片描述

固始鹅块销售系统的功能性需求主要包含数据中心模块、鹅块类型模块、固始鹅块模块、鹅块订单模块、评论管理模块这五大模块,是基于浏览器运行的web管理后端,其中各个模块详细说明如下。

2.1 数据中心模块

数据中心模块包含了固始鹅块销售的系统基础配置,如登录用户的管理、鹅块运营公司组织架构的管理、用户菜单权限的管理、系统日志的管理、公用文件云盘的管理。

其中登录用户管理模块,由二手平台管理员负责运维工作,管理员可以对登录用户进行增加、删除、修改、查询操作。

组织架构,指的是固始鹅块销售运营公司的组织架构,该模块适用于管理这些组织架构的部门层级和员工的部门归属情况。

用户菜单权限管理模块,用于管理不同权限的用户,拥有哪些具体的菜单权限。

系统日志的管理,用于维护用户登入系统的记录,方便定位追踪用户的操作情况。

公用云盘管理模块,用于统一化维护固始鹅块销售系统中的图片,如店员的人脸照片、鹅块照片等等。

2.2 鹅块类型模块

鹅块类型模块用于对固始鹅块的类型数据进行管理,其中包括会类型名称、类型状态、排序值、备注、创建时间、创建人、更新时间、更新人等,管理员可以通过此模块对固始鹅块类型数据进行添加、编辑更新、删除、查询操作,消费者可以查询固始鹅块类型的数据。

2.3 固始鹅块模块

固始鹅块模块用于对固始鹅块的数据进行管理,其中包括商品名称、商品类型、销售价、图片、供应商、备注、创建时间、创建人等,管理员可以通过此模块对固始鹅块数据进行添加、编辑更新、删除、查询操作,消费者可以查询固始鹅块的数据。

2.4 鹅块订单模块

鹅块订单模块用于对固始鹅块的订单数据进行管理,其中包括商品ID、商品名称、商品图片、下单人、商品单价、数量、小计、付款状态等,消费者可以选择固始鹅块数据进行下单、加购操作,管理员可以查询消费者的下单数据。

2.5 评论管理模块

固始鹅块交易过程中难免会有一些咨询和纠纷,所以固始鹅块销售系统专门设计了留言板模块,用于解决相关纠纷,消费者可以在留言板中留言,或对已留言的信息进行回复,其中包括咨询内容、咨询人、咨询时间、回复内容、回复人、回复时间、备注、创建时间等。


三、系统设计

3.1 用例设计

在这里插入图片描述

3.2 数据库设计

3.2.1 鹅块类型表

在这里插入图片描述

3.2.2 鹅块表

在这里插入图片描述

3.2.3 鹅块订单表

在这里插入图片描述

3.2.4 鹅块评论表

在这里插入图片描述


四、系统展示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


五、核心代码

5.1 查询鹅块

@RequestMapping(value = "/getSellPage", method = RequestMethod.GET)
@ApiOperation(value = "查询商品")
public Result<IPage<Product>> getSellPage(@ModelAttribute Product product,@ModelAttribute PageVo page){
    QueryWrapper<Product> qw = new QueryWrapper<>();
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<SupermarketBill> billQw = new QueryWrapper<>();
    billQw.eq("user_id",currUser.getId());
    billQw.eq("status","未付款");
    List<SupermarketBill> billList = iSupermarketBillService.list(billQw);
    if(!ZwzNullUtils.isNull(product.getTitle())) {
        qw.like("title",product.getTitle());
    }
    if(!ZwzNullUtils.isNull(product.getType())) {
        qw.eq("type",product.getType());
    }
    IPage<Product> data = iProductService.page(PageUtil.initMpPage(page),qw);
    for (Product vo : data.getRecords()) {
        vo.setNumber(BigDecimal.ZERO);
    }
    for (Product vo : data.getRecords()) {
        for (SupermarketBill bill : billList) {
            if(Objects.equals(vo.getId(),bill.getProductId())) {
                vo.setNumber(vo.getNumber().add(bill.getNumber()));
            }
        }
    }
    return new ResultUtil<IPage<Product>>().setData(data);
}

5.2 查询鹅块类型

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询商品类型")
public Result<IPage<ProductType>> getByPage(@ModelAttribute ProductType productType ,@ModelAttribute PageVo page){
    QueryWrapper<ProductType> qw = new QueryWrapper<>();
    if(!ZwzNullUtils.isNull(productType.getTitle())) {
        qw.like("title",productType.getTitle());
    }
    if(!ZwzNullUtils.isNull(productType.getStatus())) {
        qw.eq("status",productType.getStatus());
    }
    IPage<ProductType> data = iProductTypeService.page(PageUtil.initMpPage(page),qw);
    return new ResultUtil<IPage<ProductType>>().setData(data);
}

5.3 鹅块下单

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "下单")
public Result<Object> addOne(@RequestParam String id){
    Product p = iProductService.getById(id);
    if(p == null) {
        return ResultUtil.error("商品不存在");
    }
    User currUser = securityUtil.getCurrUser();
    /**
        * 判断是否下单
        */
    QueryWrapper<SupermarketBill> billQw = new QueryWrapper<>();
    billQw.eq("product_id",id);
    billQw.eq("user_id",currUser.getId());
    billQw.eq("status","未付款");
    billQw.last("limit 1");
    SupermarketBill bill = iSupermarketBillService.getOne(billQw);
    if(bill != null) {
        bill.setNumber(bill.getNumber().add(BigDecimal.ONE));
        bill.setSum(bill.getPrice().multiply(bill.getNumber()));
        iSupermarketBillService.saveOrUpdate(bill);
        return ResultUtil.success();
    }
    /**
        * 下单
        */
    SupermarketBill b = new SupermarketBill();
    b.setProductId(p.getId());
    b.setProductName(p.getTitle());
    b.setProductImage(p.getImage());
    b.setUserId(currUser.getId());
    b.setUserName(currUser.getNickname());
    b.setPrice(p.getPrice());
    b.setNumber(BigDecimal.ONE);
    b.setSum(p.getPrice());
    b.setStatus("未付款");
    iSupermarketBillService.saveOrUpdate(b);
    return ResultUtil.success();
}

5.4 撤销鹅块下单

@RequestMapping(value = "/cancelOne", method = RequestMethod.GET)
@ApiOperation(value = "撤销下单")
public Result<Object> cancelOne(@RequestParam String id) {
    Product p = iProductService.getById(id);
    if (p == null) {
        return ResultUtil.error("商品不存在");
    }
    User currUser = securityUtil.getCurrUser();
    QueryWrapper<SupermarketBill> billQw = new QueryWrapper<>();
    billQw.eq("product_id",id);
    billQw.eq("user_id",currUser.getId());
    billQw.eq("status","未付款");
    billQw.last("limit 1");
    SupermarketBill bill = iSupermarketBillService.getOne(billQw);
    if(bill != null && bill.getNumber().compareTo(BigDecimal.ONE) > 0) {
        bill.setNumber(bill.getNumber().subtract(BigDecimal.ONE));
        bill.setSum(bill.getPrice().multiply(bill.getNumber()));
        iSupermarketBillService.saveOrUpdate(bill);
    }
    return ResultUtil.success();
}

5.5 新增留言

@RequestMapping(value = "/insert", method = RequestMethod.POST)
@ApiOperation(value = "新增留言")
public Result<Message> insert(Message message){
    User currUser = securityUtil.getCurrUser();
    message.setUserId(currUser.getId());
    message.setUserName(currUser.getNickname());
    message.setTime(DateUtil.now());
    message.setReplyContent("");
    message.setReplyName("");
    message.setReplyId("");
    message.setReplyTime("");
    iMessageService.saveOrUpdate(message);
    return new ResultUtil<Message>().setData(message);
}

五、免责说明

  • 本项目仅供个人学习使用,商用授权请联系博主,否则后果自负。
  • 博主拥有本软件构建后的应用系统全部内容所有权及独立的知识产权,拥有最终解释权。
  • 如有问题,欢迎在仓库 Issue 留言,看到后会第一时间回复,相关意见会酌情考虑,但没有一定被采纳的承诺或保证。

下载本系统代码或使用本系统的用户,必须同意以下内容,否则请勿下载!

  1. 出于自愿而使用/开发本软件,了解使用本软件的风险,且同意自己承担使用本软件的风险。
  2. 利用本软件构建的网站的任何信息内容以及导致的任何版权纠纷和法律争议及后果和博主无关,博主对此不承担任何责任。
  3. 在任何情况下,对于因使用或无法使用本软件而导致的任何难以合理预估的损失(包括但不仅限于商业利润损失、业务中断与业务信息丢失),博主概不承担任何责任。
  4. 必须了解使用本软件的风险,博主不承诺提供一对一的技术支持、使用担保,也不承担任何因本软件而产生的难以预料的问题的相关责任。

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

计算文件大小时容易忽略的问题

计算文件大小时容易忽略的问题 1、概述2、问题背景3、解决方案4、结论 1、概述 大家好&#xff0c;我是欧阳方超&#xff0c;可以关注我的公众号“欧阳方超”&#xff0c;后续内容将在公众号首发。 在处理文件大小时&#xff0c;经常需要将其转换为KB并进行适当处理。然而&…

cuda python torch 虚拟环境配置

以下是Pytorch和CUDA对应的版本 以下是Pytorch和Python对应的版本 检查cuda与Python版本是否匹配 import torch print(torch.__version__) print(torch.cuda.is_available()) print(torch.empty(3,4,devicecuda))cuda 删除cuda conda uninstall cudatoolkit --forceconda u…

稀碎从零算法笔记Day5-LeetCode:轮转数组

题型&#xff1a;数组、数学、双指针 前言&#xff1a;LC说你得用三种方法做出来(悲) 链接&#xff1a;189. 轮转数组 - 力扣&#xff08;LeetCode&#xff09; 来源&#xff1a;LeetCode 著作权归作者所有。商业转载请联系作者获得授权&#xff0c;非商业转载请注明出处。 …

操作系统概念概述

软件设计师11--操作系统 考点1&#xff1a;操作系统的作用操作系统概述例题&#xff1a; 考点2&#xff1a;特殊的操作系统例题&#xff1a; 考点1&#xff1a;操作系统的作用 操作系统概述 管理系统的硬件、软件、数据资源控制程序运行人机之间的接口应用软件与硬件之间的接口…

289页初中级前端题助你拿下Offer,web前端开发面试技巧

HTML面试题部分 1.H5的新特性有哪些 2.Label的作用是什么&#xff1f;是怎么用的&#xff1f; 3.HTML5的form如何关闭自动完成功能 4.dom如何实现浏览器内多个标签页之间的通信? 5.实现不使用 border 画出1px高的线&#xff0c;在不同浏览器的标准模式与怪异模式下都 能保持一…

详解C#之WinForm版利用RichTextBox 制作文本编辑器【附源码】

在Windows应用程序开发中&#xff0c;刚刚介绍了WPF版的利用RichTextBox实现文本编辑器&#xff0c;今天继续推出WinForm版的利用RichTextBox实现文本编辑器。本文利用一个简单的小例子&#xff0c;简述如何在WinForm开发中&#xff0c;利用RichTextBox开发文本编辑器&#xff…

数据传输的同步技术包含哪些?如何高效安全传输数据?

在数字化时代&#xff0c;数据传输的同步技术对于确保信息的一致性和通信质量至关重要。本文将探讨数据传输同步技术的种类、如何实现高效安全的数据传输&#xff0c;以及企业在数据迁移中常用的几种方式。最后&#xff0c;我们将重点介绍镭速大数据迁移工具的优势。 数据传输同…

论文:万卡集群训练大模型(by字节跳动)

论文&#xff1a;MegaScale: Scaling Large Language Model Training to More Than 10,000 GPUs&#xff08;https://arxiv.org/pdf/2402.15627.pdf&#xff09; 结论&#xff1a; 1&#xff0c;字节跳动提出了万卡集群大模型训练架构MegaScale&#xff0c;并在12288个GPU上训练…

118页Vue面试题总结,就是这么简单

问&#xff1a;BFC 与 IFC 区别 BFC 是块级格式上下文&#xff0c;IFC 是行内格式上下文&#xff1a; 内部的 Box 会水平放置水平的间距由 margin&#xff0c;padding&#xff0c;border 决定 问&#xff1a;BFC会与float元素相互覆盖吗&#xff1f;为什么&#xff1f;举例说…

人事档案转出需要注意哪些方面

人事档案转出是指将员工的人事档案从一个部门、公司或组织转移到另一个部门、公司或组织的过程。这个过程需要注意以下几个方面&#xff1a; 1.法律合规&#xff1a;在进行人事档案转出前&#xff0c;要确保遵守相关的法律法规和公司内部规定。例如&#xff0c;要确保有合法的授…

web组态--新一代全流程低代码物联网平台

先上图&#xff0c;实际完成效果&#xff1a; 1.添加应用图纸 登录by组态后台&#xff1a;http://www.byzt.net:90 ​ 点击组态管理-画面管理&#xff0c;先新建一个组态画面&#xff0c;填写画面名称&#xff0c;保存&#xff0c;进入组态画面。 ​ 选择画面管理&#xff…

Linux——网络基础

计算机网络背景 网络发展 独立模式: 计算机之间相互独立 在早期的时候&#xff0c;计算机之间是相互独立的&#xff0c;此时如果多个计算机要协同完成某种业务&#xff0c;那么就只能等一台计算机处理完后再将数据传递给下一台计算机&#xff0c;然后下一台计算机再进行相应…

《 前端 vs. 后端:挑战与机遇的对决》

前言 前端开发和后端开发是构建网站、应用程序和其他软件的两个主要方面。它们各自负责不同的任务和功能。 前端开发: 定义:前端开发是指构建用户直接与之交互的网站或应用程序的过程。前端开发主要关注于用户界面和用户体验。技术栈:前端开发通常涉及使用 HTML、CSS 和 Ja…

基于带时间窗口的电动汽车路由问题的精英对立学习的多群PSO(2022)

英文&#xff1a;Multi-swarm PSO based on Elite Opposite Learning on Electric Vehicle Routing Problem with Time Window 摘要&#xff1a; 带时间窗口的电动汽车路由问题&#xff08;EVRPTW&#xff09;是交通领域的一个新问题&#xff0c;用传统的精确求解方法很难解决…

电商网站数据采集配合socks5代理ip怎么进行?

电商网站数据采集是一项重要的任务&#xff0c;可以帮助企业了解市场需求、竞品分析、用户行为等方面。在进行电商网站数据采集时&#xff0c;有时需要配合使用socks5代理IP。本文将介绍如何进行电商网站数据采集配合socks5代理IP。 一、代理IP介绍 代理IP是一种可以隐藏用户真…

大模型笔记:RAG(Retrieval Augmented Generation,检索增强生成)

1 大模型知识更新的困境 大模型的知识更新是很困难的&#xff0c;主要原因在于&#xff1a; 训练数据集固定,一旦训练完成就很难再通过继续训练来更新其知识参数量巨大,随时进行fine-tuning需要消耗大量的资源&#xff0c;并且需要相当长的时间LLM的知识是编码在数百亿个参数中…

95页初级前端模块笔记分享,开发web前端学习

简历 首先肯定是要准备一份自己的简历&#xff0c;简历经常是给面试官的第一印象。 简历一般包括个人基础信息&#xff0c;专业技能&#xff0c;项目经验&#xff0c;其他模块。 个人基础信息模块就不说了&#xff0c;太基础。 **专业 戳这里领取完整开源项目&#xff1a;【…

UE5 C++ TPS开发 学习记录(九

p20 首先我们现在有一个多人游戏的系统类MultiplayerSessionsSubsystem 在这个系统内提供了很多会话系统的接口SessionInterface 当现在我们有一些SessionInterfaceDelegates的委托,这个委托的来源是SessionInterface,所以我们使用的委托可以接收到来自SessionInterface的消息(…

自动化测试环境搭建--Linux内网环境【实操经验】

环境信息 Python版本3.6.8 Jenkins版本2.346.3 Allure版本 2.13.2 环境准备 一、Python需要安装库 allure-pytest (2.13.2) pytest (7.0.1) jsonpath (0.82.2) pytest-html (3.2.0) pytest-ordering (0.6) …

工具函数模板题(蓝桥杯 C++ 代码 注解)

目录 一、Vector容器&#xff1a; 二、Queue队列 三、Map映射 四、题目&#xff08;快递分拣 vector&#xff09;&#xff1a; 代码&#xff1a; 五、题目&#xff08;CLZ银行问题 queue&#xff09;&#xff1a; 代码&#xff1a; 六、题目&#xff08;费里的语言 map&…