Vue.js+SpringBoot開發社區買菜系統

在這里插入圖片描述

目錄

  • 一、摘要
    • 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.pswp.cn/news/713257.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/713257.shtml
英文地址,請注明出處:http://en.pswp.cn/news/713257.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多輸入多輸出預測

多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多輸入多輸出預測 目錄 多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網絡多輸入多輸出預測預測效果基本介紹程序設計往期精彩參考資料 預測效果 基本介紹 多輸入多輸出 | Matlab實現RIME-BP霜冰算法優化BP神經網…

Springboot+vue的考勤管理系統(有報告)。Javaee項目,springboot vue前后端分離項目。

演示視頻&#xff1a; Springbootvue的考勤管理系統&#xff08;有報告&#xff09;。Javaee項目&#xff0c;springboot vue前后端分離項目。 項目介紹&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三層…

GitHub Copilot extension activation error: ‘No access to GitHub Copilot found‘

好不容易學生認證通過了&#xff0c;打開vscode用copilot結果一直報這個錯誤。我的原因是&#xff1a;還未給copilot授權&#xff0c; 通過了學生認證后要進入這里進行授權&#xff1a;

Vue Html中插入本地視頻(Video 標簽)

在 Vue 中插入本地視頻可以通過使用標簽來實現。你可以將視頻文件放在你的項目中的合適位置&#xff08;比如assets文件夾&#xff09;&#xff0c;然后在 Vue 組件中引用這個視頻文件。html同理 首先&#xff0c;在你的 Vue 項目中的assets文件夾下放入你的視頻文件&#xff…

k8s單機部署zookeeper

&#xff08;作者&#xff1a;陳玓玏&#xff09; 拉取鏡像&#xff1a;docker pull zookeeper&#xff1b;編輯yaml&#xff1a; apiVersion: v1 kind: Service metadata:name: zookeeperlabels:app: zookeeper spec:ports:- name: clientport: 2181protocol: TCPtargetP…

QT TCP傳輸文件+ui

TCPFile tcp協議傳輸文件 TCPFile.pro QT core gui networkclientwidget.h #include <QWidget> #include <QTcpSocket> // 通信套接字 #include <QFile>private slots:void on_pushButton_clicked();private:QTcpSocket *tcpSocket;QFile file; /…

selenium進階設置

1、無頭瀏覽設置和規避爬蟲檢測 問題一&#xff1a;有界面時可以展示的元素&#xff0c;無頭模式報錯element not interactable 解決方法&#xff1a;通過錯誤截圖發現&#xff0c;頁面上有該元素&#xff0c;但是頁面不夠大&#xff0c;沒有顯示想定位的元素。 from seleni…

centos7 安裝 docker-compose

1、直接參考官方&#xff1a; Install Compose standalone | Docker Docs 1、安裝命令 curl -SL https://github.com/docker/compose/releases/download/v2.24.6/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose 2、修改 docker-compose 執行權限 不修改執行權…

升級pycharm之后,jupyter無法識別新安裝的包

import sys print(sys.executable)在jupyter中運行&#xff0c;檢測一下當前jupyter內核運行在哪個環境中-再pycharm的setting里面設置jupyter環境并沒有什么用。需要重新在想要使用的環境中重新安裝jupyter內核&#xff0c;并且重啟。

c# cad2016系統變量解釋說明

一、cad系統變量設置和獲取 /// <summary> /// 設置CAD系統變量 /// </summary> /// <param name"name">變量名</param> /// <param name"value">變量值</param> public static void SetSystemVariable(string name,…

Sora背后的技術原理:深度探索Video Compression Network與語言理解在視頻生成中的應用

Sora背后的技術原理&#xff1a;深度探索Video Compression Network與語言理解在視頻生成中的應用 摘要&#xff1a; 隨著人工智能技術的飛速發展&#xff0c;視頻生成技術逐漸成為研究熱點。Sora作為一種先進的視頻生成技術&#xff0c;其背后的技術原理值得深入研究。本文詳…

