| package com.doumee.biz.system.impl; | 
|   | 
| import com.doumee.biz.system.SystemRoleBiz; | 
| import com.doumee.core.constants.ResponseStatus; | 
| import com.doumee.core.exception.BusinessException; | 
| import com.doumee.dao.system.dto.CreateRoleMenuDTO; | 
| import com.doumee.dao.system.dto.CreateRolePermissionDTO; | 
| 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.SystemRoleMenuService; | 
| import com.doumee.service.system.SystemRolePermissionService; | 
| import com.doumee.service.system.SystemRoleService; | 
| 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; | 
|   | 
|     @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<Integer> 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); | 
|             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); | 
|             systemRoleMenuService.create(newRoleMenu); | 
|         } | 
|     } | 
| } |