Commit d5346e65 authored by liuyang's avatar liuyang

角色管理功能完成

parent 01a7f2ce
...@@ -6,6 +6,7 @@ import com.qkdata.biz.sys.service.ShiroService; ...@@ -6,6 +6,7 @@ import com.qkdata.biz.sys.service.ShiroService;
import com.qkdata.biz.sys.service.SysMenuService; import com.qkdata.biz.sys.service.SysMenuService;
import com.qkdata.common.util.UserContext; import com.qkdata.common.util.UserContext;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMapping;
...@@ -30,4 +31,16 @@ public class SysMenuController { ...@@ -30,4 +31,16 @@ public class SysMenuController {
SysNavDTO navDTO = new SysNavDTO(menuList,permissions); SysNavDTO navDTO = new SysNavDTO(menuList,permissions);
return navDTO; return navDTO;
} }
@GetMapping("/list")
@RequiresPermissions("sys:menu:list")
public List<SysMenuPO> list(){
List<SysMenuPO> menuList = sysMenuService.allList();
for (SysMenuPO menuPO : menuList){
SysMenuPO parentMenu = sysMenuService.getById(menuPO.getParentId());
if (parentMenu != null){
menuPO.setParentName(parentMenu.getName());
}
}
return menuList;
}
} }
package com.qkdata.biz.sys.controller; package com.qkdata.biz.sys.controller;
import com.qkdata.biz.sys.entity.SysRolePO; import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.model.QueryRoleModel;
import com.qkdata.biz.sys.model.SysRoleModel;
import com.qkdata.biz.sys.service.SysRoleService; import com.qkdata.biz.sys.service.SysRoleService;
import com.qkdata.common.base.model.PageDTO;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions; import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping; import org.springframework.http.HttpStatus;
import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.*;
import java.util.List; import java.util.List;
...@@ -26,4 +29,37 @@ public class SysRoleController { ...@@ -26,4 +29,37 @@ public class SysRoleController {
public List<SysRolePO> select(){ public List<SysRolePO> select(){
return sysRoleService.listByCondition(new SysRolePO()); return sysRoleService.listByCondition(new SysRolePO());
} }
@GetMapping("/list")
@RequiresPermissions("sys:role:list")
public PageDTO<SysRolePO> list(QueryRoleModel queryRoleModel){
return sysRoleService.queryPageList(queryRoleModel);
}
@GetMapping("/info/{id}")
@RequiresPermissions("sys:role:info")
public SysRoleModel info(@PathVariable Long id){
return sysRoleService.getRoleInfo(id);
}
@PostMapping("/save")
@RequiresPermissions("sys:role:save")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void save(@RequestBody @Validated SysRoleModel sysRoleModel){
sysRoleService.saveRole(sysRoleModel);
}
@PostMapping("/update")
@RequiresPermissions("sys:role:update")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void update(@RequestBody @Validated SysRoleModel sysRoleModel){
sysRoleService.updateRole(sysRoleModel);
}
@PostMapping("/delete")
@RequiresPermissions("sys:role:delete")
@ResponseStatus(HttpStatus.NO_CONTENT)
public void delete(@RequestBody Long[] ids){
sysRoleService.deleteBatch(ids);
}
} }
...@@ -13,7 +13,7 @@ import java.util.List; ...@@ -13,7 +13,7 @@ import java.util.List;
@Table(name = "sys_menu") @Table(name = "sys_menu")
public class SysMenuPO extends BasePO { public class SysMenuPO extends BasePO {
private Integer parentId; private Long parentId;
/** /**
* 非数据库中字段 * 非数据库中字段
*/ */
......
...@@ -8,6 +8,6 @@ import javax.persistence.Table; ...@@ -8,6 +8,6 @@ import javax.persistence.Table;
@Data @Data
@Table(name = "sys_role_menu") @Table(name = "sys_role_menu")
public class SysRoleMenuPO extends BasePO { public class SysRoleMenuPO extends BasePO {
private Integer roleId; private Long roleId;
private Integer menuId; private Long menuId;
} }
package com.qkdata.biz.sys.model;
import com.qkdata.biz.base.constants.Constants;
import lombok.Data;
@Data
public class QueryRoleModel {
private Integer pageIndex = 1;
private Integer pageSize = Constants.DEFAULT_PAGE_SIZE;
private String name;
}
package com.qkdata.biz.sys.model;
import lombok.Data;
import javax.validation.constraints.NotBlank;
import java.util.List;
@Data
public class SysRoleModel {
private Long id;
@NotBlank(message = "角色名称不能为空")
private String name;
private String remark;
private List<Long> menuIdList;
}
package com.qkdata.biz.sys.repository; package com.qkdata.biz.sys.repository;
import com.qkdata.biz.sys.entity.SysRolePO; import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.model.QueryRoleModel;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface SysRoleMapper extends Mapper<SysRolePO> { public interface SysRoleMapper extends Mapper<SysRolePO> {
List<SysRolePO> selectByCondition(QueryRoleModel queryRoleModel);
void deleteByIds(Long[] ids);
} }
...@@ -3,5 +3,10 @@ package com.qkdata.biz.sys.repository; ...@@ -3,5 +3,10 @@ package com.qkdata.biz.sys.repository;
import com.qkdata.biz.sys.entity.SysRoleMenuPO; import com.qkdata.biz.sys.entity.SysRoleMenuPO;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
public interface SysRoleMenuMapper extends Mapper<SysRoleMenuPO> { public interface SysRoleMenuMapper extends Mapper<SysRoleMenuPO> {
void deleteByRoleIds(Long[] roleIds);
List<Long> selectMenuIdsByRoleId(Long roleId);
} }
...@@ -11,4 +11,6 @@ public interface SysUserRoleMapper extends Mapper<SysUserRolePO> { ...@@ -11,4 +11,6 @@ public interface SysUserRoleMapper extends Mapper<SysUserRolePO> {
void deleteByUserId(Long userId); void deleteByUserId(Long userId);
void deleteByUserIds(Long[] userIds); void deleteByUserIds(Long[] userIds);
void deleteByRoleIds(Long[] roleIds);
} }
...@@ -18,6 +18,7 @@ import java.util.List; ...@@ -18,6 +18,7 @@ import java.util.List;
public class SysMenuService extends BaseServiceImpl<SysMenuPO,Long> { public class SysMenuService extends BaseServiceImpl<SysMenuPO,Long> {
@Autowired @Autowired
private SysMenuMapper sysMenuMapper; private SysMenuMapper sysMenuMapper;
@Autowired
private SysUserMapper sysUserMapper; private SysUserMapper sysUserMapper;
@Override @Override
...@@ -80,4 +81,8 @@ public class SysMenuService extends BaseServiceImpl<SysMenuPO,Long> { ...@@ -80,4 +81,8 @@ public class SysMenuService extends BaseServiceImpl<SysMenuPO,Long> {
} }
return userMenuList; return userMenuList;
} }
public List<SysMenuPO> allList() {
return sysMenuMapper.selectAll();
}
} }
package com.qkdata.biz.sys.service;
import com.qkdata.biz.sys.entity.SysRoleMenuPO;
import com.qkdata.biz.sys.repository.SysRoleMenuMapper;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.util.CollectionUtils;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
@Service
public class SysRoleMenuService extends BaseServiceImpl<SysRoleMenuPO,Long> {
@Autowired
private SysRoleMenuMapper sysRoleMenuMapper;
@Override
protected Mapper<SysRoleMenuPO> getMapper() {
return sysRoleMenuMapper;
}
public void saveOrUpdate(Long roleId, List<Long> menuIdList) {
deleteByRoleIds(new Long[]{roleId});
if (CollectionUtils.isEmpty(menuIdList)){
return;
}
for (Long menuId : menuIdList){
SysRoleMenuPO po = new SysRoleMenuPO();
po.setRoleId(roleId);
po.setMenuId(menuId);
save(po);
}
}
public List<Long> queryMenuIdList(Long roleId) {
return sysRoleMenuMapper.selectMenuIdsByRoleId(roleId);
}
public void deleteByRoleIds(Long[] roleIds) {
sysRoleMenuMapper.deleteByRoleIds(roleIds);
}
}
package com.qkdata.biz.sys.service; package com.qkdata.biz.sys.service;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.qkdata.biz.sys.entity.SysRolePO; import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.model.QueryRoleModel;
import com.qkdata.biz.sys.model.SysRoleModel;
import com.qkdata.biz.sys.repository.SysRoleMapper; import com.qkdata.biz.sys.repository.SysRoleMapper;
import com.qkdata.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageDTO;
import com.qkdata.common.base.service.impl.BaseServiceImpl; import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.common.Mapper; import tk.mybatis.mapper.common.Mapper;
import java.util.List;
@Service @Service
public class SysRoleService extends BaseServiceImpl<SysRolePO,Long> { public class SysRoleService extends BaseServiceImpl<SysRolePO,Long> {
@Autowired @Autowired
private SysRoleMapper sysRoleMapper; private SysRoleMapper sysRoleMapper;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysUserRoleService sysUserRoleService;
@Override @Override
protected Mapper<SysRolePO> getMapper() { protected Mapper<SysRolePO> getMapper() {
return sysRoleMapper; return sysRoleMapper;
} }
public PageDTO<SysRolePO> queryPageList(QueryRoleModel queryRoleModel) {
PageHelper.startPage(queryRoleModel.getPageIndex(),queryRoleModel.getPageSize());
List<SysRolePO> rolePOList = sysRoleMapper.selectByCondition(queryRoleModel);
return new PageDTO<>(new PageInfo<>(rolePOList));
}
@Transactional
public void saveRole(SysRoleModel sysRoleModel) {
SysRolePO po = new SysRolePO();
BeanUtils.copyProperties(sysRoleModel,po);
save(po);
sysRoleMenuService.saveOrUpdate(po.getId(),sysRoleModel.getMenuIdList());
}
public SysRoleModel getRoleInfo(Long id) {
SysRolePO po = getById(id);
if (po == null){
throw new BusinessException("请求错误,未找到对应角色");
}
List<Long> menuIds = sysRoleMenuService.queryMenuIdList(po.getId());
SysRoleModel model = new SysRoleModel();
BeanUtils.copyProperties(po,model);
model.setMenuIdList(menuIds);
return model;
}
@Transactional
public void deleteBatch(Long[] ids) {
sysRoleMapper.deleteByIds(ids);
sysRoleMenuService.deleteByRoleIds(ids);
sysUserRoleService.deleteByRoleIds(ids);
}
@Transactional
public void updateRole(SysRoleModel sysRoleModel) {
SysRolePO po = getById(sysRoleModel.getId());
if (po == null){
throw new BusinessException("请求错误,角色不存在");
}
po.setName(sysRoleModel.getName());
po.setRemark(sysRoleModel.getRemark());
updateById(po);
sysRoleMenuService.saveOrUpdate(po.getId(),sysRoleModel.getMenuIdList());
}
} }
...@@ -42,4 +42,8 @@ public class SysUserRoleService extends BaseServiceImpl<SysUserRolePO,Long> { ...@@ -42,4 +42,8 @@ public class SysUserRoleService extends BaseServiceImpl<SysUserRolePO,Long> {
public void deleteByUserIds(Long[] userIds) { public void deleteByUserIds(Long[] userIds) {
sysUserRoleMapper.deleteByUserIds(userIds); sysUserRoleMapper.deleteByUserIds(userIds);
} }
public void deleteByRoleIds(Long[] roleIds) {
sysUserRoleMapper.deleteByRoleIds(roleIds);
}
} }
<?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.qkdata.biz.sys.repository.SysRoleMapper">
<select id="selectByCondition" resultType="com.qkdata.biz.sys.entity.SysRolePO" parameterType="com.qkdata.biz.sys.model.QueryRoleModel">
select id,name,remark
from sys_role
where 1=1
<if test="name != null and name != ''">
and name like concat('%',#{name},'%')
</if>
order by id desc
</select>
<delete id="deleteByIds">
delete from sys_role where id in
<foreach collection="array" item="id" open="(" close=")" separator=",">
#{id}
</foreach>
</delete>
</mapper>
\ No newline at end of file
<?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.qkdata.biz.sys.repository.SysRoleMenuMapper">
<delete id="deleteByRoleIds">
delete from sys_role_menu where role_id in
<foreach collection="array" item="roleId" open="(" close=")" separator=",">
#{roleId}
</foreach>
</delete>
<select id="selectMenuIdsByRoleId" resultType="long">
select menu_id from sys_role_menu where role_id = #{roleId}
</select>
</mapper>
\ No newline at end of file
...@@ -6,7 +6,7 @@ ...@@ -6,7 +6,7 @@
<select id="queryAllPerms" resultType="string"> <select id="queryAllPerms" resultType="string">
select m.perms from sys_user_role ur select m.perms from sys_user_role ur
LEFT JOIN sys_role_menu rm on ur.role_id = rm.role_id LEFT JOIN sys_role_menu rm on ur.role_id = rm.role_id
LEFT JOIN sys_menu m on rm.menu_id = m.menu_id LEFT JOIN sys_menu m on rm.menu_id = m.id
where ur.user_id = #{userId} where ur.user_id = #{userId}
</select> </select>
<!-- 查询用户的所有菜单ID --> <!-- 查询用户的所有菜单ID -->
......
...@@ -23,4 +23,10 @@ ...@@ -23,4 +23,10 @@
#{userId} #{userId}
</foreach> </foreach>
</delete> </delete>
<delete id="deleteByRoleIds">
delete from sys_user_role where role_id in
<foreach collection="array" item="roleId" open="(" close=")" separator=",">
#{roleId}
</foreach>
</delete>
</mapper> </mapper>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment