Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >仿美团在线点餐系统(Springboot+Maven+mybatis+Vue+mysql+Redis)

仿美团在线点餐系统(Springboot+Maven+mybatis+Vue+mysql+Redis)

原创
作者头像
北游
发布于 2022-02-11 12:34:35
发布于 2022-02-11 12:34:35
9150
举报
文章被收录于专栏:一头扎进Java一头扎进Java

项目描述:

这是一个基于SpringBoot+Vue框架开发的在线点餐系统。首先,这是一个前后端分离的项目。具有一个在线点餐系统该有的所有功能。

项目功能:

此项目分为两个角色:普通用户和管理员。普通用户有登录注册、浏览商品信息、添加购物车、结算订单、查看个人信息、查看个人订单详情等等功能。管理员有管理所有商品信息、管理所有订单信息、管理所有用户信息、查看收益数据图表等等功能。

应用技术:SpringBoot + VueCli + MySQL + MyBatis + Redis + ElementUI

运行环境:IntelliJ IDEA2019.3.5 + MySQL5.7+ Redis5.0.5 + JDK1.8 + Maven3.6.3+ Node14.16.1

管理员controller:

代码语言:txt
AI代码解释
复制
/**
 * 管理员controller
 */
@Controller
@RequestMapping("/config")
public class UserController {
    @Autowired
    UserRoleService userRoleService;
    @Autowired
    UserService userService;
    @Autowired
    RoleService roleService;
 
 
    @RequestMapping("/enableStatus")
    @ResponseBody
    public String enableStatus(@RequestParam(value = "name") String name){
        return userService.enableStatus(name);
    }
 
    @RequestMapping("/stopStatus")
    @ResponseBody
    public String stopStatus(@RequestParam(value = "name") String name){
        return userService.stopStatus(name);
    }
 
    @RequestMapping("/adminAdd")
    public String adminadd(Model model){
        List<Role> list = roleService.list();
        model.addAttribute("rolelist",list);
        return "syspage/admin-add";
    }
 
    @RequestMapping("/listUser")
    public String list(Model model, Page page){
 
        PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询
        List<User> us= userService.list();
        int total = (int) new PageInfo<>(us).getTotal();//总条数
        page.setTotal(total);
 
        model.addAttribute("us", us);//所有用户
        model.addAttribute("total",total);
 
        Map<User,List<Role>> user_roles = new HashMap<>();
        //每个用户对应的权限
        for (User user : us) {
            List<Role> roles=roleService.listRoles(user);
            user_roles.put(user, roles);
        }
        model.addAttribute("user_roles", user_roles);
 
        return "syspage/admin-list";
    }
 
    /**
     * 修改管理员角色
     * @param model
     * @param id
     * @return
     */
    @RequestMapping("/editUser")
    public String edit(Model model,Long id){
        List<Role> rs = roleService.list();
        model.addAttribute("rs", rs);      
        User user =userService.get(id);
        model.addAttribute("user", user);
        //当前拥有的角色
        List<Role> roles =roleService.listRoles(user);
        model.addAttribute("currentRoles", roles);
         
        return "syspage/admin-edit";
    }
 
    @RequestMapping("deleteUser")
    public String delete(Model model,long id){
        userService.delete(id);
        return "redirect:listUser";
    }
 
    @RequestMapping("updateUser")
    public String update(User user, long[] roleIds){
        userRoleService.setRoles(user,roleIds);
         
        String password=user.getPassword();
        //如果在修改的时候没有设置密码,就表示不改动密码
        if(user.getPassword().length()!=0) {
            String salt = new SecureRandomNumberGenerator().nextBytes().toString();
            int times = 2;
            String algorithmName = "md5";
            String encodedPassword = new SimpleHash(algorithmName,password,salt,times).toString();
            user.setSalt(salt);
            user.setPassword(encodedPassword);
        }
        else
            user.setPassword(null);
         
        userService.update(user);
 
        return "redirect:listUser";
 
    }
 
    @RequestMapping("addUser")
    public String add(User user,long[] roleIds){
 
        String salt = new SecureRandomNumberGenerator().nextBytes().toString();//生成随机数
        int times = 2;
        String algorithmName = "md5";
          
        String encodedPassword = new SimpleHash(algorithmName,user.getPassword(),salt,times).toString();
         
        User u = new User();
        u.setName(user.getName());
        u.setPassword(encodedPassword);
        u.setSalt(salt);
        u.setStatus(1);
        u.setAddress(user.getAddress());
        u.setPhone(user.getPhone());
        userService.add(u);
 
        userRoleService.setRoles(u,roleIds);
         
        return "redirect:listUser";
    }
 
}

