浏览代码

fix银行卡已绑定

xiongzhu 3 年之前
父节点
当前提交
d4de57ae9f

+ 12 - 0
src/main/java/com/izouma/nineth/service/PayEaseService.java

@@ -24,6 +24,7 @@ import com.upay.sdk.onlinepay.builder.QueryBuilder;
 import com.upay.sdk.onlinepay.builder.RefundBuilder;
 import lombok.AllArgsConstructor;
 import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.boot.context.properties.EnableConfigurationProperties;
 import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
@@ -37,6 +38,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 import java.util.concurrent.TimeUnit;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
 
 @Service
 @Slf4j
@@ -71,6 +74,15 @@ public class PayEaseService {
         if (!"SUCCESS".equals(responseData.getString("status"))) {
             String error = responseData.getString("error");
             String cause = responseData.getString("cause");
+            Pattern p = Pattern.compile("银行卡已绑定!绑卡ID:(\\d+)");
+            Matcher m = p.matcher("银行卡已绑定!绑卡ID:20220602315804717062699846352896");
+            if (m.find()) {
+                String bindCardId = m.group(1);
+                if (StringUtils.isNotEmpty(bindCardId)) {
+                    unbind(bindCardRequest.getUserId(), bindCardId);
+                    return bindCard(bindCardRequest);
+                }
+            }
             throw new BusinessException(error);
         } else {
             String bindStatus = responseData.getString("bindStatus");

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

@@ -77,7 +77,8 @@ public class UserBankCardService {
         payEaseService.bindCardCaptcha(bindCardId);
     }
 
-    public void unbind(Long userId) {
+    public void
+    unbind(Long userId) {
         User user = userRepo.findById(userId).orElseThrow(new BusinessException("用户不存在"));
         userBankCardRepo.findByUserId(userId).forEach(userBankCard -> {
             if (StringUtils.isNotEmpty(userBankCard.getBindCardId())) {

+ 4 - 2
src/main/java/com/izouma/nineth/web/UserController.java

@@ -11,6 +11,7 @@ import com.izouma.nineth.security.Authority;
 import com.izouma.nineth.security.JwtTokenUtil;
 import com.izouma.nineth.security.JwtUserFactory;
 import com.izouma.nineth.service.FollowService;
+import com.izouma.nineth.service.UserBankCardService;
 import com.izouma.nineth.service.UserService;
 import com.izouma.nineth.utils.SecurityUtils;
 import com.izouma.nineth.utils.excel.ExcelUtils;
@@ -40,6 +41,7 @@ public class UserController extends BaseController {
     private FollowService                 followService;
     private UserBankCardRepo              userBankCardRepo;
     private RedisTemplate<String, Object> redisTemplate;
+    private UserBankCardService           userBankCardService;
 
     @PostMapping("/register")
     public User register(@RequestParam String username,
@@ -247,13 +249,13 @@ public class UserController extends BaseController {
 
     @PostMapping("/removeBankCard")
     public void removeBankCard() throws BaseAdaPayException {
-        userService.removeBankCard(SecurityUtils.getAuthenticatedUser().getId());
+        userBankCardService.unbind(SecurityUtils.getAuthenticatedUser().getId());
     }
 
     @PostMapping("/removeBankCardAdmin")
     @PreAuthorize("hasAnyRole('ADMIN')")
     public void removeBankCardAdmin(@RequestParam Long userId) throws BaseAdaPayException {
-        userService.removeBankCard(userId);
+        userBankCardService.unbind(userId);
     }
 
     @PostMapping("/removeAuthAdmin")

+ 9 - 0
src/test/java/com/izouma/nineth/CommonTest.java

@@ -715,4 +715,13 @@ public class CommonTest {
         System.out.println(ChronoUnit.YEARS.between(LocalDate.parse("321002199408304614".substring(6, 14),
                 DateTimeFormatter.ofPattern("yyyyMMdd")), LocalDate.now()));
     }
+
+    @Test
+    public void patt() {
+        Pattern p = Pattern.compile("银行卡已绑定!绑卡ID:(\\d+)");
+        Matcher m = p.matcher("银行卡已绑定!绑卡ID:20220602315804717062699846352896");
+        if (m.find()) {
+            System.out.println(m.group(1));
+        }
+    }
 }

+ 3 - 3
src/test/java/com/izouma/nineth/PayEaseTest.java

@@ -67,8 +67,8 @@ public class PayEaseTest {
 
     @Test
     public void bindCardConfirm() {
-        String bindCardId = "20220524516958713695754308698112";
-        String kaptchaCode = "959522";
+        String bindCardId = "20220602315804717062699846352896";
+        String kaptchaCode = "321838";
         String merchantUserId = "1";
 
         BindCardConfirmBuilder builder = new BindCardConfirmBuilder(merchantId);
@@ -96,7 +96,7 @@ public class PayEaseTest {
 
     @Test
     public void unbind() {
-        String bindCardId = "20220519093153711994335360860160";
+        String bindCardId = "20220524516958713695754308698112";
         String merchantUserId = "1";
 
         UnBindCardBuilder builder = new UnBindCardBuilder(merchantId);