//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<T> implements SysUserRoleService {
//
//    @Autowired
//    private SysUserRoleMapper sysUserRoleMapper;
//
//    // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}]
//    public static List<LinkedHashMap<String, Object>> convertArrayToList(String[] array) {
//        List<LinkedHashMap<String, Object>> resultList = new ArrayList<>();
//        for (int i = 0; i < array.length; i++) {
//            Map<String, Object> map = new HashMap<>();
//            map.put("id", array[i]);
//            resultList.add(new LinkedHashMap<>(map));
//        }
//        return resultList;
//    }
//
//    /**
//     * 查询 系统用户角色列表
//     */
//    @Override
//    public Map<String, Object> queryUserRole(Integer pageNum, Integer pageSize, SysUserRoleDTO sysUserRoleDTO) {
//        // 分页查询
//        if (pageNum != null && pageSize != null) {
//            PageHelper.startPage(pageNum, pageSize);
//            PageHelper.getLocalPage().setPageSizeZero(true);
//        }
//        // 分页输出 (自定义)
//        List<Map<String, Object>> list = sysUserRoleMapper.queryUserRoleList(sysUserRoleDTO);
//        PageInfoResult pageInfoResult = new PageInfoResult(list);
//        return pageInfoResult.toMap();
//    }
//
//    /**
//     * 查询 系统用户角色详情 (由于使用 COUNT 会导致 @QueryNullCheck 检查记录是否存在失效，所以分两次查询)
//     */
//    @Override
//    public Map<String, Object> queryUserRoleDetail(Long role_id) {
//        Map<String, Object> role = sysUserRoleMapper.queryUserRoleDetail(role_id);
//        if (role != null) {
//            Map<String, Object> user_count = sysUserRoleMapper.queryUserCountByRoleId(role_id);
//            role.put("user_count", user_count.get("user_count"));
//        }
//        return role;
//    }
//
//    /**
//     * 创建 系统用户角色
//     */
//    @Override
//    @Transactional
//    public Map<String, Object> insertUserRole(SysUserRoleDTO sysUserRoleDTO) {
//
//        // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}]
//        List<String> modulesList = sysUserRoleDTO.getModules();
//        String[] modulesArray = modulesList.toArray(new String[0]);
//        List<LinkedHashMap<String, Object>> resultList = convertArrayToList(modulesArray);
//        sysUserRoleDTO.setModules(resultList);
//
//        // 创建角色
//        sysUserRoleMapper.insertUserRole(sysUserRoleDTO);
//        // 创建角色与权限关系
//        sysUserRoleMapper.insertUserRolePermissionRelation(sysUserRoleDTO);
//        return Map.of("role_id", sysUserRoleDTO.getId());
//    }
//
//    /**
//     * 更新 系统用户角色
//     */
//    @Override
//    @Transactional
//    public Map<String, Object> updateUserRole(SysUserRoleDTO sysUserRoleDTO) {
//
//        // 将输入的数组转换为对象数组 [1,2] 转为 [{ id: "1"}, {id: "2"}]
//        List<String> modulesList = sysUserRoleDTO.getModules();
//        String[] modulesArray = modulesList.toArray(new String[0]);
//        List<LinkedHashMap<String, Object>> resultList = convertArrayToList(modulesArray);
//        sysUserRoleDTO.setModules(resultList);
//
//        // 更新角色
//        sysUserRoleMapper.updateUserRole(sysUserRoleDTO);
//        // 更新角色与权限关系 (需要先删除全部，再重新插入)
//        sysUserRoleMapper.updateUserRolePermissionRelation(sysUserRoleDTO);
//
//        return Map.of("role_id", sysUserRoleDTO.getRole_id());
//    }
//
//    /**
//     * 删除 系统用户角色 (物理删除)
//     */
//    @Override
//    @Transactional
//    public Map<String, Object> deleteUserRole(SysUserRoleDTO sysUserRoleDTO) {
//        sysUserRoleMapper.deleteUserRole(sysUserRoleDTO);
//        return Map.of("role_id", sysUserRoleDTO.getRole_id());
//    }
//
//}
