From 8f8114764bfc2b648937e42cda68be398c6b822a Mon Sep 17 00:00:00 2001
From: liu <liujiatong112@163.com>
Date: Fri, 3 Nov 2023 17:00:18 +0800
Subject: [PATCH] =?UTF-8?q?=E8=AF=8A=E6=96=AD=E6=B5=81=E7=A8=8B=E6=8F=90?=
 =?UTF-8?q?=E4=BA=A4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 .../supervision/config/JwtInterceptor.java    | 28 +++++++++++++++----
 .../com/supervision/config/Knife4jConfig.java |  2 --
 .../com/supervision/config/WebConfig.java     |  2 +-
 .../com/supervision/util/SpringBeanUtil.java  |  0
 .../java/com/supervision/model/Patient.java   | 15 ++++++++--
 .../main/resources/mapper/PatientMapper.xml   |  5 +++-
 .../controller/AskProcessController.java      |  2 +-
 7 files changed, 41 insertions(+), 13 deletions(-)
 rename {virtual-patient-web => virtual-patient-common}/src/main/java/com/supervision/util/SpringBeanUtil.java (100%)

diff --git a/virtual-patient-common/src/main/java/com/supervision/config/JwtInterceptor.java b/virtual-patient-common/src/main/java/com/supervision/config/JwtInterceptor.java
index f30dae65..9a0c600d 100644
--- a/virtual-patient-common/src/main/java/com/supervision/config/JwtInterceptor.java
+++ b/virtual-patient-common/src/main/java/com/supervision/config/JwtInterceptor.java
@@ -7,26 +7,37 @@ import cn.hutool.jwt.JWT;
 import cn.hutool.jwt.JWTUtil;
 import com.supervision.domain.UserInfo;
 import com.supervision.exception.BusinessException;
