Sfoglia il codice sorgente

加入查询菜单信息

wuxw 7 anni fa
parent
commit
69c700b474

+ 140 - 0
Api/src/main/java/com/java110/api/listener/menu/QueryMenuServiceListener.java

@@ -0,0 +1,140 @@
+package com.java110.api.listener.menu;
+
+import com.alibaba.fastjson.JSONArray;
+import com.alibaba.fastjson.JSONObject;
+import com.java110.api.listener.AbstractServiceApiDataFlowListener;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ServiceCodeConstant;
+import com.java110.common.util.Assert;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.entity.center.AppService;
+import com.java110.event.service.api.ServiceDataFlowEvent;
+import org.springframework.http.*;
+
+import java.util.Map;
+
+/**
+ * 根据用户ID查询菜单信息
+ * Created by Administrator on 2019/4/1.
+ */
+@Java110Listener("queryMenuServiceListener")
+public class QueryMenuServiceListener extends AbstractServiceApiDataFlowListener {
+    @Override
+    public int getOrder() {
+        return 0;
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_QUERY_MENU_INFO;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return HttpMethod.GET;
+    }
+
+    /**
+     * 业务处理
+     * @param event
+     */
+    @Override
+    public void soService(ServiceDataFlowEvent event) {
+        DataFlowContext dataFlowContext = event.getDataFlowContext();
+        AppService service = event.getAppService();
+        //get 方式下 请求参数会转化到header 中
+        Map<String,String> requestHeaders = dataFlowContext.getRequestHeaders();
+        Assert.hasKey(requestHeaders,"userId","请求信息中未包含userId信息");
+
+        String userId = requestHeaders.get("userId");
+        //
+        ResponseEntity responseEntity= null;
+        String requestUrl = service.getUrl() + "?userId="+userId;
+        dataFlowContext.getRequestHeaders().put("REQUEST_URL",requestUrl);
+        HttpHeaders header = new HttpHeaders();
+        header.add(CommonConstant.HTTP_SERVICE.toLowerCase(),ServiceCodeConstant.SERVICE_CODE_QUERY_MENU_INFO);
+        HttpEntity<String> httpEntity = new HttpEntity<String>("", header);
+        doRequest(dataFlowContext,service,httpEntity);
+        responseEntity = dataFlowContext.getResponseEntity();
+        //如果调用后端失败了 则直接返回
+        if(responseEntity.getStatusCode() != HttpStatus.OK){
+            return ;
+        }
+
+        JSONObject resultObj = JSONObject.parseObject(responseEntity.getBody().toString());
+
+        if(!resultObj.containsKey("menus")){
+            return ;
+        }
+
+        dataFlowContext.setResponseEntity(refreshMenusInfo(resultObj.getJSONArray("menus")));
+
+    }
+
+    /**
+     * 刷新菜单信息
+     * 将 数据 [{
+     "gId": "800201904001",
+     "menuDescription": "添加员工",
+     "menuGroupSeq": 1,
+     "menuSeq": 1,
+     "icon": "fa-desktop",
+     "mId": "700201904001",
+     "menuName": "添加员工",
+     "pId": "500201904001",
+     "menuGroupName": "员工管理",
+     "label": "",
+     "menuGroupDescription": "员工管理",
+     "url": "/"
+     }],
+     转为:
+     * "[{'id':1,'icon':'fa-desktop','name':'我的菜单','label':'HOT','childs':[" +
+     "{'name':'子菜单','href':'http://www.baidu.com'}]}," +
+     "{'id':2,'icon':'fa-flask','name':'我的菜单','childs':[],'href':'/doc'}," +
+     "{'id':3,'icon':'fa-globe','name':'我的菜单','childs':[{'name':'子菜单','href':'http://www.baidu.com'}]}" +
+     "]";
+     * @param menusList 菜单列表
+     *
+     * @return
+     */
+    private ResponseEntity<String> refreshMenusInfo(JSONArray menusList){
+        JSONArray tempMenus = new JSONArray();
+        JSONObject tempMenu = null;
+        for(int menuIndex = 0 ; menuIndex < menusList.size(); menuIndex ++){
+            JSONObject tMenu = menusList.getJSONObject(menuIndex);
+            tempMenu = this.getMenuFromMenus(tempMenus,tMenu.getString("gId"));
+            if(tempMenu == null){
+                tempMenu = new JSONObject();
+                tempMenu.put("id",tMenu.getString("gId"));
+                tempMenu.put("icon",tMenu.getString("icon"));
+                tempMenu.put("name",tMenu.getString("menuGroupName"));
+                tempMenu.put("label",tMenu.getString("label"));
+                tempMenu.put("childs",new JSONArray());
+                tempMenus.add(tempMenu);
+            }
+            //获取孩子菜单
+            JSONArray childs = tempMenu.getJSONArray("childs");
+            JSONObject childMenu = new JSONObject();
+            childMenu.put("name",tMenu.getString("menuName"));
+            childMenu.put("href",tMenu.getString("url"));
+            childs.add(childMenu);
+        }
+        return new ResponseEntity<String>(tempMenus.toJSONString(),HttpStatus.OK);
+    }
+
+    /**
+     * 在菜单列表查询菜单
+     * @param gId
+     * @return
+     */
+    private JSONObject getMenuFromMenus(JSONArray tempMenus,String gId){
+        for(int tempIndex = 0 ; tempIndex < tempMenus.size();tempIndex ++){
+            if(tempMenus.getJSONObject(tempIndex).getString("id").equals(gId)){
+                return tempMenus.getJSONObject(tempIndex);
+            }
+        }
+
+        return null;
+    }
+}

