add 新增mock数据工具类

This commit is contained in:
AprilWind 2025-05-12 17:06:43 +08:00
parent 553fca28a2
commit 212fb6978b

View File

@ -0,0 +1,87 @@
package utils;
import cn.hutool.core.io.IoUtil;
import cn.hutool.core.io.resource.ResourceUtil;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.dromara.common.json.utils.JsonUtils;
import org.dromara.common.mybatis.core.page.TableDataInfo;
import java.io.InputStream;
import java.util.List;
/**
* mock数据工具类
* <p>
* 可用于开发测试阶段模拟接口数据
* </p>
*
* @author AprilWind
*/
public class MockDataUtils {
/**
* 读取 resources/mock 目录下的 JSON 文件内容
*
* @param fileName 文件名
* @return JSON 字符串
*/
public static String readJson(String fileName) {
InputStream is = ResourceUtil.getStream("mock/" + fileName);
return IoUtil.readUtf8(is);
}
/**
* 解析 mock JSON 文件为单个对象
*
* @param fileName 文件名
* @param clazz 要解析的目标类型
* @param <T> 类型泛型
* @return 对象实例
*/
public static <T> T parseObject(String fileName, Class<T> clazz) {
String json = readJson(fileName);
return JsonUtils.parseObject(json, clazz);
}
/**
* 解析 mock JSON 文件为对象列表
*
* @param fileName 文件名
* @param clazz 要解析的目标类型
* @param <T> 类型泛型
* @return 对象列表
*/
public static <T> List<T> parseList(String fileName, Class<T> clazz) {
String json = readJson(fileName);
return JsonUtils.parseArray(json, clazz);
}
/**
* 解析 mock JSON 文件为分页数据
*
* @param fileName 文件名
* @param clazz 要解析的目标类型
* @param page 分页参数IPage实现类
* @param <T> 类型泛型
* @return 模拟分页结果
*/
public static <T> TableDataInfo<T> parsePage(String fileName, Class<T> clazz, IPage<T> page) {
List<T> list = parseList(fileName, clazz);
return TableDataInfo.build(list, page);
}
/**
* 判断 mock 文件是否存在
*
* @param fileName 文件名
* @return true: 文件存在false: 不存在
*/
public static boolean exists(String fileName) {
try {
return ResourceUtil.getStream("mock/" + fileName) != null;
} catch (Exception e) {
return false;
}
}
}