【开源】基于Vue.js的社区买菜系统的设计和实现

在这里插入图片描述 项目编号: S 011 ,文末获取源码。 \color{red}{项目编号:S011,文末获取源码。} 项目编号:S011,文末获取源码。

目录

  • 一、摘要
    • 1.1 项目介绍
    • 1.2 项目录屏
  • 二、系统设计
    • 2.1 功能模块设计
      • 2.1.1 数据中心模块
      • 2.1.2 菜品分类模块
      • 2.1.3 菜品档案模块
      • 2.1.4 菜品订单模块
      • 2.1.5 菜品收藏模块
      • 2.1.6 收货地址模块
    • 2.2 可行性分析
    • 2.3 用例分析
    • 2.4 实体类设计
      • 2.4.1 菜品分类模块
      • 2.4.2 菜品档案模块
      • 2.4.3 菜品订单模块
      • 2.4.4 菜品收藏模块
      • 2.4.5 收货地址模块
  • 三、系统实现
  • 四、核心代码展示
    • 4.1 菜品实体类设计
    • 4.2 收货地址实体类设计
    • 4.3 查询菜品接口设计
    • 4.4 菜品下单接口设计
    • 4.5 菜品收藏接口设计
  • 五、免责说明


一、摘要

1.1 项目介绍

基于Vue+SpringBoot+MySQL的社区买菜系统包含菜品分类模块、菜品档案模块、菜品订单模块、菜品收藏模块、收货地址模块,还包含系统自带的用户管理、部门管理、角色管理、菜单管理、日志管理、数据字典管理、文件管理、图表展示等基础模块,社区买菜系统基于角色的访问控制,给买菜者、菜品管理员使用,可将权限精确到按钮级别,您可以自定义角色并分配权限,系统适合设计精确的权限约束需求。

随着计算机技术和网络技术的日益普及,给社区菜市场信息化建设带来了机遇,利用先进技术建立多种方式的社区买菜系统,这是一个明智的选择。通过电子屏和网站两种方式发布市场管理信息、商品信息(包括价格、质量等),能够起到增强市场和市民之间的信息交流,达到繁荣市场,更好的为市民服务之目的。本文采用B/S 模式相结合的架构,设计和实现了基于 Java EE 的社区买菜系统。

1.2 项目录屏

源码下载


二、系统设计

2.1 功能模块设计

社区买菜系统的功能性需求主要包含数据中心模块、菜品分类模块、菜品档案模块、菜品订单模块、菜品收藏模块、收货地址模块这六大模块,系统是基于浏览器运行的web管理后端,其中各个模块详细说明如下。
在这里插入图片描述

2.1.1 数据中心模块

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

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

组织架构,指的是高校的组织架构,该模块适用于管理这些组织架构的部门层级和教师的部门归属情况。

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

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

公用云盘管理模块,用于统一化维护社区买菜系统中的图片,如合同签订文件、合同照片等等。

在这里插入图片描述

2.1.2 菜品分类模块

不同的菜品有着不同的类型,不同类型的菜品往往需要区分管理,所以需要建立菜品分类模块,菜品分类的数据包括类型名称、类型状态、排序值、备注、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询角色数据,用户可以查询管理员发布的角色数据。
在这里插入图片描述

2.1.3 菜品档案模块

菜品是社区买菜系统的核心实体,需要建立菜品档案模块对系统上架的菜品数据进行管理,菜品的字段包括菜品名称、菜品介绍、菜品分类、剩余库存、创建人、创建时间、更新人、更新时间,管理员可以新增、删除、编辑和条件查询菜品数据,用户可以查询管理员发布的菜品数据。
在这里插入图片描述

2.1.4 菜品订单模块

有了菜品数据之后,用户就可以在社区买菜系统中下单了,菜品订单的数据包括菜品、下单数量、总价、收货地址、创建人、创建时间、更新人、更新时间,用户可以发起下单申请,管理员可以处理用户发起的菜品订单。

在这里插入图片描述

2.1.5 菜品收藏模块

为了更好的服务用户,社区买菜系统支持对菜品进行收藏,以便于用户更方便快捷的下单自己喜欢的菜品,菜品收藏字段包括菜品ID、菜品名称、菜品图片、收藏人、创建人、创建时间、更新人、更新时间,用户可以发起菜品收藏申请,管理员可以查询用户的菜品收藏信息。

在这里插入图片描述

2.1.6 收货地址模块

