package com.doumee.biz.system.impl; import com.doumee.biz.system.SystemRoleBiz; import com.doumee.core.exception.BusinessException; import com.doumee.core.constants.ResponseStatus; import com.doumee.core.model.LoginUserInfo; import com.doumee.core.utils.Constants; import com.doumee.core.utils.DateUtil; import com.doumee.dao.system.dto.CreateRoleMenuDTO; import com.doumee.dao.system.dto.CreateRolePermissionDTO; import com.doumee.dao.system.model.SystemDataPermission; import com.doumee.dao.system.model.SystemRole; import com.doumee.dao.system.model.SystemRoleMenu; import com.doumee.dao.system.model.SystemRolePermission; import com.doumee.service.system.SystemDataPermissionService; import com.doumee.service.system.SystemRoleMenuService; import com.doumee.service.system.SystemRolePermissionService; import com.doumee.service.system.SystemRoleService; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.List; @Service public class SystemRoleBizImpl implements SystemRoleBiz { @Autowired private SystemRoleService systemRoleService; @Autowired private SystemRolePermissionService systemRolePermissionService; @Autowired private SystemRoleMenuService systemRoleMenuService; @Autowired private SystemDataPermissionService systemDataPermissionService; @Override public Integer create(SystemRole systemRole) { // 验证用户名 SystemRole queryDto = new SystemRole(); queryDto.setCode(systemRole.getCode()); queryDto.setDeleted(Boolean.FALSE); SystemRole role = systemRoleService.findOne(queryDto); if (role != null) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "角色编码已存在"); } return systemRoleService.create(systemRole); } @Override public void updateById(SystemRole systemRole) { // 验证角色编码 SystemRole queryDto = new SystemRole(); queryDto.setCode(systemRole.getCode()); queryDto.setDeleted(Boolean.FALSE); SystemRole role = systemRoleService.findOne(queryDto); if (role != null && !role.getId().equals(systemRole.getId())) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), "角色编号已存在"); } systemRoleService.updateById(systemRole); } @Override public void deleteById(Integer id) { SystemRole role = systemRoleService.findById(id); if (role == null) { return; } if (role.getFixed()) { throw new BusinessException(ResponseStatus.NOT_ALLOWED.getCode(), "请勿删除" + role.getName() + ",因为这是固定角色"); } systemRoleService.deleteById(id); } @Override @Transactional public void deleteByIdInBatch(List ids) { if (CollectionUtils.isEmpty(ids)) { return; } for (Integer id : ids) { this.deleteById(id); } } @Override @Transactional public void createRolePermission(CreateRolePermissionDTO dto) { // 删除关联权限 SystemRolePermission deleteDto = new SystemRolePermission(); deleteDto.setRoleId(dto.getRoleId()); systemRolePermissionService.delete(deleteDto); // 新增新的权限 for (Integer permissionId : dto.getPermissionIds()) { SystemRolePermission newRolePermission = new SystemRolePermission(); newRolePermission.setRoleId(dto.getRoleId()); newRolePermission.setPermissionId(permissionId); newRolePermission.setCreateUser(dto.getCreateUser()); systemRolePermissionService.create(newRolePermission); } } @Override @Transactional public void createRoleMenu(CreateRoleMenuDTO dto) { // 删除关联权限 SystemRoleMenu deleteDto = new SystemRoleMenu(); deleteDto.setRoleId(dto.getRoleId()); systemRoleMenuService.delete(deleteDto); // 新增新的权限 for (Integer menuId : dto.getMenuIds()) { SystemRoleMenu newRoleMenu = new SystemRoleMenu(); newRoleMenu.setRoleId(dto.getRoleId()); newRoleMenu.setMenuId(menuId); newRoleMenu.setCreateUser(dto.getCreateUser()); systemRoleMenuService.create(newRoleMenu); } } @Override @Transactional public void createRoleDataPermission(SystemDataPermission dto) { LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); if(user ==null){ user = dto.getLoginUserInfo(); } if(dto.getRoleId()==null || dto.getType()==null ){ throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请求参数不正确!"); } // 删除关联权限 SystemDataPermission deleteDto = new SystemDataPermission(); deleteDto.setRoleId(dto.getRoleId()); systemDataPermissionService.delete(deleteDto); // 新增新的权限 dto.setDeleted(Boolean.FALSE); dto.setBusinessCode("DEPARTMENT"); dto.setCreateTime(DateUtil.getCurrentDate()); dto.setCreateUser(user.getId()); dto.setDisabled(Boolean.FALSE); systemDataPermissionService.create(dto); } }