package com.backendsys.service.System; import com.backendsys.entity.System.SysUserRoleDTO; import com.backendsys.mapper.System.SysUserRoleMapper; import com.backendsys.utils.response.PageInfoResult; import com.github.pagehelper.PageHelper; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; @Service public class SysUserRoleServiceImpl implements SysUserRoleService { @Autowired private SysUserRoleMapper sysUserRoleMapper; // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}] public static List> convertArrayToList(String[] array) { List> resultList = new ArrayList<>(); for (int i = 0; i < array.length; i++) { Map map = new HashMap<>(); map.put("id", array[i]); resultList.add(new LinkedHashMap<>(map)); } return resultList; } /** * 查询 系统用户角色列表 */ @Override public Map queryUserRole(Integer pageNum, Integer pageSize, SysUserRoleDTO sysUserRoleDTO) { // 分页查询 if (pageNum != null && pageSize != null) { PageHelper.startPage(pageNum, pageSize); PageHelper.getLocalPage().setPageSizeZero(true); } // 分页输出 (自定义) List> list = sysUserRoleMapper.queryUserRoleList(sysUserRoleDTO); PageInfoResult pageInfoResult = new PageInfoResult(list); return pageInfoResult.toMap(); } /** * 查询 系统用户角色详情 (由于使用 COUNT 会导致 @QueryNullCheck 检查记录是否存在失效,所以分两次查询) */ @Override public Map queryUserRoleDetail(Long role_id) { Map role = sysUserRoleMapper.queryUserRoleDetail(role_id); if (role != null) { Map user_count = sysUserRoleMapper.queryUserCountByRoleId(role_id); role.put("user_count", user_count.get("user_count")); } return role; } /** * 创建 系统用户角色 */ @Override @Transactional public Map insertUserRole(SysUserRoleDTO sysUserRoleDTO) { // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}] List modulesList = sysUserRoleDTO.getModules(); String[] modulesArray = modulesList.toArray(new String[0]); List> resultList = convertArrayToList(modulesArray); sysUserRoleDTO.setModules(resultList); // 创建角色 sysUserRoleMapper.insertUserRole(sysUserRoleDTO); // 创建角色与模块关系 sysUserRoleMapper.insertUserRoleModuleRelation(sysUserRoleDTO); return Map.of("role_id", sysUserRoleDTO.getId()); } /** * 更新 系统用户角色 */ @Override @Transactional public Map updateUserRole(SysUserRoleDTO sysUserRoleDTO) { // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}] List modulesList = sysUserRoleDTO.getModules(); String[] modulesArray = modulesList.toArray(new String[0]); List> resultList = convertArrayToList(modulesArray); sysUserRoleDTO.setModules(resultList); // 更新角色 sysUserRoleMapper.updateUserRole(sysUserRoleDTO); // 更新角色与模块关系 (需要先删除全部,再重新插入) sysUserRoleMapper.updateUserRoleModuleRelation(sysUserRoleDTO); return Map.of("role_id", sysUserRoleDTO.getRole_id()); } /** * 删除 系统用户角色 (物理删除) */ @Override @Transactional public Map deleteUserRole(SysUserRoleDTO sysUserRoleDTO) { sysUserRoleMapper.deleteUserRole(sysUserRoleDTO); return Map.of("role_id", sysUserRoleDTO.getRole_id()); } }