From 83715ed7019ab37a4611a2e4e506f84aa1f7b1b0 Mon Sep 17 00:00:00 2001
From: 侯瑞军 <411269194@kidgrow.com>
Date: Tue, 28 Apr 2020 15:43:13 +0800
Subject: [PATCH] 增加feign客户端调用排除 tenant的注解。 修改完善诊断记录查看的细节问题

---
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java |    2 
 kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignInterceptor.java                                    |    2 
 kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserOrgController.java                       |    4 +
 kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignInterceptorConfig.java                                        |    2 
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recordNote.html                                                                      |    1 
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/DiagnosisRecord.java                         |   10 ++
 kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/OprationCenterApplication.java                              |    4 
 kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignTenantInterceptorConfig.java                                  |   46 +++++++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/user_org_form.html                                                                     |    1 
 kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpTenantInterceptorConfig.java                              |  104 ++++++++++++++++++++++++++
 kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html                                                                 |   18 +++-
 kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignTenantInterceptor.java                              |   26 ++++++
 12 files changed, 206 insertions(+), 14 deletions(-)

diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/DiagnosisRecord.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/DiagnosisRecord.java
index abad609..1adbb32 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/DiagnosisRecord.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-api/src/main/java/com/kidgrow/oprationcenter/vo/DiagnosisRecord.java
@@ -1,6 +1,7 @@
 package com.kidgrow.oprationcenter.vo;
 
 import com.baomidou.mybatisplus.extension.activerecord.Model;
+import com.fasterxml.jackson.annotation.JsonFormat;
 
 import java.util.Date;
 
@@ -26,7 +27,7 @@
     /**
      *诊断门诊名称
      */
-    private String diagnostictDepartName;
+    private String diagnosticDepartName;
     /**
      *诊断医生名称
      */
@@ -52,11 +53,18 @@
      */
     private String childPhone;
     /**
+     * 诊断时间
+     */
+    @JsonFormat(pattern = "yyyy-MM-dd")
+    private Date diagnosticDiagnoseTime;
+    /**
      * 诊断创建时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
     private Date createTime;
     /**
      * 诊断更新时间
      */
+    @JsonFormat(pattern = "yyyy-MM-dd hh:mm:ss")
     private Date updateTime;
 }
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/OprationCenterApplication.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/OprationCenterApplication.java
index eae304d..8e9f64a 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/OprationCenterApplication.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/OprationCenterApplication.java
@@ -1,6 +1,6 @@
 package com.kidgrow;
 
-import com.kidgrow.ribbon.annotation.EnableFeignInterceptor;
+import com.kidgrow.ribbon.annotation.EnableFeignTenantInterceptor;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@@ -17,7 +17,7 @@
 @SpringBootApplication
 @EnableFeignClients
 @EnableDiscoveryClient
-@EnableFeignInterceptor
+@EnableFeignTenantInterceptor
 public class OprationCenterApplication {
     public static void main(String[] args) {
         SpringApplication.run(OprationCenterApplication.class,args);
diff --git a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
index c82a5f5..61332a8 100644
--- a/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
+++ b/kidgrow-business/kidgrow-opration-center/kidgrow-opration-center-server/src/main/java/com/kidgrow/oprationcenter/controller/ProductOrderDetailController.java
@@ -98,7 +98,7 @@
             params.put("page", 1);
             params.put("limit", 10);
         }
-        if(params.get("diagnosticHospitalId").toString().isEmpty())
+        if(params.get("diagnosticHospitalId")==null)
             return PageResult.<ProductOrderJoinDetail>builder().data(null).code(0).count(0L).build();
         return productOrderDetailService.findAllDataList(params);
     }
diff --git a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserOrgController.java b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserOrgController.java
index 57b269b..3ed3a85 100644
--- a/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserOrgController.java
+++ b/kidgrow-business/kidgrow-usercenter/kidgrow-usercenter-server/src/main/java/com/kidgrow/usercenter/controller/SysUserOrgController.java
@@ -75,6 +75,10 @@
                             if (sysUserOrg.getId().equals(userOrgList.get(i).getId())) {
                                 userOrgList.get(i).setOrgId(sysUserOrg.getOrgId());
                             }
