首页 > 其他分享 >外卖项目

外卖项目

时间:2022-08-22 16:01:51浏览次数:108  
标签:return 登录 项目 员工 后台 外卖 employee 页面

外卖项目

项目介绍:

本项目,瑞吉外卖是专门为餐饮企业,餐厅,饭店定制的一款软件产品,包括系统管理,后台和移动端应用两部分,其中系统管理后台主要提供给餐饮企业内部员工使用,可以对餐厅的菜品,套餐订单等进行管理,维护。移动端应用主要提供给消费者使用,可以在线浏览菜品,添加购物车,下单等等。
本项目分为三期进行开发。
第一期主要实现基本需求,其中移动端应用通过h5实现。用,用户可以通过手机端浏览器访问。
第二期主要针对移动端应用进行改进,使用微信小程序实现用户使用起来更加方便。
第三期主要针对系统进行优化升级,提高系统的访问性能。

技术选型

用户层:
H5,vue.js,ElementUI,微信小程序
网关层:
Nginx
应用层:
springboot,springmvc,SpringSession,Spring,Swagger,lombok
数据层:
Mysql,Mybatis,Mybatis Plus,Redis
工具:
git,maven,junit

功能架构:

移动端前台(H5,微信小程序)

手机号登录,微信登录,地址管理,历史订单,产品规格,购物车,下单,菜品浏览

系统管理后台:

分类管理,菜品管理,套餐管理,菜品口味管理,员工登录,员工退出,员工管理,订单管理

后台系统管理员:登录后台管理系统,拥有对后台系统中的所有操作的权限。

后台系统普通员工:登录后台管理系统,对菜品、套餐、订单等进行管理。

开发环境的搭建:

1.首先对数据库进行搭建(省略)
2.使用maven进行项目搭建:修改项目的编码,maven仓库的配置,jdk配置等等

  • pom文件:继承spring-boot-starter-parent 版本 2.4.5 配置项目依赖的maven坐标

  • application.yml文件 配置数据库信息 配置Mybatispuls (自动映射实体或属性,去掉下划线驼峰命名,设置主键增长规则)

  • 创建启动类:加上@SpringBootApplication注解 再加上@SLF4j注解 方便调试(lombok提供)

后台开发

  1. 配置静态资源,静态资源放在resources下 由于没有放在Status下所以无法扫到静态资源,所以创建WebMvcConfig配置类放在config目录下并设置静态资源映射(继承WebMvcConfigurationSupport 重写 addResourceHandlers方法 )

后台登录功能开发:

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

 @PostMapping("/login")
    public R<Employee> login(HttpServletRequest request, @RequestBody Employee employee) {
//        1.将页面提交的密码password进行md5加密
        String password = employee.getPassword();
        DigestUtils.md5DigestAsHex(password.getBytes());
        
//        2.根据页面提交的用户名 username查询数据库
        LambdaQueryWrapper<Employee> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(Employee::getUsername, employee.getUsername());
        Employee emp = employeeService.getOne(queryWrapper);

//        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);
    }

完善登录功能

解决用户不登录也能访问管理页,使用过滤器或拦截器,如果用户完成登录那么继续访问,如果没有则跳转到登录页面。
实现步骤
1.创建自定义过滤器LoginCheckFilter
2.在启动类上加入注解@ServletComponentScan
3.完善过滤器的处理逻辑

过滤器具体的处理逻辑:

(1)获取本次请求的URI

(2)判断本次请求是否需要处理

(3)如果不需要处理直接放行

(4)判断登录状态,如果已登录,直接放行

(5)如果未登录怎返回未登录的结果


后台退出功能开发

用户点击页面中退出按钮,发送post请求,请求地址为/employee/logout,后台只需在controller中创建对应的处理方法即可。
处理逻辑:
1.清理Session中的用户id
2.返回处理结果。

 @PostMapping("/logout")
    public R<String> logout(HttpServletRequest request) {
        //清理Session中保存的当前员工的id
        request.getSession().removeAttribute("employee");
        return R.success("退出成功!");
    }