管理员角色controler:

代码语言:txt
AI代码解释
复制
/**
 * 管理员角色controler
 */
@Controller
@RequestMapping("/config")
public class RoleController {
    @Autowired
    RoleService roleService;
    @Autowired
    RolePermissionService rolePermissionService;
    @Autowired
    PermissionService permissionService;
 
    @RequestMapping("/addRoleUI")
    public String addRole(){
 
        return "syspage/admin-role-add";
    }
 
    @RequestMapping("/listRole")
    public String list(Model model, Page page){
        PageHelper.offsetPage(page.getStart(),page.getCount());//分页查询
        List<Role> rs= roleService.list();
        int total = (int) new PageInfo<>(rs).getTotal();//总条数
        page.setTotal(total);
 
        model.addAttribute("rs", rs);
 
        model.addAttribute("roleSize",total);
 
        Map<Role,List<Permission>> role_permissions = new HashMap<>();
         
        for (Role role : rs) {
            List<Permission> ps = permissionService.list(role);
            role_permissions.put(role, ps);
        }
        model.addAttribute("role_permissions", role_permissions);
 
        return "syspage/admin-role";
    }
 
    @RequestMapping("/editRole")
    public String list(Model model,long id){
        Role role =roleService.get(id);
        model.addAttribute("role", role);
        //所有权限
        List<Permission> ps = permissionService.list();
        model.addAttribute("ps", ps);
        //当前管理员拥有的权限
        List<Permission> currentPermissions = permissionService.list(role);
        model.addAttribute("currentPermissions", currentPermissions);
 
        return "syspage/admin-role-edit";
    }
 
    @RequestMapping("/updateRole")
    public String update(Role role,long[] permissionIds){
        rolePermissionService.setPermissions(role, permissionIds);
        roleService.update(role);
        return "redirect:listRole";
    }
 
    @RequestMapping("/addRole")
    public String list(Model model,Role role){
        roleService.add(role);
        return "redirect:listRole";
    }
 
    @RequestMapping("/deleteRole")
    public String delete(Model model,long id){
        roleService.delete(id);
        return "redirect:listRole";
    }   
 
}

订单模块controller:

代码语言:txt
AI代码解释
复制
/**
 * 订单模块controller
 */
@Controller
@RequestMapping("/order")
public class OrderController {
 
    @Autowired
    OrderService orderService;
    @Autowired
    OrderItemService orderItemService;
 
    /**
     * 所有订单
     * @param model
     * @param page
     * @return
     */
    @RequestMapping("/list")
    public String list(Model model, Page page){
        PageHelper.offsetPage(page.getStart(),page.getCount());
 
        List<Order> os= orderService.list();
 
        int total = (int) new PageInfo<>(os).getTotal();
        page.setTotal(total);
        //为订单添加订单项数据
        orderItemService.fill(os);
 
        model.addAttribute("os", os);
        model.addAttribute("page", page);
        model.addAttribute("totals", total);
 
        return "ordermodule/order-list";
    }
 
    /**
     * 订单发货
     * @param o
     * @return
     */
    @RequestMapping("/orderDelivery")
    public String delivery(Order o){
        o.setStatus(2);
        orderService.update(o);
        return "redirect:list";
    }
 