+                            else
+                            {
+                                userOrgList.get(i).setOrgId(sysUserOrg.getUpdateUserId());
+                            }
                             userOrgList.get(i).setEnabled(sysUserOrg.getEnabled());
                             userOrgList.get(i).setCreateUserOrgCode(createUserOrgCode);
                         }
diff --git a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignInterceptor.java b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignInterceptor.java
index c328e2a..050ea98 100644
--- a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignInterceptor.java
+++ b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignInterceptor.java
@@ -13,7 +13,7 @@
 /**
  * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
  *
- * @Description: 开启feign拦截器传递数据给下游服务,包含基础数据和http的相关数据
+ * @Description: 开启feign拦截器传递数据给下游服务,包含基础数据,tenant信息和http的相关数据
  * @Project: <br>
  * @CreateDate: Created in 2020/2/21 13:31 <br>
  * @Author: <a href="4345453@kidgrow.com">liuke</a>
diff --git a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignTenantInterceptor.java b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignTenantInterceptor.java
new file mode 100644
index 0000000..6fb9192
--- /dev/null
+++ b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/annotation/EnableFeignTenantInterceptor.java
@@ -0,0 +1,26 @@
+package com.kidgrow.ribbon.annotation;
+
+import com.kidgrow.ribbon.config.FeignHttpTenantInterceptorConfig;
+import com.kidgrow.ribbon.config.FeignTenantInterceptorConfig;
+import org.springframework.context.annotation.Import;
+
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: 开启feign拦截器传递数据给下游服务,包含基础数据和http的相关数据,不含tenant
+ * @Project: <br>
+ * @CreateDate: Created in 2020/2/21 13:31 <br>
+ * @Author: <a href="4345453@kidgrow.com">houruijun</a>
+ */
+@Target(ElementType.TYPE)
+@Retention(RetentionPolicy.RUNTIME)
+@Import({FeignTenantInterceptorConfig.class, FeignHttpTenantInterceptorConfig.class})
+public @interface EnableFeignTenantInterceptor {
+
+}
diff --git a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpTenantInterceptorConfig.java b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpTenantInterceptorConfig.java
new file mode 100644
index 0000000..08c812e
--- /dev/null
+++ b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignHttpTenantInterceptorConfig.java
@@ -0,0 +1,104 @@
+package com.kidgrow.ribbon.config;
+
+import com.kidgrow.common.constant.CommonConstant;
+import com.kidgrow.common.constant.SecurityConstants;
+import feign.RequestInterceptor;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.context.annotation.Bean;
+import org.springframework.web.context.request.RequestContextHolder;
+import org.springframework.web.context.request.ServletRequestAttributes;
+
+import javax.annotation.PostConstruct;
+import javax.servlet.http.HttpServletRequest;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: feign拦截器,只包含http相关数据
+ * @Project: <br>
+ * @CreateDate: Created in 2020/2/21 13:31 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ */
+@Slf4j
+public class FeignHttpTenantInterceptorConfig {
+    protected List<String> requestHeaders = new ArrayList<>();
+
+    @PostConstruct
+    public void initialize() {
+        requestHeaders.add(SecurityConstants.USER_ID_HEADER);
+        requestHeaders.add(SecurityConstants.USER_HEADER);
+        requestHeaders.add(SecurityConstants.USER_DEP_ID_HEADER);
+        requestHeaders.add(SecurityConstants.USER_DEP_NAME_HEADER);
+        requestHeaders.add(SecurityConstants.USER_ORG_ID_HEADER);
+        requestHeaders.add(SecurityConstants.USER_ORGS_HEADER);
+        requestHeaders.add(SecurityConstants.USER_ORG_NAME_HEADER);
+        requestHeaders.add(SecurityConstants.ROLE_HEADER);
+        requestHeaders.add(SecurityConstants.CLIENT_HEADER);
+        //requestHeaders.add(SecurityConstants.TENANT_HEADER);
+        requestHeaders.add(CommonConstant.KIDGROW_VERSION);
+        requestHeaders.add(CommonConstant.USER_AGENT_BROWSER);
+        requestHeaders.add(CommonConstant.USER_AGENT_IP);
+        requestHeaders.add(CommonConstant.USER_AGENT_SYSTEM);
+    }
+
+    /**
+     * 使用feign client访问别的微服务时,将上游传过来的access_token、clientid、tenantid、username、roles等信息放入header传递给下一个服务
+     */
+    @Bean
+    public RequestInterceptor httpFeignInterceptor() {
+        return template -> {
+            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder
+                    .getRequestAttributes();
+            if (attributes != null) {
+                HttpServletRequest request = attributes.getRequest();
+                Enumeration<String> headerNames = request.getHeaderNames();
+                if (headerNames != null) {
+                    String headerName;
+                    String headerValue;
+                    while(headerNames.hasMoreElements()) {
+                        headerName = headerNames.nextElement();
+                        if (requestHeaders.contains(headerName)) {
+                            headerValue = request.getHeader(headerName);
+                            template.header(headerName, headerValue);
+                        }
+                    }
+                }
+
+                //传递access_token,无网络隔离时需要传递
+                /*
+                String token = extractHeaderToken(request);
+                if (StrUtil.isEmpty(token)) {
+                    token = request.getParameter(CommonConstant.ACCESS_TOKEN);
+                }
+                if (StrUtil.isNotEmpty(token)) {
+                    template.header(CommonConstant.TOKEN_HEADER, CommonConstant.BEARER_TYPE + " " + token);
+                }
+                */
+            }
+        };
+    }
+
+    /**
+     * 解析head中的token
+     * @param request
+     */
+    private String extractHeaderToken(HttpServletRequest request) {
+        Enumeration<String> headers = request.getHeaders(CommonConstant.TOKEN_HEADER);
+        while (headers.hasMoreElements()) {
+            String value = headers.nextElement();
+            if ((value.toLowerCase().startsWith(CommonConstant.BEARER_TYPE))) {
+                String authHeaderValue = value.substring(CommonConstant.BEARER_TYPE.length()).trim();
+                int commaIndex = authHeaderValue.indexOf(',');
+                if (commaIndex > 0) {
+                    authHeaderValue = authHeaderValue.substring(0, commaIndex);
+                }
+                return authHeaderValue;
+            }
+        }
+        return null;
+    }
+}
diff --git a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignInterceptorConfig.java b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignInterceptorConfig.java
index 2ca0d25..b2180b0 100644
--- a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignInterceptorConfig.java
+++ b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignInterceptorConfig.java
@@ -20,7 +20,7 @@
  */
 public class FeignInterceptorConfig {
     /**
-     * 使用feign client访问别的微服务时,将上游传过来的client、tenant、traceid等信息放入header传递给下一个服务
+     * 使用feign client访问别的微服务时,将上游传过来的client、traceid等信息放入header传递给下一个服务
      */
     @Bean
     public RequestInterceptor baseFeignInterceptor() {
diff --git a/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignTenantInterceptorConfig.java b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignTenantInterceptorConfig.java
new file mode 100644
index 0000000..811439d
--- /dev/null
+++ b/kidgrow-commons/kidgrow-ribbon-spring-boot-starter/src/main/java/com/kidgrow/ribbon/config/FeignTenantInterceptorConfig.java
@@ -0,0 +1,46 @@
+package com.kidgrow.ribbon.config;
+
+import cn.hutool.core.util.StrUtil;
+import com.kidgrow.common.constant.CommonConstant;
+import com.kidgrow.common.constant.SecurityConstants;
+import com.kidgrow.common.context.ClientContextHolder;
+import feign.RequestInterceptor;
+import org.slf4j.MDC;
+import org.springframework.context.annotation.Bean;
+
+
+/**
+ * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
+ *
+ * @Description: feign拦截器,只包含基础数据
+ * @Project: <br>
+ * @CreateDate: Created in 2020/2/21 13:31 <br>
+ * @Author: <a href="4345453@kidgrow.com">liuke</a>
+ */
+public class FeignTenantInterceptorConfig {
+    /**
+     * 使用feign client访问别的微服务时,将上游传过来的client、traceid等信息放入header传递给下一个服务
+     */
+    @Bean
+    public RequestInterceptor baseFeignInterceptor() {
+        return template -> {
+            //传递client
+            String client = ClientContextHolder.getClient();
+            if (StrUtil.isNotEmpty(client)) {
+                template.header(SecurityConstants.CLIENT_HEADER, client);
+            }
+
+//            //传递tenant
+//            String tenant = TenantContextHolder.getTenant();
+//            if (StrUtil.isNotEmpty(tenant)) {
+//                template.header(SecurityConstants.TENANT_HEADER, tenant);
+//            }
+
+            //传递日志traceId
+            String traceId = MDC.get(CommonConstant.LOG_TRACE_ID);
+            if (StrUtil.isNotEmpty(traceId)) {
+                template.header(CommonConstant.TRACE_ID_HEADER, traceId);
+            }
+        };
+    }
+}
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html
index 31c7e63..ac98c35 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/diagnosisRecord.html
@@ -70,15 +70,17 @@
             headers: { 'Authorization': 'Bearer ' + config.getToken().access_token },
             page: true,
             cols: [[
-                { field: 'hospitalName', width: 300, title: '医院名称' },
-                { field: 'departmentName', width: 100, title: '科室名称' },
+                { field: 'diagnosticHospitalName', width: 300, title: '医院名称' },
+                { field: 'diagnosticDepartName', width: 100, title: '科室名称' },
                 { field: 'diagnosticDoctorName', width: 100, title: '医生姓名' },
                 { field: 'childName', width: 100, title: '患者姓名' },
                 { field: 'childSex', width: 80, title: '性别' },
-                { field: 'childBirthday', width: 100, title: '出生日期' },
+                { field: 'childBirthday', width: 120, title: '出生日期',templet:function(d){
+                    return new Date(d.createTime).dateFormat("yyyy/MM/dd");
+                }},
                 { field: 'childPhone', width: 150, title: '联系电话' },
                 {
-                    field: 'isDelete', sort: true, align: 'center', width: 80, templet: function (d) {
+                    field: 'isDelete', sort: true, align: 'center', width: 100, templet: function (d) {
                         if (d.proType === 0)
                             return "正常"
                         else
@@ -86,12 +88,16 @@
                     }, title: '状态'
                 },
                 {
-                    field: 'createTime', width: 160, sort: true, title: '创建时间', templet: function (d) {
+                    field: 'createTime', width: 170, sort: true, title: '创建时间', templet: function (d) {
                         return new Date(d.createTime).dateFormat("yyyy/MM/dd hh:mm:ss");
+                    }
+                },{
+                    field: 'diagnosticDiagnoseTime', width: 120, sort: true, title: '诊断时间', templet: function (d) {
+                        return new Date(d.diagnosticDiagnoseTime).dateFormat("yyyy/MM/dd");
                     }
                 },
                 {
-                    field: 'updateTime', width: 160, sort: true, title: '修改时间', templet: function (d) {
+                    field: 'updateTime', width: 170, sort: true, title: '修改时间', templet: function (d) {
                         return new Date(d.createTime).dateFormat("yyyy/MM/dd hh:mm:ss");
                     }
                 },
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recordNote.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recordNote.html
index ff5a71d..9c175ab 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recordNote.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/opration/recordNote.html
@@ -15,7 +15,6 @@
         {
             //诊断记录ID
             var id=diagnosis.diagnosticId;
-
         }
     });
 </script>
\ No newline at end of file
diff --git a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/user_org_form.html b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/user_org_form.html
index 6ea4686..512be03 100644
--- a/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/user_org_form.html
+++ b/kidgrow-web/kidgrow-web-manager/src/main/resources/static/pages/system/user_org_form.html
@@ -141,7 +141,6 @@
                     data.field.enabled = (data.field.enabled == 0) ? false : true;
                     admin.req('api-user/sysuserorg', JSON.stringify(data.field), function (data) {
                         layer.closeAll('loading');
-                        debugger
                         if (data.code == 0) {
                             layer.msg(data.msg, { icon: 1, time: 1000 });
                             admin.finishPopupCenter();

--
Gitblit v1.8.0