+ 23 - 1
WebService/src/main/java/com/java110/web/components/MenuComponent.java

@@ -2,6 +2,8 @@ package com.java110.web.components;
 
 import com.alibaba.fastjson.JSONArray;
 import com.java110.core.context.IPageData;
+import com.java110.web.smo.IMenuServiceSMO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.stereotype.Component;
@@ -13,13 +15,16 @@ import org.springframework.stereotype.Component;
 @Component("menu")
 public class MenuComponent {
 
+    @Autowired
+    IMenuServiceSMO menuServiceSMOImpl;
+
     /**
      * 测试版本号
      * @return
      */
     public ResponseEntity<String> getMenus(IPageData pd){
 
-        String menuData = "[{'id':1,'icon':'fa-desktop','name':'我的菜单','label':'HOT','childs':[" +
+       /* String menuData = "[{'id':1,'icon':'fa-desktop','name':'我的菜单','label':'HOT','childs':[" +
                 "{'name':'子菜单','href':'http://www.baidu.com'}]}," +
                 "{'id':2,'icon':'fa-flask','name':'我的菜单','childs':[],'href':'/doc'}," +
                 "{'id':3,'icon':'fa-globe','name':'我的菜单','childs':[{'name':'子菜单','href':'http://www.baidu.com'}]}" +
@@ -28,6 +33,23 @@ public class MenuComponent {
         JSONArray menus = JSONArray.parseArray(menuData);
 
         return new ResponseEntity<String>(menus.toJSONString(), HttpStatus.OK);
+
+        */
+        ResponseEntity<String> responseEntity = null;
+        try{
+            responseEntity =  menuServiceSMOImpl.queryMenusByUserId(pd);
+        }catch (Exception e){
+            responseEntity = new ResponseEntity<String>(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR);
+        }finally {
+            return responseEntity;
+        }
     }
 
+    public IMenuServiceSMO getMenuServiceSMOImpl() {
+        return menuServiceSMOImpl;
+    }
+
+    public void setMenuServiceSMOImpl(IMenuServiceSMO menuServiceSMOImpl) {
+        this.menuServiceSMOImpl = menuServiceSMOImpl;
+    }
 }

+ 17 - 0
WebService/src/main/java/com/java110/web/smo/IMenuServiceSMO.java

@@ -0,0 +1,17 @@
+package com.java110.web.smo;
+
+import com.java110.core.context.IPageData;
+import org.springframework.http.ResponseEntity;
+
+/**
+ * Created by Administrator on 2019/4/1.
+ */
+public interface IMenuServiceSMO {
+
+    /**
+     * 根据用户查菜单
+     * @return
+     */
+    public ResponseEntity<String> queryMenusByUserId(IPageData pd);
+
+}

+ 56 - 0
WebService/src/main/java/com/java110/web/smo/impl/MenuServiceSMOImpl.java