    /**
     * 查看当前订单的订单项
     * @param oid
     * @param model
     * @return
     */
    @RequestMapping("/seeOrderItem")
    public String seeOrderItem(int oid,Model model){
        Order o = orderService.get(oid);
        orderItemService.fill(o);
        model.addAttribute("orderItems",o.getOrderItems());
        model.addAttribute("total",o.getOrderItems().size());
        model.addAttribute("totalPrice",o.getTotal());
        return "ordermodule/orderItem-list";
    }
 
}

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
Spring Gateway、Sa-Token、Nacos 认证/鉴权方案,yyds!
之前进行鉴权、授权都要写一大堆代码。如果使用像Spring Security这样的框架,又要花好多时间学习,拿过来一用,好多配置项也不知道是干嘛用的,又不想了解。要是不用Spring Security,token的生成、校验、刷新,权限的验证分配,又全要自己写,想想都头大。
码猿技术专栏
2024/01/23
2.1K1
Spring Gateway、Sa-Token、Nacos 认证/鉴权方案,yyds!
JAVAEE免费工程师教程之springboot综合案例
需求:根据id查询用户详情,要查询【用户】对应的【角色】信息,以及角色所包含的【资源权限】的信息
张哥编程
2024/12/13
1490
JAVAEE免费工程师教程之springboot综合案例
Spring Security 4 使用@PreAuthorize,@PostAuthorize, @Secured, EL实现方法安全(带源码)
【相关已翻译的本系列其他文章,点击分类里面的spring security 4】
明明如月学长
2021/08/27
2.9K0
SSM框架(spring+springmvc+mybatis)+Mysql实现的网上订餐管理系统(功能包含前台:商品浏览、加入购物车、提交订单、订单详情、校园资
本系统解决了一站式商品配送,网上订餐的难题,用户可以在前台浏览餐品、下单,后台可以进行订单管理配送,同时还有角色等的管理,前台还可以查看一些校园资讯内容,功能完备。
用户6334815
2022/07/24
1.2K1
SSM框架(spring+springmvc+mybatis)+Mysql实现的网上订餐管理系统(功能包含前台:商品浏览、加入购物车、提交订单、订单详情、校园资
好好编程-物流项目10【用户管理-查询和添加】
因为logistics-manager-service的代码修改了所以需要install下,别忘了,如果提示报错就在来一次,如果还报错请检查。
用户4919348
2019/04/02
6580
好好编程-物流项目10【用户管理-查询和添加】
好好编程-物流项目11【用户管理-修改和删除】
  本来用户是不用真的删除的,实际中我们会给用户表添加一个是否删除的字段,删除数据只需要修改该字段即可,也就是我们常说的伪删除,在此处我们来介绍下真实删除(有关联关系的情况下)
用户4919348
2019/04/02
5150
好好编程-物流项目11【用户管理-修改和删除】
杨校老师之基于SSM开发的校园点餐配送系统
自助获取:https://download.csdn.net/download/kese7952/84727535 点我去下载
杨校
2022/05/07
3330
杨校老师之基于SSM开发的校园点餐配送系统
基于SSM框架的JavaWeb通用权限管理系统
这是一个通用权限管理系统项目,基于SSM(Spring + Spring-MVC +Mybatis)框架开发,其SQL语句持久在Hibernate 中,对原生SQL的支持较好。制作该系统的初衷是用来帮助JavaWeb开发者或初学者学习、借鉴的需要。读者可以在这个 系统基础上引入其它技术或完全依赖本系统技术进行功能拓展,来开发实际应用需求的项目,免去了应用系统中对于“ 权限设计”这一部分的麻烦。
C you again 的博客
2020/09/15
9070
SSM综合案例之角色管理实战
在添加用户时,我们还要将用户的密码,进行加密操作,在SpringSecurity中已经帮我们提供了实现,直接使用即可!
张哥编程
2024/12/13
2260
SpringBoot蓝天幼儿园管理系统
项目介绍 蓝天幼儿园管理系统,共分为三种角色: 管理员 家长 教师 管理员角色具有功能: 系统管理:用户管理、页面管理、角色管理 校园管理:老师管理、工资管理、物资管理、菜谱管理、班级管理 班级管理:学生管理、公告管理、课程管理 考勤管理:老师考勤、学生考勤、老师考勤统计、学生考勤统计、签到签退 技术栈 Springboot html+thymeleaf 环境需要 运行环境:最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。 IDE环境:IDEA,Eclipse,Myecl
Java团长
2022/05/23
1.1K0
SpringBoot蓝天幼儿园管理系统
MyBatis-Plus长文图解笔记
DROP TABLE IF EXISTS user; CREATE TABLE user ( id BIGINT(20) NOT NULL COMMENT '主键ID', name VARCHAR(30) NULL DEFAULT NULL COMMENT '姓名', age INT(11) NULL DEFAULT NULL COMMENT '年龄', email VARCHAR(50) NULL DEFAULT NULL COMMENT '邮箱', PRIMARY KEY (id) ); INSERT INTO user (id, name, age, email) VALUES (1, 'Jone', 18, 'test1@baomidou.com'), (2, 'Jack', 20, 'test2@baomidou.com'), (3, 'Tom', 28, 'test3@baomidou.com'), (4, 'Sandy', 21, 'test4@baomidou.com'), (5, 'Billie', 24, 'test5@baomidou.com');
崔笑颜
2020/12/07
2880
杨校老师课堂之Java EE框架实训宠归于好项目开发(二)
1. 编码 ---- 1.1 创建程序包名 cn.javabs.pet.entity cn.javabs.pet.mapper cn.javabs.pet.service.impl cn.javabs.pet.service cn.javabs.pet.controller cn.javabs.pet.util cn.javabs.pet.test ---- 客户模块: 1.2 创建实体类 package cn.javabs.entity; public class Users { // 客户编号
杨校
2020/12/16
8250
springcloud微服务架构实战:商家管理微服务设计
商家管理微服务是一个独立的RESTAPI应用,这个应用通过接口服务对外提供商家信息管理、商家权限管理和菜单资源管理等方面的功能。
愿天堂没有BUG
2022/10/28
4390
springcloud微服务架构实战:商家管理微服务设计
MyBatis+JSP+Servlet...MySql实现分页/增删改查:代码详细有注释~
学习MyBtatis 的第二个星期, 大概已经明白差不多了. 已经可以在 控制台完成 增删改查 了,哈哈哈哈(大佬路过别笑😀)… 感觉还不错呢. 现在也开始学习在 CSDN上写笔记博客, 哈哈以前都是看其它大佬的. 自己平时也记笔记但都是在 OneNote上:
Java_慈祥
2024/08/06
4670
MyBatis+JSP+Servlet...MySql实现分页/增删改查:代码详细有注释~
Shiro框架学习,Shiro综合实例
资源:表示菜单元素、页面按钮元素等;菜单元素用来显示界面菜单的,页面按钮是每个页面可进行的操作,如新增、修改、删除按钮;使用type来区分元素类型(如menu表示菜单,button代表按钮),priority是元素的排序,如菜单显示顺序;permission表示权限;如用户菜单使用user:*;也就是把菜单授权给用户后,用户就拥有了user:*权限;如用户新增按钮使用user:create,也就是把用户新增按钮授权给用户后,用户就拥有了user:create权限了;available表示资源是否可用,如菜单显示/不显示。
用户1289394
2021/04/20
1K0
Shiro框架学习,Shiro综合实例
BS1037-基于java+JSP+Mybatis实现酒店后台管理系统,酒店订单管理系统
本基于java+JSP+Mybatis实现的酒店后台管理系统,酒店订单管理系统,系统采用多层B/S软件架构,采用java 编程语言开发技术实现酒店客房管理,用户管理,订单管理,房型关系,房价管理,入住管理,实现线上客户的实时办理入住,实现入住情况的统计分析,计算订单收益等等。
计算机程序优异哥
2022/12/05
2.1K0
SpringBoot 集成 Shiro 极简教程(实战版)
Apache Shiro 是一个功能强大且易于使用的 Java 安全框架,提供了认证,授权,加密,和会话管理。
Java小咖秀
2021/04/20
3.1K0
SpringBoot 集成 Shiro 极简教程(实战版)
Spring Boot Security 基本使用一
众所周知,如果要对Web资源进行保护,最好的办法莫过于Filter,要想对方法调用进行保护,最好的办法莫过于AOP。Spring Security核心是一系列Filter,对资源进行过滤,这篇文档写的蛮不错的: https://my.oschina.net/u/865921/blog/159849. Spring Security包括两块内容,Authentication(认证)和 Authorization(授权,也叫访问控制)。简单来说,认证即你是谁,授权即你有用什么权限。”认证”是认证主体的过程,通常是指可以在应用程序中执行操作的用户、设备或其它系统。”授权”是指是否允许已认证的主体执行某一项操作。
芥末鱿鱼
2022/05/05
5460
Spring Boot Security 基本使用一
SpringBoot Security 访问API始终报401
用POSTMAN或者在页面前端登录访问后端API时,始终返回401.返回401有很多原因造成的,主要分为两个方面来看:
芥末鱿鱼
2022/05/05
3.9K0
springboot整合mybatis、mysql、freemaker基础实现
六月的雨在Tencent
2024/03/28
1700
springboot整合mybatis、mysql、freemaker基础实现
推荐阅读
相关推荐
Spring Gateway、Sa-Token、Nacos 认证/鉴权方案,yyds!
更多 >
LV.0
这个人很懒,什么都没有留下~
领券
社区新版编辑器体验调研
诚挚邀请您参与本次调研,分享您的真实使用感受与建议。您的反馈至关重要,感谢您的支持与参与!
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
首页
学习
活动
专区
圈层
工具
MCP广场
首页
学习
活动
专区
圈层
工具
MCP广场