提交 f15bb056 编写于 作者: M macro

旧权限逻辑移除

上级 ba327998
......@@ -7,7 +7,6 @@ import com.macro.mall.dto.UmsAdminLoginParam;
import com.macro.mall.dto.UmsAdminParam;
import com.macro.mall.dto.UpdateAdminPasswordParam;
import com.macro.mall.model.UmsAdmin;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.model.UmsRole;
import com.macro.mall.service.UmsAdminService;
import com.macro.mall.service.UmsRoleService;
......@@ -202,23 +201,4 @@ public class UmsAdminController {
return CommonResult.success(roleList);
}
@ApiOperation("给用户分配+-权限")
@RequestMapping(value = "/permission/update", method = RequestMethod.POST)
@ResponseBody
public CommonResult updatePermission(@RequestParam Long adminId,
@RequestParam("permissionIds") List<Long> permissionIds) {
int count = adminService.updatePermission(adminId, permissionIds);
if (count > 0) {
return CommonResult.success(count);
}
return CommonResult.failed();
}
@ApiOperation("获取用户所有权限(包括+-权限)")
@RequestMapping(value = "/permission/{adminId}", method = RequestMethod.GET)
@ResponseBody
public CommonResult<List<UmsPermission>> getPermissionList(@PathVariable Long adminId) {
List<UmsPermission> permissionList = adminService.getPermissionList(adminId);
return CommonResult.success(permissionList);
}
}
package com.macro.mall.controller;
import com.macro.mall.common.api.CommonResult;
import com.macro.mall.dto.UmsPermissionNode;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.service.UmsPermissionService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;
import java.util.List;
/**
* 后台用户权限管理
* Created by macro on 2018/9/29.
*/
@Controller
@Api(tags = "UmsPermissionController", description = "后台用户权限管理")
@RequestMapping("/permission")
public class UmsPermissionController {
@Autowired
private UmsPermissionService permissionService;
@ApiOperation("添加权限")
@RequestMapping(value = "/create", method = RequestMethod.POST)
@ResponseBody
public CommonResult create(@RequestBody UmsPermission permission) {
int count = permissionService.create(permission);
if(count>0){
return CommonResult.success(count);
}
return CommonResult.failed();
}
@ApiOperation("修改权限")
@RequestMapping(value = "/update/{id}", method = RequestMethod.POST)
@ResponseBody
public CommonResult update(@PathVariable Long id, @RequestBody UmsPermission permission) {
int count = permissionService.update(id,permission);
if(count>0){
return CommonResult.success(count);
}
return CommonResult.failed();
}
@ApiOperation("根据id批量删除权限")
@RequestMapping(value = "/delete", method = RequestMethod.POST)
@ResponseBody
public CommonResult delete(@RequestParam("ids") List<Long> ids) {
int count = permissionService.delete(ids);
if(count>0){
return CommonResult.success(count);
}
return CommonResult.failed();
}
@ApiOperation("以层级结构返回所有权限")
@RequestMapping(value = "/treeList", method = RequestMethod.GET)
@ResponseBody
public CommonResult<List<UmsPermissionNode>> treeList() {
List<UmsPermissionNode> permissionNodeList = permissionService.treeList();
return CommonResult.success(permissionNodeList);
}
@ApiOperation("获取所有权限列表")
@RequestMapping(value = "/list", method = RequestMethod.GET)
@ResponseBody
public CommonResult<List<UmsPermission>> list() {
List<UmsPermission> permissionList = permissionService.list();
return CommonResult.success(permissionList);
}
}
......@@ -56,26 +56,6 @@ public class UmsRoleController {
return CommonResult.failed();
}
@ApiOperation("获取相应角色权限")
@RequestMapping(value = "/permission/{roleId}", method = RequestMethod.GET)
@ResponseBody
public CommonResult<List<UmsPermission>> getPermissionList(@PathVariable Long roleId) {
List<UmsPermission> permissionList = roleService.getPermissionList(roleId);
return CommonResult.success(permissionList);
}
@ApiOperation("修改角色权限")
@RequestMapping(value = "/permission/update", method = RequestMethod.POST)
@ResponseBody
public CommonResult updatePermission(@RequestParam Long roleId,
@RequestParam("permissionIds") List<Long> permissionIds) {
int count = roleService.updatePermission(roleId, permissionIds);
if (count > 0) {
return CommonResult.success(count);
}
return CommonResult.failed();
}
@ApiOperation("获取所有角色")
@RequestMapping(value = "/listAll", method = RequestMethod.GET)
@ResponseBody
......
package com.macro.mall.dao;
import com.macro.mall.model.UmsAdminPermissionRelation;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 自定义用户权限关系管理Dao
* Created by macro on 2018/10/8.
*/
public interface UmsAdminPermissionRelationDao {
/**
* 批量创建
*/
int insertList(@Param("list") List<UmsAdminPermissionRelation> list);
}
package com.macro.mall.dao;
import com.macro.mall.model.UmsAdminRoleRelation;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.model.UmsResource;
import com.macro.mall.model.UmsRole;
import org.apache.ibatis.annotations.Param;
......@@ -23,16 +22,6 @@ public interface UmsAdminRoleRelationDao {
*/
List<UmsRole> getRoleList(@Param("adminId") Long adminId);
/**
* 获取用户所有角色权限
*/
List<UmsPermission> getRolePermissionList(@Param("adminId") Long adminId);
/**
* 获取用户所有权限(包括+-权限)
*/
List<UmsPermission> getPermissionList(@Param("adminId") Long adminId);
/**
* 获取用户所有可访问资源
*/
......
package com.macro.mall.dao;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.model.UmsRolePermissionRelation;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* 自定义角色权限关系管理Dao
* Created by macro on 2018/9/30.
*/
public interface UmsRolePermissionRelationDao {
/**
* 批量插入角色和权限关系
*/
int insertList(@Param("list")List<UmsRolePermissionRelation> list);
/**
* 根据角色获取权限
*/
List<UmsPermission> getPermissionList(@Param("roleId") Long roleId);
}
package com.macro.mall.dto;
import com.macro.mall.model.UmsPermission;
import io.swagger.annotations.ApiModelProperty;
import lombok.Getter;
import lombok.Setter;
import java.util.List;
/**
* 后台权限节点封装
* Created by macro on 2018/9/30.
*/
public class UmsPermissionNode extends UmsPermission {
@Getter
@Setter
@ApiModelProperty(value = "子级权限")
private List<UmsPermissionNode> children;
}
......@@ -3,7 +3,6 @@ package com.macro.mall.service;
import com.macro.mall.dto.UmsAdminParam;
import com.macro.mall.dto.UpdateAdminPasswordParam;
import com.macro.mall.model.UmsAdmin;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.model.UmsResource;
import com.macro.mall.model.UmsRole;
import org.springframework.security.core.userdetails.UserDetails;
......@@ -76,17 +75,6 @@ public interface UmsAdminService {
*/
List<UmsResource> getResourceList(Long adminId);
/**
* 修改用户的+-权限
*/
@Transactional
int updatePermission(Long adminId, List<Long> permissionIds);
/**
* 获取用户所有权限(包括角色权限和+-权限)
*/
List<UmsPermission> getPermissionList(Long adminId);
/**
* 修改密码
*/
......
package com.macro.mall.service;
import com.macro.mall.dto.UmsPermissionNode;
import com.macro.mall.model.UmsPermission;
import java.util.List;
/**
* 后台用户权限管理Service
* Created by macro on 2018/9/29.
*/
public interface UmsPermissionService {
/**
* 添加权限
*/
int create(UmsPermission permission);
/**
* 修改权限
*/
int update(Long id,UmsPermission permission);
/**
* 批量删除权限
*/
int delete(List<Long> ids);
/**
* 以层级结构返回所有权限
*/
List<UmsPermissionNode> treeList();
/**
* 获取所有权限
*/
List<UmsPermission> list();
}
package com.macro.mall.service;
import com.macro.mall.model.UmsMenu;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.model.UmsResource;
import com.macro.mall.model.UmsRole;
import org.springframework.transaction.annotation.Transactional;
......@@ -28,17 +27,6 @@ public interface UmsRoleService {
*/
int delete(List<Long> ids);
/**
* 获取指定角色权限
*/
List<UmsPermission> getPermissionList(Long roleId);
/**
* 修改指定角色的权限
*/
@Transactional
int updatePermission(Long roleId, List<Long> permissionIds);
/**
* 获取所有角色列表
*/
......
......@@ -5,13 +5,11 @@ import cn.hutool.core.util.StrUtil;
import com.github.pagehelper.PageHelper;
import com.macro.mall.bo.AdminUserDetails;
import com.macro.mall.common.exception.Asserts;
import com.macro.mall.dao.UmsAdminPermissionRelationDao;
import com.macro.mall.dao.UmsAdminRoleRelationDao;
import com.macro.mall.dto.UmsAdminParam;
import com.macro.mall.dto.UpdateAdminPasswordParam;
import com.macro.mall.mapper.UmsAdminLoginLogMapper;
import com.macro.mall.mapper.UmsAdminMapper;
import com.macro.mall.mapper.UmsAdminPermissionRelationMapper;
import com.macro.mall.mapper.UmsAdminRoleRelationMapper;
import com.macro.mall.model.*;
import com.macro.mall.security.util.JwtTokenUtil;
......@@ -21,7 +19,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.core.context.SecurityContextHolder;
......@@ -38,7 +35,6 @@ import javax.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* UmsAdminService实现类
......@@ -58,10 +54,6 @@ public class UmsAdminServiceImpl implements UmsAdminService {
@Autowired
private UmsAdminRoleRelationDao adminRoleRelationDao;
@Autowired
private UmsAdminPermissionRelationMapper adminPermissionRelationMapper;
@Autowired
private UmsAdminPermissionRelationDao adminPermissionRelationDao;
@Autowired
private UmsAdminLoginLogMapper loginLogMapper;
@Autowired
private UmsAdminCacheService adminCacheService;
......@@ -241,48 +233,6 @@ public class UmsAdminServiceImpl implements UmsAdminService {
return resourceList;
}
@Override
public int updatePermission(Long adminId, List<Long> permissionIds) {
//删除原所有权限关系
UmsAdminPermissionRelationExample relationExample = new UmsAdminPermissionRelationExample();
relationExample.createCriteria().andAdminIdEqualTo(adminId);
adminPermissionRelationMapper.deleteByExample(relationExample);
//获取用户所有角色权限
List<UmsPermission> permissionList = adminRoleRelationDao.getRolePermissionList(adminId);
List<Long> rolePermissionList = permissionList.stream().map(UmsPermission::getId).collect(Collectors.toList());
if (!CollectionUtils.isEmpty(permissionIds)) {
List<UmsAdminPermissionRelation> relationList = new ArrayList<>();
//筛选出+权限
List<Long> addPermissionIdList = permissionIds.stream().filter(permissionId -> !rolePermissionList.contains(permissionId)).collect(Collectors.toList());
//筛选出-权限
List<Long> subPermissionIdList = rolePermissionList.stream().filter(permissionId -> !permissionIds.contains(permissionId)).collect(Collectors.toList());
//插入+-权限关系
relationList.addAll(convert(adminId,1,addPermissionIdList));
relationList.addAll(convert(adminId,-1,subPermissionIdList));
return adminPermissionRelationDao.insertList(relationList);
}
return 0;
}
/**
* 将+-权限关系转化为对象
*/
private List<UmsAdminPermissionRelation> convert(Long adminId,Integer type,List<Long> permissionIdList) {
List<UmsAdminPermissionRelation> relationList = permissionIdList.stream().map(permissionId -> {
UmsAdminPermissionRelation relation = new UmsAdminPermissionRelation();
relation.setAdminId(adminId);
relation.setType(type);
relation.setPermissionId(permissionId);
return relation;
}).collect(Collectors.toList());
return relationList;
}
@Override
public List<UmsPermission> getPermissionList(Long adminId) {
return adminRoleRelationDao.getPermissionList(adminId);
}
@Override
public int updatePassword(UpdateAdminPasswordParam param) {
if(StrUtil.isEmpty(param.getUsername())
......
package com.macro.mall.service.impl;
import com.macro.mall.dto.UmsPermissionNode;
import com.macro.mall.mapper.UmsPermissionMapper;
import com.macro.mall.model.UmsPermission;
import com.macro.mall.model.UmsPermissionExample;
import com.macro.mall.service.UmsPermissionService;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
/**
* 后台用户权限管理Service实现类
* Created by macro on 2018/9/29.
*/
@Service
public class UmsPermissionServiceImpl implements UmsPermissionService {
@Autowired
private UmsPermissionMapper permissionMapper;
@Override
public int create(UmsPermission permission) {
permission.setStatus(1);
permission.setCreateTime(new Date());
permission.setSort(0);
return permissionMapper.insert(permission);
}
@Override
public int update(Long id, UmsPermission permission) {
permission.setId(id);
return permissionMapper.updateByPrimaryKey(permission);
}
@Override
public int delete(List<Long> ids) {
UmsPermissionExample example = new UmsPermissionExample();
example.createCriteria().andIdIn(ids);
return permissionMapper.deleteByExample(example);
}
@Override
public List<UmsPermissionNode> treeList() {
List<UmsPermission> permissionList = permissionMapper.selectByExample(new UmsPermissionExample());
List<UmsPermissionNode> result = permissionList.stream()
.filter(permission -> permission.getPid().equals(0L))
.map(permission -> covert(permission,permissionList)).collect(Collectors.toList());
return result;
}
@Override
public List<UmsPermission> list() {
return permissionMapper.selectByExample(new UmsPermissionExample());
}
/**
* 将权限转换为带有子级的权限对象
* 当找不到子级权限的时候map操作不会再递归调用covert
*/
private UmsPermissionNode covert(UmsPermission permission,List<UmsPermission> permissionList){
UmsPermissionNode node = new UmsPermissionNode();
BeanUtils.copyProperties(permission,node);
List<UmsPermissionNode> children = permissionList.stream()
.filter(subPermission -> subPermission.getPid().equals(permission.getId()))
.map(subPermission -> covert(subPermission,permissionList)).collect(Collectors.toList());
node.setChildren(children);
return node;
}
}
......@@ -2,10 +2,8 @@ package com.macro.mall.service.impl;
import com.github.pagehelper.PageHelper;
import com.macro.mall.dao.UmsRoleDao;
import com.macro.mall.dao.UmsRolePermissionRelationDao;
import com.macro.mall.mapper.UmsRoleMapper;
import com.macro.mall.mapper.UmsRoleMenuRelationMapper;
import com.macro.mall.mapper.UmsRolePermissionRelationMapper;
import com.macro.mall.mapper.UmsRoleResourceRelationMapper;
import com.macro.mall.model.*;
import com.macro.mall.service.UmsAdminCacheService;
......@@ -14,7 +12,6 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
......@@ -27,14 +24,10 @@ public class UmsRoleServiceImpl implements UmsRoleService {
@Autowired
private UmsRoleMapper roleMapper;
@Autowired
private UmsRolePermissionRelationMapper rolePermissionRelationMapper;
@Autowired
private UmsRoleMenuRelationMapper roleMenuRelationMapper;
@Autowired
private UmsRoleResourceRelationMapper roleResourceRelationMapper;
@Autowired
private UmsRolePermissionRelationDao rolePermissionRelationDao;
@Autowired
private UmsRoleDao roleDao;
@Autowired
private UmsAdminCacheService adminCacheService;
......@@ -61,28 +54,6 @@ public class UmsRoleServiceImpl implements UmsRoleService {
return count;
}
@Override
public List<UmsPermission> getPermissionList(Long roleId) {
return rolePermissionRelationDao.getPermissionList(roleId);
}
@Override
public int updatePermission(Long roleId, List<Long> permissionIds) {
//先删除原有关系
UmsRolePermissionRelationExample example=new UmsRolePermissionRelationExample();
example.createCriteria().andRoleIdEqualTo(roleId);
rolePermissionRelationMapper.deleteByExample(example);
//批量插入新关系
List<UmsRolePermissionRelation> relationList = new ArrayList<>();
for (Long permissionId : permissionIds) {
UmsRolePermissionRelation relation = new UmsRolePermissionRelation();
relation.setRoleId(roleId);
relation.setPermissionId(permissionId);
relationList.add(relation);
}
return rolePermissionRelationDao.insertList(relationList);
}
@Override
public List<UmsRole> list() {
return roleMapper.selectByExample(new UmsRoleExample());
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.macro.mall.dao.UmsAdminPermissionRelationDao">
<!--批量新增回写主键支持-->
<insert id="insertList">
INSERT INTO ums_admin_permission_relation (admin_id, permission_id, type) VALUES
<foreach collection="list" separator="," item="item" index="index">
(#{item.adminId,jdbcType=BIGINT},
#{item.permissionId,jdbcType=BIGINT},
#{item.type,jdbcType=INTEGER})
</foreach>
</insert>
</mapper>
\ No newline at end of file
......@@ -14,44 +14,6 @@
from ums_admin_role_relation ar left join ums_role r on ar.role_id = r.id
where ar.admin_id = #{adminId}
</select>
<select id="getRolePermissionList" resultMap="com.macro.mall.mapper.UmsPermissionMapper.BaseResultMap">
select p.*
from ums_admin_role_relation ar left join ums_role r on ar.role_id = r.id
left join ums_role_permission_relation rp on r.id = rp.role_id
left join ums_permission p on rp.permission_id=p.id
where ar.admin_id = #{adminId} and p.id is not null
</select>
<select id="getPermissionList" resultMap="com.macro.mall.mapper.UmsPermissionMapper.BaseResultMap">
SELECT
p.*
FROM
ums_admin_role_relation ar
LEFT JOIN ums_role r ON ar.role_id = r.id
LEFT JOIN ums_role_permission_relation rp ON r.id = rp.role_id
LEFT JOIN ums_permission p ON rp.permission_id = p.id
WHERE
ar.admin_id = #{adminId}
AND p.id IS NOT NULL
AND p.id NOT IN (
SELECT
p.id
FROM
ums_admin_permission_relation pr
LEFT JOIN ums_permission p ON pr.permission_id = p.id
WHERE
pr.type = - 1
AND pr.admin_id = #{adminId}
)
UNION
SELECT
p.*
FROM
ums_admin_permission_relation pr
LEFT JOIN ums_permission p ON pr.permission_id = p.id
WHERE
pr.type = 1
AND pr.admin_id = #{adminId}
</select>
<select id="getResourceList" resultType="com.macro.mall.model.UmsResource">
SELECT
ur.id id,
......
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.macro.mall.dao.UmsRolePermissionRelationDao">
<!--批量新增回写主键支持-->
<insert id="insertList">
INSERT INTO ums_role_permission_relation (role_id, permission_id) VALUES
<foreach collection="list" separator="," item="item" index="index">
(#{item.roleId,jdbcType=BIGINT},
#{item.permissionId,jdbcType=BIGINT})
</foreach>
</insert>
<select id="getPermissionList" resultMap="com.macro.mall.mapper.UmsPermissionMapper.BaseResultMap">
SELECT
p.*
FROM
ums_role_permission_relation r
LEFT JOIN ums_permission p ON r.permission_id = p.id
WHERE
r.role_id = #{roleId};
</select>
</mapper>
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册