@@ -0,0 +1,56 @@
+package com.java110.web.smo.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.common.constant.ServiceConstant;
+import com.java110.common.util.Assert;
+import com.java110.core.context.IPageData;
+import com.java110.core.factory.AuthenticationFactory;
+import com.java110.web.core.BaseComponentSMO;
+import com.java110.web.smo.IMenuServiceSMO;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.HttpMethod;
+import org.springframework.http.HttpStatus;
+import org.springframework.http.ResponseEntity;
+import org.springframework.stereotype.Service;
+import org.springframework.web.client.RestTemplate;
+
+/**
+ * Created by Administrator on 2019/4/1.
+ */
+@Service("menuServiceSMOImpl")
+public class MenuServiceSMOImpl extends BaseComponentSMO implements IMenuServiceSMO {
+
+    private final static Logger logger = LoggerFactory.getLogger(FlowServiceSMOImpl.class);
+
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+
+    /**
+     *
+     * @param pd
+     * @return
+     */
+    @Override
+    public ResponseEntity<String> queryMenusByUserId(IPageData pd) {
+        ResponseEntity<String> responseEntity = null;
+
+        Assert.hasLength(pd.getUserId(),"用户还没有登录");
+
+        responseEntity = this.callCenterService(restTemplate,pd,"",
+                ServiceConstant.SERVICE_API_URL+"/api/query.menu.info?userId="+pd.getUserId(), HttpMethod.GET);
+        return responseEntity;
+    }
+
+
+    public RestTemplate getRestTemplate() {
+        return restTemplate;
+    }
+
+    public void setRestTemplate(RestTemplate restTemplate) {
+        this.restTemplate = restTemplate;
+    }
+}

+ 2 - 2
java110-common/src/main/java/com/java110/common/constant/ServiceCodeConstant.java

@@ -9,12 +9,12 @@ public class ServiceCodeConstant {
     /**
      * 查询菜单编码
      */
-    public static final String SERVICE_CODE_QUERY_MENU_ITEM = "query.console.menu";
+    public static final String SERVICE_CODE_QUERY_MENU_INFO = "query.menu.info";
 
     /**
      * 查询菜单编码名称
      */
-    public static final String SERVICE_CODE_QUERY_MENU_ITEM_NAME = "查询菜单";
+    public static final String SERVICE_CODE_QUERY_MENU_INFO_NAME = "查询菜单";
 
     /**
      * 查询菜单编码

+ 36 - 10
java110-config/db/WebService/menu.sql

@@ -2,34 +2,60 @@
 -- 这里只做二级菜单
  -- 菜单组
 create table m_menu_group(
-    group_id int not null auto_increment key comment '权限线组ID',
-    name varchar(10) not null comment '菜单名称',
+    g_id varchar(12) not null comment '菜单组ID',
+    name varchar(10) not null comment '菜单名称',
     icon varchar(20) not null comment '菜单图片',
+    label varchar(20) not null comment '菜单标签',
     seq INT NOT NULL  COMMENT '列顺序',
+    description VARCHAR(200) COMMENT '菜单描述',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效'
+    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
+    UNIQUE KEY (g_id)
 );
 
 -- 菜单
 create table m_menu(
-    m_id INT NOT NULL AUTO_INCREMENT KEY COMMENT '菜单ID',
+    m_id varchar(12) not null comment '菜单ID',
     name varchar(10) not null comment '菜单名称',
-    level varchar(2) not null comment '菜单级别 一级菜单 为 1 二级菜单为2',
-    parent_id int not null comment '父类菜单id 如果是一类菜单则写为-1 如果是二类菜单则写父类的菜单id',
-    menu_group varchar(10) not null comment '菜单组 left 显示在页面左边的菜单',
-    user_id varchar(12) not null comment '创建菜单的用户id',
-    remark VARCHAR(200) COMMENT '描述',
+    g_id varchar(12) not null comment '菜单组ID',
+    url VARCHAR(200)  not null COMMENT '打开地址',
     seq INT NOT NULL  COMMENT '列顺序',
+    p_id varchar(12) not null comment '权限ID',
+    description VARCHAR(200) COMMENT '菜单描述',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
-    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效'
+    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
+    UNIQUE KEY (m_id)
 );
 
 -- 权限组
 
 create table p_privilege_group(
+    pg_id varchar(12) not null comment '权限组ID',
+    name varchar(10) not null comment '权限组名称',
+    description VARCHAR(200) COMMENT '权限组描述',
+    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
+    UNIQUE KEY (pg_id)
 
 );
 -- 权限表
 create table p_privilege(
+    p_id varchar(12) not null comment '权限ID',
+    name varchar(10) not null comment '权限名称',
+    pg_id varchar(12) comment '权限组ID',
+    description VARCHAR(200) COMMENT '权限描述',
+    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
+    UNIQUE KEY (p_id)
+);
 
+-- 权限用户表
+create table p_privilege_user(
+    pu_id INT NOT NULL AUTO_INCREMENT KEY comment '权限用户ID',
+    p_id varchar(12) not null comment '权限ID 或权限组ID',
+    privilege_flag varchar(4) not null DEFAULT '0' comment '权限标志 是 1是权限组 0是权限',
+    user_id varchar(30) not null comment '用户ID',
+    create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
+    status_cd VARCHAR(2) NOT NULL DEFAULT '0' COMMENT '数据状态,详细参考c_status表,0在用,1失效',
+    UNIQUE KEY (pu_id)
 );