【瑞吉外卖 | day01】项目介绍+后台登录退出功能

在这里插入图片描述

文章目录

  • 瑞吉外卖 — day01
    • 1. 所需知识
    • 2. 软件开发整体介绍
      • 2.1 软件开发流程
      • 2.2 角色分工
      • 2.3 软件环境
    • 3. 瑞吉外卖项目介绍
      • 3.1 项目介绍
      • 3.2 产品原型展示
      • 3.3 技术选型
      • 3.4 功能架构
      • 3.5 角色
    • 4. 开发环境搭建
      • 4.1 数据库环境搭建
      • 4.2 Maven项目构建
    • 5. 后台系统登录功能
      • 5.1 创建需要的结构(包、类)
      • 5.2 通用返回结果类
      • 5.3 登录功能处理
      • 5.4 退出功能处理

瑞吉外卖 — day01

1. 所需知识

  • Java基础
  • Java Web
  • MySQL
  • Spring Boot
  • SSM(Spring、Spring MVC、MyBatis)
  • Maven

2. 软件开发整体介绍

2.1 软件开发流程

  • 需求分析

    • 产品原型:网页形式展现项目大体结构(页面设计及效果)
    • 需求规格说明书:word文档,展现项目的功能
  • 设计

    • 产品文档
    • UI界面设计:项目界面效果
    • 概要设计
    • 详细设计
    • 数据库设计:需要几个数据库,数据库中需要的表,表中的字段
  • 编码

    • 项目代码
    • 单元测试
  • 测试

    • 测试用例
    • 测试报告
  • 上线运维

    • 软件环境安装
    • 配置

2.2 角色分工

2.3 软件环境

  • 开发环境(development):开发人员在开发阶段使用的环境,一般外部用户无法访问
  • 测试环境(testing):测试人员使用的环境,用于测试项目, -般外部用户无法访问
  • 生产环境(production):线上环境,正式提供对外服务的环境

3. 瑞吉外卖项目介绍

3.1 项目介绍

  • 本项目(瑞吉外卖)是专门为餐饮企业(餐厅、饭店)定制的一款软件产 品,包括系统管理后台移动端应用两部分。其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品、套餐、订单等进行管理维护。移动端应用主要提供给消费者使用,可以在线浏览菜品、添加购物车、下单等。

  • 本项目共分为3期进行开发:

    第一期主要实现基本需求,其中移动端应用通过H5实现,用户可以通过手机浏览器访问。
    第二期主要针对移动端应用进行改进,使用微信小程序实现,用户使用起来更加方便。
    第三期主要针对系统进行优化升级,提高系统的访问性能。

3.2 产品原型展示

  • 产品原型,就是一款产品成型之前的一个简单的框架,就是将页面的排版布局展现出来,使产品的初步构思有一个可视化的展示。通过原型展示,可以更加直观的了解项目的需求和提供的功能。
  • 产品原型只是展现项目功能,并不是最终的效果

3.3 技术选型

用户层H5VUE.jsElementUI微信小程序
网关层Nginx
应用层Spring BootSpring MVCSpring Session
SpringSwaggerlombok
数据层MysqlMybatisMybatis PlusRedis
  • Spring Session:

    Spring Session 是 Spring 框架的一个项目,旨在提供会话管理的解决方案。它可以与各种后端存储(如内存、数据库、Redis 等)集成,以便将会话数据存储在可扩展的分布式环境中。Spring Session 不仅可以用于传统的 Web 应用程序,还可以用于微服务架构中的分布式系统。

  • Swagger:

    Swagger是一款RESTFUL接口的文档在线自动生成+功能测试功能软件。Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化RESTfu风格的web服务。目标是使客户端和文件系统作为服务器一同样的速度来更新文件的方法,参数和模型紧密集成到服务器。这个解释简单点来讲就是说,swagger是一款可以根据restful风格生成的接口开发文档,并且支持做测试的一款中间软件。

  • Redis:

    Redis是一种开源的内存数据结构存储系统,是一个完全开源免费的高性能(NOSQL)的key-value数据库。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合等。它可以用作数据库、缓存和消息中间件,并在性能、可扩展性和灵活性方面表现出色。

3.4 功能架构

移动端前台(H5、微信小程序)手机号登陆微信登陆地址管理历史订单
菜品规格购物车下单菜品浏览
系统后台管理分类管理菜品管理套餐管理菜品口味管理
员工登录员工退出员工管理订单管理

3.5 角色

  • 后台系统管理员:登录后台管理系统,拥有后台系统中的所有操作权限
  • 后台系统普通员工:登录后台管理系统,对菜品、套餐、订单等进行管理
  • C端用户:登录移动端应用,可以浏览菜品、添加购物车、设置地址、在线下单等

4. 开发环境搭建

4.1 数据库环境搭建

  • 创建数据库 reggie
  • 运行项目 sql 文件: db_reggie.sql

4.2 Maven项目构建

  • 创建项目
  • 添加pom.xml文件中的依赖
  • appliation.yaml 文件
  • 设置启动类
  • 在配置类中,设置静态资源映射

