[免費]蒼穹微信小程序外賣點餐系統修改版(跑腿點餐系統)(SpringBoot后端+Vue管理端)【論文+源碼+SQL腳本】

大家好,我是java1234_小鋒老師,看到一個不錯的微信小程序醫院預約掛號管理系統(uni-app+SpringBoot后端+Vue管理端),分享下哈。

項目視頻演示

【免費】蒼穹微信小程序外賣點餐系統修改版(跑腿點餐系統)(SpringBoot后端+Vue管理端) Java畢業設計_嗶哩嗶哩_bilibili

項目介紹

當前高速發展的經濟模式下,人們的工作和生活壓力都很大,根本沒有時間去下廚,在哪里下廚變成了一個問題,于是,在家里下廚的傳統習慣逐漸地變成了無法完成的事情。以往,人們都是通過訂購電話來進行訂餐,但是,隨著近年來的發展,訂購電話已經不能滿足更多的訂購人員的需求,其缺點也逐漸顯現出來[1]。正是由于上述各種因素,改變了傳統的以電話、當面為基礎的餐飲配送模式,成為一種更加便捷、快速的、以互聯網為基礎的外賣網上訂購模式,成為了該系統的設計目的。

首先項目進行了需求分析,系統角色可分為管理員和用戶,管理員可以管理員工信息、分類管理導出分類信息數據表格、菜品信息管理套餐信息管理訂單明細查詢訂單管理導出訂單明細數據表格、修改個人信息等。用戶可以查看菜品信息查看菜品詳情選擇菜品規格管理購物車收貨地址管理、修改個人信息、查看訂單信息、下單支付等。然后外賣訂餐系統根據需求分析進行系統功能模塊設計和數據庫設計最后詳細描述了外賣訂餐系統各個功能模塊是如何實現的。

畢業設計管理系統使用HTML 5、AJAX、JavaScript、Vue、Element-UI框架等技術實現前端;使用Spring、Spring MVC、Spring?Boot、MyBatis-Plus實現后端;采用 MySQL的關系數據庫對數據進行存儲,采用 Redis的方式對數據進行緩存,以 MySQL為主要的內存,以 Redis為主要的內存對數據進行緩存,以提高對數據的存取效率;使用Linux系統和Tomcat搭建服務器完成項目的部署。

系統展示

部分代碼

