//package com.backendsys.service.System;
//
//import com.backendsys.modules.common.config.redis.utils.RedisUtil;
//import com.backendsys.entity.System.SysMenuDTO;
//import com.backendsys.mapper.System.SysMenuMapper;
//import com.fasterxml.jackson.core.JsonProcessingException;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.data.redis.core.RedisTemplate;
//import org.springframework.stereotype.Service;
//import org.springframework.transaction.annotation.Transactional;
//
//import java.util.List;
//import java.util.Map;
//
//@Service
//public class SysMenuServiceImpl implements SysMenuService {
//
//    @Autowired
//    private RedisTemplate redisTemplate;
//
//    @Autowired
//    private RedisUtil redisUtil;
//
//    @Autowired
//    private SysMenuMapper sysMenuMapper;
//
//    /**
//     * 查询 列表
//     */
//    @Override
//    public List<Map<String, Object>> queryMenu(SysMenuDTO sysMenuDTO) throws JsonProcessingException {
//
////        // 判断 Redis 是否存在缓存
////        List<Map<String, Object>> menu = null;
////        String catchSysMenu = redisCache.getCacheObject("catchSysMenu");
////        // 【不存在】
////        if (catchSysMenu == null) {
////            // 从数据库获取
////            menu = sysMenuMapper.queryMenuList(sysMenuDTO);
////            // 使用 Jackson 库将 menu 转换为 JSON 字符串
////            ObjectMapper mapper = new ObjectMapper();
////            String jsonMenu = null;
////            try {
////                jsonMenu = mapper.writeValueAsString(menu);
////            } catch (Exception e) {
////                e.printStackTrace();
////            }
////            redisCache.setCacheObject("catchSysMenu", jsonMenu);
////        } else {
////            // 【存在】
////            try {
////                ObjectMapper objectMapper = new ObjectMapper();
////                menu = objectMapper.readValue(catchSysMenu, List.class);
////            } catch (Exception e) {
////                e.printStackTrace();
////            }
////        }
//
//        // ?status= 会区分不清楚
//        List<Map<String, Object>> menu = sysMenuMapper.queryMenuList(sysMenuDTO);
//
//        // 将 item.meta 从 string 转为 object 类型
//        // ObjectMapper objectMapper = new ObjectMapper();
//        // for (Map<String, Object> item : menu) {
//        //     String metaStr = (String) item.get("meta");
//        //     Map<String, Object> metaObj = objectMapper.readValue(metaStr, Map.class);
//        //     item.put("meta", metaObj);
//        // }
//
//        return menu;
//    }
//
//    /**
//     * 查询 详情
//     */
//    @Override
//    public Map<String, Object> queryMenuDetail(Long menu_id) {
//        return sysMenuMapper.queryMenuDetail(menu_id);
//    }
//
//    /**
//     * 创建
//     */
//    @Override
//    @Transactional
//    public Map<String, Object> insertMenu(SysMenuDTO sysMenuDTO) {
//        sysMenuMapper.insertMenu(sysMenuDTO);
//        // 删除缓存
//        redisUtil.delete("catchSysMenu");
//        //
//        return Map.of("menu_id", sysMenuDTO.getId());
//    }
//
//    /**
//     * 更新
//     */
//    @Override
//    @Transactional
//    public Map<String, Object> updateMenu(SysMenuDTO sysMenuDTO) {
//        sysMenuMapper.updateMenu(sysMenuDTO);
//        // 删除缓存
//        redisUtil.delete("catchSysMenu");
//        //
//        return Map.of("menu_id", sysMenuDTO.getMenu_id());
//    }
//
//    /**
//     * 删除
//     */
//    @Override
//    @Transactional
//    public Map<String, Object> deleteMenu(SysMenuDTO sysMenuDTO) {
//        sysMenuMapper.deleteMenu(sysMenuDTO);
//        // 删除缓存
//        redisUtil.delete("catchSysMenu");
//        //
//        return Map.of("menu_id", sysMenuDTO.getMenu_id());
//    }
//
//}