为了方便用户更快捷的下单,用户可以对自己的收货地址进行管理,在菜品下单时可以快捷选择自己维护的收货地址。收货地址字段包括挂靠人、收货地址、联系人、联系电话、创建人、创建时间、更新人、更新时间,用户可以新增、编辑、删除和条件查询自己的收货地址,管理员可以查询全部用户的收货地址。

在这里插入图片描述

2.2 可行性分析

我将首先调查同类型市场的社区买菜系统,了解其优缺点,然后询问一些与系统和买菜相关的专家,并与他们讨论我们的初步想法。然后,我将对客户进行实地调查,以了解他们对这类社区买菜系统的具体要求。最后,我们将总结上述所有要点,以澄清我们的系统与类似产品之间的区别,并确定我们将开发的社区买菜系统的特点,使其在推出后在市场上更有前景。

2.3 用例分析

UML是面向对象的图形化建模语言,具有表示容易,定义友好,适用范畴广泛,功能强大。

用例图是用例模型的一种,需求分析人员可采用用例图表示用户操作行为。社区买菜系统的用例图设计主要包括用户用例设计和管理员用例设计。
在这里插入图片描述

2.4 实体类设计

2.4.1 菜品分类模块

在这里插入图片描述

2.4.2 菜品档案模块

在这里插入图片描述

2.4.3 菜品订单模块

在这里插入图片描述

2.4.4 菜品收藏模块

在这里插入图片描述

2.4.5 收货地址模块

在这里插入图片描述


三、系统实现

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


四、核心代码展示

4.1 菜品实体类设计

@Table(name = "a_dish")
@TableName("a_dish")
@ApiModel(value = "菜品")
public class Dish extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "菜品名称")private String title;@ApiModelProperty(value = "菜品介绍")private String content;@ApiModelProperty(value = "菜品分类")private String type;@ApiModelProperty(value = "单价")private BigDecimal unit;@ApiModelProperty(value = "剩余库存")private BigDecimal stock;@ApiModelProperty(value = "供应商")private String supplier;@ApiModelProperty(value = "图片")private String image;@Transient@TableField(exist=false)@ApiModelProperty(value = "是否收藏")private Boolean collectionFlag;
}

4.2 收货地址实体类设计

@Table(name = "a_shipping_address")
@TableName("a_shipping_address")
@ApiModel(value = "收货地址")
public class ShippingAddress extends ZwzBaseEntity {private static final long serialVersionUID = 1L;@ApiModelProperty(value = "挂靠人ID")private String userId;@ApiModelProperty(value = "挂靠人")private String userName;@ApiModelProperty(value = "收货地址")private String address;@ApiModelProperty(value = "收货人")private String consignee;@ApiModelProperty(value = "联系电话")private String mobile;
}

4.3 查询菜品接口设计

@RequestMapping(value = "/getByPage", method = RequestMethod.GET)
@ApiOperation(value = "查询菜品")
public Result<IPage<Dish>> getByPage(@ModelAttribute Dish dish ,@ModelAttribute PageVo page){QueryWrapper<Dish> qw = new QueryWrapper<>();if(!ZwzNullUtils.isNull(dish.getTitle())) {qw.like("title",dish.getTitle());}if(!ZwzNullUtils.isNull(dish.getContent())) {qw.like("content",dish.getContent());}if(!ZwzNullUtils.isNull(dish.getSupplier())) {qw.like("supplier",dish.getSupplier());}User currUser = securityUtil.getCurrUser();IPage<Dish> data = iDishService.page(PageUtil.initMpPage(page),qw);for (Dish vo : data.getRecords()) {QueryWrapper<DishCollection> collQw = new QueryWrapper<>();collQw.eq("user_id",currUser.getId());collQw.eq("dish_id",vo.getId());vo.setCollectionFlag(iDishCollectionService.count(collQw) > 0L);}return new ResultUtil<IPage<Dish>>().setData(data);
}

4.4 菜品下单接口设计

