xiongzhu 3 years ago
parent
commit
0e3569a844

+ 1 - 1
src/main/java/com/izouma/nineth/repo/IdentityAuthRepo.java

@@ -44,5 +44,5 @@ public interface IdentityAuthRepo extends JpaRepository<IdentityAuth, Long>, Jpa
     @Query("delete from IdentityAuth i where i.userId = ?1 and i.id <> ?2")
     @Modifying
     @Transactional
-    void deleteDuplicated(Long userId, Long id);
+    int deleteDuplicated(Long userId, Long id);
 }

+ 6 - 3
src/main/java/com/izouma/nineth/service/IdentityAuthService.java

@@ -156,7 +156,8 @@ public class IdentityAuthService {
                                 .findAny().orElse(null);
                         if (auth != null) {
                             userRepo.setAuthStatus(user.getId(), auth.getStatus(), auth.getId());
-                            identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                            int num = identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                            log.info("deleted {}", num);
                             return;
                         }
 
@@ -165,7 +166,8 @@ public class IdentityAuthService {
                                 .findAny().orElse(null);
                         if (auth != null) {
                             userRepo.setAuthStatus(user.getId(), auth.getStatus(), auth.getId());
-                            identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                            int num = identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                            log.info("deleted {}", num);
                             return;
                         }
 
@@ -174,7 +176,8 @@ public class IdentityAuthService {
                                 .findAny().orElse(null);
                         if (auth != null) {
                             userRepo.setAuthStatus(user.getId(), auth.getStatus(), auth.getId());
-                            identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                            int num = identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                            log.info("deleted {}", num);
                             return;
                         }
 

+ 47 - 0
src/test/java/com/izouma/nineth/service/IdentityAuthServiceTest.java

@@ -1,12 +1,23 @@
 package com.izouma.nineth.service;
 
 import com.izouma.nineth.ApplicationTests;
+import com.izouma.nineth.domain.IdentityAuth;
+import com.izouma.nineth.domain.User;
+import com.izouma.nineth.enums.AuthStatus;
+import com.izouma.nineth.repo.IdentityAuthRepo;
+import com.izouma.nineth.repo.UserRepo;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
+import java.util.List;
+
 public class IdentityAuthServiceTest extends ApplicationTests {
     @Autowired
     private IdentityAuthService identityAuthService;
+    @Autowired
+    private IdentityAuthRepo    identityAuthRepo;
+    @Autowired
+    private UserRepo            userRepo;
 
     @Test
     public void validate() {
@@ -14,4 +25,40 @@ public class IdentityAuthServiceTest extends ApplicationTests {
         identityAuthService.validate("熊竹", "15077886171", "321002199408304614");
     }
 
+    @Test
+    public void asdfa() {
+        User user = userRepo.findById(8157L).get();
+        List<IdentityAuth> list = identityAuthRepo.findByUserId(8157L);
+        if (list.size() > 1) {
+            IdentityAuth auth = list.stream()
+                    .filter(i -> i.getStatus() == AuthStatus.SUCCESS)
+                    .findAny().orElse(null);
+            if (auth != null) {
+                userRepo.setAuthStatus(user.getId(), auth.getStatus(), auth.getId());
+                identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                return;
+            }
+
+            auth = list.stream()
+                    .filter(i -> i.getStatus() == AuthStatus.PENDING)
+                    .findAny().orElse(null);
+            if (auth != null) {
+                userRepo.setAuthStatus(user.getId(), auth.getStatus(), auth.getId());
+                identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                return;
+            }
+
+            auth = list.stream()
+                    .filter(i -> i.getStatus() == AuthStatus.FAIL)
+                    .findAny().orElse(null);
+            if (auth != null) {
+                userRepo.setAuthStatus(user.getId(), auth.getStatus(), auth.getId());
+                identityAuthRepo.deleteDuplicated(user.getId(), auth.getId());
+                return;
+            }
+
+        } else if (list.size() == 1) {
+            userRepo.setAuthStatus(user.getId(), list.get(0).getStatus(), list.get(0).getId());
+        }
+    }
 }