Jelajahi Sumber

ComPDFkit联调:修复插入多条用户bug

wangPH 2 tahun lalu
induk
melakukan
314c31245c

+ 15 - 23
background-gateway/src/main/java/cn/kdan/compdf/filter/AuthGlobalFilter.java

@@ -3,6 +3,7 @@ package cn.kdan.compdf.filter;
 import cn.hutool.core.util.ObjectUtil;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.config.JwtConfig;
+import cn.kdan.compdf.config.MyRedisConstant;
 import cn.kdan.compdf.dto.LoginUser;
 import cn.kdan.compdf.dto.LoginUserDTO;
 import cn.kdan.compdf.enums.AuthEnum;
@@ -29,6 +30,7 @@ import org.springframework.web.server.ServerWebExchange;
 import reactor.core.publisher.Mono;
 
 import java.nio.charset.StandardCharsets;
+import java.util.concurrent.TimeUnit;
 import java.util.function.Consumer;
 
 /**
@@ -48,15 +50,6 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
     @Override
     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
         // 1、判断放行请求地址(登录接口)
-        String requestPath = exchange.getRequest().getPath().toString();
-        // 登录
-        if (requestPath.equals("/user-api/v1/user/login")) {
-            return chain.filter(exchange);
-        }
-//        // 修改密码
-//        if (requestPath.equals("/user-api/v1/user/changePassword")) {
-//            return chain.filter(exchange);
-//        }
 
         // 2、获取请求头jwt
         String authorization = exchange.getRequest().getHeaders().getFirst(AuthEnum.AUTHORIZATION);
@@ -70,7 +63,6 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
             DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
             return response.writeWith(Mono.just(dataBuffer));
         }
-//        authorization = authorization.replaceFirst("Bearer ","");
 
         // 3、解析
         try {
@@ -86,19 +78,19 @@ public class AuthGlobalFilter implements GlobalFilter, Ordered {
                 DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
                 return response.writeWith(Mono.just(dataBuffer));
             }
-            // 信息为空创建新用户
-            if(ObjectUtil.isEmpty(r.getData())){
-                r = userFeign.creatUser(loginUser);
-                if (!"200".equals(r.getCode())){
-                    ServerHttpResponse response = exchange.getResponse();
-                    response.setStatusCode(HttpStatus.OK);
-                    // 改变响应的类型
-                    response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
-                    String fastResult = JSON.toJSONString(new BusinessException(ResponseEnum.SYSTEM_ERROR));
-                    DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
-                    return response.writeWith(Mono.just(dataBuffer));
-                }
-            }
+//            // 信息为空创建新用户
+//            if(ObjectUtil.isEmpty(r.getData())){
+//                r = userFeign.creatUser(loginUser);
+//                if (!"200".equals(r.getCode())){
+//                    ServerHttpResponse response = exchange.getResponse();
+//                    response.setStatusCode(HttpStatus.OK);
+//                    // 改变响应的类型
+//                    response.getHeaders().setContentType(MediaType.APPLICATION_JSON);
+//                    String fastResult = JSON.toJSONString(new BusinessException(ResponseEnum.SYSTEM_ERROR));
+//                    DataBuffer dataBuffer = response.bufferFactory().allocateBuffer().write(fastResult.getBytes(StandardCharsets.UTF_8));
+//                    return response.writeWith(Mono.just(dataBuffer));
+//                }
+//            }
 
             // redie验证token是否过期
             Boolean flag = redisTemplate.hasKey(AuthEnum.USER_TOKEN_REDIS + r.getData().getUsername());

+ 10 - 0
background-redis/src/main/java/cn/kdan/compdf/config/MyRedisConstant.java

@@ -0,0 +1,10 @@
+package cn.kdan.compdf.config;
+
+/**
+ * @author ComPDFKit-WPH 2023/1/16
+ */
+public interface MyRedisConstant {
+
+    String USER_CREAT = "background:user:creat:";
+
+}

+ 1 - 1
background-user/src/main/java/cn/kdan/compdf/constant/UserBalanceConstant.java

@@ -7,7 +7,7 @@ public interface UserBalanceConstant {
 
     Integer DESCRIPTION_TYPE_FREE = 3;
 
-    String DESCRIPTION_FREE = "";
+    String DESCRIPTION_FREE = "Free 100 Files(Validity: 30 days)";
 
     Integer CHANGE_TYPE_ADD = 1;
 

+ 9 - 1
background-user/src/main/java/cn/kdan/compdf/service/impl/BackgroundUserServiceImpl.java

@@ -4,6 +4,7 @@ import cn.hutool.core.util.ObjectUtil;
 import cn.hutool.json.JSONUtil;
 import cn.kdan.compdf.base.R;
 import cn.kdan.compdf.config.JwtConfig;
+import cn.kdan.compdf.config.MyRedisConstant;
 import cn.kdan.compdf.constant.UserBalanceConstant;
 import cn.kdan.compdf.dto.*;
 import cn.kdan.compdf.entity.BackgroundUser;
@@ -164,7 +165,13 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
         BackgroundUser backgroundUser = this.baseMapper.selectOne(new LambdaQueryWrapper<BackgroundUser>()
                 .eq(BackgroundUser::getCompdfkitId, loginUser.getCompdfkitId()));
         if (ObjectUtil.isEmpty(backgroundUser)) {
-            return null;
+            Boolean absent = redisTemplate.opsForValue()
+                    .setIfAbsent(MyRedisConstant.USER_CREAT+loginUser.toString(),"",10, TimeUnit.MINUTES);
+            if (ObjectUtil.isNotEmpty(absent) && absent){
+                return this.creatUser(loginUser);
+            }else {
+                return getUserInfo(loginUser);
+            }
         }
         if (!loginUser.getUsername().equals(backgroundUser.getUsername())) {
             // 修改用户名为新的email
@@ -188,6 +195,7 @@ public class BackgroundUserServiceImpl extends ServiceImpl<BackgroundUserMapper,
 
     @Override
     public LoginUserDTO creatUser(LoginUser loginUser) {
+
         BackgroundUser backgroundUser = new BackgroundUser();
         backgroundUser.setUsername(loginUser.getUsername());
         backgroundUser.setCompdfkitId(loginUser.getCompdfkitId());

+ 14 - 0
background-user/src/main/resources/application.yml

@@ -106,3 +106,17 @@ background:
 #logging:
 #  level:
 #    cn.kdan.compdf: info
+#### feign
+
+feign:
+  client:
+    config:
+      default:
+        connectTimeout: 20000
+        readTimeout: 20000
+  httpclient:
+    connection-timeout: 20000
+    connection-timer-repeat: 20000
+    enabled: true
+    max-connections: 200
+    max-connections-per-route: 50