Explorar el Código

连接池优化

xiongzhu hace 3 años
padre
commit
a0b38b082c

+ 1 - 2
src/main/java/com/izouma/nineth/domain/User.java

@@ -27,7 +27,7 @@ import java.util.Set;
 @Data
 @Entity
 @Table(indexes = {
-        @Index(columnList = "phone"),
+        @Index(columnList = "phone", unique = true, name = "user_index_phone"),
         @Index(columnList = "collectionId"),
         @Index(columnList = "collectionInvitor"),
         @Index(columnList = "admin"),
@@ -95,7 +95,6 @@ public class User extends BaseEntityNoID implements Serializable {
     private String country;
 
     @Searchable
-    @Column(unique = true)
     private String phone;
 
     private String email;

+ 9 - 1
src/main/java/com/izouma/nineth/exception/GlobalExceptionHandler.java

@@ -23,6 +23,7 @@ import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Map;
+import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 @ControllerAdvice
@@ -86,8 +87,15 @@ public class GlobalExceptionHandler {
             modelAndView.addObject("trace", trace);
             return modelAndView;
         } else {
+            String message = e.getMessage();
+            if (Pattern.matches(".*SQL.*constraint.*user_index_phone.*", e.getMessage())) {
+                message = "手机号已注册";
+            }
+            if (Pattern.matches(".*SQL.*constraint.*username.*", e.getMessage())) {
+                message = "用户名已存在";
+            }
             Map<String, Object> map = new HashMap<>();
-            map.put("error", e.getMessage());
+            map.put("error", message);
             map.put("code", -1);
             return map;
         }

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

@@ -144,10 +144,6 @@ public class UserService {
     }
 
     public User create(UserRegister userRegister) {
-        if (StringUtils.isNoneEmpty(userRegister.getPhone()) && userRepo.findByPhoneAndDelFalse(userRegister.getPhone())
-                .orElse(null) != null) {
-            throw new BusinessException("该手机号已注册");
-        }
         User user = new User();
         BeanUtils.copyProperties(userRegister, user);
         user.setShareRatio(sysConfigService.getBigDecimal("share_ratio"));
@@ -248,8 +244,10 @@ public class UserService {
         return redisTemplate.opsForValue().get("register::" + phone);
     }
 
-    public User testPhoneRegister() {
-        String phone = "19" + RandomStringUtils.randomNumeric(11);
+    public User testPhoneRegister(String phone) {
+        if (phone == null) {
+            phone = "19" + RandomStringUtils.randomNumeric(11);
+        }
         String password = "123456";
         String inviteCode = null;
         Long invitor = null;

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

@@ -104,8 +104,8 @@ public class AuthenticationController {
 
     @PostMapping("/testphoneRegister")
     @ApiOperation(value = "手机号密码注册")
-    public String phonePwdLogin() {
-        User user = userService.testPhoneRegister();
+    public String phonePwdLogin(String phone) {
+        User user = userService.testPhoneRegister(phone);
         return jwtTokenUtil.generateToken(JwtUserFactory.create(user));
     }
 

+ 1 - 1
src/main/resources/application.yaml

@@ -39,7 +39,7 @@ spring:
     druid:
       # 连接池的配置信息
       # 初始化大小,最小,最大
-      initial-size: 20
+      initial-size: 5
       min-idle: 20
       maxActive: 3000
       # 配置获取连接等待超时的时间

+ 8 - 8
src/main/resources/logback-spring.xml

@@ -16,14 +16,14 @@
         <logger name="io.swagger.models.parameters.AbstractSerializableParameter" level="ERROR"/>
         <logger name="org.freemarker" level="DEBUG"/>
 
-        <logger name="druid.sql.Statement" level="debug">
-        </logger>
-        <logger name="druid.sql.DataSource" level="debug">
-        </logger>
-        <logger name="druid.sql.Connection" level="debug">
-        </logger>
-        <logger name="druid.sql.ResultSet" level="debug">
-        </logger>
+<!--        <logger name="druid.sql.Statement" level="debug">-->
+<!--        </logger>-->
+<!--        <logger name="druid.sql.DataSource" level="debug">-->
+<!--        </logger>-->
+<!--        <logger name="druid.sql.Connection" level="debug">-->
+<!--        </logger>-->
+<!--        <logger name="druid.sql.ResultSet" level="debug">-->
+<!--        </logger>-->
 
         <!--        <logger name="org.hibernate.SQL" level="DEBUG"/>-->
         <!--        <logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE"/>-->

+ 15 - 151
src/test/java/com/izouma/nineth/service/UserServiceTest.java

@@ -1,35 +1,18 @@
 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;
 
-import java.io.File;
-import java.io.FileInputStream;
 import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
+import java.util.regex.Pattern;
 
 public class UserServiceTest extends ApplicationTests {
 
@@ -58,143 +41,24 @@ public class UserServiceTest extends ApplicationTests {
     }
 
     @Test
-    public void sss9() throws IOException {
-        for (User user : userRepo.findAll()) {
-            if (user.getAvatar().startsWith("https://cdn")) {
-                HttpRequest request = HttpRequest.get(user.getAvatar());
-                File file = File.createTempFile("gw1", "1sadga");
-                request.receive(file);
-                user.setAvatar(storageService.uploadFromInputStream(new FileInputStream(file), "image/" + RandomStringUtils.randomAlphabetic(12) + ".jpg"));
-                userRepo.save(user);
-            }
-        }
-    }
-
-    @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);
+    public void register() throws IOException {
+        try {
             User user = userService.create(UserRegister.builder()
-                    .authorities(Collections.singleton(Authority.get(AuthorityName.ROLE_USER)))
-                    .username(name)
-                    .nickname(name)
-                    .password("123456")
+                    .username("1111fff1g1rertuiohejldknhgurphoj")
+                    .nickname("1111fff1g1rertuiohejldknhgurphoj")
                     .avatar(Constants.DEFAULT_AVATAR)
-                    .phone(s)
+                    .phone("15077886171")
                     .build());
+            System.out.println(user.getId());
+        } catch (Exception e) {
+            if (Pattern.matches(".*SQL.*constraint.*phone.*", e.getMessage())) {
+                System.out.println("手机号已注册");
+            }
+            if (Pattern.matches(".*SQL.*constraint.*username.*", e.getMessage())) {
+                System.out.println("用户名已存在");
+            }
+            e.printStackTrace();
         }
     }
 
-    @Test
-    public void batchRegister() {
-        userService.batchRegister("13226246698\n" +
-                "13793310531\n" +
-                "13358006613\n" +
-                "18898406893\n" +
-                "17615876370\n" +
-                "13267002685\n" +
-                "15888548080\n" +
-                "13678662069\n" +
-                "15659009359\n" +
-                "13011776866\n" +
-                "18810668532\n" +
-                "13543322894\n" +
-                "13589360750\n" +
-                "18582589484\n" +
-                "15194185209\n" +
-                "15063692500\n" +
-                "13605489618\n" +
-                "18069783568\n" +
-                "15801815684\n" +
-                "13285413859\n" +
-                "13688419164\n" +
-                "15979115671\n" +
-                "13799940755\n" +
-                "18301015323", "123456");
-    }
-
-    @Test
-    public void test() {
-        PageQuery pageQuery = new PageQuery();
-        Map<String, Object> query = pageQuery.getQuery();
-        query.put("inviteCode", "JL21FF");
-        pageQuery.setSize(5000);
-        List<User> phone = userService.all(pageQuery)
-                .getContent();
-        phone.forEach(user -> System.out.println(user.getPhone() + ":" + user.getCreatedAt()));
-        // 2022-01-14T15:53:58 504 第一次查询
-        phone.forEach(user -> System.out.print(user.getPhone() + " "));
-    }
-
-    @Test
-    public void switchAccount() {
-        userService.checkSettleAccount();
-    }
-
-    @Test
-    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());
-    }
-
-    @Test
-    public void test1() {
-        List<User> users = userRepo.findAll();
-        users.forEach(user -> {
-            if (user.getVipPoint() > 1) {
-                user.setVipPoint(1);
-            } else {
-
-            }
-        });
-    }
 }