SSM项目 蟹堡王餐厅管理系统(五)后台管理功能的实现

一、功能简介

后台管理功能分为:用户管理、菜品管理、菜品上传、订单查询。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

二、用户管理功能实现

用户管理功能只有权限为老板的用户才可以使用,该功能需要实现用户信息的查询并分页显示、用户信息的修改、删除用户、新增用户。

(一)查询用户

首先需要新增用户管理界面
UserMananger.jsp:

<%--
  Created by IntelliJ IDEA.
  User: RH
  Date: 2021/8/8
  Time: 16:07
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>用户信息管理界面</title>
    <link rel="stylesheet" href="layui/css/layui.css"  media="all">


    <style type="text/css">
        .layui-table-cell{
     
            height:auto!important;
            white-space:normal;
        }

    </style>
</head>
<body>

    <script src="layui/layui.js" charset="utf-8"></script>
    <!-- 注意:如果你直接复制所有代码到本地,上述 JS 路径需要改成你本地的 -->
    <%--显示表格,表格id为data_table--%>
    <table class="layui-hide" id="data_table" lay-filter="UserFilter"></table>
    <%--编辑菜单--%>
    <script type="text/html" id="editBar">
        <a class="layui-btn layui-btn-xs" lay-event="edit">编辑</a>
        <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>
    </script>

    <script type="text/html" id="addBar">
        <div class="layui-btn-container">
            <button class="layui-btn layui-btn-sm" lay-event="add">创建新用户</button>
        </div>
    </script>

    <script type="text/javascript">
        layui.use(['table','layer','jquery','form'], function() {
     
            var table = layui.table;
            var layer = layui.layer;
            var $ = layui.jquery;
            var form = layui.form;
            table.render({
     
                elem: '#data_table'
                , url: 'selectAllUserByLimits'
                , toolbar: "#addBar"
                , parseData: function (res) {
      //res 即为原始返回的数据
                    return {
     
                        "code": res.code, //解析接口状态
                        "msg": res.message, //解析提示文本
                        "count": res.total, //解析数据长度
                        "data": res.list //解析数据列表
                    };
                }
                , cols: [[
                    {
     field: 'uid', title: 'uid' ,sort: true},
                    {
     field: 'userName', title: '用户名称'},
                    {
     field: 'sex', title: '性别'},
                    {
     field:'imgPath', title:"用户图片" ,templet: '<div><img src="{
     { d.imgPath }}" style="width:50px; height:50px;"></div>'},
                    {
     fixed: 'right', title: '操作', toolbar: '#editBar'}	//调用script定义得两个按钮
                ]]
                , page: true	//开启分页
                , limits: [5, 10, 15, 20, 25, 30]	//自定义每页显示多少条数据
            });

            table.on('tool(UserFilter)', function(obj){
     //obj代表点击的这一行所有内容,包含两个按钮和数据
                var data = obj.data; //选中的哪一行数据
                var uid = data.uid;
                console.log(obj)
                if(obj.event === 'del'){
     //点击删除按钮
                    layer.confirm('是否删除该用户', function(index){
     
                        $.post('deleteUserById',{
     uid:uid},function(res){
     
                            if(res.status){
     
                                layer.close(index);//关闭弹框
                                //刷新表格
                                table.reload('data_table',{
     });
                            }else{
     
                                layer.msg(res.message);
                            }
                        },"json");
                    });
                } else if(obj.event === 'edit'){
     //点击修改按钮

                    layer.open({
     
                        type:1,
                        title:"编辑用户信息",
                        content: $("#editPanel").html(),//利用jquery选择器获取元素里面的html内容
                        area:['400px','600px'],
                        btn: ['提交', '重置', '取消'],
                        yes: function(index, layero){
     
                            var formObj = form.val("editFilter");	//这是js对象,无法发送给后台
                            var jsonStr = JSON.stringify(formObj);	//将js对象转换成json格式字符串

                            $.post('updateUserById',{
     uid:uid,jsonStr:jsonStr},function(res){
     
                                if(res.status){
     
                                    layer.close(index);//关闭弹框
                                    //刷新表格
                                    table.reload('data_table',{
     });
                                }else{
     
                                    layer.msg(res.message);
                                }
                            },"json");

                        },btn2: function(index, layero){
     
                            form.val('editFilter',{
     //addFilter得值对应得是 form中带有class="layui-form"得元素上 lay-filter="addFilter"
                                userName:data.userName,
                                sex:data.sex
                            });
                            return false; //不关闭窗口
                        },btn3: function(index, layero){
     
                        },success: function(index, layero){
     
                            //打开修改按钮,显示的面板中应该有所有视频分类,并且默认选择当前视频的类别
                            //利用ajax请求数据,将数据动态写入到select标签中

                            form.val('editFilter',{
     //addFilter得值对应得是 form中带有class="layui-form"得元素上 lay-filter="addFilter"
                                userName:data.userName,
                                sex:data.sex
                            });
                            //当form表单中出现: 单选框、多选框、下拉菜单、文本域等组件时,是不会显示出来的
                            form.render();
                        }
                    });


                }

            });


            table.on('toolbar(UserFilter)', function(obj){
     //obj代表点击的这一行所有内容,包含两个按钮和数据
                layer.open({
     
                    type:1,			//打开的是页面层
                    title:"创建新用户",
                    content: $("#addPanel").html(),//利用jquery选择器获取元素里面的html内容
                    area:['400px','400px'],
                    btn: ['提交', '重置', '取消'],
                    yes: function(index, layero){
     //提交按钮事件
                        var formObj = form.val("addFilter");	//这是js对象,无法发送给后台
                        var jsonStr = JSON.stringify(formObj);	//将js对象转换成json格式字符串
                        console.log(jsonStr);
                        //按钮【按钮一】的回调
                        $.post('insertUser',{
     jsonStr:jsonStr},function(res){
     
                            if(res.status){
     
                                layer.close(index);//关闭弹框
                                //刷新表格
                                table.reload('data_table',{
     });
                            }else{
     
                                layer.msg(res.message);
                            }
                        },"json");


                    },btn2: function(index, layero){
     //重置按钮事件

                        form.val('addFilter',{
     //addFilter对应带有class="layui-form"得标签中得lay-filter="addFilter"
                            country:'',
                            date:'',
                            type:''
                        });

                        form.render();
                        return false; //不关闭窗口
                    },btn3: function(index, layero){
     //取消按钮事件
                    },success: function(index, layero){
     //打开弹出层加载完内容后立即执行success方法
                        form.render();
                    }
                });

            });

        });
    </script>



    <script type="text/html" id="editPanel">
        <form class="layui-form" lay-filter="editFilter">
            <div class="layui-form-item">
                <label class="layui-form-label">用户名</label>
                <div class="layui-input-inline">
                    <input type="text" name="userName" placeholder="请输入用户名" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">性别</label>
                <div class="layui-input-block">
                    <input type="radio" name="sex" value="男" title="男">
                    <input type="radio" name="sex" value="女" title="女">
                </div>
            </div>
        </form>
    </script>


    <script type="text/html" id="addPanel">
        <form class="layui-form" lay-filter="addFilter">
            <div class="layui-form-item">
                <label class="layui-form-label">用户名</label>
                <div class="layui-input-inline">
                    <input type="text" name="userName" placeholder="请输入用户名" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">密码</label>
                <div class="layui-input-inline">
                    <input type="password" name="userPsd" placeholder="输入密码" class="layui-input">
                </div>
            </div>
            <div class="layui-form-item">
                <label class="layui-form-label">性别</label>
                <div class="layui-input-block">
                    <input type="radio" name="sex" value="男" title="男">
                    <input type="radio" name="sex" value="女" title="女">
                </div>
            </div>
        </form>
    </script>
