xiongzhu 4 years ago
parent
commit
0710993875

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

@@ -519,7 +519,7 @@ public class UserService {
         String accountId = adapayMerchantService.createSettleAccountForAll
                 (user.getMemberId(), identityAuth.getRealName(),
                         identityAuth.getIdNo(), phone, bankNo);
-        user.setSettleAccountId(accountId);
+        user.setSettleAccountId(Optional.ofNullable(accountId).orElse("1"));
         userRepo.save(user);
 
         userBankCardRepo.save(UserBankCard.builder()

+ 7 - 0
src/test/java/com/izouma/nineth/service/AdapayMerchantServiceTest.java

@@ -1,9 +1,16 @@
 package com.izouma.nineth.service;
 
 import com.izouma.nineth.ApplicationTests;
+import org.junit.Test;
+import org.springframework.beans.factory.annotation.Autowired;
 
 import static org.junit.Assert.*;
 
 public class AdapayMerchantServiceTest extends ApplicationTests {
+    @Autowired
+    private AdapayMerchantService adapayMerchantService;
 
+    @Test
+    public void createSettleAccountForAll() {
+    }
 }

+ 61 - 3
src/test/java/com/izouma/nineth/service/UserServiceTest.java

@@ -1,16 +1,26 @@
 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.IdentityAuth;
 import com.izouma.nineth.domain.User;
+import com.izouma.nineth.dto.BankValidate;
 import com.izouma.nineth.dto.PageQuery;
+import com.izouma.nineth.dto.UserBankCard;
 import com.izouma.nineth.dto.UserRegister;
+import com.izouma.nineth.enums.AuthStatus;
 import com.izouma.nineth.enums.AuthorityName;
+import com.izouma.nineth.exception.BusinessException;
+import com.izouma.nineth.repo.IdentityAuthRepo;
+import com.izouma.nineth.repo.UserBankCardRepo;
 import com.izouma.nineth.repo.UserRepo;
 import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.service.storage.StorageService;
+import com.izouma.nineth.utils.BankUtils;
 import org.apache.commons.lang3.RandomStringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.junit.Test;
 import org.springframework.beans.factory.annotation.Autowired;
 
@@ -24,11 +34,17 @@ import java.util.Map;
 public class UserServiceTest extends ApplicationTests {
 
     @Autowired
-    private UserService    userService;
+    private UserService           userService;
     @Autowired
-    private UserRepo       userRepo;
+    private UserRepo              userRepo;
     @Autowired
-    private StorageService storageService;
+    private StorageService        storageService;
+    @Autowired
+    private UserBankCardRepo      userBankCardRepo;
+    @Autowired
+    private AdapayMerchantService adapayMerchantService;
+    @Autowired
+    private IdentityAuthRepo      identityAuthRepo;
 
     @Test
     public void findByUsernameAndDelFalse1() {
@@ -127,4 +143,46 @@ public class UserServiceTest extends ApplicationTests {
     public void phoneRegister() {
         userService.phoneRegister("18100004444", "1234", "123456", null, 9972L, 206925L);
     }
+
+    @Test
+    public void addBankCard() throws BaseAdaPayException {
+        Long userId = 134613L;
+        String bankNo = "6222024301070380165";
+        String phone = "15077886171";
+        User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
+        IdentityAuth identityAuth = identityAuthRepo.findFirstByUserIdAndStatusAndDelFalseOrderByCreatedAtDesc(userId, AuthStatus.SUCCESS)
+                .orElseThrow(new BusinessException("用户未认证"));
+        if (identityAuth.isOrg()) {
+            //throw new BusinessException("企业认证用户请绑定对公账户");
+        }
+        if (!StringUtils.isBlank(user.getSettleAccountId())) {
+            throw new BusinessException("此账号已绑定");
+        }
+        BankValidate bankValidate = BankUtils.validate(bankNo);
+        if (!bankValidate.isValidated()) {
+            throw new BusinessException("暂不支持此卡");
+        }
+
+        adapayMerchantService.createMemberForAll(userId.toString(), user.getPhone(), identityAuth.getRealName(), identityAuth.getIdNo());
+        user.setMemberId(user.getId().toString());
+        userRepo.save(user);
+
+        String accountId = adapayMerchantService.createSettleAccountForAll
+                (user.getMemberId(), identityAuth.getRealName(),
+                        identityAuth.getIdNo(), phone, bankNo);
+        user.setSettleAccountId(accountId);
+        userRepo.save(user);
+
+        userBankCardRepo.save(UserBankCard.builder()
+                .bank(bankValidate.getBank())
+                .bankName(bankValidate.getBankName())
+                .bankNo(bankNo)
+                .cardType(bankValidate.getCardType())
+                .cardTypeDesc(bankValidate.getCardTypeDesc())
+                .userId(userId)
+                .phone(phone)
+                .realName(identityAuth.getRealName())
+                .idNo(identityAuth.getIdNo())
+                .build());
+    }
 }