forked from kidgrow-microservices-platform

kidgrow-springcloud/kidgrow-springcloud-zuul/src/main/java/com/kidgrow/zuul/filter/UserInfoHeaderFilter.java
@@ -1,6 +1,5 @@
package com.kidgrow.zuul.filter;
import cn.hutool.core.collection.CollectionUtil;
import com.alibaba.fastjson.JSON;
import com.kidgrow.common.constant.CommonConstant;
import com.kidgrow.common.constant.SecurityConstants;
@@ -24,14 +23,12 @@
import org.springframework.stereotype.Component;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.net.URLEncoder;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.FORM_BODY_WRAPPER_FILTER_ORDER;
import static org.springframework.cloud.netflix.zuul.filters.support.FilterConstants.PRE_DECORATION_FILTER_ORDER;
/**
 * 石家庄喜高科技有限责任公司 版权所有 © Copyright 2020<br>
@@ -45,7 +42,7 @@
@Component
public class UserInfoHeaderFilter extends ZuulFilter {
    @Autowired
    SysDoctorService sysDoctorService;
    private SysDoctorService sysDoctorService;
    @Override
    public String filterType() {
        return FilterConstants.PRE_TYPE;
@@ -83,26 +80,37 @@
                List<SysDoctor> sysDoctors = JSON.parseArray(JSON.toJSONString(listByMap.getData()), SysDoctor.class);
                String str="";
                Long hospital=-1L;
                Long doctorId=-1L;
                Long departmentId=-1L;
                String departmentName="";
                if(sysDoctors!=null&&sysDoctors.size()>0){
                    str= sysDoctors.get(0).getDoctorName();
                    hospital=sysDoctors.get(0).getHospitalId();
                    doctorId=sysDoctors.get(0).getId();
                    departmentId=sysDoctors.get(0).getDepartmentId();
                    departmentName=sysDoctors.get(0).getDepartmentName();
                }
                ctx.addZuulRequestHeader(SecurityConstants.USER_ID_HEADER, String.valueOf(user.getId()));
                ctx.addZuulRequestHeader(SecurityConstants.DOCTOR_ID_HEADER, String.valueOf(doctorId));
                ctx.addZuulRequestHeader(SecurityConstants.USER_HEADER, user.getUsername());
                ctx.addZuulRequestHeader(SecurityConstants.USER_REAL_NAME,str);//待完善
                ctx.addZuulRequestHeader(SecurityConstants.USER_REAL_NAME,URLEncoder.encode(str,"UTF-8"));//待完善
                ctx.addZuulRequestHeader(SecurityConstants.USER_HOSPITAL_ID_HEADER,hospital.toString());
                tenantId=hospital.toString();
                List<SysOrganization> organizations = (List<SysOrganization>) user.getOrganizations();
                //将组织数据 存到header 里面
                organizations.sort((e1,e2)->e1.getOrgLevel().compareTo(e2.getOrgLevel()));
                if (organizations != null&&organizations.size()>0) {
                    ctx.addZuulRequestHeader(SecurityConstants.USER_ORG_ID_HEADER,String.valueOf(organizations.get(0).getId()));
                    ctx.addZuulRequestHeader(SecurityConstants.USER_ORG_NAME_HEADER, URLEncoder.encode(organizations.get(0).getOrgName(),"UTF-8"));
                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_ID_HEADER,String.valueOf(organizations.get(organizations.size()-1).getId()));
                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_NAME_HEADER,URLEncoder.encode(organizations.get(organizations.size()-1).getOrgName(),"UTF-8"));
                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_ID_HEADER,String.valueOf(departmentId));
                    ctx.addZuulRequestHeader(SecurityConstants.USER_DEP_NAME_HEADER,(departmentName.equals("")?URLEncoder.encode(organizations.get(organizations.size()-1).getOrgName(),"UTF-8"):departmentName));
                    ctx.addZuulRequestHeader(SecurityConstants.USER_ORGS_HEADER,JSON.toJSONString(organizations));
                }
                //将角色放到header
                ctx.addZuulRequestHeader(SecurityConstants.ROLE_HEADER, JSON.toJSONString(user.getRoles()));
                tenantId=String.valueOf(organizations.get(0).getId());
            }