</body>
</html>

在数据表格加载时,会向UserController发送selectAllUserByLimits请求,我们需要在UserController中新增selectAllUserByLimits()方法,分页实现与之前相同,不再重复。
UserController:

@Controller
public class UserController {
   

    @Autowired
    private UserServiceI userServiceI;
    @Autowired
    private ResultMap resultMap;

    @RequestMapping("/login")
    @ResponseBody
    public ResultMap login(String userName, String userPsd, String captcha , HttpSession session) {
   
        try {
   
            int authority=userServiceI.login(userName,userPsd,captcha,session);
            resultMap.setStatus(true);
            resultMap.setAuthority(authority);
        } catch (Exception e) {
   
            resultMap.setStatus(false);
            resultMap.setMessage(e.getMessage());
        }
        return resultMap;
    }


    @RequestMapping("/register")
    @ResponseBody
    public ResultMap insertUserregister(String userName,String userPsd,String sex){
   
        try{
   
            userServiceI.insertUserregister(userName,userPsd,sex);
            resultMap.setStatus(true);
        }catch (Exception e){
   
            resultMap.setStatus(false);
            resultMap.setMessage(e.getMessage());
        }
        return resultMap;
    }

    @RequestMapping("/updateUserPerson")
    public void updateUserPerson(String uid, String userName, String userPsd, MultipartFile ImgFile, HttpSession session, HttpServletRequest request){
   
        session.invalidate();
        try{
   
            if(ImgFile.getSize()==0){
   
                ImgFile=null;
            }
            userServiceI.updateUserPerson(uid,userName,userPsd,ImgFile,request);
        }catch (Exception e){
   
            resultMap.setStatus(false);
            resultMap.setMessage(e.getMessage());
        }

    }

