IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统

  • 一、系统介绍
  • 1.环境配置
  • 二、系统展示
  • 1. 管理员登录
  • 2.主页
  • 3.用户管理
  • 4.部门管理
  • 5. 菜单管理
  • 6. 角色管理
  • 7. 字典管理
  • 8.定时任务
  • 9.操作日志
  • 10.生成管理
  • 三、部分代码
  • UserMapper.java
  • UserController.java
  • User.java
  • 四、其他
  • 获取源码



一、系统介绍

本系统实现了权限管理系统,管理端实现了管理员登录、 主页、用户管理、部门管理、菜单管理、角色管理、字典管理、定时任务、操作日志、生成管理

1.环境配置

JDK版本:1.8
Mysql:5.7

二、系统展示

1. 管理员登录

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_spring

登录用户名密码:admin 123456

2.主页

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_spring_02

3.用户管理

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_sql_03

4.部门管理

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_intellij-idea_04

5. 菜单管理

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_layui_05

6. 角色管理

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_intellij-idea_06

7. 字典管理

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_intellij-idea_07

8.定时任务

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_intellij-idea_08

9.操作日志

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_layui_09

10.生成管理

IDEA+spring boot+activiti+shiro+layui+Mysql权限管理系统源码_layui_10

三、部分代码

UserMapper.java

package com.kalvin.kvf.modules.sys.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kalvin.kvf.modules.sys.entity.User;
import com.kalvin.kvf.modules.sys.vo.UserQueryVO;

import java.util.List;

/**
 * <p>
 * 用户表 Mapper 接口
 * </p>
 */
public interface UserMapper extends BaseMapper<User> {

    /**
     * 查询用户列表
     * @param queryVO 查询参数
     * @return
     */
    List<User> selectUserList(UserQueryVO queryVO, Page page);

}

UserController.java

package com.kalvin.kvf.modules.sys.controller;


import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.util.StrUtil;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.kalvin.kvf.common.controller.BaseController;
import com.kalvin.kvf.common.dto.R;
import com.kalvin.kvf.common.utils.CryptionKit;
import com.kalvin.kvf.common.utils.ShiroKit;
import com.kalvin.kvf.modules.sys.dto.UserEditDTO;
import com.kalvin.kvf.modules.sys.dto.UserRoleGroupDTO;
import com.kalvin.kvf.modules.sys.entity.Dept;
import com.kalvin.kvf.modules.sys.entity.User;
import com.kalvin.kvf.modules.sys.service.IDeptService;
import com.kalvin.kvf.modules.sys.service.IUserRoleService;
import com.kalvin.kvf.modules.sys.service.IUserService;
import com.kalvin.kvf.modules.sys.vo.UserQueryVO;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.servlet.ModelAndView;

import java.util.List;

/**
 * <p>
 * 用户表 前端控制器
 * </p>
 *
 */
@RestController
@RequestMapping("sys/user")
public class UserController extends BaseController {

    @Autowired
    private IUserService userService;

    @Autowired
    private IDeptService deptService;

    @Autowired
    private IUserRoleService userRoleService;

    @RequiresPermissions("sys:user:index")
    @GetMapping("index")
    public ModelAndView index() {
        return new ModelAndView("sys/user");
    }

    @GetMapping(value = "edit")
    public ModelAndView edit(Long id) {
        ModelAndView mv = new ModelAndView("sys/user_edit");
        UserEditDTO userEditDTO = new UserEditDTO();
        UserRoleGroupDTO userRoleGroupDTO = new UserRoleGroupDTO();
        if (id != null) {
            User user = userService.getById(id);
            Dept dept = deptService.getById(user.getDeptId());
            userRoleGroupDTO = userRoleService.getUserRoleGroupDTOByUserId(id);
            BeanUtil.copyProperties(user, userEditDTO);
            userEditDTO.setDeptName(dept == null ? "" : dept.getName());
        }
        userEditDTO.setUserRole(userRoleGroupDTO);
        mv.addObject("editInfo", userEditDTO);
        return mv;
    }

    @GetMapping(value = "info")
    public ModelAndView info() {
        ModelAndView mv = new ModelAndView("sys/user_info");
        User user = userService.getById(ShiroKit.getUserId());
        mv.addObject("user", user);
        return mv;
    }

    @GetMapping(value = "password")
    public ModelAndView password() {
        return new ModelAndView("sys/user_pwd");
    }

