Commit d5346e65 authored by liuyang's avatar liuyang

角色管理功能完成

parent 01a7f2ce
......@@ -6,6 +6,7 @@ import com.qkdata.biz.sys.service.ShiroService;
import com.qkdata.biz.sys.service.SysMenuService;
import com.qkdata.common.util.UserContext;
import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
......@@ -30,4 +31,16 @@ public class SysMenuController {
SysNavDTO navDTO = new SysNavDTO(menuList,permissions);
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;
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.common.base.model.PageDTO;
import io.swagger.annotations.Api;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.http.HttpStatus;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;
import java.util.List;
......@@ -26,4 +29,37 @@ public class SysRoleController {
public List<SysRolePO> select(){
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;
@Table(name = "sys_menu")
public class SysMenuPO extends BasePO {
private Integer parentId;
private Long parentId;
/**
* 非数据库中字段
*/
......
......@@ -8,6 +8,6 @@ import javax.persistence.Table;
@Data
@Table(name = "sys_role_menu")
public class SysRoleMenuPO extends BasePO {
private Integer roleId;
private Integer menuId;
private Long roleId;
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;
import com.qkdata.biz.sys.entity.SysRolePO;
import com.qkdata.biz.sys.model.QueryRoleModel;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
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;
import com.qkdata.biz.sys.entity.SysRoleMenuPO;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
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> {
void deleteByUserId(Long userId);
void deleteByUserIds(Long[] userIds);
void deleteByRoleIds(Long[] roleIds);
}
......@@ -18,6 +18,7 @@ import java.util.List;
public class SysMenuService extends BaseServiceImpl<SysMenuPO,Long> {
@Autowired
private SysMenuMapper sysMenuMapper;
@Autowired
private SysUserMapper sysUserMapper;
@Override
......@@ -80,4 +81,8 @@ public class SysMenuService extends BaseServiceImpl<SysMenuPO,Long> {
}
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;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
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.common.base.exception.BusinessException;
import com.qkdata.common.base.model.PageDTO;
import com.qkdata.common.base.service.impl.BaseServiceImpl;
import org.springframework.beans.BeanUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import tk.mybatis.mapper.common.Mapper;
import java.util.List;
@Service
public class SysRoleService extends BaseServiceImpl<SysRolePO,Long> {
@Autowired
private SysRoleMapper sysRoleMapper;
@Autowired
private SysRoleMenuService sysRoleMenuService;
@Autowired
private SysUserRoleService sysUserRoleService;
@Override
protected Mapper<SysRolePO> getMapper() {
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> {
public void deleteByUserIds(Long[] 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 @@
<select id="queryAllPerms" resultType="string">
select m.perms from sys_user_role ur
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}
</select>
<!-- 查询用户的所有菜单ID -->
......
......@@ -23,4 +23,10 @@
#{userId}
</foreach>
</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>
\ 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