月球大数据地理空间分析展示平台-【后端】-月球后台服务
13693261870
2023-07-18 243a135077985aa517e00320a7327bb8c459f460
src/main/java/com/moon/server/service/sys/ProxyService.java
@@ -51,6 +51,9 @@
        if (null == ue) {
            return;
        }
        if (!check(req, res, ue, token)) {
            return;
        }
        // 9.获取资源实体
        ResEntity entity = getResEntity(ue, resId);
@@ -62,7 +65,8 @@
        insertLog(req, ue, resId);
        String url = getSourceUrl(req, entity, token);
        forward(req, res, url);
        res.setHeader("token", token);
        forward(req, res, entity, url);
    }
    /**
@@ -155,7 +159,7 @@
     */
    private ResEntity getResEntity(UserEntity ue, int resId) {
        String uid = StaticData.ADMIN.equals(ue.getUid()) ? null : ue.getUid();
        List<ResEntity> rs = permsService.selectResList(uid);
        List<ResEntity> rs = permsService.selectRes(uid);
        if (null == rs || rs.isEmpty()) {
            return null;
        }
@@ -174,19 +178,19 @@
     * 插入日志
     */
    private void insertLog(HttpServletRequest req, UserEntity ue, int resId) {
        String ip = WebHelper.getIpAddress(req);
        ResLogEntity entity = new ResLogEntity();
        entity.setResid(resId);
        entity.setType(getRequestType(req.getMethod()));
        entity.setIp(ip);
        entity.setUrl(req.getRequestURL().toString());
        entity.setCreateUser(ue.getId());
        AsyncHelper helper = new AsyncHelper();
        helper.execute(new TimerTask() {
            @Override
            public void run() {
                String ip = WebHelper.getIpAddress(req);
                ResLogEntity entity = new ResLogEntity();
                entity.setResid(resId);
                entity.setType(getRequestType(req.getMethod()));
                entity.setIp(ip);
                entity.setUrl(req.getRequestURL().toString());
                entity.setCreateUser(ue.getId());
                resLogService.insert(entity);
            }
        });
@@ -226,14 +230,19 @@
        String proxyUrl = entity.getProxy().replace("{token}", token);
        int end = req.getRequestURL().indexOf(proxyUrl) + proxyUrl.length();
        return entity.getUrl() + req.getRequestURL().substring(end);
        String url = entity.getUrl() + req.getRequestURL().substring(end);
        if (null != req.getQueryString()) {
            url = url + (entity.getUrl().contains("?") ? "&" : "?") + req.getQueryString();
        }
        return url;
    }
    /**
     * 转发请求
     */
    private void forward(HttpServletRequest request, HttpServletResponse response, String url) throws Exception {
    private void forward(HttpServletRequest request, HttpServletResponse response, ResEntity entity, String url) throws Exception {
        HttpHelper httpHelper = new HttpHelper();
        httpHelper.service(request, response, url, null);
        httpHelper.service(request, response, entity, url);
    }
}