package com.sky.controller.user;import com.sky.constant.StatusConstant;
import com.sky.entity.Dish;
import com.sky.result.Result;
import com.sky.service.DishService;
import com.sky.vo.DishVO;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;@RestController("userDishController")
@RequestMapping("/user/dish")
@Slf4j
@Api(tags = "C端-菜品瀏覽接口")
public class DishController {@Autowiredprivate DishService dishService;@Autowiredprivate RedisTemplate redisTemplate;/*** 根據分類id查詢菜品** @param categoryId* @return*/@GetMapping("/list")@ApiOperation("根據分類id查詢菜品")public Result<List<DishVO>> list(Long categoryId) {//構造redis中的key,規則:dish_分類idString key = "dish_" + categoryId;//查詢redis中是否存在菜品數據List<DishVO> list = (List<DishVO>) redisTemplate.opsForValue().get(key);if(list != null && list.size() > 0){//如果存在,直接返回,無須查詢數據庫return Result.success(list);}Dish dish = new Dish();dish.setCategoryId(categoryId);dish.setStatus(StatusConstant.ENABLE);//查詢起售中的菜品//如果不存在,查詢數據庫,將查詢到的數據放入redis中list = dishService.listWithFlavor(dish);redisTemplate.opsForValue().set(key, list);return Result.success(list);}}
<template><div class="login"><div class="login-box"><img src="@/assets/login/login-l.png" alt="" /><div class="login-form"><el-form ref="loginForm" :model="loginForm" :rules="loginRules"><div class="login-form-title"><imgsrc="@/assets/login/icon_logo.png"style="width: 149px; height: 50px"alt=""/><!-- <span class="title-label">食遇記</span> --></div><el-form-item prop="username"><el-inputv-model="loginForm.username"type="text"auto-complete="off"placeholder="賬號"prefix-icon="iconfont icon-user"/></el-form-item><el-form-item prop="password"><el-inputv-model="loginForm.password"type="password"placeholder="密碼"prefix-icon="iconfont icon-lock"@keyup.enter.native="handleLogin"/></el-form-item><el-form-item style="width: 100%"><el-button:loading="loading"class="login-btn"size="medium"type="primary"style="width: 100%"@click.native.prevent="handleLogin"><span v-if="!loading">LOGIN</span><span v-else>登錄中...</span></el-button></el-form-item></el-form></div></div></div>
</template><script lang="ts">
import { Component, Vue, Watch } from 'vue-property-decorator'
import { Route } from 'vue-router'
import { Form as ElForm, Input } from 'element-ui'
import { UserModule } from '@/store/modules/user'
import { isValidUsername } from '@/utils/validate'@Component({name: 'Login',
})
export default class extends Vue {private validateUsername = (rule: any, value: string, callback: Function) => {if (!value) {callback(new Error('請輸入用戶名'))} else {callback()}}private validatePassword = (rule: any, value: string, callback: Function) => {if (value.length < 6) {callback(new Error('密碼必須在6位以上'))} else {callback()}}private loginForm = {username: '',password: '',} as {username: Stringpassword: String}loginRules = {username: [{ validator: this.validateUsername, trigger: 'blur' }],password: [{ validator: this.validatePassword, trigger: 'blur' }],}private loading = falseprivate redirect?: string@Watch('$route', { immediate: true })private onRouteChange(route: Route) {}// 登錄private handleLogin() {;(this.$refs.loginForm as ElForm).validate(async (valid: boolean) => {if (valid) {this.loading = trueawait UserModule.Login(this.loginForm as any).then((res: any) => {if (String(res.code) === '1') {this.$router.push('/')} else {// this.$message.error(res.msg)this.loading = false}}).catch(() => {// this.$message.error('用戶名或密碼錯誤!')this.loading = false})} else {return false}})}
}
</script><style lang="scss">
.login {display: flex;justify-content: center;align-items: center;height: 100%;// background: #476dbe;background-color: #f1ebeb;
}.login-box {width: 1000px;height: 474.38px;border-radius: 8px;display: flex;img {width: 60%;height: auto;}
}.title {margin: 0px auto 10px auto;text-align: left;color: #707070;
}.login-form {background: #ffffff;width: 40%;border-radius: 0px 8px 8px 0px;display: flex;justify-content: center;align-items: center;.el-form {width: 214px;height: 307px;}.el-form-item {margin-bottom: 30px;}.el-form-item.is-error .el-input__inner {border: 0 !important;border-bottom: 1px solid #fd7065 !important;background: #fff !important;}.input-icon {height: 32px;width: 18px;margin-left: -2px;}.el-input__inner {border: 0;border-bottom: 1px solid #e9e9e8;border-radius: 0;font-size: 12px;font-weight: 400;color: #333333;height: 32px;line-height: 32px;}.el-input__prefix {left: 0;}.el-input--prefix .el-input__inner {padding-left: 26px;}.el-input__inner::placeholder {color: #aeb5c4;}.el-form-item--medium .el-form-item__content {line-height: 32px;}.el-input--medium .el-input__icon {line-height: 32px;}
}.login-btn {border-radius: 17px;padding: 11px 20px !important;margin-top: 10px;font-weight: 500;font-size: 12px;border: 0;font-weight: 500;color: #333333;// background: #09a57a;background-color: #5A8B4F;&:hover,&:focus {// background: #09a57a;background-color: #5A8B4F;color: #ffffff;}
}
.login-form-title {height: 36px;display: flex;justify-content: center;align-items: center;margin-bottom: 40px;.title-label {font-weight: 500;font-size: 20px;color: #333333;margin-left: 10px;}
}
</style>

源碼下載

鏈接:https://pan.baidu.com/s/1k7Bk8OqhRBWze-RO2qfETw
提取碼:1234

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/81672.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/81672.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/81672.shtml

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

相關文章

Dify 快速上手 MCP!Java 搭建 MCP Server 接入 Dify詳細實戰攻略

近期&#xff0c;MCP協議在AI領域熱度飆升&#xff0c;成為眾多開發者和行業人士熱議的焦點。下文先介紹MCP究竟是什么&#xff1f;再詳細講下 Dify DeepSeek Java開發 MCP server 實戰。 一、MCP的基本概念 MCP&#xff0c;全稱為模型上下文協議&#xff08;Model Context P…

力扣992做題筆記

左神做法的理論依據 我們可以通過 集合的包含關系 和 具體示例枚舉 來直觀理解這一推導過程。以下結合題目示例 1 進行詳細說明&#xff1a; 示例 1 分析 輸入&#xff1a;nums [1,2,1,2,3], k 2 目標&#xff1a;計算恰好包含 2 種不同整數 的子數組個數。 步驟一集合 A…

Kubernetes 運維操作手冊:從 etcd 快照進行精確恢復

1 5 步實現 etcd 精確恢復 將快照恢復到本地 etcd 數據目錄。使用恢復的數據啟動本地 etcd 實例。使用 etcdctl 查詢特定鍵&#xff08;例如&#xff0c;ConfigMap&#xff09;。使用 auger 解碼以提取干凈的 YAML。使用 kubectl 申請恢復到您的實時集群。 本指南將指導您從 et…

LeetCode Hot100刷題——合并區間

56. 合并區間 以數組 intervals 表示若干個區間的集合&#xff0c;其中單個區間為 intervals[i] [starti, endi] 。請你合并所有重疊的區間&#xff0c;并返回 一個不重疊的區間數組&#xff0c;該數組需恰好覆蓋輸入中的所有區間 。 示例 1&#xff1a; 輸入&#xff1a;i…

《Metasploit框架核心模塊解析與安全防護實踐》?

目錄 ??一、框架模塊化設計與安全驗證價值?? ??1. 漏洞驗證模塊&#xff08;Exploit Modules&#xff09;?? ??2. 安全評估模塊&#xff08;Auxiliary Modules&#xff09;?? ??3. 安全響應模塊&#xff08;Post-Exploitation&#xff09;?? ??4. 載荷安全…

Cribl 中 Parser 扮演著重要的角色 + 例子

先看文檔: Parser | Cribl Docs Parser The Parser Function can be used to extract fields out of events or reserialize (rewrite) events with a subset of fields. Reserialization will preserve the format of the events. For example, if an event contains comma…

程序設計實踐--排序(1)

&#xff11;、插入排序&#xff08;一個數組&#xff09; #include<bits/stdc.h> using namespace std; const int N1e35; int a[N]; int n; int main(){cin>>n;for(int i1;i<n;i){cin>>a[i];}for(int i1;i<n;i){int va[i];int ji-1;while(j>1&am…

MAC電腦中右鍵后復制和拷貝的區別

在Mac電腦中&#xff0c;右鍵菜單中的“復制”和“拷貝”操作在功能上有所不同&#xff1a; 復制 功能&#xff1a;在選定的位置創建一個與原始文件相同的副本。快捷鍵&#xff1a;CommandD用于在當前位置快速復制文件&#xff0c;CommandC用于將內容復制到剪貼板。效果&…

新能源汽車焊接智能節氣閥

在新能源汽車產業迅猛發展的浪潮中&#xff0c;制造工藝的優劣直接關系到車輛的性能、安全與市場競爭力。焊接&#xff0c;作為新能源汽車生產流程里的關鍵一環&#xff0c;無論是構建車身框架&#xff0c;還是連接電池模組&#xff0c;其質量的好壞都起著決定性作用。而在焊接…

Linux:面試題

1. 什么是中斷和異常&#xff1f; 中斷&#xff1a;由外部設備&#xff08;如鍵盤、網卡&#xff09;觸發的異步事件&#xff0c;用于通知 CPU 有緊急事件需要處理。 異常&#xff1a;由 CPU 內部執行指令時產生的同步事件&#xff08;如除零錯誤、缺頁異常&#xff09;&#…

linux關閉某端口暫用的進程

查看是哪個端口暫用 sudo netstat -tulpn | grep :80根據圖片 顯示 80端口暫用的 進程id是 3002 結束進程id為3002的進程 sudo kill -9 3002

【學習心得】Jupyter 如何在conda的base環境中其他虛擬環境內核

如果你在conda的base環境運行了jupyter lab打開了一個ipynb文本&#xff0c;此時選擇的內核是base虛擬環境的Python內核&#xff0c;如果我想切換成其他conda虛擬環境來運行這個文件該怎么辦&#xff1f;下面我們試著還原一下問題&#xff0c;并且解決問題。 【注】 這個問題出…

React Flow 邊的基礎知識與示例:從基本屬性到代碼實例詳解

本文為《React Agent&#xff1a;從零開始構建 AI 智能體》專欄系列文章。 專欄地址&#xff1a;https://blog.csdn.net/suiyingy/category_12933485.html。項目地址&#xff1a;https://gitee.com/fgai/react-agent&#xff08;含完整代碼示?例與實戰源&#xff09;。完整介紹…

ZooKeeper 原理解析及優劣比較

大家好&#xff0c;這里是架構資源棧&#xff01;點擊上方關注&#xff0c;添加“星標”&#xff0c;一起學習大廠前沿架構&#xff01; 引言 在分布式系統中&#xff0c;服務注冊、配置管理、分布式鎖、選舉等場景都需要一個高可用、一致性強的協調服務。Apache ZooKeeper 憑…

模糊照片變清晰:照片高清修復 ComfyUI 使用教學

模糊照片變清晰 滿心歡喜地翻出舊相冊&#xff0c;想重溫那些美好的回憶&#xff0c;結果照片卻模糊不清&#xff0c;根本看不清當年的模樣&#xff1b;又或者精心拍攝了一張超有氛圍感的照片&#xff0c;結果因為手抖或者光線問題&#xff0c;變得模糊&#xff0c;無法發朋友圈…

IEEEtran中文獻中的作者大于3個時,用et al.省略

latex&#xff1a; 在使用bib文件的時候&#xff0c;當參考文獻超過三個作者時&#xff0c;第三個作者后加逗號并接上et al.。我使用的是IEEEtran.bst。 \begingroup \small \bibliographystyle{IEEEtran} \bibliography{newbmyref1} \endgroup1.需要將IEEEtran.bst添加到這個…

Android Studio Kotlin 中的方法添加灰色參數提示

在使用 Android Studio 時&#xff0c; 我發現使用 Java 編寫方法后在調用方法時&#xff0c; 會自動顯示灰色的參數。 但在 Kotlin 中沒有顯示&#xff0c; 于是找了各種方法最后找到了設置&#xff0c; 并且以本文章記錄下來。 博主博客 https://blog.uso6.comhttps://blog.…

python寵物用品商城系統

目錄 技術棧介紹具體實現截圖系統設計研究方法&#xff1a;設計步驟設計流程核心代碼部分展示研究方法詳細視頻演示試驗方案論文大綱源碼獲取/詳細視頻演示 技術棧介紹 Django-SpringBoot-php-Node.js-flask 本課題的研究方法和研究步驟基本合理&#xff0c;難度適中&#xf…

《具身智能機器人:自修復材料與智能結構設計的前沿探索》

在具身智能機器人的研發進程中&#xff0c;自修復材料與智能結構設計無疑是極具挑戰性與創新性的關鍵領域&#xff0c;吸引著無數科研人員投身其中&#xff0c;探尋未知。 傳統機器人在復雜多變的環境中執行任務時&#xff0c;一旦材料出現損傷&#xff0c;如外殼刮擦、內部線…

矩陣的秩(Rank)

矩陣的秩&#xff08;Rank&#xff09;是線性代數中的核心概念&#xff0c;表示矩陣中線性無關的行&#xff08;或列&#xff09;的最大數量&#xff0c;反映了矩陣所包含的“獨立信息”的多少。以下是其核心要點&#xff1a; 1. 秩的定義 行秩&#xff1a;矩陣中線性無關的行…