    @GetMapping(value = "list/data")
    public R listData(UserQueryVO queryVO) {
        Page<User> page = userService.listUserPage(queryVO);
        return R.ok(page);
    }

    @RequiresPermissions("sys:user:add")
    @Transactional
    @PostMapping(value = "add")
    public R add(User user, @RequestParam("roleIds") List<Long> roleIds) {
        user.setDeptId(user.getDeptId() == null ? 0 : user.getDeptId());
        // 生成用户初始密码并加密
        user.setPassword(CryptionKit.genUserPwd());
        userService.saveOrUpdate(user);
        userRoleService.saveOrUpdateBatchUserRole(roleIds, user.getId());
        return R.ok();
    }

    @RequiresPermissions("sys:user:edit")
    @Transactional
    @PostMapping(value = "edit")
    public R edit(User user, @RequestParam("roleIds") List<Long> roleIds) {
        user.setDeptId(user.getDeptId() == null ? 0 : user.getDeptId());
        userService.updateById(user);
        userRoleService.saveOrUpdateBatchUserRole(roleIds, user.getId());
        return R.ok();
    }

    @PostMapping(value = "updateInfo")
    public R updateInfo(User user) {
        userService.updateById(user);
        return R.ok();
    }

    @RequiresPermissions("sys:user:del")
    @PostMapping(value = "remove/{id}")
    public R remove(@PathVariable Long id) {
        userService.removeById(id);
        return R.ok();
    }

    @RequiresPermissions("sys:user:del")
    @PostMapping(value = "removeBatch")
    public R removeBatch(@RequestParam("ids") List<Long> ids) {
        userService.removeByIds(ids);
        return R.ok();
    }

    /**
     * 管理员重置某个用户密码
     * @param id 用户ID
     * @return
     */
    @RequiresPermissions("sys:user:reset")
    @PostMapping(value = "{id}/resetPwd")
    public R resetPwd(@PathVariable Long id) {
        userService.updateUserPassword(id, CryptionKit.genUserPwd());
        return R.ok();
    }

    /**
     * 用户修改密码
     * @param oldPassword 旧密码
     * @param password  新密码
     * @return
     */
    @PostMapping(value = "changePwd")
    public R changePwd(String oldPassword, String password) {
        if (StrUtil.isBlank(oldPassword) && StrUtil.isBlank(password)) {
            return R.fail("修改失败,非法的参数");
        }
        // 用户修改密码
        User user = userService.getById(ShiroKit.getUserId());
        oldPassword = CryptionKit.genUserPwd(oldPassword);
        if (user.getPassword().equals(oldPassword)) {
            password = CryptionKit.genUserPwd(password);
            if (user.getPassword().equals(password)) {
                return R.fail("新密码不能与旧密码相同");
            }
        } else {
            return R.fail("旧密码不正确");
        }
        userService.updateUserPassword(ShiroKit.getUserId(), password);
        return R.ok();
    }

}

User.java

package com.kalvin.kvf.modules.sys.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.kalvin.kvf.common.entity.BaseEntity;
import lombok.Data;
import lombok.EqualsAndHashCode;
import lombok.experimental.Accessors;

import java.util.Date;

/**
 * <p>
 * 用户表
 * </p>
 *
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Accessors(chain = true)
@TableName("sys_user")
public class User extends BaseEntity {

    private static final long serialVersionUID=1L;

    /**
     * 主键
     */
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;

    /**
     * 归属部门
     */
    private Long deptId;

    /**
     * 登录名
     */
    private String username;

    /**
     * 密码
     */
    private String password;

    /**
     * 姓名
     */
    private String realname;

    /**
     * 性别。0:未知;1:男;2:女
     */
    private Integer sex;

    /**
     * 手机号码
     */
    private String phone;

    /**
     * 固定电话
     */
    private String tel;

    /**
     * 邮箱
     */
    private String email;

    /**
     * 用户头像
     */
    private String avatar;

    /**
     * 职务名称
     */
    private String jobTitle;

    /**
     * 用户状态。0:正常;1:禁用
     */
    private Integer status;

    /**
     * 排序。值越小越靠前
     */
    private Integer sort;

    /**
     * 删除标识。0:未删除;1:已删除
     */
    private Integer delFlag;

    /**
     * 创建人
     */
    private Long createBy;

    /**
     * 更新时间
     */
    private Date updateTime;

    /**
     * 创建时间
     */
    private Date createTime;


}