+import com.supervision.util.SpringBeanUtil;
+import com.supervision.util.TokenUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Value;
+import org.springframework.core.env.Environment;
 import org.springframework.web.servlet.HandlerInterceptor;
 import org.springframework.web.servlet.ModelAndView;
 
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.Map;
 
 @Slf4j
 public class JwtInterceptor implements HandlerInterceptor {
 
 
+
     @Override
-    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
+    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
         //请求消息头获取用户ID
         String token = request.getHeader("token");
-        // 如果是开发环境,不获取token
-        if (StrUtil.isBlank(token)) {
-            throw new BusinessException("当前用户未登录");
+        if (StrUtil.isBlank(token) ) {
+            // 如果是swagger来的接口,说明这里是测试的,会伪造一个用户
+            if (StrUtil.isNotBlank(request.getHeader("Knife4j-Gateway-Code"))){
+                token = devActiveUser();
+            }else {
+                throw new BusinessException("当前用户未登录");
+            }
         }
+
         JWT jwt = JWTUtil.parseToken(token);
         // 校验token是否过期,如果过期了,需要提示过期重新登录
         checkTokenExpire(jwt);
@@ -46,7 +57,6 @@ public class JwtInterceptor implements HandlerInterceptor {
         Object expireTime = jwt.getPayload("expireTime");
         long l = Long.parseLong(String.valueOf(expireTime));
         // 校验是否比当前时间大
-        System.out.println(l);
         long currentTimeMillis = System.currentTimeMillis();
         if (currentTimeMillis > l) {
             throw new BusinessException("用户登录已过期,请重新登录");
@@ -62,6 +72,14 @@ public class JwtInterceptor implements HandlerInterceptor {
         }
     }
 
+    private String devActiveUser(){
+        Map<String, Object> map = new HashMap<>();
+        map.put("id","1");
+        map.put("account","test");
+        map.put("name","测试账户");
+        return TokenUtil.creatToken(JSONUtil.toJsonStr(map));
+    }
+
     private void clearAuth() {
         ThreadCache.USER.remove();
     }
diff --git a/virtual-patient-common/src/main/java/com/supervision/config/Knife4jConfig.java b/virtual-patient-common/src/main/java/com/supervision/config/Knife4jConfig.java
index f4274756..a9ff6873 100644
--- a/virtual-patient-common/src/main/java/com/supervision/config/Knife4jConfig.java
+++ b/virtual-patient-common/src/main/java/com/supervision/config/Knife4jConfig.java
@@ -10,8 +10,6 @@
  */
 package com.supervision.config;
 
-import com.github.xiaoymin.knife4j.spring.annotations.EnableKnife4j;
-import io.swagger.annotations.Api;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.Configuration;
 import org.springframework.web.bind.annotation.RestController;
diff --git a/virtual-patient-common/src/main/java/com/supervision/config/WebConfig.java b/virtual-patient-common/src/main/java/com/supervision/config/WebConfig.java
index 45b32668..66a6c430 100644
--- a/virtual-patient-common/src/main/java/com/supervision/config/WebConfig.java
+++ b/virtual-patient-common/src/main/java/com/supervision/config/WebConfig.java
@@ -30,7 +30,7 @@ public class WebConfig implements WebMvcConfigurer {
         paths.add("/favicon.ico");
         paths.add("/user/login");
         // 开发环境,放开不校验token.每次修改这里需要重启(热部署不行)
-        paths.add("/**");
+//        paths.add("/**");
         return paths;
     }
 }
diff --git a/virtual-patient-web/src/main/java/com/supervision/util/SpringBeanUtil.java b/virtual-patient-common/src/main/java/com/supervision/util/SpringBeanUtil.java
similarity index 100%
rename from virtual-patient-web/src/main/java/com/supervision/util/SpringBeanUtil.java
rename to virtual-patient-common/src/main/java/com/supervision/util/SpringBeanUtil.java
diff --git a/virtual-patient-model/src/main/java/com/supervision/model/Patient.java b/virtual-patient-model/src/main/java/com/supervision/model/Patient.java
index 5e4b4682..08acdc55 100644
--- a/virtual-patient-model/src/main/java/com/supervision/model/Patient.java
+++ b/virtual-patient-model/src/main/java/com/supervision/model/Patient.java
@@ -35,10 +35,10 @@ public class Patient implements Serializable {
     private String name;
 
     /**
-     * 性别 0男 1女
+     * 性别
      */
-    @ApiModelProperty("性别 0男 1女")
-    private Integer gender;
+    @ApiModelProperty("性别")
+    private String gender;
 
     /**
      * 病人年龄
@@ -64,6 +64,15 @@ public class Patient implements Serializable {
     @ApiModelProperty("体重")
     private BigDecimal weight;
 
+    @ApiModelProperty("婚姻")
+    private String marriage;
+
+    @ApiModelProperty("职业")
+    private String profession;
+
+    @ApiModelProperty("地址")
+    private String address;
+
     /**
      * 创建人ID
      */
diff --git a/virtual-patient-model/src/main/resources/mapper/PatientMapper.xml b/virtual-patient-model/src/main/resources/mapper/PatientMapper.xml
index 60d33746..db1c29ba 100644
--- a/virtual-patient-model/src/main/resources/mapper/PatientMapper.xml
+++ b/virtual-patient-model/src/main/resources/mapper/PatientMapper.xml
@@ -12,6 +12,9 @@
         <result property="symptoms" column="symptoms" jdbcType="VARCHAR"/>
         <result property="height" column="height" jdbcType="DECIMAL"/>
         <result property="weight" column="weight" jdbcType="DECIMAL"/>
+        <result property="marriage" column="marriage" jdbcType="VARCHAR"/>
+        <result property="profession" column="profession" jdbcType="VARCHAR"/>
+        <result property="address" column="address" jdbcType="VARCHAR"/>
         <result property="createUserId" column="create_user_id" jdbcType="VARCHAR"/>
         <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
         <result property="updateUserId" column="update_user_id" jdbcType="VARCHAR"/>
@@ -21,7 +24,7 @@
     <sql id="Base_Column_List">
         id
         ,name,gender,
-        age,symptoms,height,
+        age,symptoms,height,address,marriage,profession,
         weight,disease_list,create_user_id,
         create_time,update_user_id,update_time
     </sql>
diff --git a/virtual-patient-web/src/main/java/com/supervision/controller/AskProcessController.java b/virtual-patient-web/src/main/java/com/supervision/controller/AskProcessController.java
index bbc4aa67..28fe645c 100644
--- a/virtual-patient-web/src/main/java/com/supervision/controller/AskProcessController.java
+++ b/virtual-patient-web/src/main/java/com/supervision/controller/AskProcessController.java
@@ -24,7 +24,7 @@ public class AskProcessController {
 
     @ApiOperation("生成诊断流程任务")
     @GetMapping("creatDiagnosisProcess")
-    public Process creatDiagnosisProcess(@ApiParam("病人ID") String patientId, String medicalId) {
+    public Process creatDiagnosisProcess(@ApiParam("病人ID") String patientId,@ApiParam("病历ID") String medicalId) {
         User user = UserUtil.getUser();
         return askProcessService.creatDiagnosisProcess(patientId, medicalId, user);
     }