package doumeemes.biz.system.impl; import doumeemes.biz.system.SystemDataPermissionBiz; import doumeemes.core.constants.DataPermissionConstants; import doumeemes.core.constants.ResponseStatus; import doumeemes.core.exception.BusinessException; import doumeemes.core.model.LoginUserInfo; import doumeemes.core.utils.Constants; import doumeemes.dao.system.model.SystemDataPermission; import doumeemes.dao.system.model.SystemRole; import doumeemes.service.system.SystemDataPermissionService; import doumeemes.service.system.SystemRoleService; import org.apache.shiro.SecurityUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @Service public class SystemDataPermissionBizImpl implements SystemDataPermissionBiz { @Autowired private SystemDataPermissionService systemDataPermissionService; @Autowired private SystemRoleService systemRoleService; @Override public Integer create(SystemDataPermission systemDataPermission) { //验证角色是否正确 LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); SystemRole role = new SystemRole(); role.setDeleted(Boolean.FALSE); role.setType(Constants.ROLETYPE.plat); if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ role.setType(Constants.ROLETYPE.com); role.setCompanyId(user.getCompany().getId()); } if(systemRoleService.findOne(role) == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,权限信息不存在!"); } // 验证是否已存在配置 this.check(systemDataPermission, "该业务模块与角色存在有效的数据权限,请勿重复配置"); // 清空自定义数据 if ( DataPermissionConstants.Type.DEPARTMENT_CUSTOM.getCode() != systemDataPermission.getType() && DataPermissionConstants.Type.POSITION_CUSTOM.getCode() != systemDataPermission.getType() ) { systemDataPermission.setCustomData(""); } return systemDataPermissionService.create(systemDataPermission); } @Override public void update(SystemDataPermission systemDataPermission) { //验证角色是否正确 LoginUserInfo user = (LoginUserInfo) SecurityUtils.getSubject().getPrincipal(); SystemRole role = new SystemRole(); role.setDeleted(Boolean.FALSE); role.setType(Constants.ROLETYPE.plat); if(Constants.equalsInteger(user.getType(),Constants.USERTYPE.COM)){ role.setType(Constants.ROLETYPE.com); role.setCompanyId(user.getCompany().getId()); } if(systemRoleService.findOne(role) == null){ throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), "对不起,权限信息不存在!"); } // 清空自定义数据 if ( DataPermissionConstants.Type.DEPARTMENT_CUSTOM.getCode() != systemDataPermission.getType() && DataPermissionConstants.Type.POSITION_CUSTOM.getCode() != systemDataPermission.getType() ) { systemDataPermission.setCustomData(""); } systemDataPermissionService.updateById(systemDataPermission); } @Override public void updateStatus(SystemDataPermission systemDataPermission) { if (!systemDataPermission.getDisabled()) { SystemDataPermission dbPermission = systemDataPermissionService.findById(systemDataPermission.getId()); if (dbPermission == null) { throw new BusinessException(ResponseStatus.DATA_EMPTY.getCode(), ResponseStatus.DATA_EMPTY.getMessage()); } // 验证是否已存在配置 this.check(dbPermission, "该业务模块与角色存在有效的数据权限,请先禁用后再尝试启动此数据权限"); } systemDataPermissionService.updateById(systemDataPermission); } private void check (SystemDataPermission systemDataPermission, String message) { // 验证是否已存在配置 SystemDataPermission queryDto = new SystemDataPermission(); queryDto.setRoleId(systemDataPermission.getRoleId()); queryDto.setBusinessCode(systemDataPermission.getBusinessCode()); queryDto.setDisabled(Boolean.FALSE); queryDto.setDeleted(Boolean.FALSE); if (systemDataPermissionService.count(queryDto) > 0) { throw new BusinessException(ResponseStatus.DATA_EXISTS.getCode(), message); } } }