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