    @RequestMapping("/selectAllUserByLimits")
    @ResponseBody
    public ResultMap selectAllUserByLimits(int page,int limit){
   
        try{
   
            PageHelper.startPage(page, limit);//开启分页
            List<User> list=userServiceI.selectAllUserByLimits();
            PageInfo<User> pageInfo=new PageInfo<User>(list);
            long total=pageInfo.getTotal();
            resultMap.setCode(0);
            resultMap.setList(list);
            resultMap.setTotal(total);
        }catch (Exception e){
   
            resultMap.setCode(1);
            resultMap.setMessage(e.getMessage());
        }
        return resultMap;
    }

}

在UserServiceI、UserServiceImpl中新增selectAllUserByLimits()方法。
UserServiceI:

public interface UserServiceI {
   

    public int login(String userName, String userPsd, String captcha, HttpSession session);
    
    public int insertUserregister(String userName,String userPsd,String sex);

	public int updateUserPerson(String uid, String userName, String userPsd, MultipartFile ImgFile, HttpServletRequest request);
	
	public List<User> selectAllUserByLimits();
}


UserServiceImpl:

@Service
public class UserServiceImpl implements UserServiceI{
   

    @Autowired
    private UserDao userDao;

    @Override
    public int login(String userName, String userPsd, String captcha, HttpSession session) {
   
        if(userName.equals("")) {
   
            throw new RuntimeException("用户名不能为空!");
        }
        if(userPsd.equals("")) {
   
            throw new RuntimeException("密码不能为空!");
        }
        if(captcha.equals("")) {
   
            throw new RuntimeException("验证码不能为空!");
        }

        String cap= (String) session.getAttribute("captcha");

        if(!captcha.equalsIgnoreCase(cap)){
   
            throw new RuntimeException("验证码有误!");
        }

        User user = new User(userName,userPsd);
        user = userDao.login(user);
        if(user == null) {
   
            throw new RuntimeException("用户名或密码输入有误!");
        }else {
   
            session.setAttribute("user",user);
        }

        return user.getAuthorityType();
    }

    @Override
    public int insertUserregister(String userName, String userPsd, String sex) {
   
        if(userName.equals("")) {
   
            throw new RuntimeException("用户名不能为空!");
        }
        if(userPsd.equals("")) {
   
            throw new RuntimeException("密码不能为空!");
        }


        User user =new User();
        user.setUserName(userName);
        user.setUserPsd(userPsd);
        user.setSex(sex);
        user.setImgPath("images/defaultHeadimg.png");
        user.setHeadImg("defaultHeadimg.png");
        int num=userDao.insertUser(user);
        if(num==0){
   
            throw new RuntimeException("新增失败!");
        }

        User getLatestId=userDao.selectLatestId();

        User_Authority user_authority=new User_Authority();
        user_authority.setUid(getLatestId.getUid());
        user_authority.setAid(3);
        num=userDao.insertUserAuthority(user_authority);
        if(num==0){
   
            throw new RuntimeException("新增权限失败!");
        }
        return num;
    }


    @Override
   	 public int updateUserPerson(String uid, String userName, String userPsd, MultipartFile ImgFile, HttpServletRequest request) {
   
        User user =new User();
        int Intuid = Integer.parseInt(uid);
        user.setUid(Intuid);
        user.setUserName(userName);
        user.setUserPsd(userPsd);
        Map<String,String> map = getimg(ImgFile,request);
        return updateUserPerson(user,map);
    }
    
        @Override
    public List<User> selectAllUserByLimits() {
   
        return userDao.selectAllUserByLimits();
    }

}

在UserDao中新增selectAllUserByLimits()方法。
UserDao:

@Repository
public interface UserDao {
   

    public User login(User user);
    
    public int insertUser(User user) ;
    
    public User selectLatestId();
    
    public int insertUserAuthority(User_Authority user_authority) ;

    public int updateUserPerson(User user) ;
    
    public List
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值