ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

外卖项目

2022-08-22 16:01:33  阅读:177  来源: 互联网

标签: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,页面
来源: https://www.cnblogs.com/zhangyouren/p/16609608.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有