本系统实现了权限管理系统,管理端实现了管理员登录、 主页、用户管理、部门管理、菜单管理、角色管理、字典管理、定时任务、操作日志、生成管理
JDK版本:1.8
Mysql:5.7
登录用户名密码:admin 123456
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;
/**
*
* 用户表 Mapper 接口
*
*/
public interface UserMapper extends BaseMapper<User> {
/**
* 查询用户列表
* @param queryVO 查询参数
* @return
*/
List<User> selectUserList(UserQueryVO queryVO, Page page);
}
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;
/**
*
* 用户表 前端控制器
*
*
*/
@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();
}
}
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;
/**
*
* 用户表
*
*
*/
@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;
}
点击以下链接获取源码。
IDEA+spring boot+activiti+shiro++layui+Mysql权限管理系统源码
IDEA+SpringBoot + Mybatis + Shiro+Bootstrap+Mysql智慧仓库WMS源码
IDEA+springboot+ssm+layui+mysql高校宿舍管理系统源码
IDEA+springboot + ssm +shiro+ easyui +mysql实现的进销存系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql网上书店管理系统
IDEA+springboot+mybatis+shiro+bootstrap+Mysql WMS仓库管理系统
IDEA+spring+spring mvc+mybatis+bootstrap+jquery+Mysql运动会管理系统源码
IDEA+SpringBoot+mybatis+bootstrap+jquery+Mysql车险理赔管理系统源码
IDEA+Spring Boot + MyBatis + Layui+Mysql垃圾回收管理系统源码
IDEA+SpringBoot+mybatis+SSM+layui+Mysql学生就业信息管理系统源码
IDEA+springboot+jpa+Layui+Mysql销售考评系统源码
IDEA+Spring + Spring MVC + MyBatis+Bootstrap+Mysql酒店管理系统源码
IDEA+spring boot+mybatis+spring mvc+bootstrap+Mysql停车位管理系统源码
Java+Swing+Mysql实现学生宿舍管理系统
Java+Swing+Txt实现自助款机系统
Java+Swing+Mysql自助存取款机系统
Java+Swing+mysql5实现学生成绩管理系统(带分页)
Java+Swing+Mysql实现超市商品管理系统源码
Java+Swing+Mysql实现通讯录管理系统源码
Java+Swing+Mysql实现图书管理系统源码