java110
2021-09-12 73d769f8394036291b679e4e645d1af0a9f5db99
java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
old mode 100644 new mode 100755
@@ -1,21 +1,21 @@
package com.java110.core.base.controller;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.java110.core.base.AppBase;
import com.java110.core.cache.Java110RedisConfig;
import com.java110.core.context.BusinessServiceDataFlow;
import com.java110.core.context.IPageData;
import com.java110.core.context.PageData;
import com.java110.core.factory.DataFlowFactory;
import com.java110.dto.basePrivilege.BasePrivilegeDto;
import com.java110.utils.cache.PrivilegeCache;
import com.java110.utils.constant.CommonConstant;
import com.java110.utils.constant.ResponseConstant;
import com.java110.utils.constant.ServiceConstant;
import com.java110.utils.exception.NoAuthorityException;
import com.java110.utils.util.StringUtil;
import org.springframework.cache.annotation.Cacheable;
import org.springframework.http.HttpMethod;
import org.springframework.http.HttpStatus;
import com.java110.vo.ResultVo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.ResponseEntity;
import org.springframework.ui.Model;
import org.springframework.web.client.RestTemplate;
@@ -29,6 +29,8 @@
 * Created by wuxw on 2017/2/23.
 */
public class BaseController extends AppBase {
    /**
@@ -114,6 +116,19 @@
        return returnMap;
    }
    // 获取HttpServletRequest里面的参数
    public static Map<String, String> getRequestParams(HttpServletRequest request) {
        Map<String, String[]> params = request.getParameterMap();
        Map<String, String> params2 = new HashMap<>();
        for (String key : params.keySet()) {
            String[] values = params.get(key);
            if (values.length > 0) {
                params2.put(key, request.getParameter(key));
            }
        }
        return params2;
    }
    protected void initHeadParam(HttpServletRequest request, Map headers) {
        Enumeration reqHeaderEnum = request.getHeaderNames();
@@ -125,7 +140,8 @@
        headers.put("IP", getIpAddr(request));
        headers.put("hostName", request.getLocalName());
        //headers.put("hostName", request.getLocalName()); 这里导致部分主机 速度比较慢
        headers.put("hostName", "localhost");
        headers.put("port", request.getLocalPort() + "");
        //处理app-id
@@ -144,7 +160,7 @@
        }
        //处理req-time
        if (headers.containsKey("user-id")) {
        if (headers.containsKey("user-id") && !"-1".equals(headers.get("user-id"))) {
            headers.put("user_id", headers.get("user-id"));
        }
@@ -275,29 +291,7 @@
        return businessServiceDataFlow;
    }
    protected void hasPrivilege(RestTemplate restTemplate, IPageData pd, String resource) {
        ResponseEntity<String> responseEntity = null;
        //没有用户的情况下不做权限判断
        if (StringUtil.isEmpty(pd.getUserId())) {
            return;
        }
        JSONObject paramIn = new JSONObject();
        paramIn.put("resource", resource);
        paramIn.put("userId", pd.getUserId());
        responseEntity = checkUserHasResourceListener(restTemplate, pd, paramIn, resource + pd.getUserId());
        if (responseEntity.getStatusCode() != HttpStatus.OK) {
            throw new UnsupportedOperationException("用户没有权限操作");
        }
    }
    @Cacheable(value = "checkUserHasResourceListener" + Java110RedisConfig.DEFAULT_EXPIRE_TIME_KEY, key = "#cacheKey")
    private ResponseEntity<String> checkUserHasResourceListener(RestTemplate restTemplate, IPageData pd, JSONObject paramIn, String cacheKey) {
        ResponseEntity<String> responseEntity = null;
        responseEntity = this.callCenterService(restTemplate, pd, paramIn.toJSONString(),
                ServiceConstant.SERVICE_API_URL + "/api/basePrivilege.CheckUserHasResourceListener",
                HttpMethod.POST);
        return responseEntity;
    }
}