src/main/java/com/whyc/controller/RoleController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/controller/UserController.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/Role.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/pojo/User.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/RoleService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/java/com/whyc/service/UserService.java | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/main/resources/mapper/RolePermissionMapper.xml | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/main/java/com/whyc/controller/RoleController.java
@@ -1,6 +1,7 @@ package com.whyc.controller; import com.baomidou.mybatisplus.core.metadata.IPage; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.pojo.*; import com.whyc.service.*; @@ -39,20 +40,20 @@ /**=============用户与角色================**/ @GetMapping("userWithNoRole") @ApiOperation(value = "查询未分配角色的用户") // @GetMapping("userWithNoRole") // @ApiOperation(value = "查询未分配角色的用户") public List<User> getUserWithNoRole(){ return userRoleService.getUserWithNoRole(); } @GetMapping("userWithRole") @ApiOperation(value = "查询分配角色的用户") // @GetMapping("userWithRole") // @ApiOperation(value = "查询分配角色的用户") public List<UserRole> getUserWithRole(){ return userRoleService.getUserWithRole(); } @GetMapping("userWithRoleMap") @ApiOperation(value = "查询分配角色的用户Map") // @GetMapping("userWithRoleMap") // @ApiOperation(value = "查询分配角色的用户Map") public Map<String,List<UserRole>> getUserWithRoleMap(){ return userRoleService.getUserWithRoleMap(); } @@ -65,10 +66,21 @@ @PostMapping("search") @ApiOperation(value = "查询角色分页-根据筛选条件") public Response<IPage<Role>> getRoleByCondition(@RequestParam int pageNum, @RequestParam int pageSize, @RequestBody Role role){ public Response<PageInfo<Role>> getRoleByCondition(@RequestParam int pageNum, @RequestParam int pageSize, @RequestBody Role role){ return roleService.getRoleByCondition(pageNum,pageSize,role); } @GetMapping("getUserByRoleId") @ApiOperation(value = "通过角色id获取用户信息") public Response<PageInfo<User>> getUserByRoleId(@RequestParam int roleId){ return roleService.getUserByRoleId(roleId); } @PutMapping("updateRoleState") @ApiOperation(value = "启用/冻结角色") public Response updateRoleState(@RequestParam int roleId,@RequestParam int state){ return roleService.updateRoleState(roleId,state); } @PostMapping @@ -77,22 +89,22 @@ return roleService.add(role); } @PostMapping("batch") @ApiOperation(value = "批量新增角色") // @PostMapping("batch") // @ApiOperation(value = "批量新增角色") public boolean addBatch(@RequestBody List<Role> roles){ return roleService.addBatch(roles); } @PostMapping("bindingUserWithRole") @ApiOperation(value = "绑定用户和角色") @CacheEvict(cacheNames = {"userBridge"},key="'getAuthorizationInfo'+#p0") //清除 // @PostMapping("bindingUserWithRole") // @ApiOperation(value = "绑定用户和角色") // @CacheEvict(cacheNames = {"userBridge"},key="'getAuthorizationInfo'+#p0") //清除 public boolean bindingUserWithRole(@RequestParam int userId,int roleId){ return userRoleService.bindingUserWithRole(userId,roleId); } @PostMapping("bindingUserWithRoleBatch") @ApiOperation(value = "批量绑定用户和角色",notes = "传入userId和roleId的数组") @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 // @PostMapping("bindingUserWithRoleBatch") // @ApiOperation(value = "批量绑定用户和角色",notes = "传入userId和roleId的数组") // @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 public boolean bindingUserWithRoleBatch(@RequestBody List<UserRole> userRoles){ return userRoleService.bindingUserWithRoleBatch(userRoles); } @@ -105,16 +117,16 @@ return permissionService.getAll(); } @PostMapping("bindingRoleWithPermission") @ApiOperation(value = "绑定角色-权限") @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 // @PostMapping("bindingRoleWithPermission") // @ApiOperation(value = "绑定角色-权限") // @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 public boolean bindingRoleWithPermission(@RequestParam int roleId,int permissionId){ return rolePermissionService.bindingUserWithRole(roleId,permissionId); } @PostMapping("bindingRoleWithPermissionBatch") @ApiOperation(value = "批量绑定角色-权限",notes = "传入roleId和privilegeId的数组") @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 // @PostMapping("bindingRoleWithPermissionBatch") // @ApiOperation(value = "批量绑定角色-权限",notes = "传入roleId和privilegeId的数组") // @CacheEvict(cacheNames = {"userBridge"},allEntries = true) //全部清除 public boolean bindingRoleWithPermissionBatch(@RequestBody List<RolePermission> rolePermissions){ return rolePermissionService.bindingUserWithRoleBatch(rolePermissions); } @@ -129,8 +141,8 @@ /**==============用户-角色-菜单================**/ @GetMapping("allMenus") @ApiOperation(value = "获取所有菜单") // @GetMapping("allMenus") // @ApiOperation(value = "获取所有菜单") public List<Menu> getAllMenu(){ return roleMenuService.getAllMenus(); } src/main/java/com/whyc/controller/UserController.java
@@ -87,6 +87,11 @@ return userService.getPageByCondition(pageNum,pageSize,user); } @GetMapping("validatePassword") public boolean validatePassword(@RequestParam String userName, @RequestParam String password){ return userService.validatePassword(userName,password); } @PutMapping @ApiOperation(value = "编辑用户") //@RequiresPermissions(value = {"user:update"}) src/main/java/com/whyc/pojo/Role.java
@@ -31,11 +31,14 @@ @ApiModelProperty("更新时间") @JsonFormat(locale = "zh",timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss") private Date updateTime; @ApiModelProperty("状态:0未启用,1启用") @ApiModelProperty("状态:0启用,1冻结") private Integer state; @ApiModelProperty("查询字段") @TableField(exist = false) private String search; @ApiModelProperty("权限人数") @TableField(exist = false) private Integer userCount; public Role() { } src/main/java/com/whyc/pojo/User.java
@@ -5,6 +5,7 @@ import cn.afterturn.easypoi.handler.inter.IExcelDataModel; import cn.afterturn.easypoi.handler.inter.IExcelModel; import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.fasterxml.jackson.annotation.JsonFormat; import io.swagger.annotations.ApiModel; @@ -25,6 +26,7 @@ @TableField(exist = false) private String errorMsg; @TableId private Integer id; @ApiModelProperty("用户账号") @Excel(name = "账号",width = 25,orderNum = "1",isImportField = "true_st") src/main/java/com/whyc/service/RoleService.java
@@ -3,14 +3,21 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.metadata.IPage; import com.baomidou.mybatisplus.core.toolkit.StringUtils; import com.baomidou.mybatisplus.extension.api.R; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.github.pagehelper.PageInfo; import com.whyc.dto.Response; import com.whyc.mapper.RoleMapper; import com.whyc.mapper.UserMapper; import com.whyc.mapper.UserRoleMapper; import com.whyc.pojo.OperationLog; import com.whyc.pojo.Role; import com.whyc.pojo.User; import com.whyc.pojo.UserRole; import org.springframework.stereotype.Service; import javax.annotation.Resource; import java.util.ArrayList; import java.util.Date; import java.util.List; @@ -19,18 +26,30 @@ @Resource private RoleMapper mapper; @Resource private UserRoleMapper userRoleMapper; @Resource private UserMapper userMapper; public List<Role> getAll() { return mapper.selectList(null); } public Response<IPage<Role>> getRoleByCondition(int pageNum,int pageSize,Role role){ public Response<PageInfo<Role>> getRoleByCondition(int pageNum,int pageSize,Role role){ QueryWrapper<Role> queryWrapper = new QueryWrapper<>(role); queryWrapper.or().like(StringUtils.isNotEmpty(role.getSearch()) ,"label",role.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(role.getSearch()) ,"description",role.getSearch()); IPage<Role> roleIPage = mapper.selectPage(new Page<>(pageNum, pageSize), queryWrapper); return new Response<IPage<Role>>().set(1,roleIPage); List<Role> list = mapper.selectList(queryWrapper); for (Role role1: list) { QueryWrapper<UserRole> userRoleQueryWrapper = new QueryWrapper<>(); userRoleQueryWrapper.eq("role_id",role1.getId()); int count = userRoleMapper.selectCount(userRoleQueryWrapper); role1.setUserCount(count); } //IPage<Role> roleIPage = mapper.selectPage(new Page<>(pageNum, pageSize), queryWrapper); PageInfo<Role> rolePageInfo = new PageInfo<>(list); return new Response<PageInfo<Role>>().set(1,rolePageInfo); } public Response add(Role role) { @@ -43,7 +62,7 @@ return new Response().setMsg(0,"已有此权限组数据"); } role.setState(1); role.setState(0); role.setUpdateTime(new Date()); mapper.insert(role); return new Response().set(1,role,"添加成功"); @@ -53,4 +72,32 @@ return mapper.insertBatchSomeColumn(roles)==roles.size(); } public Response<PageInfo<User>> getUserByRoleId(int roleId){ QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.select("user_id").eq("role_id",roleId); List<UserRole> userIds = userRoleMapper.selectList(queryWrapper); List<User> userList = new ArrayList<>(); for (UserRole userRole:userIds) { User user = userMapper.selectById(userRole.getUserId()); userList.add(user); } PageInfo<User> pageInfo = new PageInfo<>(userList); return new Response<PageInfo<User>>().set(1,pageInfo); } public Response updateRoleState(int roleId,int state){ Role role = mapper.selectById(roleId); role.setState(state); if(mapper.updateById(role)>0){ if (state==0){ return new Response().setMsg(1,"启用成功"); }else{ return new Response().setMsg(1,"冻结成功"); } }else { return new Response().setMsg(0,"更新失败"); } } } src/main/java/com/whyc/service/UserService.java
@@ -11,6 +11,9 @@ import com.whyc.pojo.User; import com.whyc.util.DigestsUtil; import lombok.extern.slf4j.Slf4j; import org.apache.shiro.SecurityUtils; import org.apache.shiro.authc.UsernamePasswordToken; import org.apache.shiro.subject.Subject; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Service; @@ -36,6 +39,7 @@ @Resource private UserBridgeService userBridgeService; @Autowired private ApplicationContext applicationContext; @@ -55,15 +59,15 @@ } else { return new Response<>().set(1, false, "添加失败"); } }catch (Exception e){ } catch (Exception e) { e.printStackTrace(); return new Response<>().set(0); } } public boolean addBatch(List<User> roles) { return userMapper.insertBatchSomeColumn(roles)==roles.size(); } public boolean addBatch(List<User> roles) { return userMapper.insertBatchSomeColumn(roles) == roles.size(); } public User getById(int id) { @@ -80,34 +84,47 @@ return userMapper.selectPage(page, null); } public Response<IPage<User>> getPageByCondition(int pageNum,int pageSize,User user){ public Response<IPage<User>> getPageByCondition(int pageNum, int pageSize, User user) { QueryWrapper<User> queryWrapper = new QueryWrapper<>(user); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()) ,"name",user.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()),"real_name",user.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()),"phone",user.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()),"email",user.getSearch()); IPage<User> page = userMapper.selectPage(new Page<>(pageNum,pageSize),queryWrapper); return new Response<IPage<User>>().set(1,page); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "name", user.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "real_name", user.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "phone", user.getSearch()); queryWrapper.or().like(StringUtils.isNotEmpty(user.getSearch()), "email", user.getSearch()); IPage<User> page = userMapper.selectPage(new Page<>(pageNum, pageSize), queryWrapper); return new Response<IPage<User>>().set(1, page); } public boolean validatePassword(String userName, String password) { User user = userBridgeService.findPasswordAndSlatByUserName(userName); boolean result = user.getPassword().equals(DigestsUtil.sha1(password, user.getSalt())); return result; } public Response update(User user) { if(userMapper.updateById(user)>0){ return new Response().setMsg(1,"更新成功"); }else { return new Response().setMsg(0,"更新失败"); Map<String, String> encryptMap = DigestsUtil.encryptPassword(user.getPassword()); user.setPassword(encryptMap.get("password")); user.setSalt(encryptMap.get("salt")); if (userMapper.updateById(user) > 0) { return new Response().setMsg(1, "更新成功"); } else { return new Response().setMsg(0, "更新失败"); } } public Response updateUserFreeze(int id,int state){ User user =userMapper.selectById(id); public Response updateUserFreeze(int id, int state) { User user = userMapper.selectById(id); user.setState(state); if(userMapper.updateById(user)>0){ if (state==0){ return new Response().setMsg(1,"启用成功"); }else{ return new Response().setMsg(1,"冻结成功"); if (userMapper.updateById(user) > 0) { if (state == 0) { return new Response().setMsg(1, "启用成功"); } else { return new Response().setMsg(1, "冻结成功"); } }else { return new Response().setMsg(0,"更新失败"); } else { return new Response().setMsg(0, "更新失败"); } } @@ -122,40 +139,40 @@ }*/ public Response delete(int id) { if(userMapper.deleteById(id)>0){ return new Response().setMsg(1,"删除成功"); }else { return new Response().setMsg(0,"删除失败"); if (userMapper.deleteById(id) > 0) { return new Response().setMsg(1, "删除成功"); } else { return new Response().setMsg(0, "删除失败"); } } public boolean login(String username, String password , HttpServletRequest request) { boolean flag=false; public boolean login(String username, String password, HttpServletRequest request) { boolean flag = false; //查询用户名和密码是否正确 QueryWrapper<User> queryWrapper = query(); queryWrapper.eq("name",username).eq("password",password); queryWrapper.eq("name", username).eq("password", password); User user = userMapper.selectOne(queryWrapper); if (user!=null){ flag=true; if (user != null) { flag = true; //session中存储用户信息,设置有效期30分钟 HttpSession session = request.getSession(); long timestamp = System.currentTimeMillis(); session.setAttribute("user",user); session.setAttribute("timestamp",timestamp); session.setAttribute("user", user); session.setAttribute("timestamp", timestamp); session.setMaxInactiveInterval(1800); //servletContext中存储用户信息 ServletContext servletContext = request.getServletContext(); Map<String,UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users"); if(userMap==null){ Map<String, UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users"); if (userMap == null) { log.info("servletContext首次存值"); userMap = new HashMap<>(); userMap.put(username,new UserLoginInfo(username,timestamp)); servletContext.setAttribute("users",userMap); }else{ userMap.put(username, new UserLoginInfo(username, timestamp)); servletContext.setAttribute("users", userMap); } else { log.info("servletContext已经有值"); userMap.put(username,new UserLoginInfo(username,timestamp)); servletContext.setAttribute("users",userMap); userMap.put(username, new UserLoginInfo(username, timestamp)); servletContext.setAttribute("users", userMap); } } return flag; @@ -170,15 +187,15 @@ User user = (User) session.getAttribute("user"); Long timestamp = (Long) session.getAttribute("timestamp"); if(user==null){ if (user == null) { return false; } Map<String,UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users"); Map<String, UserLoginInfo> userMap = (Map<String, UserLoginInfo>) servletContext.getAttribute("users"); UserLoginInfo userLoginInfo = userMap.get(user.getName()); if(userLoginInfo.getUsername().equals(user.getName()) && userLoginInfo.getTimestamp().compareTo(timestamp)==0){ //说明没有从其他地方登录 }else{ if (userLoginInfo.getUsername().equals(user.getName()) && userLoginInfo.getTimestamp().compareTo(timestamp) == 0) { //说明没有从其他地方登录 } else { //说明从其他地方登录了,当前用户的session清除 flag = true; session.invalidate(); src/main/resources/mapper/RolePermissionMapper.xml
@@ -3,9 +3,11 @@ <mapper namespace="com.whyc.mapper.RolePermissionMapper" > <select id="findPermissionsByUserId" resultType="java.lang.String"> select p.name from tb_user_role ur,tb_role_permission rp,tb_permission p select p.name from tb_user_role ur,tb_role_permission rp,tb_permission p,tb_role r where ur.role_id = rp.role_id and rp.permission_id=p.id and r.id = ur.role_id and r.state = 0 and user_id=#{userId}; </select> @@ -13,9 +15,11 @@ <!-- app mapper--> <select id="findAppPermissionsByUserId" resultType="java.lang.String"> select p.name from tb_user_role ur,tb_role_permission rp,tb_permission p select p.name from tb_user_role ur,tb_role_permission rp,tb_permission p,tb_role r where ur.role_id = rp.role_id and rp.permission_id=p.id and r.id = ur.role_id and r.state = 0 and user_id=#{userId}; </select>