@RequestMapping(value = "/addOneOrder", method = RequestMethod.POST)
@ApiOperation(value = "从购物车下单")
public Result<Object> addOneOrder(@RequestParam String[] ids){List<DishOrderItem> itemList = new ArrayList<>();List<ShoppingCart> cartList = new ArrayList<>();BigDecimal sumMoney = BigDecimal.ZERO;for(String id: ids) {ShoppingCart sc = iShoppingCartService.getById(id);if(sc == null) {return ResultUtil.error("购物车已被删除");}cartList.add(sc);Dish dish = iDishService.getById(sc.getDishId());if(dish == null) {return ResultUtil.error("菜品已下架");}DishOrderItem item = new DishOrderItem();item.setDishId(dish.getId());item.setDishName(dish.getTitle());item.setUnit(dish.getUnit());item.setImage(dish.getImage());item.setNumber(sc.getNumber());item.setSumMoney(item.getUnit().multiply(item.getNumber()));itemList.add(item);sumMoney = sumMoney.add(item.getSumMoney());}User currUser = securityUtil.getCurrUser();DishOrder order = new DishOrder();order.setUserId(currUser.getId());order.setUserName(currUser.getNickname());order.setOrderTime(DateUtil.now());order.setSumMoney(sumMoney);order.setOrderSize(BigDecimal.valueOf(itemList.size()));order.setStatus("已下单");iDishOrderService.saveOrUpdate(order);for (DishOrderItem item : itemList) {item.setOrderId(order.getId());iDishOrderItemService.saveOrUpdate(item);}for (ShoppingCart vo : cartList) {iShoppingCartService.removeById(vo.getId());}return ResultUtil.success();
}

4.5 菜品收藏接口设计

@RequestMapping(value = "/addOne", method = RequestMethod.GET)
@ApiOperation(value = "添加单条收藏")
public Result<Object> addOne(@RequestParam String id){Dish dish = iDishService.getById(id);if(dish == null) {return ResultUtil.error("菜品不存在");}User currUser = securityUtil.getCurrUser();QueryWrapper<DishCollection> qw = new QueryWrapper<>();qw.eq("user_id",currUser.getId());qw.eq("dish_id",dish.getId());if(iDishCollectionService.count(qw) > 0L) {return ResultUtil.error("您已收藏");}DishCollection dc = new DishCollection();dc.setDishId(dish.getId());dc.setDishName(dish.getTitle());dc.setUserId(currUser.getId());dc.setUserName(currUser.getNickname());dc.setCollectionTime(DateUtil.now());iDishCollectionService.saveOrUpdate(dc);return ResultUtil.success();
}

五、免责说明

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

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

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

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

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

相关文章

【uniapp】 video视频层级、遮挡其他弹窗或顶部导航 使用nvue覆盖

uniapp 顶部导航和弹窗被video遮挡解决办法 第一步&#xff1a;配置 subNVues {"path": "pages/index/index","style": {"navigationBarTitleText": "uni-app","navigationStyle": "custom","app-…

对话芯动科技 | 助力云游戏 4K级服务器显卡的探索与创新

2021年芯动科技推出了基于IMG BXT GPU IP的风华1号显卡。单块风华1号显卡可在台式机和云游戏中实现4K级别的性能&#xff0c;渲染能力达到5 TFLOPS&#xff0c;如果在服务器中同时运行两块显卡&#xff0c;性能还可翻倍。该显卡是为不断扩大的安卓云游戏市场量身定制的&#xf…

隐私协议 Secret Network 宣布使用 Octopus Network 构建的 NEAR-IBC 连接 NEAR 生态

2023年11月 NearCon2023 活动期间&#xff0c;基于 Cosmos SDK 构建的隐私协议 Secret Network&#xff0c;宣布使用 Octopus Network 开发的 NEAR-IBC&#xff0c;于2024年第一季度实现 Secret Network 与 NEAR Protocol 之间的跨链交互。 这将会是Cosmos 生态与 NEAR 之间的首…

GZ033 大数据应用开发赛题第04套

2023年全国职业院校技能大赛 赛题第04套 赛项名称&#xff1a; 大数据应用开发 英文名称&#xff1a; Big Data Application Development 赛项组别&#xff1a; 高等职业教育组 赛项编号&#xff1a; GZ033 …

[C国演义] 哈希的使用和开闭散列的模拟实现

