package com.rongyichuang.role.service; import com.rongyichuang.role.dto.response.RoleResponse; import com.rongyichuang.role.entity.Role; import com.rongyichuang.role.repository.RoleRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.time.format.DateTimeFormatter; import java.util.List; import java.util.Optional; import java.util.stream.Collectors; @Service public class RoleService { @Autowired private RoleRepository roleRepository; private static final DateTimeFormatter DATE_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"); /** * 获取所有启用状态的角色 */ public List getAllActiveRoles() { List roles = roleRepository.findAllActiveRoles(); return roles.stream() .map(this::convertToResponse) .collect(Collectors.toList()); } /** * 获取所有角色 */ public List getAllRoles() { List roles = roleRepository.findAll(); return roles.stream() .map(this::convertToResponse) .collect(Collectors.toList()); } /** * 根据ID获取角色 */ public Optional getRoleById(Long id) { Optional role = roleRepository.findById(id); return role.map(this::convertToResponse); } /** * 根据角色代码获取角色 */ public Optional getRoleByCode(String code) { Optional role = roleRepository.findByCode(code); return role.map(this::convertToResponse); } /** * 根据状态获取角色 */ public List getRolesByState(Integer state) { List roles = roleRepository.findByStateOrderById(state); return roles.stream() .map(this::convertToResponse) .collect(Collectors.toList()); } /** * 根据名称模糊查询角色 */ public List searchRolesByName(String name) { List roles = roleRepository.findByNameContaining(name); return roles.stream() .map(this::convertToResponse) .collect(Collectors.toList()); } /** * 将Role实体转换为RoleResponse */ private RoleResponse convertToResponse(Role role) { RoleResponse response = new RoleResponse(); response.setId(role.getId()); response.setCode(role.getCode()); response.setName(role.getName()); response.setDescription(role.getDescription()); response.setState(role.getState()); if (role.getCreateTime() != null) { response.setCreateTime(role.getCreateTime().format(DATE_FORMATTER)); } if (role.getUpdateTime() != null) { response.setUpdateTime(role.getUpdateTime().format(DATE_FORMATTER)); } return response; } }