From 4a7837c46a5d10755ba1eeb29f833c3eaa8a703e Mon Sep 17 00:00:00 2001
From: 吴学文 <wuxuewen@wuxuewendeMacBook-Pro.local>
Date: 星期三, 20 三月 2019 00:02:06 +0800
Subject: [PATCH] 开发登录界面完成,登录逻辑 后期完善

---
 java110-core/src/main/java/com/java110/core/base/controller/BaseController.java |  237 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++--
 1 files changed, 229 insertions(+), 8 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
index 6a225f7..4ead590 100644
--- 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,18 +1,19 @@
 package com.java110.core.base.controller;
 
 
-import com.alibaba.fastjson.JSONObject;
-import com.java110.common.log.LoggerEngine;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.exception.NoAuthorityException;
 
+import com.java110.common.util.StringUtil;
 import com.java110.core.base.AppBase;
-import org.springframework.util.StringUtils;
+import com.java110.core.context.BusinessServiceDataFlow;
+import com.java110.core.factory.DataFlowFactory;
+import com.java110.core.context.PageData;
+import org.springframework.ui.Model;
 
 import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.net.URLEncoder;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Map;
+import java.util.*;
 
 /**
  * 鎵�鏈夋帶鍒剁被鐨勭埗绫伙紝缁熶竴鍙傛暟澶勭悊
@@ -21,4 +22,224 @@
  */
 public class BaseController extends AppBase {
 
+
+    /**
+     * 妫�鏌ョ敤鎴风櫥褰�
+     * @throws NoAuthorityException
+     */
+    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*/
+
+        Map readOnlyMap = request.getParameterMap();
+
+        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();) {
+                String key = (String) it.next();
+                String[] value = (String[]) readOnlyMap.get(key);
+//                String[] value = (String[]) readOnlyMap.get(key);
+                if(value.length>1) {
+                    headers.put(key, value[0]);
+                    for(int j =0 ;j<value.length;j++){
+                        queryString.append(key);
+                        queryString.append("=");
+                        queryString.append(value[j]);
+                        queryString.append("&");
+                    }
+
+                } else {
+                    headers.put(key, value[0]);
+                    queryString.append(key);
+                    queryString.append("=");
+                    queryString.append(value[0]);
+                    queryString.append("&");
+                }
+            }
+        }
+
+		/*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());
+        }
+
+    }
+
+    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;
+    }
+
+    protected void initHeadParam(HttpServletRequest request,Map headers) {
+
+        Enumeration reqHeaderEnum = request.getHeaderNames();
+
+        while( reqHeaderEnum.hasMoreElements() ) {
+            String headerName = (String)reqHeaderEnum.nextElement();
+            headers.put(headerName.toLowerCase(), request.getHeader(headerName));
+        }
+
+        headers.put("IP",getIpAddr(request));
+
+        headers.put("hostName",request.getLocalName());
+        headers.put("port",request.getLocalPort()+"");
+
+    }
+
+    /**
+     * 鑾峰彇IP鍦板潃
+     * @param request
+     * @return
+     */
+    protected String getIpAddr(HttpServletRequest request) {
+        String ip = request.getHeader("X-Forwarded-For");
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("WL-Proxy-Client-IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("HTTP_CLIENT_IP");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getHeader("HTTP_X_FORWARDED_FOR");
+        }
+        if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
+            ip = request.getRemoteAddr();
+        }
+
+        return ip;
+    }
+
+    /**
+     * 鍒涘缓 PageData 瀵硅薄
+     * @param request
+     * @return
+     * @throws IllegalArgumentException
+     */
+    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;
+    }
+
+
 }

--
Gitblit v1.8.0