123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- package cn.iocoder.dashboard.util;
- import cn.hutool.core.util.ArrayUtil;
- import cn.hutool.core.util.RandomUtil;
- import cn.iocoder.dashboard.common.enums.CommonStatusEnum;
- import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
- import uk.co.jemos.podam.api.PodamFactory;
- import uk.co.jemos.podam.api.PodamFactoryImpl;
- import java.lang.reflect.Type;
- import java.util.*;
- import java.util.function.Consumer;
- import java.util.stream.Collectors;
- import java.util.stream.Stream;
- /**
- * 随机工具类
- *
- * @author 芋道源码
- */
- public class RandomUtils {
- private static final int RANDOM_STRING_LENGTH = 10;
- private static final int RANDOM_DATE_MAX = 30;
- private static final int RANDOM_COLLECTION_LENGTH = 5;
- private static final PodamFactory PODAM_FACTORY = new PodamFactoryImpl();
- static {
- // 字符串
- PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(String.class,
- (dataProviderStrategy, attributeMetadata, map) -> randomString());
- // Boolean
- PODAM_FACTORY.getStrategy().addOrReplaceTypeManufacturer(Boolean.class, (dataProviderStrategy, attributeMetadata, map) -> {
- // 如果是 deleted 的字段,返回非删除
- if (attributeMetadata.getAttributeName().equals("deleted")) {
- return false;
- }
- return RandomUtil.randomBoolean();
- });
- }
- public static String randomString() {
- return RandomUtil.randomString(RANDOM_STRING_LENGTH);
- }
- public static Long randomLongId() {
- return RandomUtil.randomLong(0, Long.MAX_VALUE);
- }
- public static Integer randomInteger() {
- return RandomUtil.randomInt(0, Integer.MAX_VALUE);
- }
- public static Date randomDate() {
- return RandomUtil.randomDay(0, RANDOM_DATE_MAX);
- }
- public static Short randomShort() {
- return (short) RandomUtil.randomInt(0, Short.MAX_VALUE);
- }
- public static <T> Set<T> randomSet(Class<T> clazz) {
- return Stream.iterate(0, i -> i).limit(RandomUtil.randomInt(0, RANDOM_DATE_MAX))
- .map(i -> randomPojo(clazz)).collect(Collectors.toSet());
- }
- public static Integer randomCommonStatus() {
- return RandomUtil.randomEle(CommonStatusEnum.values()).getStatus();
- }
- @SafeVarargs
- public static SysUserDO randomUserDO(Consumer<SysUserDO>... consumers) {
- return randomPojo(SysUserDO.class, consumers);
- }
- @SafeVarargs
- public static <T> T randomPojo(Class<T> clazz, Consumer<T>... consumers) {
- T pojo = PODAM_FACTORY.manufacturePojo(clazz);
- // 非空时,回调逻辑。通过它,可以实现 Pojo 的进一步处理
- if (ArrayUtil.isNotEmpty(consumers)) {
- Arrays.stream(consumers).forEach(consumer -> consumer.accept(pojo));
- }
- return pojo;
- }
- @SafeVarargs
- public static <T> T randomPojo(Class<T> clazz, Type type, Consumer<T>... consumers) {
- T pojo = PODAM_FACTORY.manufacturePojo(clazz, type);
- // 非空时,回调逻辑。通过它,可以实现 Pojo 的进一步处理
- if (ArrayUtil.isNotEmpty(consumers)) {
- Arrays.stream(consumers).forEach(consumer -> consumer.accept(pojo));
- }
- return pojo;
- }
- @SafeVarargs
- public static <T> List<T> randomPojoList(Class<T> clazz, Consumer<T>... consumers) {
- int size = RandomUtil.randomInt(0, RANDOM_COLLECTION_LENGTH);
- return Stream.iterate(0, i -> i).limit(size).map(o -> randomPojo(clazz, consumers))
- .collect(Collectors.toList());
- }
- }
|