哈希的使用和开闭散列的模拟实现 1. 使用1.1 unordered_map的接口1.2 unordered_set的接口 2. 哈希底层2.1 概念2.2 解决哈希冲突 3. 实现3.1 开放寻址法3.2 拉链法 1. 使用 1.1 unordered_map的接口 构造 void test1() {// 空的unordered_map对象unordered_map<int, in…

动态头像如何制作?这个方法请收藏

照片是记录生活的一种方式&#xff0c;但是静态图片有时候不能够完全表达我们的情感。而动态的图片能够让图片以更生动的方式来展示我们的想象力和内心情感。那么&#xff0c;大家知道动态图片制作的方法有哪些吗&#xff1f;使用gif动画制作&#xff08;https://www.gif.cn/&a…

React项目首页中用canvas实现星空

文章目录 前言代码使用后言 前言 hello world欢迎来到前端的新世界 &#x1f61c;当前文章系列专栏&#xff1a;前端系列文章 &#x1f431;‍&#x1f453;博主在前端领域还有很多知识和技术需要掌握&#xff0c;正在不断努力填补技术短板。(如果出现错误&#xff0c;感谢大家…

Element UI之Checkbox 多选框

Checkbox 多选框 在一组选项中进行多选 按需引入方式 如果是完整引入可跳过此步骤 import Vue from vue import { Checkbox, CheckboxGroup } from element-ui import element-ui/lib/theme-chalk/base.css import element-ui/lib/theme-chalk/checkbox.css import element…

两个macos命令

ldd替代: otool -L strace替代: sudo dtruss

机器学习笔记 - 隐马尔可夫模型的简述

隐马尔可夫模型是一个并不复杂的数学模型,到目前为止,它一直被认为是解决大多数自然语言处理问题最为快速、有效的方法。它成功地解决了复杂的语音识别、机器翻译等问题。看完这些复杂的问题是如何通过简单的模型得到描述和解决,我们会由衷地感叹数学模型之妙。 人类信息交流…

数据结构与算法设计分析——常用搜索算法

目录 一、穷举搜索二、图的遍历算法&#xff08;一&#xff09;深度优先搜索&#xff08;DFS&#xff09;&#xff08;二&#xff09;广度优先搜索&#xff08;BFS&#xff09; 三、回溯法&#xff08;一&#xff09;回溯法的定义&#xff08;二&#xff09;回溯法的应用 四、分…

Python学习笔记--进程

进程 Python 中的多线程其实并不是真正的多线程,如果想要充分地使用多核 CPU 的资源,在 Python 中大部分情况需要使用多进程。 Python 提供了非常好用的多进程包 multiprocessing,只需要定义一个函数,Python 会完成其他所有事情。 借助这个包,可以轻松完成从单进程到并…

EfficientNet:通过模型效率彻底改变深度学习

一、介绍 EfficientNet 是深度学习领域的里程碑&#xff0c;代表了神经网络架构方法的范式转变。EfficientNet 由 Google Research 的 Mingxing Tan 和 Quoc V. Le 开发&#xff0c;在不影响性能的情况下满足了对计算高效模型不断增长的需求。本文深入探讨了 EfficientNet 背后…

百度搜索智能化算力调控分配方法

作者 | 泰来 导读 随着近年深度学习技术的发展&#xff0c;搜索算法复杂度不断上升&#xff0c;算力供给需求出现了爆发式的增长。伴随着AI技术逐步走到深水区&#xff0c;算法红利在逐步消失&#xff0c;边际效应日益显著&#xff0c;算力效能的提升尤为重要&#xff0c;同时随…

每日一练 | 华为认证真题练习Day132

1、ACL本质上是一种报文过滤器&#xff0c;将ACL在业务模块中应用&#xff0c;ACL才能生效。 A. 对 B. 错 2、某个ACL规则如下&#xff1a;则下列哪些IP地址可以被permit规则匹配&#xff1f;&#xff08;多选&#xff09; rule 5 permit ip source 10.0.1.0 0.0.254.255 A…

视频修复软件 Aiseesoft Video Repair mac中文版功能

AIseesoft Video RepAIr mac是一款专业的视频修复软件&#xff0c;主要用于修复损坏或无法播放的视频文件。AIseesoft Video RepAIr是一个功能强大的程序,可以帮助恢复丢失或损坏的数据的视频。只要您以相同的格式提供示例视频,并在功能强大的技术的支持下,只需单击几下即可收获…

如何正确规划 JVM 性能调优

JVM性能调优涉及到很多方面的权衡&#xff0c;其中某一方面可能会极大地影响整体性能。因此&#xff0c;需要综合考虑所有可能的影响。理解并遵循一些基本原则和理论将使性能调优变得更加容易。为了更好地理解本文的内容&#xff0c;您必须满足以下先决条件&#xff1a; 了解 …

Docker 笔记(一)--安装

Docker 笔记&#xff08;一&#xff09;–安装 记录Docker 安装操作记录&#xff0c;便于查询。 参考 链接: Docker 入门到实战教程(二)安装Docker链接: docker入门(利用docker部署web应用)链接: 阿里云容器镜像服务/镜像加速器/操作文档链接: 网易镜像中心链接: 阿里云镜像…

智能配电系统解决方案

智能配电系统解决方案是一种集成了先进技术和智能化功能的配电系统&#xff0c;它能够提高电力系统的效率、可靠性和安全性。力安科技智能配电系统解决方案依托电易云-智慧电力物联网&#xff0c;具体实施的方案如下&#xff1a; 智能化设备和传感器&#xff1a;采用智能化的开…