5. 后台系统登录功能

5.1 创建需要的结构(包、类)

  • 读出前端页面中与后端相关的信息

  • pojo(实体类)

  • mapper

    要继承 BaseMapper<Employee>

  • service

    service接口要继承:IService<Employee>

    serviceImpl要继承和实现:extends ServiceImpl<EmployeeMapper, Employee> implements EmployeeService

  • controller

    添加注解:

    @Slf4j
    @RestController
    @RequestMapping(“employee”)

5.2 通用返回结果类

  • 导入到 utils 包下

  • 通用返回结果类,服务端响应数据最终会封装成此对象

5.3 登录功能处理

在这里插入图片描述

处理逻辑如下:
1、将页面提交的密码password进行md5加密处理
2、根据页面提交的用户名username查询数据库
3、如果没有查询到则返回登录失败结果
4、密码比对,如果不一致则返回登录失败结果
5、查看员工状态,如果为已禁用状态,则返回员工已禁用结果
6、登录成功,将员工id存入Session并返回登录成功结果

/*** 后台员工登录* @param request* @param employee* @return*/@PostMapping("login")public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee){//1、将页面提交的密码password进行md5加密处理String password = employee.getPassword();password = DigestUtils.md5DigestAsHex(password.getBytes());//2、根据页面提交的用户名username查询数据库LambdaQueryWrapper<Employee> lambdaQueryWrapper = new LambdaQueryWrapper<>();lambdaQueryWrapper.eq(Employee::getUsername,employee.getUsername());Employee emp = employeeService.getOne(lambdaQueryWrapper);//3、如果没有查询到则返回登录失败结果if(emp == null){return R.error("用户不存在");}//4、密码比对,如果不一致则返回登录失败结果if(!emp.getPassword().equals(password)){return R.error("密码不一致");}//5、查看员工状态,如果为已禁用状态,则返回员工已禁用结果if(emp.getStatus() == 0){return R.error("账号已禁用");}//6、登录成功,将员工id存入Session并返回登录成功结果request.getSession().setAttribute("employee",emp.getId());return R.success(emp);}

5.4 退出功能处理

/*** 后台员工退出* @param request* @return*/@PostMapping("logout")public R<String> logout(HttpServletRequest request){// 请理 session中保存的当前用户idrequest.getSession().removeAttribute("employee");return R.success("退出成功");}

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

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

相关文章

会声会影2024破解版下载 让视频编辑更简单、更有趣

在数字时代&#xff0c;视频已经成为我们生活中不可或缺的一部分。无论是记录生活、分享快乐&#xff0c;还是宣传产品、传递信息&#xff0c;视频都扮演着重要的角色。然而&#xff0c;对于很多人来说&#xff0c;视频编辑却是一个让人望而却步的领域。复杂的软件操作、繁琐的…

容器安全:等保合规性的基石

随着云计算和微服务架构的蓬勃发展&#xff0c;容器技术已经成为现代IT基础设施不可或缺的一部分。在网络安全等级保护制度&#xff08;等保&#xff09;的框架下&#xff0c;容器安全的要求日益凸显&#xff0c;成为等保合规性的基石。本文将深入探讨容器安全在等保中的重要性…

【kneighborsclassifier 函数及其参数介绍】

文章目录 一、kneighborsclassifier是什么&#xff1f;二、使用步骤三、kneighborsclassifier函数及其参数详解1. 参数说明 一、kneighborsclassifier是什么&#xff1f; kneighborsclassifier 是 scikit-learn 库中 K-近邻算法的实现&#xff0c;用于分类任务。KNN 算法的基本…

爽!强化学习+注意力机制,吞吐量提升了10多倍!

通过引入注意力机制&#xff0c;强化学习模型不仅能够更加高效地处理复杂的环境和任务&#xff0c;还能在学习和决策过程中实现更高的精度和适应性。 因此这种结合迅速成为了各大领域的研究热点&#xff0c;而且已经在实际应用中有了显著的性能提升。比如分散式强化学习框架SA…

在嵌入式商用里面哪款RTOS(实时操作系统)比较多人用?

在开始前刚好我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 传统的RTOS和嵌入式Linu…

JWT原理与在身份验证中的应用

JWT原理与在身份验证中的应用 大家好&#xff0c;我是微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01;今天我们将深入探讨JWT&#xff08;JSON Web Token&#xff09;的原理及其在身份验证中的广泛应用。 JWT简介 JWT是一种…

Qt中使用MySQL数据库详解,好用的模块类封装

本文将详细介绍如何在Qt应用程序中集成MySQL数据库&#xff0c;并封装实现好用的mysql数据库操作类。包括环境准备、连接数据库、执行查询及异常处理等关键步骤&#xff0c;同时包含mysql驱动的编译。分享给有需要的小伙伴&#xff0c;喜欢的可以点击收藏。 目录 环境准备 项…

javaSE期末练习题

文章目录 前言一、程序控制1.顺序结构问题描述解题思路题解 2.选择结构2.1 题1问题描述解题思路题解 2.1 题2问题描述解题思路题解 3.循环结构3.1 阶乘的求取问题描述解题思路题解 3.2 水仙花数问题描述解题思路题解 二、数组三、类与对象1.类与对象1.1圆类问题描述解题思路题解…

从云原生视角看 AI 原生应用架构的实践

本文核心观点&#xff1a; 基于大模型的 AI 原生应用将越来越多&#xff0c;容器和微服务为代表的云原生技术将加速渗透传统业务。API 是 AI 原生应用的一等公民&#xff0c;并引入了更多流量&#xff0c;催生企业新的生命力和想象空间。AI 原生应用对网关的需求超越了传统的路…

使用myCobot和OAK-D OpenCV DepthAI摄像头制作一个可以在眼前始终享受视频的手机支架!

引言 由于YouTube和Netflix的出现&#xff0c;我们开始躺着看手机。然而&#xff0c;长时间用手拿着手机会让人感到疲劳。这次我们制作了一个可以在你眼前保持适当距离并调整位置的自动移动手机支架&#xff0c;让你无需用手拿着手机。请务必试试&#xff01; 准备工作 这次我们…

电脑文件自动备份:构建坚不可摧的数据防护网

在数字化浪潮的推动下&#xff0c;电脑已成为我们日常生活和工作中不可或缺的一部分&#xff0c;它承载着海量的个人信息、工作文档、学习资料等重要数据。然而&#xff0c;随着数据量的不断膨胀&#xff0c;数据安全问题也日益严峻。硬盘故障、系统崩溃、病毒攻击、人为误操作…

Echarts-仪表盘

1.案例一 1.1代码 option = {"series": [{"type": "gauge", "startAngle": 180, "endAngle": 0, "min": 0, "max": 100, "radius": "100%","center": ["50%"…

【中项第三版】系统集成项目管理工程师 | 第 2 章 信息技术发展

前言 第2章对应的内容大概率仅考察选择题&#xff0c;通读教程&#xff0c;速战速决。选择题分值预计在2-5分&#xff0c;属于必考的知识点。 2.1 信息技术及其发展 信息技术是在信息科学的基本原理和方法下的关于一切信息的产生、信息的传输、信息的发送、信息的接收等应用技…

Python中函数参数的传递技巧

刚开始接触Python时&#xff0c;你可能会因为函数参数传递的问题而感到困惑。理解位置参数和关键字参数的区别&#xff0c;并学会如何限定参数传递方式&#xff0c;可以帮助你有效避免常见的错误。 在这篇文章中&#xff0c;我们将介绍一种特殊的语法——使用斜杠&#xff08;…

2Python的Pandas:读取数据

1.读取Excel文件 1.1.读取数据 import pandas as pd# Excel 文件的 URL 或本地路径 url "https://www.gairuo.com/file/data/dataset/team.xlsx"# 使用 Pandas 的 read_excel 函数读取数据 try:df pd.read_excel(url)print(df.head()) # 打印 DataFrame 的前几行…

k8s公网集群安装(1.23.0)

网上搜到的公网搭建k8s都不太一致, 要么说的太复杂, 要么镜像无法下载, 所以写了一个简洁版,小白也能一次搭建成功 使用的都是centos7,k8s版本为1.23.0 使用二台机器搭建的, 三台也是一样的思路1.所有节点分别设置对应主机名 hostnamectl set-hostname master hostnamectl set…

简述设计模式-代理模式

概述 代理模式&#xff1a;一个类代表另一个类的功能。代理模式通过引入一个代理对象来控制对员对象的访问。 举个例子&#xff0c;就像明星都有经纪公司&#xff0c;商业合作都是直接和经济公司沟通&#xff0c;不会直接和明星沟通。 律师和委托人就是代理关系&#xff0c;…

域名可用性查询的步骤

在互联网时代&#xff0c;拥有一个独特的域名是至关重要的。域名不仅代表了您的在线身份&#xff0c;也是您品牌、个人或企业在数字世界中的门面。域名的可用性查询是注册域名前的关键步骤&#xff0c;本文将详细介绍如何进行域名可用性查询&#xff0c;并提供一些有用的技巧和…

使用Python实现日历生成器

文章目录 准备工作实现步骤1. 导入calendar模块2. 获取用户输入3. 生成并打印日历完整代码示例 扩展功能 在这个技术博客中&#xff0c;我们将探索如何使用Python来创建一个简单的日历生成器。这个日历生成器将能够根据用户输入的年份和月份&#xff0c;生成并显示该月的日历。…

Promise,async/await的运用

一&#xff0c;了解Promise Promise是异步编程的一种解决方案&#xff0c;它是一个对象&#xff0c;可以获取异步操作的消息&#xff0c;它的出现避免了地狱回调。 &#xff08;1&#xff09;Promise的实例有三个状态&#xff1a; Pending&#xff08;进行中&#xff09; Re…