Quellcode durchsuchen

Merge branch 'dev-merge-pre-secrity-kdhc' of http://192.168.1.43:3000/v2/zd-parents into dev-merge-pre-secrity-kdhc

donggaosheng vor 1 Jahr
Ursprung
Commit
a1e28499a7

+ 7 - 0
zd-gateway/pom.xml

@@ -123,6 +123,13 @@
 
     <build>
         <finalName>${project.artifactId}</finalName>
+        <resources>
+            <resource>
+                <directory>src/main/resources</directory>
+                <filtering>true</filtering>
+            </resource>
+        </resources>
+
         <plugins>
             <plugin>
                 <groupId>org.springframework.boot</groupId>

+ 0 - 7
zd-gateway/src/main/java/com/zd/gateway/ZdGatewayApplication.java

@@ -1,14 +1,12 @@
 package com.zd.gateway;
 
 import com.zd.common.core.launch.ZdStartApplication;
-import com.zd.gateway.filter.RequestLogFilter;
 import com.zd.model.constant.ApplicationConstants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
 import org.springframework.context.ConfigurableApplicationContext;
-import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
 import org.springframework.core.env.Environment;
 import org.springframework.util.StringUtils;
@@ -44,9 +42,4 @@ public class ZdGatewayApplication {
                 ip, port, ip, port
         );
     }
-
-    @Bean
-    public RequestLogFilter requestLogFilter() {
-        return new RequestLogFilter();
-    }
 }

+ 1 - 1
zd-gateway/src/main/java/com/zd/gateway/filter/AuthFilter.java

@@ -103,6 +103,6 @@ public class AuthFilter implements GlobalFilter, Ordered {
 
     @Override
     public int getOrder() {
-        return -200;
+        return 2;
     }
 }

+ 5 - 4
zd-gateway/src/main/java/com/zd/gateway/filter/RequestLogFilter.java

@@ -4,12 +4,13 @@ import lombok.extern.slf4j.Slf4j;
 import org.springframework.cloud.gateway.filter.GatewayFilter;
 import org.springframework.cloud.gateway.filter.GatewayFilterChain;
 import org.springframework.core.Ordered;
-
+import org.springframework.stereotype.Component;
 import org.springframework.web.server.ServerWebExchange;
 import reactor.core.publisher.Mono;
 
+@Component
 @Slf4j(topic = "gateway-http---")
-public class RequestLogFilter implements GatewayFilter, Ordered {
+public class LogFilter implements GatewayFilter, Ordered {
     @Override
     public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
         log.info("============================ Request Begin =============================");
@@ -27,6 +28,6 @@ public class RequestLogFilter implements GatewayFilter, Ordered {
 
     @Override
     public int getOrder() {
-        return Ordered.LOWEST_PRECEDENCE;
+        return 0;
     }
-}
+}

+ 52 - 0
zd-gateway/src/main/java/com/zd/gateway/filter/TraceFilter.java

@@ -0,0 +1,52 @@
+package com.zd.gateway.filter;
+
+import org.slf4j.MDC;
+import org.springframework.cloud.gateway.filter.GatewayFilterChain;
+import org.springframework.cloud.gateway.filter.GlobalFilter;
+import org.springframework.core.Ordered;
+import org.springframework.http.server.reactive.ServerHttpRequest;
+import org.springframework.stereotype.Component;
+import org.springframework.web.server.ServerWebExchange;
+import reactor.core.publisher.Mono;
+
+import javax.servlet.http.HttpServletRequest;
+import java.util.UUID;
+
+
+@Component
+public class TraceFilter implements GlobalFilter, Ordered {
+
+    private static final String TRACE_ID_HEADER = "X-Trace-Id";
+
+    @Override
+    public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {
+        try {
+            ServerHttpRequest request = exchange.getRequest();
+            String traceId = getTraceIdFromHeader(request);
+            if (traceId == null || traceId.isEmpty()) {
+                traceId = generateTraceId();
+            }
+            MDC.put("traceId", traceId);
+            return chain.filter(exchange).then();
+        } finally {
+            MDC.remove("traceId");
+        }
+
+    }
+
+
+
+    private String getTraceIdFromHeader(ServerHttpRequest request) {
+        // 从请求头中获取 traceId,可以根据实际情况自定义
+        return request.getHeaders().getFirst(TRACE_ID_HEADER);
+    }
+
+    private String generateTraceId() {
+        // 生成一个新的 traceId,这里使用 UUID 作为示例
+        return UUID.randomUUID().toString();
+    }
+    @Override
+    public int getOrder() {
+        return 1;
+    }
+}

+ 4 - 2
zd-gateway/src/main/resources/logback.xml

@@ -5,10 +5,12 @@
 	<include
 		resource="org/springframework/boot/logging/logback/defaults.xml" />
 
-	<property name="LOG_HOME" value="/data-disk/zd_service/zd-logs/${artifactId}" />
+<!--	<property name="LOG_HOME" value="/data-disk/zd_service/zd-logs/${project.artifactId}" />-->
+	<property name="LOG_HOME" value="zd-logs/@project.artifactId@" />
+	<property name="TRACE_ID" value="%X{traceId}"/>
 
 	<property name="TRACE_LOG_PATTERN"
-		value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%tid]){faint} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />
+		value="%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr([%mdc{traceId}]){faint} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}" />
 
 	<appender class="ch.qos.logback.core.ConsoleAppender"
 		name="STDOUT">

