• 跨域请求(学习中)


    https://blog.csdn.net/u012693016/article/details/94600158

    1 拦截器

    package com.jiutong.zqp.controll.web.interceptor;
    
    import javax.servlet.*;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    
    public class WebFilter implements Filter {
        @Override
        public void init(FilterConfig filterConfig) throws ServletException {
    
        }
    
        @Override
        public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
           HttpServletRequest req = (HttpServletRequest)servletRequest;
            req.setCharacterEncoding("UTF-8");
            HttpServletResponse res = (HttpServletResponse)servletResponse;
            String originHeader=((HttpServletRequest)servletRequest).getHeader("Origin");
            res.setHeader("Access-Control-Allow-Origin", originHeader);
           // res.setContentType("application/json;charset=UTF-8");
            res.setHeader("Access-Control-Allow-Methods", "POST, GET, OPTIONS, DELETE");
            res.setHeader("Access-Control-Max-Age", "3600");
            res.setHeader("Access-Control-Allow-Headers", "Origin,No-Cache,X-Requested-With,If-Modified-Since,Pragma,Last-Modified,Cache-Control,Expires,Content-Type,X-E4M-With,userId,token,channelType");//表明服务器支持的所有头信息字段
            res.setHeader("Access-Control-Allow-Credentials", "true"); //如果要把Cookie发到服务器,需要指定Access-Control-Allow-Credentials字段为true;
            res.setHeader("XDomainRequestAllowed","1");
            filterChain.doFilter(req, res);
            return;
        }
    
        @Override
        public void destroy() {
    
        }
    }

    xml文件配置

        <filter>
            <filter-name>webFilter</filter-name>
            <filter-class>com.jiutong.zqp.controll.web.interceptor.WebFilter</filter-class>
        </filter>

     2 RestTemplate

    package com.jiutong.integration.ehr.impl;
    import com.alibaba.fastjson.JSON;
    import com.alibaba.fastjson.TypeReference;
    import com.google.common.collect.Lists;
    import com.jiutong.common.thirdpart.GuaZiMd5Util;
    import com.jiutong.constants.RedisConstans;
    import com.jiutong.integration.ehr.EhrClient;
    import com.jiutong.integration.ehr.bean.EhrBaseResponse;
    import com.jiutong.integration.ehr.bean.EhrMonthlyPerformanceBean;
    import com.jiutong.integration.ehr.dto.*;
    import com.jiutong.orderpay.enums.ServiceNameEnum;
    import com.jiutong.util.JedisUtil;
    import lombok.extern.slf4j.Slf4j;
    import org.apache.commons.collections.CollectionUtils;
    import org.apache.commons.lang3.StringUtils;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.http.HttpEntity;
    import org.springframework.http.HttpHeaders;
    import org.springframework.http.HttpMethod;
    import org.springframework.http.ResponseEntity;
    import org.springframework.stereotype.Component;
    import org.springframework.web.client.RestTemplate;
    
    import java.time.LocalDate;
    import java.util.List;
    
    import static com.jiutong.constants.RedisConstans.EHR_BDM_INFO;
    
    @Component
    @Slf4j
    public class EhrClientImpl implements EhrClient {
    
        @Value("${e***********************/}")
        private String ehrServiceUrl;
    
        @Value("${ehr.secretKey:610adac92bb}")
        private String secretKey = "610adac92bb";
    
        @Autowired
        private RestTemplate restTemplate;
    
        private String getForEhrWithBdId(String url,Integer bdUserId) {
            String response = null;
            try {
                HttpHeaders httpHeaders = new HttpHeaders();
                httpHeaders.add("Client-Id", ServiceNameEnum.E_APP.name());
                String secret = GuaZiMd5Util.getMd5(secretKey+ServiceNameEnum.E_APP.name()+bdUserId);
                httpHeaders.add("Client-Secret", secret);
                ResponseEntity<String> responseEntity = restTemplate.exchange(ehrServiceUrl + url +"?hqpUserId=" + bdUserId, HttpMethod.GET, new HttpEntity<>(httpHeaders), String.class);
                response =  responseEntity.getBody();
            } catch (Exception e) {
                log.error("error call interface " + url + " e={}",e);
            }
            return response;
        }
    
        @Override
        public List<BdPerformanceDTO> getMonthlyPerformance(Integer bdUserId) {
            String response = getForEhrWithBdId("external/kpiMonthData", bdUserId);
            log.info("call interface getMonthlyPerformance  bdUserId={},res={}",bdUserId,response);
            List<BdPerformanceDTO> bdPerformanceDTOS = Lists.newArrayList();
            if (StringUtils.isBlank(response)) {
                log.error("error  call interface getMonthlyPerformance  fail");
                return bdPerformanceDTOS;
            }
            EhrBaseResponse<List<EhrMonthlyPerformanceBean>> res = JSON.parseObject(response, new TypeReference<EhrBaseResponse<List<EhrMonthlyPerformanceBean>>>() {
            });
            if (!"0000".equals(res.getCode())) {
                log.error("error  call interface getMonthlyPerformance  msg={}",res.getMsg());
                return bdPerformanceDTOS;
            }
            if (CollectionUtils.isNotEmpty(res.getData())) {
                res.getData().forEach(e->{
                    BdPerformanceDTO bdPerformanceDTO = new BdPerformanceDTO();
                    bdPerformanceDTO.setKpiName(e.getKpi());
                    bdPerformanceDTO.setTarget(e.getObjective());
                    bdPerformanceDTO.setCompletion(e.getValue());
                    bdPerformanceDTO.setCompletionRate(e.getAccomplish());
                    bdPerformanceDTOS.add(bdPerformanceDTO);
                });
            }
            return bdPerformanceDTOS;
        }
    
        @Override
        public UserLevelDTO getUserLevel(Integer bdUserId) {
            String response = getForEhrWithBdId("external/userLevel", bdUserId);
            log.info("call interface getUserLevel  bdUserId={},res={}",bdUserId,response);
            if (StringUtils.isBlank(response)) {
                log.error("error  call interface getUserLevel  fail");
                return null;
            }
            EhrBaseResponse<UserLevelDTO> res = JSON.parseObject(response, new TypeReference<EhrBaseResponse<UserLevelDTO>>() {
            });
            if (!"0000".equals(res.getCode())) {
                log.error("error  call interface getUserLevel  msg={}",res.getMsg());
                return null;
            }
            return res.getData();
        }
    
        @Override
        public KpiAccomplishDTO getKpiAccomplish(Integer bdUserId) {
            String response = getForEhrWithBdId("external/kpiAccomplish", bdUserId);
            log.info("call interface getKpiAccomplish  bdUserId={},res={}",bdUserId,response);
            if (StringUtils.isBlank(response)) {
                log.error("error  call interface getKpiAccomplish  fail");
                return null;
            }
            EhrBaseResponse<KpiAccomplishDTO> res = JSON.parseObject(response, new TypeReference<EhrBaseResponse<KpiAccomplishDTO>>() {
            });
            if (!"0000".equals(res.getCode())) {
                log.error("error  call interface getKpiAccomplish  msg={}",res.getMsg());
                return null;
            }
            return res.getData();
        }
    
        @Override
        public BdmInfoDTO getBdByBdm(Integer bdmUserId) {
            String key = RedisConstans.EHR_BDM_INFO + bdmUserId + ":" + LocalDate.now().toString();
            BdmInfoDTO bdmInfoDTO = JedisUtil.getInstance().strings().get(key, BdmInfoDTO.class);
            if (bdmInfoDTO != null) {
                return bdmInfoDTO;
            }
            String response = getForEhrWithBdId("/external/employee/employeeSubordinate", bdmUserId);
            log.info("call interface getBdByBdm  bdmUserId={},res={}",bdmUserId,response);
            if (StringUtils.isBlank(response)) {
                log.error("error  call interface getEmployeeSubordinate  fail");
                return null;
            }
            EhrBaseResponse<BdmInfoDTO> res = JSON.parseObject(response, new TypeReference<EhrBaseResponse<BdmInfoDTO>>() {
            });
            if (!"0000".equals(res.getCode())) {
                log.error("error  call interface getBdByBdm  msg={}",res.getMsg());
                return null;
            }
            JedisUtil.getInstance().strings().setCover(key,res.getData(),60*60*24);
            return res.getData();
        }
    
        @Override
        public ManagementCityDto getManagementCityByUserId(Integer userId) {
            String key = RedisConstans.EHR_USER_ROLE + userId + ":" + LocalDate.now().toString();
            ManagementCityDto managementCityDto = JedisUtil.getInstance().strings().get(key, ManagementCityDto.class);
            if (managementCityDto != null) {
                return managementCityDto;
            }
            String response = getForEhrWithBdId("/external/employee/managementCity", userId);
            log.info("call interface getManagementCityByUserId  userId={},res={}",userId,response);
            if (StringUtils.isBlank(response)) {
                log.error("error  call interface getManagementCityByUserId  fail");
                return null;
            }
            EhrBaseResponse<ManagementCityDto> res = JSON.parseObject(response, new TypeReference<EhrBaseResponse<ManagementCityDto>>() {
            });
            if (!"0000".equals(res.getCode())) {
                log.error("error  call interface getManagementCityByUserId  msg={}",res.getMsg());
                return null;
            }
            JedisUtil.getInstance().strings().setCover(key,res.getData(),60*60*24);
            return res.getData();
        }
    }

     

  • 相关阅读:
    win10 安装anaconda+tensorflow
    CNN 理论
    mac 调出任何来源方法
    git忽略文件权限检查
    ios plist获取权限
    Vue-从入门到第三次世界大战_1
    libc++abi.dylib: terminating with uncaught exception of type NSException
    unity3d导出xcode项目使用afnetworking 3框架导致_kUTTagClassMIMEType 问题解决方案
    ios cannot use "@throw" with objective-c exceptions disabled 问题解决方案
    关于iOS APP转让
  • 原文地址:https://www.cnblogs.com/zq1003/p/14517703.html
Copyright © 2020-2023  润新知