角色权限管理功能完成

yun-zuoyi
wei.peng 7 years ago
parent 3af9e465ea
commit 5b69db3644

@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.platform.bean.RefRoleMenu;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
@ -57,6 +58,27 @@ public interface ISysRoleService {
SysRole insertSysRole(SysRole sysRole);
/**
*
* @param roleId
* @param ids
*/
void refreshSysRoleRef(String roleId,String[] ids,SessionUser user);
/**
*
* @param roleIds
* @param ids
*/
void refreshBatchSysRoleRef(String[] roleIds,String[] ids,SessionUser user);
/**
*
* @param roleId
* @return
*/
List<RefRoleMenu> findRefRoleMenuByRoleId(String roleId);
/**
*
*
* @return

@ -53,6 +53,7 @@ public class SysMenuController {
if(menu.getParentId() == null || menu.getParentId().intValue() == 0){
menu.setParentId(CommonEnumUtil.PARENT.DEFAULT.getValue());
}
menu.setMenuStatus(CommonEnumUtil.DATA_STATUS.ENABLE.getValue());
menu = sysMenuService.insertSysMenu(menu);
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(menu);
@ -200,4 +201,6 @@ public class SysMenuController {
}
}

@ -194,4 +194,45 @@ public class SysRoleController {
return ResultBean.fail().setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode());
}
}
@PutMapping(value = "/ref-menu/insert")
@ApiOperation(value = "新增角色权限关系", notes = "新增角色权限关系")
public ResultBean insertRefMenu(String roleId,String[] refIds) {
try {
// 数据校验
ValidatorBean.checkNotNull(roleId, "角色roleId 不能为空");
ValidatorBean.checkNotZero(refIds, "角色状态不能为空");
sysRoleService.refreshSysRoleRef(roleId,refIds,AuthUtil.getSessionUser());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep.getErrorShow());
}catch(Exception e){
LOGGER.error(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getDescription() + "{}",e.getMessage(),e);
return ResultBean.fail().setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode());
}
}
@PutMapping(value = "/ref-menu/batch-insert")
@ApiOperation(value = "批量新增角色权限关系", notes = "批量新增角色权限关系")
public ResultBean insertBatchRefMenu(String[] roleIds,String[] menuIds) {
try {
// 数据校验
ValidatorBean.checkNotNull(roleIds, "角色roleIds 不能为空");
ValidatorBean.checkNotNull(menuIds, "权限menuIds 不能为空");
sysRoleService.refreshBatchSysRoleRef(roleIds,menuIds,AuthUtil.getSessionUser());
return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch(ImppBusiException busExcep){
LOGGER.error(busExcep.getErrorMsg() + "{}",busExcep.getErrorDetail(),busExcep);
return ResultBean.fail(busExcep.getErrorShow());
}catch(Exception e){
LOGGER.error(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getDescription() + "{}",e.getMessage(),e);
return ResultBean.fail().setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode());
}
}
}

@ -86,7 +86,7 @@ public class DepartmentServiceImpl implements IDepartmentService {
.setErrorSolution("请重新操作")
.build();
}else {
long[] array = new long[ids.length];
Long[] array = new Long[ids.length];
for (int i = 0; i < ids.length; i++) {
array[i] = Long.parseLong(ids[i]);
}
@ -154,8 +154,8 @@ public class DepartmentServiceImpl implements IDepartmentService {
} else {
String hqlPack = CoreHqlPack.packHqlDepartment(department);
pager = PagerHelper.getPager(pager, departmentRDao.findByHqlWhereCount(hqlPack));
hqlPack += department.getOrderByParam() != null ? department.getOrderByParam(): "" ;
return new ListPager(departmentRDao.findByHqlWherePage(hqlPack,pager),pager);
return new ListPager(departmentRDao.findByHqlWherePage(
hqlPack + department.getOrderByParam(),pager),pager);
}
}

@ -83,7 +83,7 @@ public class OrganizeServiceImpl implements IOrganizeService {
.setErrorSolution("请重新操作")
.build();
}else {
long[] array = new long[ids.length];
Long[] array = new Long[ids.length];
for (int i = 0; i < ids.length; i++) {
array[i] = Long.parseLong(ids[i]);
}

@ -94,7 +94,7 @@ public class PositionServiceImpl implements IPositionService {
.setErrorSolution("请重新操作")
.build();
}else {
long[] array = new long[ids.length];
Long[] array = new Long[ids.length];
for (int i = 0; i < ids.length; i++) {
array[i] = Long.parseLong(ids[i]);
}

@ -0,0 +1,201 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.RefRoleMenu;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysMenu;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import cn.estsh.i3plus.pojo.platform.repository.RefRoleMenuRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysMenuRepository;
import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : wei.peng
* @Date : 2018-10-22 16:58:43.779
* @Modify :
**/
@Service
public class SysRoleService implements ISysRoleService {
public static final Logger LOGGER = LoggerFactory.getLogger(SysRoleService.class);
@Autowired
private SysRoleRepository sysRoleRDao;
@Autowired
private SysMenuRepository sysMenuRDao;
@Autowired
private RefRoleMenuRepository refRoleMenuRDao;
@Override
public void updateSysRole(SysRole sysRole) {
LOGGER.info("系统角色 SYS_ROLE :{}", sysRole);
sysRoleRDao.update(sysRole);
}
@Override
public void updateSysRoleStatus(String id, int status, SessionUser user) {
LOGGER.info("系统角色 SYS_MENU id:{} status:{} user:{}", id,status,user);
SysRole role = sysRoleRDao.getById(Long.parseLong(id));
role.setRoleStatusId(status);
role.setModifyUser(user.getUserName());
sysRoleRDao.update(role);
}
@Override
public void updateSysRoleStatusByIds(String[] ids, int status, SessionUser user) {
LOGGER.info("系统功能 SYS_MENU ids:{} status:{} user:{}", ids, status, user);
StringBuffer where = new StringBuffer();
HqlPack.getInPack(String.join(",", ids), "id", where);
sysRoleRDao.updateByHqlWhere(where.toString(), "roleStatusId", status);
}
@Override
public void deleteSysRoleById(String id) {
LOGGER.info("系统角色 SYS_ROLE Key:{}", id);
sysRoleRDao.deleteById(Long.parseLong(id));
}
@Override
public SysRole insertSysRole(SysRole sysRole) {
LOGGER.info("系统角色 SYS_ROLE :{}", sysRole);
return sysRoleRDao.insert(sysRole);
}
@Override
public void refreshSysRoleRef(String roleId,String[] ids,SessionUser user) {
LOGGER.info("系统角色 SYS_ROLE :{}", roleId);
LOGGER.info("系统角色 List<SysMenu> :{}", ids);
SysRole role = sysRoleRDao.getById(Long.parseLong(roleId));
if(role != null){
String where = CoreHqlPack.packHqlIds("id", ids);
List<SysMenu> list = sysMenuRDao.findByHqlWhere(where);
// 删除角色权限关系
refRoleMenuRDao.deleteByProperties("roleId",role.getId());
if(list != null && list.size() > 0){
List<RefRoleMenu> refs = new ArrayList<>(list.size());
for (SysMenu menu : list) {
RefRoleMenu ref = new RefRoleMenu(menu.getId(), menu.getName(), role.getId(), role.getName());
ConvertBean.modelInitialize(ref, user);
refs.add(ref);
}
// 插入角色权限关系
refRoleMenuRDao.saveAll(refs);
}
}else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("角色信息不存在")
.setErrorSolution("请重新输入")
.build();
}
}
@Override
public void refreshBatchSysRoleRef(String[] roleIds, String[] ids,SessionUser user) {
LOGGER.info("系统角色 String[] :{}", roleIds);
LOGGER.info("系统角色 List<SysMenu> :{}", ids);
String roleWhere = CoreHqlPack.packHqlIds("id", ids);
List<SysRole> roleList = sysRoleRDao.findByHql(roleWhere);
if(roleList != null && roleList.size() > 0){
String menuWhere = CoreHqlPack.packHqlIds("id", ids);
List<SysMenu> list = sysMenuRDao.findByHqlWhere(menuWhere);
// 封装需要删除的IDS
Long[] rids = new Long[roleList.size()];
for (int i = 0; i < roleList.size(); i++) {
rids[i] = roleList.get(i).getId();
}
// 删除角色权限关系
refRoleMenuRDao.deleteByIds(rids);
// 插入角色权限关系
if(list != null && list.size() > 0){
List<RefRoleMenu> refs = new ArrayList<>(list.size());
for (SysMenu menu : list) {
for (SysRole role : roleList) {
RefRoleMenu ref = new RefRoleMenu(menu.getId(), menu.getName(), role.getId(), role.getName());
ConvertBean.modelInitialize(ref, user);
refs.add(ref);
}
}
// 插入角色权限关系
refRoleMenuRDao.saveAll(refs);
}
}else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode())
.setErrorDetail("角色信息不存在")
.setErrorSolution("请重新输入")
.build();
}
}
@Override
public List<RefRoleMenu> findRefRoleMenuByRoleId(String roleId) {
LOGGER.info("系统角色权限关系 RefRoleMenu find By RoleId");
return refRoleMenuRDao.findByProperty("roleId",roleId);
}
@Override
public List<SysRole> findSysRoleAll() {
LOGGER.info("系统角色 SYS_ROLE find All");
return sysRoleRDao.findAll();
}
@Override
public SysRole getSysRoleById(String id) {
LOGGER.info("系统角色 SYS_ROLE find id:{}", id);
return sysRoleRDao.getOne(Long.parseLong(id));
}
@Override
public ListPager<SysRole> querySysRole(SysRole role, Pager pager) {
LOGGER.info("系统角色 SysRole find role :{} page :{}", role, pager);
if (role == null) {
//不传入实体对象,查询所有
int count = sysRoleRDao.listCount();
pager = PagerHelper.getPager(pager, count);
return new ListPager(sysRoleRDao.listPager(pager), pager);
} else {
//生成hql查询语句
String hqlPack = CoreHqlPack.packHqlSysRole(role);
pager = PagerHelper.getPager(pager, sysRoleRDao.findByHqlWhereCount(hqlPack));
return new ListPager(sysRoleRDao.findByHqlWherePage(hqlPack + role.orderBy(), pager), pager);
}
}
}