+ 4 - 0
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/controller/SignInCheckController.java

@@ -86,6 +86,7 @@ public class SignInCheckController {
     public R checkInAll(@ApiParam("进出记录ID") @RequestParam("id") Long id,
                         @ApiParam("图片文件") @RequestParam("file") MultipartFile file,
                         @ApiParam("实验室ID") @RequestParam("subId") Long subId) {
+        logger.info("checkInAll starting .....,id{},subId:{}",id,subId);
         //检查签到
         R result = checkSignInOrOut(id);
         if (result.getCode() != HttpStatus.SUCCESS) {
@@ -202,14 +203,17 @@ public class SignInCheckController {
     private R checkSignInOrOut(Long id) {
         //检查签到
         Long value = redisService.getCacheObject(BaseConstants.SINGIN_id_KEY + id);
+            logger.info("redisService.getCacheObject starting.......");
         if (value != null) {
             //刷新key
             boolean expire = redisService.expire(BaseConstants.SINGIN_id_KEY + id, BaseConstants.SINGIN_OUT_TIME);
             if (!expire) {
+                logger.error("签到&签出已超时,请刷卡重试!----------------");
                 return R.fail(600, "签到&签出已超时,请刷卡重试!");
             }
             return R.ok();
         }
+        logger.error("签到&签出已超时,请刷卡重试!!!");
         return R.fail(600, "签到&签出已超时,请刷卡重试!");
     }
 }

+ 18 - 3
zd-modules/zd-algorithm/src/main/java/com/zd/alg/forward/serivce/CheckService.java

@@ -99,11 +99,13 @@ public class CheckService {
             Map<Object, Object> map = subject.getData();
             Object labCheckInObj = map.get("checkIn");
             if (StringUtils.isNull(labCheckInObj)) {
+                logger.error("未配置检查项");
                 return R.fail(700, "未配置检查项");
             }
             //上传原始图片
             String orgImgUrl = "";
             R<SysFile> r = remoteFileService.upload(file);
+            logger.info("远程上传图片成功,r:{}",r.getData() !=null ? JSON.toJSONString(r.getData()) : "--");
             if (r.getCode() == HttpStatus.SUCCESS) {
                 orgImgUrl = r.getData().getUrl();
             }
@@ -133,6 +135,7 @@ public class CheckService {
                     //请求算法服务
                     ImgPostResponse<AnalysisReturnData> send = HttpUtils.sendV5(restTemplateLocal, files, algorithmYml);
                     AlgorithmResponseResult responseResult = getResponseResult(send);
+                    logger.info("调用算法服务成功!!!!responseResult:{}",JSON.toJSONString(responseResult));
                     //添加成功,更新算法日志记录
                     if (alg.getCode() == 200) {
                         updateRequestRecordLog(alg.getData() != null?Long.valueOf(alg.getData()+""):null, responseResult);
@@ -145,7 +148,11 @@ public class CheckService {
                             alarmNum++;
                         } else {
                             //不跳过
-                            if (executeSkipped(id, labSkipped, labCheckCount, code)) return R.fail(700, "符合跳过条件执行跳过");
+                            if (executeSkipped(id, labSkipped, labCheckCount, code)){
+                                logger.error("符合跳过条件执行跳过 --------");
+                                return R.fail(700, "符合跳过条件执行跳过");
+                            }
+                            logger.error("算法识别未通过 -----");
                             return R.fail(300, "算法识别未通过", code);
                         }
                         Boolean f = send.getStatus_code() == 1000;
@@ -153,14 +160,20 @@ public class CheckService {
                         send(code, id, f, msg);
                     } else {
                         //不跳过
-                        if (executeSkipped(id, labSkipped, labCheckCount, code)) return R.fail(700, "符合跳过条件执行跳过");
+                        if (executeSkipped(id, labSkipped, labCheckCount, code)){
+                            logger.error("符合跳过条件执行跳过 ##############");
+                            return R.fail(700, "符合跳过条件执行跳过");
+                        }
                         assert send != null;
                         logger.error("【调用算法服务】 算法服务调用失败,响应信息:"+ JSONObject.toJSONString(send));
                         return R.fail("算法服务错误,请重试!");
                     }
                 }catch (Exception e){
                     //不跳过
-                    if (executeSkipped(id, labSkipped, labCheckCount, code)) return R.fail(700, "符合跳过条件执行跳过");
+                    if (executeSkipped(id, labSkipped, labCheckCount, code)){
+                        logger.error("符合跳过条件执行跳过<<<<<<<<");
+                        return R.fail(700, "符合跳过条件执行跳过");
+                    }
                 }
             }
             if (alarmNum == checkItem.length) {
@@ -186,6 +199,7 @@ public class CheckService {
             //键为前缀+签到id +下划线+验证类型
             String key = BaseConstants.SINGIN_CHECK_JUMP_KEY  +id+ "_" + code;
             Long increment = redisTemplate.opsForValue().increment(key);
+            logger.info("executeSkipped starting,key:{},increment:{}",key,increment);
             redisService.expire(key, BaseConstants.SINGIN_OUT_TIME);
             if (increment != null && increment >= Integer.parseInt(labCheckCount)) {
                 //黎晨这里让把跳过时状态码改为700,所以700的含义为检查失败并且跳过
@@ -545,6 +559,7 @@ public class CheckService {
     public void send(String code, Long id, Boolean f, String msg) {
         String token = Objects.requireNonNull(ServletUtils.getRequest()).getHeader(SecurityConstants.TOKEN_AUTHENTICATION);
         if (CharSequenceUtil.isBlank(token)) {
+            logger.info("无权限");
             throw new ServiceException("无权限!");
         }
         sendSginAccessLogService.sendAddLogRest(code, id, f, msg, token, algorithmYml.getLoginUri() + algorithmYml.getCheckLogUrl());

+ 2 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/onemachine/controller/OneMachineController.java

@@ -341,9 +341,11 @@ public class OneMachineController extends BaseController {
         R<SysUser> userResult = userService.getUserInfoByCardNum(username, SecurityConstants.INNER);
         logger.info("getUserInfoByCardNum success,param:{},data:{}",username, !ObjectUtil.isEmpty(userResult) ? JSON.toJSONString(userResult.getData()) : "--");
         if (HttpStatus.ERROR == userResult.getCode()) {
+            logger.error("getUserInfoByCardNum err :{}",userResult.getMsg());
             throw new ServiceException(userResult.getMsg());
         }
         if (StringUtils.isNull(userResult) || StringUtils.isNull(userResult.getData())) {
+            logger.error("用户卡号: {} 不存在",username);
             throw new ServiceException("用户卡号:" + username + " 不存在");
         }
         //查询用户使用资格

+ 10 - 0
zd-modules/zd-modules-laboratory/src/main/java/com/zd/laboratory/onemachine/service/OneMachineService.java

@@ -310,11 +310,13 @@ public class OneMachineService implements ValidationSignInPerInfo {
         try {
             logger.info("[postSign] user sign starting....,code:{},signEnum:{}",code,signEnum);
             if (StringUtils.isEmpty(code)) {
+                logger.error("签到验证码错误,请重新刷卡重试!!!");
                 return ResultData.fail(600, "签到验证码错误,请重新刷卡重试!");
             }
             String verifyKey = BaseConstants.SINGIN_CAPTCHA_CODE_KEY + code;
             SingInUser user = redisService.getCacheObject(verifyKey);
             if (user == null || user.getUserId() == null) {
+                logger.error("签到&签出人脸已超时,请重新刷卡重试!!!!!!");
                 return ResultData.fail(600, "签到&签出人脸已超时,请重新刷卡重试!");
             } else {
                 String s = StrUtil.subAfter(code, "_", true);
@@ -347,12 +349,16 @@ public class OneMachineService implements ValidationSignInPerInfo {
                         LabBuildFloorLayout labBuildFloorLayout = new LabBuildFloorLayout();
                         labBuildFloorLayout.setSubId(Long.parseLong(s));
                         List<LabBuildFloorLayoutVo> floorLayoutVoList = labBuildFloorLayoutService.selectLabBuildFloorLayoutList(labBuildFloorLayout);
+                        logger.info("[postSign] selectLabBuildFloorLayoutList successful,floorLayoutVoList:{}",JSON.toJSONString(floorLayoutVoList));
                         if (!floorLayoutVoList.isEmpty()) {
                             LabBuildFloorLayoutVo floorVo = floorLayoutVoList.get(0);
+
                             //这里需要给管控页面推送一个消息
                             messageSendService.subUserByChange(floorVo.getFloorId(), Long.parseLong(s));
+                            logger.info("[postSign] subUserByChange successful");
                             //这里需要给管控页面推送一个消息
                             messageSendService.builUserByChange(floorVo.getBuildId());
+                            logger.info("[postSign] builUserByChange successful");
                         }
                     } else {
                         return ResultData.fail("当前用户已经签到成功,不能重复签到!");
@@ -391,18 +397,22 @@ public class OneMachineService implements ValidationSignInPerInfo {
                     LabBuildFloorLayout labBuildFloorLayout = new LabBuildFloorLayout();
                     labBuildFloorLayout.setSubId(Long.parseLong(s));
                     List<LabBuildFloorLayoutVo> floorLayoutVoList = labBuildFloorLayoutService.selectLabBuildFloorLayoutList(labBuildFloorLayout);
+                    logger.info("[postSign] selectLabBuildFloorLayoutList success");
                     if (!floorLayoutVoList.isEmpty()) {
                         LabBuildFloorLayoutVo floorVo = floorLayoutVoList.get(0);
                         // 这里需要给管控页面推送一个消息
                         messageSendService.subUserByChange(floorVo.getFloorId(), Long.parseLong(s));
+                        logger.info("[postSign] subUserByChange success !!!");
                         // 这里需要给管控页面推送一个消息
                         messageSendService.builUserByChange(floorVo.getBuildId());
+                        logger.info("[postSign] builUserByChange success !!!");
                     }
                     logger.info("[postSign] user sign out successful ");
                     return ResultData.result(true);
                 }
             }
         } catch (Exception e) {
+            logger.error("[postSign] err,msg:{}",e.getMessage(),e);
             e.getStackTrace();
         }
         return ResultData.fail();