物聯網平臺如何實現SaaS化

物聯網平臺實現SaaS化是一個復雜的過程&#xff0c;涉及到多個關鍵步驟和要素。以下是實現物聯網平臺SaaS化的主要步驟和要點&#xff0c;以及如何確保成功實施。 一、平臺架構設計是實現SaaS化的基礎 一個分布式、模塊化的架構設計對于支持多租戶、高并發、高可擴展性等特性…

【Django】執行查詢—F()表達式

F() F()可以實現將模型字段值與同一模型中的另一字段做比較。舉個例子看一下&#xff1a; class Entry(models.Model):...number_of_comments models.IntegerField(default0)number_of_pingbacks models.IntegerField(default0)...找到所有 number_of_pingbacks 大于 numbe…

大數據權限認證 Kerberos 部署

文章目錄 1、什么是 Kerberos2、Kerberos 術語和原理2.1、Kerberos 術語2.1、Kerberos 原理 3、Kerberos 服務部署3.1、前置條件3.2、安裝依賴3.3、配置 krb5.conf3.4、配置 kdc.conf3.5、配置 kadm5.acl3.6、安裝 KDC 數據庫3.7、啟動服務3.8、創建 Kerberos 管理員3.9、創建普…

idea 手動打 jar 包

1.在 File 中找到并點擊 Project Structure 2.按圖中高亮的部分依次點擊 3.在 Main Class 處設置要打包的類&#xff0c;記得在 Directory for ... 處設置目錄為根目錄&#xff0c;設置好以后點擊兩次 OK 回到首頁 4.在頁面上方找到 Build &#xff0c;點擊 Build Artifacts...…

【Linux】在 Ubuntu 系統下使用 Screen 運行 Python 腳本

在 Ubuntu 系統下使用 Screen 運行 Python 腳本的優點 在 Ubuntu 操作系統中&#xff0c;Screen 是一種非常有用的工具&#xff0c;特別是在需要長時間運行的任務或者需要在后臺運行的任務中。結合 Python 腳本&#xff0c;Screen 提供了一種靈活且高效的方式來管理和執行任務…

ECOVADIS評估-自2024年1月1日起發布的記分卡的資格標準說明

EcoVadis評分&#xff08;0-100分&#xff09;反映了進行評估時公司的企業社會責任管理體系的質量。EcoVadis獎牌和獎章計劃旨在表彰按EcoVadis評估方法中所述&#xff0c;已完成EcoVadis評估流程并展示出相對強大的管理系統來解決企業社會責任標準的合格公司。獎牌和獎章的資格…

docker常用操作命令

常用的命令&#xff0c;詳細的命令下方有具體介紹 docker ps 查看正在運行的容器 docker ps -a 查看全部容器 docker images 查看本地鏡像 docker search [鏡像名稱] 查詢鏡像 docker run --name mynginx -d nginx:latest&#xff1a; 使用docker鏡像nginx:latest以后臺模…

在Windows系統上安裝Docker和SteamCMD容器的詳細指南有哪些?

在Windows系統上安裝Docker和SteamCMD容器的詳細指南有哪些&#xff1f; 安裝Docker&#xff1a; 首先&#xff0c;需要在Windows操作系統上激活WSL2功能。這是因為Docker作為一個容器工具&#xff0c;依賴于已存在并運行的Linux內核環境。可以通過使用winget來安裝Docker。具體…

排序(2)——希爾排序

希爾排序&#xff08;縮小增量排序&#xff09; 基本思想 希爾排序法又稱縮小增量法。希爾排序法的基本思想是&#xff1a;先選定一個整數&#xff0c;把待排序文件中所有記錄分成個組&#xff0c;所有距離為的記錄分在同一組內&#xff0c;并對每一組內的記錄進行排序。然后&…