From 63a15c7601226c8a9d18b071330e47ea9e6d5940 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期六, 11 九月 2021 14:05:48 +0800
Subject: [PATCH] 优化代码

---
 java110-core/src/main/java/com/java110/core/base/controller/BaseController.java |  274 ++++++++++++++++++++++++++++++++++++++++++++++++------
 1 files changed, 241 insertions(+), 33 deletions(-)

diff --git a/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java b/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
old mode 100644
new mode 100755
index ba9a01b..c2397a3
--- a/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
+++ b/java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
@@ -1,22 +1,27 @@
 package com.java110.core.base.controller;
 
 
+import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
-import com.java110.common.constant.CommonConstant;
-import com.java110.common.constant.ResponseConstant;
-import com.java110.common.exception.NoAuthorityException;
-import com.java110.common.factory.PageDataFactory;
-import com.java110.common.log.LoggerEngine;
-
-import com.java110.common.util.SequenceUtil;
-import com.java110.common.util.StringUtil;
 import com.java110.core.base.AppBase;
-import com.java110.entity.service.PageData;
-import org.springframework.util.StringUtils;
+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.core.smo.IGetCommunityStoreInfoSMO;
+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.exception.NoAuthorityException;
+import com.java110.utils.util.StringUtil;
+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;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.net.URLEncoder;
 import java.util.*;
 
 /**
@@ -26,39 +31,44 @@
  */
 public class BaseController extends AppBase {
 
+    @Autowired
+    private IGetCommunityStoreInfoSMO getCommunityStoreInfoSMOImpl;
+
 
     /**
      * 妫�鏌ョ敤鎴风櫥褰�
+     *
      * @throws NoAuthorityException
      */
-    protected void checkLogin(PageData pd) throws NoAuthorityException{
-        if(StringUtil.isNullOrNone(pd.getUserId())){
-            throw new NoAuthorityException(ResponseConstant.RESULT_CODE_NO_AUTHORITY_ERROR,"鐢ㄦ埛鏈櫥褰曪紝璇风櫥褰曪紒");
+    protected void checkLogin(PageData pd) throws NoAuthorityException {
+        if (StringUtil.isNullOrNone(pd.getUserId())) {
+            throw new NoAuthorityException(ResponseConstant.RESULT_CODE_NO_AUTHORITY_ERROR, "鐢ㄦ埛鏈櫥褰曪紝璇风櫥褰曪紒");
         }
     }
 
 
     /**
      * 灏唘rl鍙傛暟鍐欏埌header map涓�
+     *
      * @param request
      */
-    protected void initUrlParam(HttpServletRequest request,Map headers) {
-		/*put real ip address*/
+    protected void initUrlParam(HttpServletRequest request, Map headers) {
+        /*put real ip address*/
 
         Map readOnlyMap = request.getParameterMap();
 
-        StringBuffer queryString = new StringBuffer(request.getRequestURL()!=null?request.getRequestURL():"");
+        StringBuffer queryString = new StringBuffer(request.getRequestURL() != null ? request.getRequestURL() : "");
 
         if (readOnlyMap != null && !readOnlyMap.isEmpty()) {
             queryString.append("?");
             Set<String> keys = readOnlyMap.keySet();
-            for (Iterator it = keys.iterator(); it.hasNext();) {
+            for (Iterator it = keys.iterator(); it.hasNext(); ) {
                 String key = (String) it.next();
                 String[] value = (String[]) readOnlyMap.get(key);
 //                String[] value = (String[]) readOnlyMap.get(key);
-                if(value.length>1) {
+                if (value.length > 1) {
                     headers.put(key, value[0]);
-                    for(int j =0 ;j<value.length;j++){
+                    for (int j = 0; j < value.length; j++) {
                         queryString.append(key);
                         queryString.append("=");
                         queryString.append(value[j]);
@@ -75,29 +85,92 @@
             }
         }
 
-		/*put requst url*/
-        if (readOnlyMap != null && !readOnlyMap.isEmpty()){
-            headers.put("REQUEST_URL",queryString.toString().substring(0, queryString.toString().length() - 1));
-        }else{
-            headers.put("REQUEST_URL",queryString.toString());
+        /*put requst url*/
+        if (readOnlyMap != null && !readOnlyMap.isEmpty()) {
+            headers.put("REQUEST_URL", queryString.toString().substring(0, queryString.toString().length() - 1));
+        } else {
+            headers.put("REQUEST_URL", queryString.toString());
         }
 
     }
 
-    protected void initHeadParam(HttpServletRequest request,Map headers) {
+    public static Map<String, String> getParameterStringMap(HttpServletRequest request) {
+        Map<String, String[]> properties = request.getParameterMap();//鎶婅姹傚弬鏁板皝瑁呭埌Map<String, String[]>涓�
+        Map<String, String> returnMap = new HashMap<String, String>();
+        String name = "";
+        String value = "";
+        for (Map.Entry<String, String[]> entry : properties.entrySet()) {
+            name = entry.getKey();
+            String[] values = entry.getValue();
+            if (null == values) {
+                value = "";
+            } else if (values.length > 1) {
+                for (int i = 0; i < values.length; i++) { //鐢ㄤ簬璇锋眰鍙傛暟涓湁澶氫釜鐩稿悓鍚嶇О
+                    value = values[i] + ",";
+                }
+                value = value.substring(0, value.length() - 1);
+            } else {
+                value = values[0];//鐢ㄤ簬璇锋眰鍙傛暟涓姹傚弬鏁板悕鍞竴
+            }
+            returnMap.put(name, value);
+
+        }
+        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();
 
-        while( reqHeaderEnum.hasMoreElements() ) {
-            String headerName = (String)reqHeaderEnum.nextElement();
-            headers.put(headerName, request.getHeader(headerName));
+        while (reqHeaderEnum.hasMoreElements()) {
+            String headerName = (String) reqHeaderEnum.nextElement();
+            headers.put(headerName.toLowerCase(), request.getHeader(headerName));
         }
 
-        headers.put("IP",getIpAddr(request));
+        headers.put("IP", getIpAddr(request));
+
+        //headers.put("hostName", request.getLocalName()); 杩欓噷瀵艰嚧閮ㄥ垎涓绘満 閫熷害姣旇緝鎱�
+        headers.put("hostName", "localhost");
+        headers.put("port", request.getLocalPort() + "");
+
+        //澶勭悊app-id
+        if (headers.containsKey("app-id")) {
+            headers.put("app_id", headers.get("app-id"));
+        }
+
+        //澶勭悊transaction-id
+        if (headers.containsKey("transaction-id")) {
+            headers.put("transaction_id", headers.get("transaction-id"));
+        }
+
+        //澶勭悊req-time
+        if (headers.containsKey("req-time")) {
+            headers.put("req_time", headers.get("req-time"));
+        }
+
+        //澶勭悊req-time
+        if (headers.containsKey("user-id") && !"-1".equals(headers.get("user-id"))) {
+            headers.put("user_id", headers.get("user-id"));
+        }
+
     }
 
     /**
      * 鑾峰彇IP鍦板潃
+     *
      * @param request
      * @return
      */
@@ -124,15 +197,150 @@
 
     /**
      * 鍒涘缓 PageData 瀵硅薄
+     *
      * @param request
      * @return
      * @throws IllegalArgumentException
      */
-    protected PageData getPageData(HttpServletRequest request){
-        if(request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA) == null){
+    protected PageData getPageData(HttpServletRequest request) {
+        if (request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA) == null) {
             throw new IllegalArgumentException("璇锋眰鍙傛暟閿欒");
         }
         return (PageData) request.getAttribute(CommonConstant.CONTEXT_PAGE_DATA);
     }
 
+    /**
+     * 鏌ヨ鑿滃崟
+     *
+     * @param model
+     * @param pd
+     */
+    protected void getMenus(Model model, PageData pd, List<Map> menuItems) {
+        List<Map> removeMenuItems = new ArrayList<Map>();
+        for (Map menuItem : menuItems) {
+            if (!"-1".equals(menuItem.get("parentId")) && !"1".equals(menuItem.get("level"))) {
+                Map parentMenuItem = this.getMenuItemFromList(menuItems, menuItem.get("parentId").toString());
+                if (parentMenuItem == null) {
+                    continue;
+                }
+                if (parentMenuItem.containsKey("subMenus")) {
+                    List<Map> subMenus = (List<Map>) parentMenuItem.get("subMenus");
+                    subMenus.add(menuItem);
+                } else {
+                    List<Map> subMenus = new ArrayList<Map>();
+                    subMenus.add(menuItem);
+                    parentMenuItem.put("subMenus", subMenus);
+                }
+
+                //removeMenuItems.add(menuItem);
+            }
+        }
+
+
+        //bug 20180510 濡傛灉鍦ㄤ竴绾ц彍鍗曚笅闈㈡病鏈夋寕浜岀骇鑿滃崟鎶ラ敊闂澶勭悊
+        ifNoSubMenusToRemove(menuItems, removeMenuItems);
+
+        removeMap(menuItems, removeMenuItems);
+
+
+        model.addAttribute("menus", menuItems);
+    }
+
+
+    private Map getMenuItemFromList(List<Map> menuItems, String parentId) {
+        for (Map menuItem : menuItems) {
+            if (menuItem.get("mId").toString().equals(parentId)) {
+                return menuItem;
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 鍒犻櫎map
+     *
+     * @param menuItems
+     * @param removeMenuItems
+     */
+    private void removeMap(List<Map> menuItems, List<Map> removeMenuItems) {
+        if (removeMenuItems == null || removeMenuItems.size() == 0) {
+            return;
+        }
+
+        for (Map removeMenuItem : removeMenuItems) {
+            menuItems.remove(removeMenuItem);
+        }
+    }
+
+    private void ifNoSubMenusToRemove(List<Map> menuItems, List<Map> removeMenuItems) {
+        for (Map menu : menuItems) {
+            if (!menu.containsKey("subMenus")) {
+                removeMenuItems.add(menu);
+            }
+        }
+    }
+
+    /**
+     * 灏佽鏁版嵁
+     *
+     * @param reqJson
+     * @param headers
+     * @return
+     * @throws Exception
+     */
+    protected BusinessServiceDataFlow writeDataToDataFlowContext(String reqJson, Map<String, String> headers) throws Exception {
+        BusinessServiceDataFlow businessServiceDataFlow = DataFlowFactory.newInstance(BusinessServiceDataFlow.class).builder(reqJson, headers);
+        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());
+
+        //鏍¢獙璧勬簮璺姴鏄惁瀹氫箟鏉冮檺
+        List<BasePrivilegeDto> basePrivilegeDtos = PrivilegeCache.getPrivileges();
+        if (basePrivilegeDtos == null || basePrivilegeDtos.size() < 1) {
+            return;
+        }
+        String tmpResource = null;
+        boolean hasPrivilege = false;
+        for (BasePrivilegeDto privilegeDto : basePrivilegeDtos) {
+            if (resource.equals(privilegeDto.getResource())) {
+                hasPrivilege = true;
+            }
+        }
+        if (!hasPrivilege) { //鏉冮檺娌℃湁閰嶇疆锛岀洿鎺ヨ烦杩�
+            return;
+        }
+
+        ResultVo resultVo = getCommunityStoreInfoSMOImpl.checkUserHasResourceListener(restTemplate, pd, paramIn, pd.getUserId());
+        if (resultVo == null || resultVo.getCode() != ResultVo.CODE_OK) {
+            throw new UnsupportedOperationException("鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔");
+        }
+        JSONArray privileges = JSONArray.parseArray(resultVo.getMsg());
+
+        hasPrivilege = false;
+        if (privileges == null || privileges.size() < 1) {
+            throw new UnsupportedOperationException("鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔");
+        }
+        for (int privilegeIndex = 0; privilegeIndex < privileges.size(); privilegeIndex++) {
+            tmpResource = privileges.getJSONObject(privilegeIndex).getString("resource");
+            if (resource.equals(tmpResource)) {
+                hasPrivilege = true;
+                break;
+            }
+        }
+        if (!hasPrivilege) {
+            throw new UnsupportedOperationException("鐢ㄦ埛娌℃湁鏉冮檺鎿嶄綔");
+        }
+
+    }
+
+
 }

--
Gitblit v1.8.0