Sfoglia il codice sorgente

控制中心中加入刷新缓存功能

wuxw7 8 anni fa
parent
commit
9a8bc3ca15

+ 0 - 0
CenterService/doc/~$nterServiceTestDocument.docx


+ 9 - 7
CenterService/src/main/java/com/java110/center/api/CacheApi.java

@@ -2,9 +2,12 @@ package com.java110.center.api;
 
 import com.java110.center.smo.ICenterServiceCacheSMO;
 import com.java110.common.constant.ResponseConstant;
+import com.java110.common.factory.DataQueryFactory;
 import com.java110.common.factory.DataTransactionFactory;
 import com.java110.core.base.controller.BaseController;
+import com.java110.entity.service.DataQuery;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestMethod;
 import org.springframework.web.bind.annotation.RestController;
@@ -28,16 +31,15 @@ public class CacheApi extends BaseController{
     }
 
     @RequestMapping(path = "/cacheApi/flush",method= RequestMethod.POST)
-    public String flushPost(HttpServletRequest request) {
+    public String flushPost(@RequestBody String businessInfo) {
         try {
-            centerServiceCacheSMOImpl.flush();
+            DataQuery dataQuery = DataQueryFactory.newInstance().builder(businessInfo);
+            centerServiceCacheSMOImpl.flush(dataQuery);
+            return dataQuery.getResponseInfo().toJSONString();
         }catch (Exception e){
-            logger.error("刷新缓存异常",e);
-            return DataTransactionFactory.createOrderResponseJson(ResponseConstant.NO_TRANSACTION_ID,
-                    ResponseConstant.RESULT_CODE_ERROR,e.getMessage()+e).toJSONString();
+            logger.error("请求订单异常",e);
+            return DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_ERROR,e.getMessage()+e).toJSONString();
         }
-        return DataTransactionFactory.createOrderResponseJson(ResponseConstant.NO_TRANSACTION_ID,
-                ResponseConstant.RESULT_CODE_SUCCESS,"成功").toJSONString();
     }
 
     public ICenterServiceCacheSMO getCenterServiceCacheSMOImpl() {

+ 3 - 1
CenterService/src/main/java/com/java110/center/smo/ICenterServiceCacheSMO.java

@@ -1,5 +1,7 @@
 package com.java110.center.smo;
 
+import com.java110.entity.service.DataQuery;
+
 /**
  * Created by wuxw on 2018/4/18.
  */
@@ -8,5 +10,5 @@ public interface ICenterServiceCacheSMO {
     /**
      * 刷新 缓存
      */
-    public void flush();
+    public void flush(DataQuery dataQuery);
 }

+ 39 - 7
CenterService/src/main/java/com/java110/center/smo/impl/CenterServiceCacheSMOImpl.java

@@ -1,12 +1,18 @@
 package com.java110.center.smo.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import com.java110.center.dao.ICenterServiceDAO;
 import com.java110.center.smo.ICenterServiceCacheSMO;
 import com.java110.common.cache.AppRouteCache;
 import com.java110.common.cache.MappingCache;
 import com.java110.common.cache.ServiceSqlCache;
+import com.java110.common.constant.CommonConstant;
+import com.java110.common.constant.ResponseConstant;
+import com.java110.common.exception.SMOException;
+import com.java110.common.factory.DataTransactionFactory;
 import com.java110.entity.center.AppRoute;
 import com.java110.entity.mapping.Mapping;
+import com.java110.entity.service.DataQuery;
 import com.java110.entity.service.ServiceSql;
 import com.java110.service.dao.IQueryServiceDAO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -31,22 +37,37 @@ public class CenterServiceCacheSMOImpl implements ICenterServiceCacheSMO {
     IQueryServiceDAO queryServiceDAOImpl;
 
     @Override
-    public void flush() {
+    public void flush(DataQuery dataQuery) throws SMOException{
+
+
 
         //1.0 封装 AppRoute
-        flushAppRoute();
+        flushAppRoute(dataQuery);
 
         //2.0 分装 Mapping
-        flushMapping();
+        flushMapping(dataQuery);
 
         //3.0 分装 ServiceSql
-        flushServiceSql();
+        flushServiceSql(dataQuery);
+
+        dataQuery.setResponseInfo(DataTransactionFactory.createBusinessResponseJson(ResponseConstant.RESULT_CODE_SUCCESS,"刷新成功"));
     }
 
+    private void checkCacheParam(DataQuery dataQuery) throws SMOException{
+        JSONObject params = dataQuery.getRequestParams();
+        if(params == null || !params.containsKey(CommonConstant.CACHE_PARAM_NAME)){
+            throw new SMOException(ResponseConstant.RESULT_PARAM_ERROR,"请求报文错误,未包含字段 "+CommonConstant.CACHE_PARAM_NAME);
+        }
+    }
     /**
      * 3.0 分装 ServiceSql
      */
-    private void flushServiceSql() {
+    private void flushServiceSql(DataQuery dataQuery) {
+
+        JSONObject params = dataQuery.getRequestParams();
+        if(!CommonConstant.CACHE_SERVICE_SQL.equals(params.getString(CommonConstant.CACHE_PARAM_NAME))){
+            return ;
+        }
         List<ServiceSql> serviceSqls = queryServiceDAOImpl.qureyServiceSqlAll();
 
         if(serviceSqls == null || serviceSqls.size() == 0){
@@ -60,7 +81,13 @@ public class CenterServiceCacheSMOImpl implements ICenterServiceCacheSMO {
     /**
      * 刷新 Mapping 数据
      */
-    private void flushMapping() {
+    private void flushMapping(DataQuery dataQuery) {
+
+        JSONObject params = dataQuery.getRequestParams();
+
+        if(!CommonConstant.CACHE_MAPPING.equals(params.getString(CommonConstant.CACHE_PARAM_NAME))){
+            return ;
+        }
 
         List<Mapping> mappings = centerServiceDAOImpl.getMappingInfoAll();
 
@@ -89,8 +116,13 @@ public class CenterServiceCacheSMOImpl implements ICenterServiceCacheSMO {
     /**
      * 刷新AppRoute数据
      */
-    private void flushAppRoute(){
+    private void flushAppRoute(DataQuery dataQuery){
+
+        JSONObject params = dataQuery.getRequestParams();
 
+        if(!CommonConstant.CACHE_APP_ROUTE_SERVICE.equals(params.getString(CommonConstant.CACHE_PARAM_NAME))){
+            return ;
+        }
         List<Map> appInfos = centerServiceDAOImpl.getAppRouteAndServiceInfoAll();
         Map<String,List<AppRoute>> appRoustsMap = new HashMap<String,List<AppRoute>>();
         List<AppRoute> appRoutes = null;

BIN
ConsoleService/doc/img/20180511010848.jpg


+ 20 - 0
ConsoleService/src/main/java/com/java110/console/rest/ConsoleRest.java

@@ -68,4 +68,24 @@ public class ConsoleRest extends BaseController {
 
         return pd.getResJson().toJSONString();
     }
+
+    @RequestMapping(path = "/console/flushCache",method = RequestMethod.POST)
+    public String flushCache(HttpServletRequest request){
+        PageData pd = null;
+        try {
+            pd = this.getPageData(request);
+            // 判断用户是否登录
+            checkLogin(pd);
+            consoleServiceSMOImpl.flushCache(pd);
+        }catch (IllegalArgumentException e){
+            return DataTransactionFactory.pageResponseJson(pd, ResponseConstant.RESULT_PARAM_ERROR,e.getMessage(),null);
+        }catch (SMOException e){
+            return DataTransactionFactory.pageResponseJson(pd,e.getResult().getCode(),e.getMessage(),null);
+        }catch (Exception e){
+            logger.error("异常信息:",e);
+            return DataTransactionFactory.pageResponseJson(pd,ResponseConstant.RESULT_CODE_ERROR,"请求参数出错 ",null);
+        }
+
+        return pd.getResJson().toJSONString();
+    }
 }

+ 13 - 0
ConsoleService/src/main/java/com/java110/console/smo/IConsoleServiceSMO.java

@@ -51,5 +51,18 @@ public interface IConsoleServiceSMO {
      */
     public void getTemplateData(PageData pd) throws SMOException;
 
+    /**
+     * 刷新缓存
+     * @param pd
+     * @throws SMOException
+     */
+    public void flushCache(PageData pd) throws SMOException;
+
+    /**
+     * 查询缓存信息
+     * @param pd
+     */
+    public void queryCacheOne(PageData pd) throws  SMOException;
+
 
 }

+ 64 - 3
ConsoleService/src/main/java/com/java110/console/smo/impl/ConsoleServiceSMOImpl.java

@@ -263,8 +263,10 @@ public class ConsoleServiceSMOImpl extends LoggerEngine implements IConsoleServi
         //查询模板信息
         getTemplate(pd);
         JSONObject template = pd.getData().getJSONObject("template");
-        String rows = pd.getParam().getString("rows");
-        String page = pd.getParam().getString("page");
+        Assert.isInteger(pd.getParam().getString("rows"),"rows 字段不能为空,并且为整数");
+        Assert.isInteger(pd.getParam().getString("page"),"page 字段不能为空,并且为整数");
+        int rows = Integer.parseInt(pd.getParam().getString("rows"));
+        int page = Integer.parseInt(pd.getParam().getString("page"));
         String sord = pd.getParam().getString("sord");
         String templateUrl = template.getString("templateUrl");
         if(StringUtil.isNullOrNone(templateUrl) || !templateUrl.contains(CommonConstant.TEMPLATE_URL_LIST)){
@@ -274,8 +276,9 @@ public class ConsoleServiceSMOImpl extends LoggerEngine implements IConsoleServi
         Map paramIn = new HashMap();
 
         paramIn.put("rows", rows);
-        paramIn.put("page", page);
+        paramIn.put("page", (page-1)*rows);
         paramIn.put("sord", sord);
+        paramIn.put("userId", pd.getUserId());
         paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
         paramIn.put(ServiceCodeConstant.SERVICE_CODE,getServiceCode(templateUrl,CommonConstant.TEMPLATE_URL_LIST));
         paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,"数据查询");
@@ -285,6 +288,64 @@ public class ConsoleServiceSMOImpl extends LoggerEngine implements IConsoleServi
         pd.setResJson(businessObj);
     }
 
+
+    /**
+     * 刷新缓存
+     * @param pd
+     * @throws SMOException
+     */
+    public void flushCache(PageData pd) throws SMOException{
+        //查询单条缓存信息
+        queryCacheOne(pd);
+
+        JSONObject cacheObj = pd.getData().getJSONObject("cache");
+
+        String serviceCode = cacheObj.getString("serviceCode");
+
+        String param = cacheObj.getString("param");
+        if(!Assert.isJsonObject(param)){
+            throw new SMOException(ResponseConstant.RESULT_CODE_CONFIG_ERROR,serviceCode+"缓存配置param错误,不是有效的json格式");
+        }
+        Map paramIn = new HashMap();
+        paramIn.putAll(JSONObject.parseObject(param));
+        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
+        paramIn.put(ServiceCodeConstant.SERVICE_CODE,serviceCode);
+        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,"刷新缓存");
+        //paramIn.put("userPwd", userPwd);
+        JSONObject businessObj = doExecute(paramIn);
+
+        Assert.notEmpty(businessObj,"刷新缓存失败,请联系管理员");
+
+        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"查询成功 ",null));
+
+    }
+
+    /**
+     * 查询缓存信息
+     * @param pd
+     */
+    public void queryCacheOne(PageData pd) throws  SMOException{
+        String cacheCode = pd.getParam().getString("cacheCode");
+
+        Assert.hasText(cacheCode,"缓存编码不能为空");
+
+        Map paramIn = new HashMap();
+        paramIn.put("cacheCode", cacheCode);
+        paramIn.put(CommonConstant.ORDER_USER_ID,pd.getUserId());
+        paramIn.put(ServiceCodeConstant.SERVICE_CODE,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_CACHE);
+        paramIn.put(ServiceCodeConstant.SERVICE_CODE_NAME,ServiceCodeConstant.SERVICE_CODE_QUERY_CONSOLE_CACHE_NAME);
+        //paramIn.put("userPwd", userPwd);
+        JSONObject businessObj = doExecute(paramIn);
+
+        Assert.isNotNull(businessObj,"cache","查询单条缓存信息 配置错误,返回报文中未包含cache节点");
+
+
+        JSONObject templateObj = new JSONObject();
+        templateObj.put("cache",businessObj.getJSONObject("cache"));
+        pd.setData(templateObj);
+        pd.setResJson(DataTransactionFactory.pageResponseJson(pd.getTransactionId(),ResponseConstant.RESULT_CODE_SUCCESS,"查询成功 ",templateObj));
+
+    }
     /**
      * 获取serviceCode
      * @param templateUrl

+ 86 - 0
ConsoleService/src/main/resources/html/list_template_cache.html

@@ -0,0 +1,86 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
+    <meta charset="utf-8" />
+    <title>${templateName} - java110</title>
+
+    <meta name="description" content="Dynamic tables and grids using jqGrid plugin" />
+    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
+
+    <!-- page specific plugin styles -->
+    <link rel="stylesheet" href="../assets/css/jquery-ui.min.css" />
+    <link rel="stylesheet" href="../assets/css/bootstrap-datepicker3.min.css" />
+    <link rel="stylesheet" href="../assets/css/ui.jqgrid.min.css" />
+
+    <#include "import.html">
+</head>
+
+<body class="no-skin">
+<#include "header.html">
+
+<div class="main-container ace-save-state" id="main-container">
+    <script type="text/javascript">
+				try{ace.settings.loadState('main-container')}catch(e){}
+			</script>
+
+    <#include "menu.html">
+
+    <div class="main-content">
+        <div class="main-content-inner">
+
+            <div class="page-content">
+
+                <#include "page_header.html">
+
+                <div class="row">
+                    <div class="col-xs-12">
+                        <#include "notify.html">
+
+                            <input type="hidden" id="templateCode" name="templateCode" value="${templateCode}"/>
+
+                        <table id="grid-table"></table>
+
+                        <!-- PAGE CONTENT ENDS -->
+                    </div><!-- /.col -->
+                </div><!-- /.row -->
+            </div><!-- /.page-content -->
+        </div>
+    </div><!-- /.main-content -->
+
+        <#include "footer.html">
+
+    <a href="#" id="btn-scroll-up" class="btn-scroll-up btn btn-sm btn-inverse">
+        <i class="ace-icon fa fa-angle-double-up icon-only bigger-110"></i>
+    </a>
+</div><!-- /.main-container -->
+
+<!-- basic scripts -->
+
+<!--[if !IE]> -->
+<script src="../assets/js/jquery-2.1.4.min.js"></script>
+
+<!-- <![endif]-->
+
+<!--[if IE]>
+<script src="../assets/js/jquery-1.11.3.min.js"></script>
+<![endif]-->
+<script type="text/javascript">
+			if('ontouchstart' in document.documentElement) document.write("<script src='../assets/js/jquery.mobile.custom.min.js'>"+"<"+"/script>");
+		</script>
+<script src="../assets/js/bootstrap.min.js"></script>
+
+<!-- page specific plugin scripts -->
+<script src="../assets/js/bootstrap-datepicker.min.js"></script>
+<script src="../assets/js/jquery.jqGrid.min.js"></script>
+<script src="../assets/js/grid.locale-cn.js"></script>
+
+<!-- ace scripts -->
+<script src="../assets/js/ace-elements.min.js"></script>
+<script src="../assets/js/ace.min.js"></script>
+    <script src="../javascript/java110_req_data.js"></script>
+<!-- inline scripts related to this page -->
+    <script src="../javascript/java110_list_template_cache.js"></script>
+    <script src="../javascript/java110_list_template.js"></script>
+</body>
+</html>

+ 42 - 0
ConsoleService/src/main/resources/static/javascript/java110_list_template_cache.js

@@ -0,0 +1,42 @@
+function flush(obj,cacheCode){
+    preFlush(obj);
+
+    var reqJson = JSON.stringify(createRequestData("cacheOne",{"cacheCode":cacheCode,"pageSign":""}));
+
+    $.ajax({
+           type: "POST",
+           url: "/console/flushCache",
+           data: reqJson,
+           contentType: "application/text",
+           dataType:"text",
+           success: function(data){
+                   finishFlush(obj);
+                   processCacheResponse(data);
+              },
+           error: function(data){
+               //alertText("网络超时,请稍后再试");
+
+               finishFlush(obj);
+               alert('网络超时,请稍后再试');
+           }
+    });
+}
+
+function processCacheResponse(data){
+       var data = getResponseInfo(data)
+       if(data.code != "0000"){
+           alert(data.msg+",错误ID:"+data.id);
+           return ;
+       }
+       alert("刷新缓存成功");
+}
+
+function preFlush(obj){
+    $(obj).html('刷新中 ...');
+    $(obj).attr('class','btn btn-secondary');
+}
+
+function finishFlush(obj){
+    $(obj).html('刷新缓存');
+    $(obj).attr('class','btn btn-warning');
+}

+ 2 - 0
Readme.md

@@ -60,6 +60,8 @@ Java + spring cloud + mybatis + mysql + kafka + redis
   ![image](https://github.com/java110/MicroCommunity/blob/master/ConsoleService/doc/img/20180507231045.jpg)
   
   ![image](https://github.com/java110/MicroCommunity/blob/master/ConsoleService/doc/img/20180509223107.jpg)
+  
+  ![image](https://github.com/java110/MicroCommunity/blob/master/ConsoleService/doc/img/20180511010848.jpg)
 
 
 10、统一接口地址:http://yourIp:8001/httpApi/service

+ 19 - 0
java110-common/src/main/java/com/java110/common/constant/CommonConstant.java

@@ -85,4 +85,23 @@ public class CommonConstant {
     public final static String TEMPLATE_URL_SPILT = ";";
 
 
+    public final static String CACHE_PARAM_NAME = "cacheName";
+
+    /**
+     * 组件路由 服务 缓存常量
+     */
+    public final static String CACHE_APP_ROUTE_SERVICE = "APP_ROUTE_SERVICE";
+
+    /**
+     * 映射 缓存常量
+     */
+    public final static String CACHE_MAPPING = "MAPPING";
+
+    /**
+     * 映射 缓存常量
+     */
+    public final static String CACHE_SERVICE_SQL = "SERVICE_SQL";
+
+
+
 }

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

@@ -38,6 +38,17 @@ public class ServiceCodeConstant {
     public static final String SERVICE_CODE_QUERY_CONSOLE_TEMPLATE_NAME = "查询模板信息";
 
 
+    /**
+     * 查询菜单编码
+     */
+    public static final String SERVICE_CODE_QUERY_CONSOLE_CACHE = "query.console.cache";
+
+    /**
+     * 查询菜单编码名称
+     */
+    public static final String SERVICE_CODE_QUERY_CONSOLE_CACHE_NAME = "查询单条缓存信息";
+
+
     /**
      * 查询菜单编码
      */

+ 12 - 0
java110-common/src/main/java/com/java110/common/util/Assert.java

@@ -2,6 +2,7 @@ package com.java110.common.util;
 
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
 
 import java.util.List;
 import java.util.Map;
@@ -106,4 +107,15 @@ public class Assert extends org.springframework.util.Assert{
         }
         return true;
     }
+
+    /**
+     * 校验是否为整数
+     * @param text
+     * @param msg
+     */
+    public static void isInteger(String text,String msg){
+        if(!StringUtils.isNumeric(text)){
+            throw new IllegalArgumentException(msg);
+        }
+    }
 }

+ 131 - 12
java110-config/db/CenterService/create_table.db

@@ -3,7 +3,7 @@ create database TT;
 -- c_orders
 
 CREATE TABLE c_orders(
-    o_id VARCHAR(18) NOT NULL COMMENT '订单ID',
+    o_id VARCHAR(18) NOT NULL UNIQUE COMMENT '订单ID',
     app_id VARCHAR(10) NOT NULL COMMENT '应用ID',
     ext_transaction_id VARCHAR(30) NOT NULL COMMENT '外部交易流水',
     user_id VARCHAR(12) NOT NULL COMMENT '用户ID',
@@ -27,7 +27,7 @@ CREATE TABLE c_orders_attrs(
 -- c_business
 
 CREATE TABLE c_business(
-    b_id VARCHAR(18) NOT NULL COMMENT '业务Id',
+    b_id VARCHAR(18) NOT NULL UNIQUE COMMENT '业务Id',
     o_id VARCHAR(18) NOT NULL COMMENT '订单ID',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
     business_type_cd VARCHAR(4) NOT NULL COMMENT '业务项类型,参考c_business_type表',
@@ -49,7 +49,7 @@ CREATE TABLE c_business_attrs(
 
 CREATE TABLE c_status(
     id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    status_cd VARCHAR(4) NOT NULL COMMENT '状态',
+    status_cd VARCHAR(4) NOT NULL UNIQUE COMMENT '状态',
     `name` VARCHAR(50) NOT NULL COMMENT '名称',
     description VARCHAR(200) COMMENT '描述',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
@@ -67,7 +67,7 @@ INSERT INTO c_status(status_cd,NAME,description) VALUES('C','错误订单','错
 
 CREATE TABLE c_order_type(
     id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    order_type_cd VARCHAR(4) NOT NULL COMMENT '订单类型',
+    order_type_cd VARCHAR(4) NOT NULL UNIQUE COMMENT '订单类型',
     `name` VARCHAR(50) NOT NULL COMMENT '名称',
     description VARCHAR(200) COMMENT '描述',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
@@ -78,7 +78,7 @@ CREATE TABLE c_order_type(
 
 CREATE TABLE c_business_type(
     id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    business_type_cd VARCHAR(4) NOT NULL COMMENT '业务项类型',
+    business_type_cd VARCHAR(4) NOT NULL UNIQUE COMMENT '业务项类型',
     `name` VARCHAR(50) NOT NULL COMMENT '名称',
     description VARCHAR(200) COMMENT '描述',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
@@ -88,7 +88,7 @@ CREATE TABLE c_business_type(
 
 CREATE TABLE spec(
     id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    spec_cd VARCHAR(4) NOT NULL COMMENT '业务项类型规格编码,从x00020001开始每次加一就可以(约定,x=10表示c_orders_attrs 中属性,x=11表示c_business_attrs 中的属性)',
+    spec_cd VARCHAR(4) NOT NULL UNIQUE COMMENT '业务项类型规格编码,从x00020001开始每次加一就可以(约定,x=10表示c_orders_attrs 中属性,x=11表示c_business_attrs 中的属性)',
     `name` VARCHAR(50) NOT NULL COMMENT '名称',
     description VARCHAR(200) COMMENT '描述',
     create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间'
@@ -112,7 +112,7 @@ CREATE TABLE c_route(
 
 CREATE TABLE c_service(
     service_id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    service_code VARCHAR(50) NOT NULL COMMENT '自定义,命名方式查询类query.+目标系统+.+业务名称 保存类 save.+目标系统+.+业务名称 修改类 modify.+目标系统+.+业务名称 删除类 remove.+目标系统+.+业务名称 例如:query.user.userinfo save.user.adduserinfo',
+    service_code VARCHAR(50) NOT NULL UNIQUE COMMENT '自定义,命名方式查询类query.+目标系统+.+业务名称 保存类 save.+目标系统+.+业务名称 修改类 modify.+目标系统+.+业务名称 删除类 remove.+目标系统+.+业务名称 例如:query.user.userinfo save.user.adduserinfo',
     invoke_model VARCHAR(1) NOT NULL COMMENT '1-同步方式 2-异步方式',
     business_type_cd VARCHAR(4) NOT NULL COMMENT '业务项类型,参考c_business_type表',
     `name` VARCHAR(50) NOT NULL COMMENT '服务名称',
@@ -162,7 +162,7 @@ INSERT c_mapping(domain,`name`,`key`,`value`,remark) VALUES('DOMAIN.COMMON','控
 -- c_app
 CREATE TABLE c_app(
     id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    app_id VARCHAR(10) NOT NULL COMMENT '应用ID',
+    app_id VARCHAR(10) NOT NULL UNIQUE COMMENT '应用ID',
     `name` VARCHAR(50) NOT NULL COMMENT '名称 对应系统名称',
     security_code VARCHAR(64) NOT NULL COMMENT '签名码 sign签名时用',
     while_list_ip VARCHAR(200) COMMENT '白名单ip 多个之间用;隔开',
@@ -175,7 +175,7 @@ CREATE TABLE c_app(
 -- c_service_sql
 CREATE TABLE c_service_sql(
     id INT NOT NULL AUTO_INCREMENT KEY COMMENT 'id',
-    service_code VARCHAR(50) NOT NULL COMMENT '对应c_service表',
+    service_code VARCHAR(50) NOT NULL UNIQUE COMMENT '对应c_service表',
     `name` VARCHAR(50) NOT NULL COMMENT '名称',
     params VARCHAR(500) NOT NULL COMMENT '参数',
     query_model VARCHAR(1) NOT NULL COMMENT '查询方式 1、sql,2、存储过程',
@@ -220,6 +220,24 @@ VALUES('query.console.templateCol','S','Q','查询列模板信息',1,'http://cen
 INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
 VALUES('query.center.mapping','S','Q','查询映射数据',1,'http://center-service/businessApi/query','8000418002');
 
+INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
+VALUES('query.center.apps','S','Q','查询外部应用',1,'http://center-service/businessApi/query','8000418002');
+
+INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
+VALUES('query.center.services','S','Q','查询服务',1,'http://center-service/businessApi/query','8000418002');
+
+INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
+VALUES('query.center.routes','S','Q','查询路由',1,'http://center-service/businessApi/query','8000418002');
+
+INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
+VALUES('flush.center.cache','S','Q','CenterService缓存',1,'http://center-service/cacheApi/flush','8000418002');
+
+INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
+VALUES('query.console.caches','S','Q','查询所有缓存',1,'http://center-service/businessApi/query','8000418002');
+
+INSERT INTO c_service(service_code,invoke_model,business_type_cd,`name`,seq,url,provide_app_id)
+VALUES('query.console.cache','S','Q','查询所有缓存',1,'http://center-service/businessApi/query','8000418002');
+
 insert into c_route(app_id,service_id,order_type_cd,status_cd) values(
 '8000418001','1','Q','0'
 );
@@ -248,6 +266,28 @@ INSERT INTO c_route(app_id,service_id,order_type_cd,status_cd) VALUES(
 '8000418002','8','Q','0'
 );
 
+INSERT INTO c_route(app_id,service_id,order_type_cd,status_cd) VALUES(
+'8000418002','9','Q','0'
+);
+
+
+INSERT INTO c_route(app_id,service_id,order_type_cd,status_cd) VALUES(
+'8000418002','10','Q','0'
+);
+
+INSERT INTO c_route(app_id,service_id,order_type_cd,status_cd) VALUES(
+'8000418002','11','Q','0'
+);
+
+INSERT INTO c_route(app_id,service_id,order_type_cd,status_cd) VALUES(
+'8000418002','12','Q','0'
+);
+INSERT INTO c_route(app_id,service_id,order_type_cd,status_cd) VALUES(
+'8000418002','13','Q','0'
+);
+
+
+
 
 
 INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
@@ -278,7 +318,8 @@ VALUES('query.console.menu','查询菜单','manageId,menuGroup','1','{
                                                               and mm2u.status_cd = ''0''
                                                               and mm.status_cd = ''0''
                                                               and mmc.m_id = mm.m_id
-                                                              and mmc.status_cd = ''0''"
+                                                              and mmc.status_cd = ''0''
+                                                              order by mm.seq asc"
                                                  }','','{"PARAM":{
                                                             "param1": "$.#menus#Array"
                                                             },"TEMPLATE":{
@@ -329,8 +370,23 @@ VALUES('query.console.templateCol','查询模板列信息','templateCode','1','{
                                                        }}','','0');
 
 INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
-VALUES('query.center.mapping','查询映射数据','page,rows,sord','1','{"select count(1) records,#page# page,ceil(count(1)/10) total from c_mapping m where m.status_cd = ''0''",
-                                                             "param2":"SELECT m.`id` id,m.`domain` domain,m.name name,m.`key` key ,m.`value` value,m.`remark` remark FROM c_mapping m WHERE m.`status_cd` = ''0'' LIMIT (#page#-1)*#rows#, #rows#"
+VALUES('query.center.mapping','查询映射数据','page,rows,sord','1','{"param1":"select count(1) records,ceil(#page#/#rows#)+1 page,ceil(count(1)/#rows#) total from c_mapping m where m.status_cd = ''0''",
+                                                             "param2":"SELECT m.`id` id,m.`domain` domain,m.name name,m.`key`  `key` ,m.`value` `value`,m.`remark` remark FROM c_mapping m WHERE m.`status_cd` = ''0'' LIMIT #page#, #rows#"
+                                                             }','','{
+                                                        	"PARAM": {
+                                                        		"param1": "$.##Object",
+                                                        		"param2": "$.#rows#Array"
+                                                        	},
+                                                        	"TEMPLATE": {
+                                                        		"response": {
+                                                        			"code": "0000",
+                                                        			"message": "成功"
+                                                        		}
+                                                        	}
+                                                        }','','0');
+INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
+VALUES('query.center.apps','查询外部应用','page,rows,sord','1','{"param1":"select count(1) records,ceil(#page#/#rows#)+1 page,ceil(count(1)/#rows#) total from c_app a where a.status_cd = ''0''",
+                                                             "param2":"SELECT m.`id` id,m.`app_id` appId,m.name `name`,m.`security_code`  securityCode ,m.`while_list_ip` whileListIp,m.`black_list_ip` blackListIp,m.`remark` remark FROM c_app m WHERE m.`status_cd` = ''0'' LIMIT #page#, #rows#"
                                                              }','','{
                                                         	"PARAM": {
                                                         		"param1": "$.##Object",
@@ -344,6 +400,69 @@ VALUES('query.center.mapping','查询映射数据','page,rows,sord','1','{"selec
                                                         	}
                                                         }','','0');
 
+INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
+VALUES('query.center.services','查询服务数据','page,rows,sord','1','{"param1":"select count(1) records,ceil(#page#/#rows#)+1 page,ceil(count(1)/#rows#) total from c_service a where a.status_cd = ''0''",
+                                                             "param2":"SELECT s.`service_id` serviceId,s.`service_code` serviceCode,s.`invoke_model` invokeModel,s.`business_type_cd`  businessTypeCd,s.name `name`,
+                                                                       s.`messageQueueName` messageQueueName,s.url url,s.`provide_app_id` provideAppId FROM c_service s WHERE s.`status_cd` = ''0'' LIMIT #page#, #rows#"
+                                                             }','','{
+                                                        	"PARAM": {
+                                                        		"param1": "$.##Object",
+                                                        		"param2": "$.#rows#Array"
+                                                        	},
+                                                        	"TEMPLATE": {
+                                                        		"response": {
+                                                        			"code": "0000",
+                                                        			"message": "成功"
+                                                        		}
+                                                        	}
+                                                        }','','0');
+
+INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
+VALUES('query.center.route','查询路由数据','page,rows,sord','1','{"param1":"select count(1) records,ceil(#page#/#rows#)+1 page,ceil(count(1)/#rows#) total from c_route a,c_service cs WHERE a.`service_id` = cs.`service_id` AND cs.`status_cd` = ''0'' and a.status_cd = ''0''",
+                                                             "param2":"SELECT s.id id,s.`app_id` appId,s.`service_id` serviceId,cs.`name` serviceName,cs.`service_code` serviceCode,s.`order_type_cd` orderTypeCd,s.`invoke_limit_times` invokelimitTimes FROM c_route s,c_service cs WHERE s.`service_id` = cs.`service_id` AND cs.`status_cd` = ''0'' AND s.`status_cd` = ''0'' LIMIT #page#, #rows#"
+                                                             }','','{
+                                                        	"PARAM": {
+                                                        		"param1": "$.##Object",
+                                                        		"param2": "$.#rows#Array"
+                                                        	},
+                                                        	"TEMPLATE": {
+                                                        		"response": {
+                                                        			"code": "0000",
+                                                        			"message": "成功"
+                                                        		}
+                                                        	}
+                                                        }','','0');
+
+INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
+VALUES('query.console.caches','查询路由数据','userId','1','{
+                                                             "param1":"SELECT c.id id,c.`cache_code` cacheCode, c.`name` cacheName FROM c_cache c, c_cache_2_user c2u WHERE c.`cache_code` = c2u.`cache_code` AND c.`status_cd` = ''0''
+                                                                       AND c2u.`status_cd` = ''0'' AND c2u.`user_id` = #10001# AND c.`group` = ''COMMON'' ORDER BY c.`seq` ASC"
+                                                             }','','{
+                                                        	"PARAM": {
+                                                        		"param1": "$.#rows#Array"
+                                                        	},
+                                                        	"TEMPLATE": {
+                                                        		"response": {
+                                                        			"code": "0000",
+                                                        			"message": "成功"
+                                                        		}
+                                                        	}
+                                                        }','','0');
+INSERT INTO c_service_sql(service_code,`name`,params,query_model,`sql`,proc,template,remark,status_cd)
+VALUES('query.console.cache','查询单条缓存信息','cacheCode','1','{
+                                                             "param1":"SELECT c.id id,c.`cache_code` cacheCode, c.`name` cacheName,c.`param` param,c.`service_code` serviceCode FROM c_cache c WHERE  c.`status_cd` = ''0'' AND c.`cache_code` = #cacheCode#"
+                                                             }','','{
+                                                        	"PARAM": {
+                                                        		"param1": "$.#cache#Object"
+                                                        	},
+                                                        	"TEMPLATE": {
+                                                        		"response": {
+                                                        			"code": "0000",
+                                                        			"message": "成功"
+                                                        		}
+                                                        	}
+                                                        }','','0');
+
 
 
 

File diff suppressed because it is too large
+ 185 - 14
java110-config/db/ConsoleService/create_table.db


+ 16 - 1
java110-core/src/main/java/com/java110/core/base/controller/BaseController.java

@@ -158,11 +158,18 @@ public class BaseController extends AppBase {
                     parentMenuItem.put("subMenus",subMenus);
                 }
 
-                removeMenuItems.add(menuItem);
+                //removeMenuItems.add(menuItem);
             }
         }
 
+
+        //bug 20180510 如果在一级菜单下面没有挂二级菜单报错问题处理
+        ifNoSubMenusToRemove(menuItems,removeMenuItems);
+
         removeMap(menuItems,removeMenuItems);
+
+
+
         model.addAttribute("menus",menuItems);
     }
 
@@ -190,4 +197,12 @@ public class BaseController extends AppBase {
             menuItems.remove(removeMenuItem);
         }
     }
+
+    private void ifNoSubMenusToRemove(List<Map> menuItems,List<Map> removeMenuItems){
+        for(Map menu :menuItems){
+            if(!menu.containsKey("subMenus")){
+                removeMenuItems.add(menu);
+            }
+        }
+    }
 }