@ -1,102 +0,0 @@
package cn.estsh.i3plus.core.apiservice.serviceimpl.busi;
import cn.estsh.i3plus.core.api.iservice.busi.ISysRoleService;
import cn.estsh.i3plus.pojo.base.bean.ListPager;
import cn.estsh.i3plus.pojo.base.common.Pager;
import cn.estsh.i3plus.pojo.base.common.PagerHelper;
import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.tool.HqlPack;
import cn.estsh.i3plus.pojo.platform.bean.SessionUser;
import cn.estsh.i3plus.pojo.platform.bean.SysRole;
import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository;
import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack;
import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder;
import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
/**
* @Description :
* @Reference :
* @Author : wei.peng
* @Date : 2018-10-22 16:58:43.779
* @Modify :
**/
@Service
public class SysRoleServiceImpl implements ISysRoleService {
public static final Logger LOGGER = LoggerFactory.getLogger(SysRoleServiceImpl.class);
@Autowired
private SysRoleRepository sysRoleRDao;
@Override
public void updateSysRole(SysRole sysRole) {
LOGGER.info("系统角色 SYS_ROLE :{}", sysRole);
sysRoleRDao.update(sysRole);
}
@Override
public void updateSysRoleStatus(String id, int status, SessionUser user) {
LOGGER.info("系统角色 SYS_MENU id:{} status:{} user:{}", id,status,user);
SysRole role = sysRoleRDao.getById(Long.parseLong(id));
role.setRoleStatusId(status);
role.setModifyUser(user.getUserName());
sysRoleRDao.update(role);
}
@Override
public void updateSysRoleStatusByIds(String[] ids, int status, SessionUser user) {
LOGGER.info("系统功能 SYS_MENU ids:{} status:{} user:{}", ids, status, user);
StringBuffer where = new StringBuffer();
HqlPack.getInPack(String.join(",", ids), "id", where);
sysRoleRDao.updateByHqlWhere(where.toString(), "roleStatusId", status);
}
@Override
public void deleteSysRoleById(String id) {
LOGGER.info("系统角色 SYS_ROLE Key:{}", id);
sysRoleRDao.deleteById(Long.parseLong(id));
}
@Override
public SysRole insertSysRole(SysRole sysRole) {
LOGGER.info("系统角色 SYS_ROLE :{}", sysRole);
return sysRoleRDao.insert(sysRole);
}
@Override
public List<SysRole> findSysRoleAll() {
LOGGER.info("系统角色 SYS_ROLE find All");
return sysRoleRDao.findAll();
}
@Override
public SysRole getSysRoleById(String id) {
LOGGER.info("系统角色 SYS_ROLE find id:{}", id);
return sysRoleRDao.getOne(Long.parseLong(id));
}
@Override
public ListPager<SysRole> querySysRole(SysRole role, Pager pager) {
LOGGER.info("系统角色 SysRole find role :{} page :{}", role, pager);
if (role == null) {
//不传入实体对象,查询所有
int count = sysRoleRDao.listCount();
pager = PagerHelper.getPager(pager, count);
return new ListPager(sysRoleRDao.listPager(pager), pager);
} else {
//生成hql查询语句
String hqlPack = CoreHqlPack.packHqlSysRole(role);
pager = PagerHelper.getPager(pager, sysRoleRDao.findByHqlWhereCount(hqlPack));
return new ListPager(sysRoleRDao.findByHqlWherePage(hqlPack + role.orderBy(), pager), pager);
}
}
}

@ -31,9 +31,9 @@ import java.util.List;
* @Modify :
**/
@Service
public class SysUserServiceImpl implements ISysUserService {
public class SysUserService implements ISysUserService {
public static final Logger LOGGER = LoggerFactory.getLogger(SysUserServiceImpl.class);
public static final Logger LOGGER = LoggerFactory.getLogger(SysUserService.class);
@Autowired
private SysUserRepository sysUserRDao;
@ -157,7 +157,7 @@ public class SysUserServiceImpl implements ISysUserService {
return user;
} else {
throw ImppExceptionBuilder.newInstance()
.setSystemID(CommonEnumUtil.SOFT_TYPE.IMPP.getCode())
.setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode())
.setErrorCode(ImppExceptionEnum.IO_EXCEPTION.getCode())
.setErrorDetail("用户名已存在")
.setErrorSolution("请重新输入用户名")

@ -100,7 +100,7 @@ public class ToolTypeService implements IToolTypeService {
.setErrorSolution("请重新操作")
.build();
}else {
long[] array = new long[ids.length];
Long[] array = new Long[ids.length];
for (int i = 0; i < ids.length; i++) {
array[i] = Long.parseLong(ids[i]);
}

Loading…
Cancel
Save