员工管理业务开发

新增员工

执行过程:

  • 点击按钮添加员工输入信息点击保存,发送post请求,请求地址为/employee,参数格式为Json
  • 页面发送ajax请求,将输入的数据已Json的形式提交到服务端
  • 服务端Controller接收页面提交的数据并调用Service将数据进行保存
  • Service调用Mapper操作数据库,保存数据
    代码:
 @PostMapping
    public R<String> save(HttpServletRequest request,@RequestBody Employee employee) {
        log.info("新增员工,员工信息:{}",employee.toString());

        // 设置初始密码123456,并进行md5加密
        employee.setPassword(DigestUtils.md5DigestAsHex("123456".getBytes()));

        employee.setCreateTime(LocalDateTime.now());
        employee.setUpdateTime(LocalDateTime.now());

        //获取当前登录用户的id
        Long empId = (Long) request.getSession().getAttribute("employee");
        employee.setCreateUser(empId);
        employee.setUpdateUser(empId);

        employeeService.save(employee);
        return R.success("新增员工成功");
    }

标签:return,登录,项目,员工,后台,外卖,employee,页面
From: https://www.cnblogs.com/zhangyouren/p/16609608.html

相关文章

  • Prettier 在 Vite 项目下格式化没用也报错了
    Prettier配置文件有很多种格式,有.json、.js、.yml等。因为Vite默认项目用的模块机制是ES6,我的配置文件又正好是.js,且用的模块机制是CommonJS。所以就是如上图那样的......
  • 关于使用Git不能拉取GitLab https项目地址的问题
    现在使用Git命令直接clonehttps://xxx项目时候会报错“没有权限拉取代码”,其实我们需要在“UserSettings ---》AccessTokens“界面新增一个 accesstoken就好了,......
  • Mac设置外网访问本地项目
    》官网地址:https://ngrok.com/download步骤(官网基本已经说明了步骤,但还不完善,以下为亲测步骤):下载并注册账号打开终端,进入ngrok.zip所在文件夹(方法:输入cd,将指定文件夹拉......
  • vue3项目-小兔鲜儿笔记-01-项目初始化
    1.pinia基础store/modules/user.tsimport{defineStore}from'pinia'//用户模块constuseUserStore=defineStore('user',{state:()=>{return{......
  • docker-compose-运行微服务项目
    1.数据库迁移将cloud-demo涉及的相关sql导入到Linux上的mysql容器中2.阅读docker-compose.yml文件version:"3.2"services:nacos:image:nacos/nacos-server......
  • Teambition的功能、价格、优缺点,及类似的项目管理软件介绍
    Teambition是一款团队项目协作工具,以项目和任务的可视化管理来支撑企业团队协作,含任务、文档、文件、统计、甘特图等丰富应用,适合产品、研发、设计、市场、运营、销售、HR......
  • SpringBoot项目在不同环境下的配置以及打包方式
    一、概述配置三个配置文件,只需要打包的时候,根据不同环境打包不同的配置文件application.yml是启动服务时,Spring会自动加载的配置文件application-de......
  • Vite 项目添加 Sass 并配置全局样式
    (1)在Vite项目里,只需要安装sass:npmi-Dsass(2)Sass的全局变量,需要在vite.config.ts配置一项:css:{preprocessorOptions:{scss:{additionalData:"@......
  • Spring Boot项目的单元测试
    引入依赖要进行单元测试,首先需要在项目中引入spring-boot-starter-test组件,配置在项目的pom.xml文件,如下:<dependency><groupId>org.springframework.boot</grou......
  • IDEA打包普通java项目并用java命令运行
    IDEA下打包为jar包,普通java项目(非web项目)效果是将第三方jar包放到一个文件夹中(如lib),这样看起来清晰一些。如下图这种:  1.项目结构。   1.关键:modules  ......