package doumeemes.biz.system.impl; 
 | 
  
 | 
import doumeemes.biz.system.SystemRoleBiz; 
 | 
import doumeemes.core.exception.BusinessException; 
 | 
import doumeemes.core.constants.ResponseStatus; 
 | 
import doumeemes.core.model.LoginUserInfo; 
 | 
import doumeemes.core.utils.Constants; 
 | 
import doumeemes.core.utils.DateUtil; 
 | 
import doumeemes.dao.system.SystemRoleMapper; 
 | 
import doumeemes.dao.system.dto.CreateRoleMenuDTO; 
 | 
import doumeemes.dao.system.dto.CreateRolePermissionDTO; 
 | 
import doumeemes.dao.system.model.*; 
 | 
import doumeemes.service.system.SystemDataPermissionService; 
 | 
import doumeemes.service.system.SystemRoleMenuService; 
 | 
import doumeemes.service.system.SystemRolePermissionService; 
 | 
import doumeemes.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.ArrayList; 
 | 
import java.util.Date; 
 | 
import java.util.List; 
 | 
  
 | 
@Service 
 | 
public class SystemRoleBizImpl implements SystemRoleBiz { 
 | 
  
 | 
    @Autowired 
 | 
    private SystemRoleService systemRoleService; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemRolePermissionService systemRolePermissionService; 
 | 
    @Autowired 
 | 
    private SystemDataPermissionService systemDataPermissionService; 
 | 
    @Autowired 
 | 
    private SystemRoleMapper systemRoleMapper; 
 | 
  
 | 
    @Autowired 
 | 
    private SystemRoleMenuService systemRoleMenuService; 
 | 
  
 | 
    @Override 
 | 
    public Integer create(SystemRole systemRole) { 
 | 
        // 验证用户名 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        systemRole.setDeleted(Boolean.FALSE); 
 | 
        if(systemRole.getType() ==null){ 
 | 
            systemRole.setType(Constants.ROLETYPE.plat); 
 | 
        } 
 | 
        systemRole.setCompanyId(null); 
 | 
        if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ 
 | 
            systemRole.setType(Constants.ROLETYPE.com); 
 | 
            systemRole.setCompanyId(user.getCompany().getId()); 
 | 
        } 
 | 
        SystemRole queryDto = new SystemRole(); 
 | 
        queryDto.setCode(systemRole.getCode()); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        queryDto.setType(systemRole.getType()); 
 | 
        queryDto.setCompanyId(systemRole.getCompanyId()); 
 | 
        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) { 
 | 
        // 验证角色编码 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        systemRole.setCompanyId(null); 
 | 
        SystemRole queryDto = new SystemRole(); 
 | 
        queryDto.setCode(systemRole.getCode()); 
 | 
        queryDto.setDeleted(Boolean.FALSE); 
 | 
        queryDto.setCompanyId(systemRole.getCompanyId()); 
 | 
        queryDto.setType(systemRole.getType()); 
 | 
        if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ 
 | 
            systemRole.setType(Constants.ROLETYPE.com); 
 | 
            queryDto.setCompanyId(systemRole.getCompanyId()); 
 | 
        } 
 | 
        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<Integer> ids) { 
 | 
        if (CollectionUtils.isEmpty(ids)) { 
 | 
            return; 
 | 
        } 
 | 
        for (Integer id : ids) { 
 | 
            this.deleteById(id); 
 | 
        } 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void createRolePermission(CreateRolePermissionDTO dto) { 
 | 
        // 删除关联权限 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        SystemRolePermission deleteDto = new SystemRolePermission(); 
 | 
        deleteDto.setRoleId(dto.getRoleId()); 
 | 
        if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ 
 | 
            deleteDto.setCompanyId(user.getCompany().getId()); 
 | 
        } 
 | 
        systemRolePermissionService.delete(deleteDto); 
 | 
        List<SystemRolePermission> list = new ArrayList<>(); 
 | 
        // 新增新的权限 
 | 
        for (Integer permissionId : dto.getPermissionIds()) { 
 | 
            SystemRolePermission newRolePermission = new SystemRolePermission(); 
 | 
            newRolePermission.setRoleId(dto.getRoleId()); 
 | 
            newRolePermission.setCreateTime(new Date()); 
 | 
            newRolePermission.setDeleted(Boolean.FALSE); 
 | 
            newRolePermission.setStatus(Constants.ZERO); 
 | 
            newRolePermission.setPermissionId(permissionId); 
 | 
            list.add(newRolePermission); 
 | 
//            systemRolePermissionService.create(newRolePermission); 
 | 
        } 
 | 
        if(list.size()>0) 
 | 
            systemRoleMapper.insertRolePermissionBatch(list); 
 | 
    } 
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void createRoleDataPermission(SystemDataPermission dto) { 
 | 
        LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); 
 | 
        if(dto.getRoleId()==null || dto.getType()==null ){ 
 | 
            throw new BusinessException(ResponseStatus.BAD_REQUEST.getCode(), "对不起,请求参数不正确!"); 
 | 
        } 
 | 
        // 删除关联权限 
 | 
        SystemDataPermission deleteDto = new SystemDataPermission(); 
 | 
        deleteDto.setRoleId(dto.getRoleId()); 
 | 
        if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ 
 | 
            deleteDto.setCompanyId(user.getCompany().getId()); 
 | 
        } 
 | 
        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); 
 | 
    } 
 | 
  
 | 
    @Override 
 | 
    @Transactional 
 | 
    public void createRoleMenu(CreateRoleMenuDTO dto) { 
 | 
        // 删除关联权限 
 | 
        SystemRoleMenu deleteDto = new SystemRoleMenu(); 
 | 
        deleteDto.setRoleId(dto.getRoleId()); 
 | 
        deleteDto.setType(dto.getType()); 
 | 
        deleteDto.setDeleted(Boolean.TRUE); 
 | 
        systemRoleMenuService.delete(deleteDto); 
 | 
        // 新增新的权限 
 | 
        for (Integer menuId : dto.getMenuIds()) { 
 | 
            SystemRoleMenu newRoleMenu = new SystemRoleMenu(); 
 | 
            newRoleMenu.setRoleId(dto.getRoleId()); 
 | 
            newRoleMenu.setMenuId(menuId); 
 | 
            systemRoleMenuService.create(newRoleMenu); 
 | 
        } 
 | 
    } 
 | 
} 
 |