xiongzhu 4 anos atrás
pai
commit
4acaaf08e0

+ 36 - 4
src/main/java/com/izouma/nineth/service/AssetService.java

@@ -2,6 +2,7 @@ package com.izouma.nineth.service;
 
 import com.izouma.nineth.TokenHistory;
 import com.izouma.nineth.domain.*;
+import com.izouma.nineth.domain.Collection;
 import com.izouma.nineth.dto.PageQuery;
 import com.izouma.nineth.dto.UserHistory;
 import com.izouma.nineth.enums.AssetStatus;
@@ -28,10 +29,7 @@ import org.springframework.stereotype.Service;
 import java.math.BigDecimal;
 import java.time.LocalDateTime;
 import java.time.temporal.ChronoUnit;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Optional;
-import java.util.Set;
+import java.util.*;
 import java.util.concurrent.Future;
 import java.util.stream.Collectors;
 
@@ -373,4 +371,38 @@ public class AssetService {
             return userHistory;
         });
     }
+
+    public List<User> holdQuery(List<String> names, LocalDateTime startTime, LocalDateTime endTime) {
+        List<User> match = new ArrayList<>();
+        userRepo.findAll().stream().parallel().forEach(user -> {
+            List<Asset> assets = assetRepo.findByUserId(user.getId());
+            assets = assets.stream().filter(a -> names.stream().anyMatch(n -> n.equals(a.getName())))
+                    .collect(Collectors.toList());
+            if (assets.size() < 4) {
+                return;
+            }
+            assets = assets.stream().filter(a -> a.getCreatedAt().isBefore(startTime))
+                    .collect(Collectors.toList());
+            if (assets.size() < 4) {
+                return;
+            }
+            assets = assets.stream().filter(a -> {
+                        if (a.getStatus() != AssetStatus.GIFTED && a.getStatus() != AssetStatus.TRANSFERRED) {
+                            return true;
+                        } else {
+                            Asset a1 = assetRepo.findFirstByTokenIdAndCreatedAtAfterOrderByCreatedAt(a.getTokenId(), a.getCreatedAt());
+                            return a1 != null && a.getCreatedAt().isAfter(endTime);
+                        }
+                    })
+                    .collect(Collectors.toList());
+            boolean flag = true;
+            for (String name : names) {
+                flag = flag && assets.stream().anyMatch(a -> name.equals(a.getName()));
+            }
+            if (flag) {
+                match.add(user);
+            }
+        });
+        return match;
+    }
 }

+ 1 - 1
src/main/java/com/izouma/nineth/service/UserService.java

