吴学文
2019-03-20 4a7837c46a5d10755ba1eeb29f833c3eaa8a703e
java110-core/src/main/java/com/java110/core/base/controller/BaseController.java
@@ -1,22 +1,18 @@
package com.java110.core.base.controller;
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.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.*;
/**
@@ -84,16 +80,44 @@
    }
    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, request.getHeader(headerName));
            headers.put(headerName.toLowerCase(), request.getHeader(headerName));
        }
        headers.put("IP",getIpAddr(request));
        headers.put("hostName",request.getLocalName());
        headers.put("port",request.getLocalPort()+"");
    }
    /**
@@ -135,4 +159,87 @@
        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;
    }
}