@@ -469,7 +469,7 @@ public class UserService {
             if (userRepo.findByPhoneAndDelFalse(phone).isPresent()) {
                 exist.add(phone);
             } else {
-                if (!Pattern.matches("^1[3-9]\\d{9}]$", phone)) {
+                if (!Pattern.matches("^1[3-9]\\d{9}$", phone)) {
                     err.add(phone);
                 } else {
                     try {

+ 36 - 0
src/main/java/com/izouma/nineth/utils/excel/EnumConverter.java

@@ -0,0 +1,36 @@
+package com.izouma.nineth.utils.excel;
+
+import com.alibaba.excel.converters.Converter;
+import com.alibaba.excel.enums.CellDataTypeEnum;
+import com.alibaba.excel.metadata.CellData;
+import com.alibaba.excel.metadata.GlobalConfiguration;
+import com.alibaba.excel.metadata.property.ExcelContentProperty;
+
+import java.lang.reflect.Method;
+
+public class EnumConverter implements Converter {
+    @Override
+    public Class supportJavaTypeKey() {
+        return Enum.class;
+    }
+
+    @Override
+    public CellDataTypeEnum supportExcelTypeKey() {
+        return null;
+    }
+
+    @Override
+    public Object convertToJavaData(CellData cellData, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        return null;
+    }
+
+    @Override
+    public CellData convertToExcelData(Object o, ExcelContentProperty excelContentProperty, GlobalConfiguration globalConfiguration) throws Exception {
+        try {
+            Method mo = o.getClass().getMethod("getDescription");
+            return new CellData(mo.invoke(o));
+        } catch (Exception e) {
+            return null;
+        }
+    }
+}

+ 6 - 35
src/test/java/com/izouma/nineth/service/AssetServiceTest.java

@@ -2,16 +2,13 @@ package com.izouma.nineth.service;
 
 import com.izouma.nineth.ApplicationTests;
 import com.izouma.nineth.domain.*;
-import com.izouma.nineth.enums.AssetStatus;
 import com.izouma.nineth.repo.*;
 import org.junit.jupiter.api.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
 import java.time.LocalDateTime;
-import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.List;
-import java.util.stream.Collectors;
 
 class AssetServiceTest extends ApplicationTests {
     @Autowired
@@ -85,38 +82,12 @@ class AssetServiceTest extends ApplicationTests {
 
     @Test
     public void stat() {
-        List<User> match = new ArrayList<>();
-        userRepo.findAll().stream().parallel().forEach(user -> {
-            List<String> names = Arrays.asList("游戏《青丘奇缘》-人族玲珑  婉儿", "游戏《青丘奇缘》-人族逍遥 饮剑",
-                    "游戏《青丘奇缘》-人族无极  魔修", "游戏《青丘奇缘》-人族玲珑  夜旋");
-            List<Asset> assets = assetRepo.findByUserId(user.getId());
-            assets = assets.stream().filter(a -> names.stream().anyMatch(n -> n.equals(a.getName())))
-                    .collect(Collectors.toList());
-            if (assets.size() < 4) {
-                return;
-            }
-            assets = assets.stream().filter(a -> a.getCreatedAt().isBefore(LocalDateTime.of(2021, 12, 19, 18, 0, 0)))
-                    .collect(Collectors.toList());
-            if (assets.size() < 4) {
-                return;
-            }
-            assets = assets.stream().filter(a -> {
-                        if (a.getStatus() != AssetStatus.GIFTED && a.getStatus() != AssetStatus.TRANSFERRED) {
-                            return true;
-                        } else {
-                            Asset a1 = assetRepo.findFirstByTokenIdAndCreatedAtAfterOrderByCreatedAt(a.getTokenId(), a.getCreatedAt());
-                            return a1 != null && a.getCreatedAt().isAfter(LocalDateTime.of(2021, 12, 19, 20, 0, 0));
-                        }
-                    })
-                    .collect(Collectors.toList());
-            boolean flag = true;
-            for (String name : names) {
-                flag = flag && assets.stream().anyMatch(a -> name.equals(a.getName()));
-            }
-            if (flag) {
-                match.add(user);
-            }
-        });
+        List<User> match = assetService.holdQuery(Arrays.asList("国潮-兰陵武王-高长恭", "国潮-燕南三士-赵云", "国潮-武安君-李牧", "国潮-战神无双-吕布"),
+                LocalDateTime.of(2021, 12, 23, 23, 0, 0),
+                LocalDateTime.of(2021, 12, 23, 23, 59, 59));
+        for (User user : match) {
+            System.out.printf("%d,%s,%s%n", user.getId(), user.getNickname(), user.getPhone());
+        }
         System.out.println(match);
     }
 }

+ 1 - 24
src/test/java/com/izouma/nineth/service/UserServiceTest.java

@@ -3,12 +3,8 @@ package com.izouma.nineth.service;
 import com.github.kevinsawicki.http.HttpRequest;
 import com.huifu.adapay.core.exception.BaseAdaPayException;
 import com.izouma.nineth.ApplicationTests;
-import com.izouma.nineth.config.Constants;
 import com.izouma.nineth.domain.User;
-import com.izouma.nineth.dto.UserRegister;
-import com.izouma.nineth.enums.AuthorityName;
 import com.izouma.nineth.repo.UserRepo;
-import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.service.storage.StorageService;
 import org.apache.commons.lang3.RandomStringUtils;
 import org.junit.Test;
@@ -17,7 +13,6 @@ import org.springframework.beans.factory.annotation.Autowired;
 import java.io.File;
 import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.Collections;
 
 public class UserServiceTest extends ApplicationTests {
 
@@ -55,25 +50,7 @@ public class UserServiceTest extends ApplicationTests {
 
     @Test
     public void a() {
-        for (String s : ("13816681152\n" +
-                "15564456867\n" +
-                "13363659367\n" +
-                "18963550881\n" +
-                "13931604318\n" +
-                "13705395943\n" +
-                "13162078752\n" +
-                "13589360751\n")
-                .split("\n")) {
-            String name = "9th_" + RandomStringUtils.randomAlphabetic(8);
-            User user = userService.create(UserRegister.builder()
-                    .authorities(Collections.singleton(Authority.get(AuthorityName.ROLE_USER)))
-                    .username(name)
-                    .nickname(name)
-                    .password("123456")
-                    .avatar(Constants.DEFAULT_AVATAR)
-                    .phone(s)
-                    .build());
-        }
+        userService.batchRegister("17364077636", "123456");
     }
 
     @Test