From 3ed2627f7c05e8eaa4559371f9d6d2cb71aa4275 Mon Sep 17 00:00:00 2001
From: java110 <928255095@qq.com>
Date: 星期日, 12 九月 2021 14:11:08 +0800
Subject: [PATCH] 优化刷新缓存功能

---
 service-dev/src/main/java/com/java110/dev/dao/IBusinessTableHisV1ServiceDao.java                    |   77 +
 java110-core/src/main/java/com/java110/core/event/cmd/AbstractServiceCmdListener.java               |   12 
 java110-generator/src/main/resources/newTemplate/ServiceDaoImplMapper.txt                           |    2 
 java110-generator/src/main/resources/newTemplate/Po.txt                                             |   24 
 java110-generator/src/main/resources/newTemplate/IServiceDao.txt                                    |   32 
 service-dev/src/main/resources/java110.properties                                                   |    2 
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorDtoBean.java                      |    4 
 service-dev/src/main/java/com/java110/dev/dao/impl/DevServiceDAOImpl.java                           |   53 +
 service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/ListBusinessTableHisCmd.java         |   85 ++
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplListener.java       |    8 
 java110-generator/src/main/resources/newTemplate/dto.txt                                            |   29 
 service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java                     |   29 
 service-dev/src/main/java/com/java110/dev/smo/impl/BusinessTableHisV1InnerServiceSMOImpl.java       |   89 ++
 java110-generator/src/main/resources/newTemplate/ServiceCodeConstant.txt                            |   15 
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorIServiceDaoListener.java          |    8 
 java110-generator/src/main/resources/newTemplate/SaveCmd.txt                                        |   74 +
 java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java               |    2 
 service-dev/src/main/java/com/java110/dev/smo/impl/DevServiceCacheSMOImpl.java                      |   29 
 java110-generator/src/main/resources/newTemplate/DeleteCmd.txt                                      |   69 +
 service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/SaveBusinessTableHisCmd.java         |   78 +
 service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/DeleteBusinessTableHisCmd.java       |   71 +
 java110-bean/src/main/java/com/java110/po/businessTableHis/BusinessTableHisPo.java                  |   82 ++
 java110-generator/src/main/resources/newTemplate/ListCmd.txt                                        |   85 ++
 java110-generator/src/main/resources/newTemplate/InnerServiceSMOImpl.txt                            |   62 
 service-dev/src/main/java/com/java110/dev/dao/impl/BusinessTableHisV1ServiceDaoImpl.java            |  112 ++
 java110-generator/src/main/resources/newTemplate/ServiceDaoImpl.txt                                 |   60 
 java110-db/src/main/resources/mapper/dev/BusinessTableHisV1ServiceDaoImplMapper.xml                 |  112 ++
 java110-interface/src/main/java/com/java110/intf/dev/IBusinessTableHisV1InnerServiceSMO.java        |   68 +
 java110-db/src/main/resources/mapper/dev/DevServiceDAOImplMapper.xml                                |   56 +
 java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java                     |    5 
 service-dev/src/main/java/com/java110/dev/dao/IDevServiceDAO.java                                   |   46 +
 service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java                    |    3 
 java110-db/src/main/java/com/java110/db/Java110MybatisInterceptor.java                              |   62 -
 service-api/src/main/java/com/java110/api/listener/system/CmdListener.java                          |  129 +++
 java110-core/src/main/java/com/java110/core/context/ICmdDataFlowContext.java                        |    2 
 service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java                           |    8 
 java110-generator/src/main/resources/newTemplate/UpdateCmd.txt                                      |   73 +
 java110-bean/src/main/java/com/java110/dto/businessTableHis/BusinessTableHisDto.java                |   83 ++
 java110-generator/src/main/resources/newTemplate/IInnerServiceSMO.txt                               |   36 
 java110-utils/src/main/java/com/java110/utils/exception/CmdException.java                           |   52 
 java110-generator/src/main/java/com/java110/code/newBack/BaseGenerator.java                         |    6 
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorInnerServiceSMOImpl.java          |    8 
 service-dev/src/main/java/com/java110/dev/smo/IDevServiceCacheSMO.java                              |    4 
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java                  |  173 ---
 /dev/null                                                                                           |   50 -
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorIInnerServiceSMO.java             |    8 
 service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/UpdateBusinessTableHisCmd.java       |   75 +
 java110-generator/src/main/resources/newBack/template_1.json                                        |   80 -
 java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java                       |    2 
 java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplMapperListener.java |    4 
 service-dev/src/main/java/com/java110/dev/DevServiceApplicationStart.java                           |   38 
 51 files changed, 1,917 insertions(+), 459 deletions(-)

diff --git a/java110-bean/src/main/java/com/java110/dto/businessTableHis/BusinessTableHisDto.java b/java110-bean/src/main/java/com/java110/dto/businessTableHis/BusinessTableHisDto.java
new file mode 100644
index 0000000..92942fd
--- /dev/null
+++ b/java110-bean/src/main/java/com/java110/dto/businessTableHis/BusinessTableHisDto.java
@@ -0,0 +1,83 @@
+package com.java110.dto.businessTableHis;
+
+import com.java110.dto.PageDto;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * @ClassName FloorDto
+ * @Description 璁㈠崟杞ㄨ抗鏁版嵁灞傚皝瑁�
+ * @Author wuxw
+ * @Date 2019/4/24 8:52
+ * @Version 1.0
+ * add by wuxw 2019/4/24
+ **/
+public class BusinessTableHisDto extends PageDto implements Serializable {
+
+    private String actionObj;
+private String businessTypeCd;
+private String hisId;
+private String action;
+private String remark;
+private String actionObjHis;
+
+
+    private Date createTime;
+
+    private String statusCd = "0";
+
+
+    public String getActionObj() {
+        return actionObj;
+    }
+public void setActionObj(String actionObj) {
+        this.actionObj = actionObj;
+    }
+public String getBusinessTypeCd() {
+        return businessTypeCd;
+    }
+public void setBusinessTypeCd(String businessTypeCd) {
+        this.businessTypeCd = businessTypeCd;
+    }
+public String getHisId() {
+        return hisId;
+    }
+public void setHisId(String hisId) {
+        this.hisId = hisId;
+    }
+public String getAction() {
+        return action;
+    }
+public void setAction(String action) {
+        this.action = action;
+    }
+public String getRemark() {
+        return remark;
+    }
+public void setRemark(String remark) {
+        this.remark = remark;
+    }
+public String getActionObjHis() {
+        return actionObjHis;
+    }
+public void setActionObjHis(String actionObjHis) {
+        this.actionObjHis = actionObjHis;
+    }
+
+
+    public Date getCreateTime() {
+        return createTime;
+    }
+
+    public void setCreateTime(Date createTime) {
+        this.createTime = createTime;
+    }
+
+    public String getStatusCd() {
+        return statusCd;
+    }
+
+    public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+}
diff --git a/java110-bean/src/main/java/com/java110/po/businessTableHis/BusinessTableHisPo.java b/java110-bean/src/main/java/com/java110/po/businessTableHis/BusinessTableHisPo.java
new file mode 100644
index 0000000..e7acda2
--- /dev/null
+++ b/java110-bean/src/main/java/com/java110/po/businessTableHis/BusinessTableHisPo.java
@@ -0,0 +1,82 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.po.businessTableHis;
+
+import java.io.Serializable;
+import java.util.Date;
+/**
+ * 绫昏〃杩帮細 Po 鏁版嵁妯″瀷瀹炰綋瀵硅薄 鍩烘湰淇濇寔涓庢暟鎹簱妯″瀷涓�鐩� 鐢ㄤ簬 澧炲姞淇敼鍒犻櫎 绛夋椂鐨勬暟鎹浇浣�
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+public class BusinessTableHisPo implements Serializable {
+
+    private String actionObj;
+private String businessTypeCd;
+private String hisId;
+private String action;
+private String remark;
+private String statusCd = "0";
+private String actionObjHis;
+public String getActionObj() {
+        return actionObj;
+    }
+public void setActionObj(String actionObj) {
+        this.actionObj = actionObj;
+    }
+public String getBusinessTypeCd() {
+        return businessTypeCd;
+    }
+public void setBusinessTypeCd(String businessTypeCd) {
+        this.businessTypeCd = businessTypeCd;
+    }
+public String getHisId() {
+        return hisId;
+    }
+public void setHisId(String hisId) {
+        this.hisId = hisId;
+    }
+public String getAction() {
+        return action;
+    }
+public void setAction(String action) {
+        this.action = action;
+    }
+public String getRemark() {
+        return remark;
+    }
+public void setRemark(String remark) {
+        this.remark = remark;
+    }
+public String getStatusCd() {
+        return statusCd;
+    }
+public void setStatusCd(String statusCd) {
+        this.statusCd = statusCd;
+    }
+public String getActionObjHis() {
+        return actionObjHis;
+    }
+public void setActionObjHis(String actionObjHis) {
+        this.actionObjHis = actionObjHis;
+    }
+
+
+
+}
diff --git a/java110-core/src/main/java/com/java110/core/context/ICmdDataFlowContext.java b/java110-core/src/main/java/com/java110/core/context/ICmdDataFlowContext.java
index ebbd67d..7c6230e 100644
--- a/java110-core/src/main/java/com/java110/core/context/ICmdDataFlowContext.java
+++ b/java110-core/src/main/java/com/java110/core/context/ICmdDataFlowContext.java
@@ -16,4 +16,6 @@
     ResponseEntity getResponseEntity();
 
     void setResponseEntity(ResponseEntity responseEntity);
+
+    String getServiceCode();
 }
diff --git a/java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java b/java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java
index 74c31ba..f77f1ef 100755
--- a/java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java
+++ b/java110-core/src/main/java/com/java110/core/context/IDataFlowContextPlus.java
@@ -10,7 +10,7 @@
  */
 public interface IDataFlowContextPlus {
 
-    String getServiceCode();
+
 
 
     /**
diff --git a/java110-core/src/main/java/com/java110/core/event/cmd/AbstractServiceCmdListener.java b/java110-core/src/main/java/com/java110/core/event/cmd/AbstractServiceCmdListener.java
index 8fb391e..0bc9c21 100644
--- a/java110-core/src/main/java/com/java110/core/event/cmd/AbstractServiceCmdListener.java
+++ b/java110-core/src/main/java/com/java110/core/event/cmd/AbstractServiceCmdListener.java
@@ -3,6 +3,7 @@
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.context.ICmdDataFlowContext;
 import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -11,6 +12,17 @@
 
     private static Logger logger = LoggerFactory.getLogger(AbstractServiceCmdListener.class);
 
+
+    /**
+     * 鍒嗛〉淇℃伅鏍¢獙
+     *
+     * @param reqJson
+     */
+    protected void validatePageInfo(JSONObject reqJson) {
+        Assert.jsonObjectHaveKey(reqJson, "page", "璇锋眰涓湭鍖呭惈page淇℃伅");
+        Assert.jsonObjectHaveKey(reqJson, "row", "璇锋眰涓湭鍖呭惈row淇℃伅");
+    }
+
     @Override
     public void cmd(CmdEvent event) throws CmdException {
         //杩欓噷澶勭悊涓氬姟閫昏緫鏁版嵁
diff --git a/java110-db/src/main/java/com/java110/db/Java110MybatisInterceptor.java b/java110-db/src/main/java/com/java110/db/Java110MybatisInterceptor.java
index ad15598..ffca6b9 100755
--- a/java110-db/src/main/java/com/java110/db/Java110MybatisInterceptor.java
+++ b/java110-db/src/main/java/com/java110/db/Java110MybatisInterceptor.java
@@ -77,7 +77,10 @@
      */
     private void dealDeleteSql(MappedStatement mappedStatement, Object parameter, String sql, Map<String, Object> sqlValue) {
 
-        String tmpTable = sql.substring(sql.indexOf("into") + 4, sql.indexOf("("));
+        String tmpTable = sql.substring(sql.indexOf("into") + 4, sql.indexOf("(")).trim();
+        if(tmpTable.indexOf(" ") > 0){
+            tmpTable = tmpTable.substring(0,tmpTable.indexOf(" "));
+        }
         String tmpWhere = sql.substring(sql.indexOf("where"));
         //鎻掑叆鎿嶄綔鏃朵箣鍓嶇殑 娌℃湁鏁版嵁 鎵�浠� preValue 涓虹┖瀵硅薄
         JSONArray preValues = new JSONArray();
@@ -127,7 +130,11 @@
     private void dealUpdateSql(MappedStatement mappedStatement, Object parameter, String sql, Map<String, Object> sqlValue) {
         //RestTemplate restTemplate = ApplicationContextFactory.getBean("restTemplate", RestTemplate.class);
 
-        String tmpTable = sql.substring(sql.indexOf("update") + 6, sql.indexOf("set"));
+        String tmpTable = sql.substring(sql.indexOf("update") + 6, sql.indexOf("set")).trim();
+
+        if(tmpTable.indexOf(" ") > 0){
+            tmpTable = tmpTable.substring(0,tmpTable.indexOf(" "));
+        }
         String tmpWhere = sql.substring(sql.indexOf("where"));
 
         //鎻掑叆鎿嶄綔鏃朵箣鍓嶇殑 娌℃湁鏁版嵁 鎵�浠� preValue 涓虹┖瀵硅薄
@@ -210,40 +217,11 @@
 
         JSONArray afterValues = new JSONArray();
 
-        String tmpTable = sql.substring(sql.toLowerCase().indexOf("into") + 4, sql.indexOf("("));
-//        String tmpKey = sql.substring(sql.indexOf("(") + 1, sql.indexOf(")"));
-//        String[] tmpKeys = tmpKey.split(",");
-//        int valuePos = 0;
-//        if (sql.contains("VALUES")) {
-//            valuePos = sql.indexOf("VALUES") + 6;
-//        } else {
-//            valuePos = sql.indexOf("values") + 6;
-//        }
-//        String sqlValues = sql.substring(valuePos);
-//        //璇存槑鎵规搷浣�
-//
-//        String[] sqlVauleses = sqlValues.split("\\)");
-//        JSONObject afterValue = null;
-//        for (String sqlV : sqlVauleses) {
-//            String tmpValue = sqlV.substring(sqlV.lastIndexOf("(") + 1);
-//            String[] tmpValues = tmpValue.split(",");
-//            afterValue = new JSONObject();
-//
-//            if (tmpKeys.length != tmpValues.length) {
-//                throw new IllegalArgumentException("sql 閿欒 key 鍜寁alue 涓暟涓嶇瓑" + sql);
-//            }
-//
-//            if (tmpKeys.length < 1) {
-//                throw new IllegalArgumentException("sql 閿欒 鏈壘鍒発ey" + sql);
-//            }
-//            for (int keyIndex = 0; keyIndex < tmpKeys.length; keyIndex++) {
-//                if ("''".equals(tmpValues[keyIndex])) {
-//                    continue;
-//                }
-//                afterValue.put(tmpKeys[keyIndex], tmpValues[keyIndex]);
-//            }
-//
-//        }
+        String tmpTable = sql.substring(sql.toLowerCase().indexOf("into") + 4, sql.indexOf("(")).trim();
+
+        if(tmpTable.indexOf(" ") > 0){
+            tmpTable = tmpTable.substring(0,tmpTable.indexOf(" "));
+        }
 
         afterValues.add(sqlValue);
 
@@ -269,6 +247,7 @@
         }
 
     }
+
 
     @Override
     public Object plugin(Object target) {
@@ -388,13 +367,10 @@
 
 
     public static void main(String[] args) {
-        String tmpKey = " prime_rate,detail_id,receivable_amount,cycles,remark,status_cd,received_amount,community_id,b_id,fee_id,state";
-        String tmpValue = "'1.00','912020080411040001','1500.0','1.0',,'0','1500.0','7020181217000001','-1',,";
-        String[] tmpKeys = tmpKey.split(",");
-        String[] tmpValues = tmpValue.split(",");
-
-        if (tmpKeys.length != tmpValues.length) {
-            throw new IllegalArgumentException("sql 閿欒 key 鍜寁alue 涓暟涓嶇瓑");
+        String tmpTable = "product_label    t";
+        if(tmpTable.indexOf(" ") > 0){
+            tmpTable = tmpTable.substring(0,tmpTable.indexOf(" "));
         }
+        System.out.printf(tmpTable);
     }
 }
diff --git a/java110-db/src/main/resources/mapper/dev/BusinessTableHisV1ServiceDaoImplMapper.xml b/java110-db/src/main/resources/mapper/dev/BusinessTableHisV1ServiceDaoImplMapper.xml
new file mode 100644
index 0000000..b9e0e62
--- /dev/null
+++ b/java110-db/src/main/resources/mapper/dev/BusinessTableHisV1ServiceDaoImplMapper.xml
@@ -0,0 +1,112 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="businessTableHisV1ServiceDaoImpl">
+
+
+    <!-- 淇濆瓨璁㈠崟杞ㄨ抗淇℃伅 add by wuxw 2018-07-03 -->
+    <insert id="saveBusinessTableHisInfo" parameterType="Map">
+        insert into c_business_table_his(
+        action_obj,business_type_cd,his_id,action,remark,action_obj_his
+        ) values (
+        #{actionObj},#{businessTypeCd},#{hisId},#{action},#{remark},#{actionObjHis}
+        )
+    </insert>
+
+
+    <!-- 鏌ヨ璁㈠崟杞ㄨ抗淇℃伅 add by wuxw 2018-07-03 -->
+    <select id="getBusinessTableHisInfo" parameterType="Map" resultType="Map">
+        select t.action_obj,t.action_obj actionObj,t.business_type_cd,t.business_type_cd
+        businessTypeCd,t.his_id,t.his_id hisId,t.action,t.remark,t.status_cd,t.status_cd
+        statusCd,t.action_obj_his,t.action_obj_his actionObjHis
+        from c_business_table_his t
+        where 1 =1
+        <if test="actionObj !=null and actionObj != ''">
+            and t.action_obj= #{actionObj}
+        </if>
+        <if test="businessTypeCd !=null and businessTypeCd != ''">
+            and t.business_type_cd= #{businessTypeCd}
+        </if>
+        <if test="hisId !=null and hisId != ''">
+            and t.his_id= #{hisId}
+        </if>
+        <if test="action !=null and action != ''">
+            and t.action= #{action}
+        </if>
+        <if test="remark !=null and remark != ''">
+            and t.remark= #{remark}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="actionObjHis !=null and actionObjHis != ''">
+            and t.action_obj_his= #{actionObjHis}
+        </if>
+        order by t.create_time desc
+        <if test="page != -1 and page != null ">
+            limit #{page}, #{row}
+        </if>
+
+    </select>
+
+
+    <!-- 淇敼璁㈠崟杞ㄨ抗淇℃伅 add by wuxw 2018-07-03 -->
+    <update id="updateBusinessTableHisInfo" parameterType="Map">
+        update c_business_table_his t set t.status_cd = #{statusCd}
+        <if test="newBId != null and newBId != ''">
+            ,t.b_id = #{newBId}
+        </if>
+        <if test="actionObj !=null and actionObj != ''">
+            , t.action_obj= #{actionObj}
+        </if>
+        <if test="businessTypeCd !=null and businessTypeCd != ''">
+            , t.business_type_cd= #{businessTypeCd}
+        </if>
+        <if test="action !=null and action != ''">
+            , t.action= #{action}
+        </if>
+        <if test="remark !=null and remark != ''">
+            , t.remark= #{remark}
+        </if>
+        <if test="actionObjHis !=null and actionObjHis != ''">
+            , t.action_obj_his= #{actionObjHis}
+        </if>
+        where 1=1
+        <if test="hisId !=null and hisId != ''">
+            and t.his_id= #{hisId}
+        </if>
+
+    </update>
+
+    <!-- 鏌ヨ璁㈠崟杞ㄨ抗鏁伴噺 add by wuxw 2018-07-03 -->
+    <select id="queryBusinessTableHissCount" parameterType="Map" resultType="Map">
+        select count(1) count
+        from c_business_table_his t
+        where 1 =1
+        <if test="actionObj !=null and actionObj != ''">
+            and t.action_obj= #{actionObj}
+        </if>
+        <if test="businessTypeCd !=null and businessTypeCd != ''">
+            and t.business_type_cd= #{businessTypeCd}
+        </if>
+        <if test="hisId !=null and hisId != ''">
+            and t.his_id= #{hisId}
+        </if>
+        <if test="action !=null and action != ''">
+            and t.action= #{action}
+        </if>
+        <if test="remark !=null and remark != ''">
+            and t.remark= #{remark}
+        </if>
+        <if test="statusCd !=null and statusCd != ''">
+            and t.status_cd= #{statusCd}
+        </if>
+        <if test="actionObjHis !=null and actionObjHis != ''">
+            and t.action_obj_his= #{actionObjHis}
+        </if>
+
+
+    </select>
+
+</mapper>
diff --git a/java110-db/src/main/resources/mapper/dev/DevServiceDAOImplMapper.xml b/java110-db/src/main/resources/mapper/dev/DevServiceDAOImplMapper.xml
new file mode 100644
index 0000000..8fe67ec
--- /dev/null
+++ b/java110-db/src/main/resources/mapper/dev/DevServiceDAOImplMapper.xml
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8" ?>
+<!DOCTYPE mapper
+        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
+        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="devServiceDAOImpl">
+
+
+    <!--鏌ヨ 鎵�鏈夋湁鏁� app淇℃伅-->
+    <select id="getAppRouteAndServiceInfoAll" resultType="Map">
+        <![CDATA[
+
+                     SELECT ca.app_id,ca.name,ca.security_code,ca.while_list_ip,ca.black_list_ip,cr.invoke_limit_times,
+                    cr.order_type_cd,cs.service_id,cs.business_type_cd,cr.invoke_model,cs.is_instance,
+                    cs.messageQueueName,cs.method,cs.name,cs.provide_app_id,cs.retry_count,cs.seq,cs.service_code,
+                    cs.timeout,cs.url FROM c_app ca,c_route cr,c_service cs
+                    WHERE ca.status_cd = '0'
+                    AND ca.app_id = cr.app_id
+                    AND cr.status_cd = '0'
+                    AND cr.service_id = cs.service_id
+                    AND cs.status_cd = '0'
+
+        ]]>
+
+    </select>
+
+    <select id="getMappingInfoAll" resultType="com.java110.entity.mapping.Mapping">
+        <![CDATA[
+
+                     SELECT cm.domain,cm.name,cm.key,cm.value,cm.remark from c_mapping cm where cm.status_cd = '0'
+
+        ]]>
+    </select>
+
+    <select id="getPrivilegeAll" resultType="com.java110.dto.basePrivilege.BasePrivilegeDto">
+        <![CDATA[
+              select t.p_id pId,t.name,t.domain,t.resource,t.description,t.create_time createTime from p_privilege t where t.status_cd = '0'
+        ]]>
+    </select>
+
+    <select id="getDatabusAll" resultType="com.java110.dto.businessDatabus.BusinessDatabusDto">
+        <![CDATA[
+            SELECT
+                t.databus_id databusId,
+                t.databus_name databusName,
+                t.business_type_cd businessTypeCd,
+                t.bean_name beanName,
+                t.seq
+            FROM
+                c_business_databus t
+            WHERE
+                t.status_cd = '0'
+            AND t.state = '1001'
+        ]]>
+    </select>
+
+</mapper>
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java b/java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java
index c3a27a9..b3a30df 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/BackCoderGeneratorStart.java
@@ -29,7 +29,7 @@
     public static void main(String[] args) throws Exception {
 
         //鍔犺浇閰嶇疆
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newBack/template_activitiesType.json").getFile());
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newBack/template_1.json").getFile());
 
         JSONObject dataJson = JSONObject.parseObject(sb.toString());
 
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/BaseGenerator.java b/java110-generator/src/main/java/com/java110/code/newBack/BaseGenerator.java
index 55a0099..09bedbe 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/BaseGenerator.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/BaseGenerator.java
@@ -1,6 +1,7 @@
 package com.java110.code.newBack;
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.util.DateUtil;
 
 import java.io.BufferedReader;
 import java.io.BufferedWriter;
@@ -109,7 +110,8 @@
                 .replace("@@templateKeyName@@", data.getId())
                 .replace("@@TEMPLATECODE@@", data.getName().toUpperCase())
                 .replace("@@searchCode@@", data.getId())
-
-                .replace("@@searchName@@", data.getId());
+                .replace("@@shareName@@", data.getShareName())
+                .replace("@@searchName@@", data.getId())
+                .replace("@@date@@", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
     }
 }
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java
index ef6c09b..f306bdb 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorApiListener.java
@@ -15,15 +15,11 @@
      */
     public void generator(Data data) throws Exception {
         genneratorPo(data);             //API DataVo瀵硅薄
-        genneratorISaveBmo(data);               //API  IBmo
-        genneratorSaveBmoImpl(data);            //Api BmoImpl
-        genneratorIUpdateBmo(data);               //API  IBmo
+        genneratorSaveCmd(data);            //Api BmoImpl
         genneratorUpdateBmoImpl(data);            //Api BmoImpl
-        genneratorIDeleteBmo(data);               //API  IBmo
         genneratorDeleteBmoImpl(data);            //Api BmoImpl
-        genneratorIGetBmo(data);               //API  IBmo
         genneratorGetBmoImpl(data);            //Api BmoImpl
-        genneratorApi(data);
+
     }
 
 
@@ -70,72 +66,37 @@
         }
     }
 
-    /**
-     * 鐢熸垚API 渚﹀惉澶勭悊绫�
-     *
-     * @param data
-     */
-    private void genneratorISaveBmo(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/ISaveBMO.txt").getFile());
-        String fileContext = sb.toString();
-
-        fileContext = super.replaceTemplateContext(fileContext, data);
-
-        String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/ISave" + toUpperCaseFirstOne(data.getName()) + "BMO.java";
-        System.out.printf("writePath: " + writePath);
-        writeFile(writePath,
-                fileContext);
-        //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
-        if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/ISave" + toUpperCaseFirstOne(data.getName()) + "BMO.java");
-        }
-    }
 
     /**
      * 鐢熸垚API 渚﹀惉澶勭悊绫�
      *
      * @param data
      */
-    private void genneratorSaveBmoImpl(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/SaveBMOImpl.txt").getFile());
+    private void genneratorSaveCmd(Data data) throws Exception {
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/SaveCmd.txt").getFile());
         String fileContext = sb.toString();
         fileContext = fileContext.replace("@@shareName@@", data.getShareName())
                 .replace("@@ShareName@@", toUpperCaseFirstOne(data.getShareName()));
 
         fileContext = super.replaceTemplateContext(fileContext, data);
 
-        String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/impl/Save" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java";
-        System.out.printf("writePath: " + writePath);
-        writeFile(writePath,
-                fileContext);
-        //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
-        if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/impl/Save" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java");
+        StringBuffer validateStr = new StringBuffer();
+        for (String key : data.getRequiredParam()) {
+            //JSONObject column = columns.getJSONObject(columnIndex);
+            validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + key + "\", \"璇锋眰鎶ユ枃涓湭鍖呭惈" + key + "\");\n");
+
         }
-    }
 
-
-    /**
-     * 鐢熸垚API 渚﹀惉澶勭悊绫�
-     *
-     * @param data
-     */
-    private void genneratorIUpdateBmo(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/IUpdateBMO.txt").getFile());
-        String fileContext = sb.toString();
-
-        fileContext = super.replaceTemplateContext(fileContext, data);
+        fileContext = fileContext.replace("@@validateTemplateColumns@@", validateStr.toString());
 
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/IUpdate" + toUpperCaseFirstOne(data.getName()) + "BMO.java";
+                + "out/back/cmd/" + data.getName() + "/Save" + toUpperCaseFirstOne(data.getName()) + "Cmd.java";
         System.out.printf("writePath: " + writePath);
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/IUpdate" + toUpperCaseFirstOne(data.getName()) + "BMO.java");
+            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\cmd\\" + data.getName() + "/Save" + toUpperCaseFirstOne(data.getName()) + "Cmd.java");
         }
     }
 
@@ -145,43 +106,27 @@
      * @param data
      */
     private void genneratorUpdateBmoImpl(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/UpdateBMOImpl.txt").getFile());
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/UpdateCmd.txt").getFile());
         String fileContext = sb.toString();
         fileContext = fileContext.replace("@@shareName@@", data.getShareName())
                 .replace("@@ShareName@@", toUpperCaseFirstOne(data.getShareName()));
 
         fileContext = super.replaceTemplateContext(fileContext, data);
 
+        StringBuffer validateStr = new StringBuffer();
+        validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + data.getId() + "\", \"" + data.getId() + "涓嶈兘涓虹┖\");\n");
+        validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + data.getShareParam() + "\", \"" + data.getShareParam() + "涓嶈兘涓虹┖\");\n");
+
+        fileContext = fileContext.replace("@@validateTemplateColumns@@", validateStr.toString());
+
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/impl/Update" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java";
+                + "out/back/cmd/" + data.getName() + "/Update" + toUpperCaseFirstOne(data.getName()) + "Cmd.java";
         System.out.printf("writePath: " + writePath);
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/impl/Update" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java");
-        }
-    }
-
-    /**
-     * 鐢熸垚API 渚﹀惉澶勭悊绫�
-     *
-     * @param data
-     */
-    private void genneratorIDeleteBmo(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/IDeleteBMO.txt").getFile());
-        String fileContext = sb.toString();
-
-        fileContext = super.replaceTemplateContext(fileContext, data);
-
-        String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/IDelete" + toUpperCaseFirstOne(data.getName()) + "BMO.java";
-        System.out.printf("writePath: " + writePath);
-        writeFile(writePath,
-                fileContext);
-        //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
-        if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/IDelete" + toUpperCaseFirstOne(data.getName()) + "BMO.java");
+            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\cmd\\" + data.getName() + "/Update" + toUpperCaseFirstOne(data.getName()) + "Cmd.java");
         }
     }
 
@@ -191,43 +136,26 @@
      * @param data
      */
     private void genneratorDeleteBmoImpl(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/DeleteBMOImpl.txt").getFile());
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/DeleteCmd.txt").getFile());
         String fileContext = sb.toString();
         fileContext = fileContext.replace("@@shareName@@", data.getShareName())
                 .replace("@@ShareName@@", toUpperCaseFirstOne(data.getShareName()));
 
         fileContext = super.replaceTemplateContext(fileContext, data);
+        StringBuffer validateStr = new StringBuffer();
+        validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + data.getId() + "\", \"" + data.getId() + "涓嶈兘涓虹┖\");\n");
+        validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + data.getShareParam() + "\", \"" + data.getShareParam() + "涓嶈兘涓虹┖\");\n");
+
+        fileContext = fileContext.replace("@@validateTemplateColumns@@", validateStr.toString());
 
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/impl/Delete" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java";
+                + "out/back/cmd/" + data.getName() + "/Delete" + toUpperCaseFirstOne(data.getName()) + "Cmd.java";
         System.out.printf("writePath: " + writePath);
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/impl/Delete" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java");
-        }
-    }
-
-    /**
-     * 鐢熸垚API 渚﹀惉澶勭悊绫�
-     *
-     * @param data
-     */
-    private void genneratorIGetBmo(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/IGetBMO.txt").getFile());
-        String fileContext = sb.toString();
-
-        fileContext = super.replaceTemplateContext(fileContext, data);
-
-        String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/IGet" + toUpperCaseFirstOne(data.getName()) + "BMO.java";
-        System.out.printf("writePath: " + writePath);
-        writeFile(writePath,
-                fileContext);
-        //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
-        if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/IGet" + toUpperCaseFirstOne(data.getName()) + "BMO.java");
+            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\cmd\\" + data.getName() + "/Delete" + toUpperCaseFirstOne(data.getName()) + "Cmd.java");
         }
     }
 
@@ -237,7 +165,7 @@
      * @param data
      */
     private void genneratorGetBmoImpl(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/GetBMOImpl.txt").getFile());
+        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/ListCmd.txt").getFile());
         String fileContext = sb.toString();
         fileContext = fileContext.replace("@@shareName@@", data.getShareName())
                 .replace("@@ShareName@@", toUpperCaseFirstOne(data.getShareName()));
@@ -245,52 +173,15 @@
         fileContext = super.replaceTemplateContext(fileContext, data);
 
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/bmo/" + data.getName() + "/impl/Get" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java";
+                + "out/back/cmd/" + data.getName() + "/List" + toUpperCaseFirstOne(data.getName()) + "Cmd.java";
         System.out.printf("writePath: " + writePath);
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\bmo\\" + data.getName() + "/impl/Get" + toUpperCaseFirstOne(data.getName()) + "BMOImpl.java");
+            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\cmd\\" + data.getName() + "/List" + toUpperCaseFirstOne(data.getName()) + "Cmd.java");
         }
     }
-
-    private void genneratorApi(Data data) throws Exception {
-        StringBuffer sb = readFile(GeneratorStart.class.getResource("/newTemplate/Api.txt").getFile());
-        String fileContext = sb.toString();
-        fileContext = fileContext.replace("@@shareName@@", data.getShareName())
-                .replace("@@ShareName@@", toUpperCaseFirstOne(data.getShareName()));
-
-        fileContext = super.replaceTemplateContext(fileContext, data);
-        //鏇挎崲淇濆瓨
-        StringBuffer validateStr = new StringBuffer();
-        for (String key : data.getRequiredParam()) {
-            //JSONObject column = columns.getJSONObject(columnIndex);
-            validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + key + "\", \"璇锋眰鎶ユ枃涓湭鍖呭惈" + key + "\");\n");
-        }
-        fileContext = fileContext.replace("@@validateSaveTemplateColumns@@", validateStr.toString());
-
-        //鏇挎崲 淇敼
-        validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + data.getId() + "\", \"" + data.getId() + "涓嶈兘涓虹┖\");\n");
-        fileContext = fileContext.replace("@@validateUpdateTemplateColumns@@", validateStr.toString());
-
-        validateStr = new StringBuffer();
-        validateStr.append("Assert.hasKeyAndValue(reqJson, \"" + data.getId() + "\", \"" + data.getId() + "涓嶈兘涓虹┖\");\n");
-        fileContext = fileContext.replace("@@validateDeleteTemplateColumns@@", validateStr.toString());
-
-
-        String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/api/" + toUpperCaseFirstOne(data.getName()) + "Api.java";
-        System.out.printf("writePath: " + writePath);
-        writeFile(writePath,
-                fileContext);
-        //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
-        if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-"+data.getShareName()+"\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\api\\" + toUpperCaseFirstOne(data.getName()) + "Api.java");
-        }
-    }
-
-
 
 
 }
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorDtoBean.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorDtoBean.java
index 71f156c..47e1694 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorDtoBean.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorDtoBean.java
@@ -1,6 +1,7 @@
 package com.java110.code.newBack;
 
 import com.java110.code.util.FileUtilBase;
+import com.java110.utils.util.DateUtil;
 
 import java.util.Map;
 
@@ -59,7 +60,8 @@
         fileContext = fileContext.replace("store", toLowerCaseFirstOne(data.getName()))
                 .replace("@@templateCode@@",data.getName())
                 .replace("Store", toUpperCaseFirstOne(data.getName()))
-                .replace("鍟嗘埛", data.getDesc());
+                .replace("鍟嗘埛", data.getDesc())
+                .replace("@@date@@", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
 
         fileContext = dealVariableAndGetSet(data, fileContext);
         String writePath = this.getClass().getResource("/").getPath()
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIInnerServiceSMO.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIInnerServiceSMO.java
index 76048d7..e191e75 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIInnerServiceSMO.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIInnerServiceSMO.java
@@ -1,6 +1,7 @@
 package com.java110.code.newBack;
 
 import com.java110.code.util.FileUtilBase;
+import com.java110.utils.util.DateUtil;
 
 /**
  * 鍐呴儴鏈嶅姟绫诲疄鐜扮被
@@ -18,14 +19,15 @@
         fileContext = fileContext.replace("store", toLowerCaseFirstOne(data.getName()))
                 .replace("Store", toUpperCaseFirstOne(data.getName()))
                 .replace("@@shareName@@",data.getShareName())
-                .replace("鍟嗘埛", data.getDesc());
+                .replace("鍟嗘埛", data.getDesc())
+                .replace("@@date@@", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/intf/" + data.getShareName() + "/I" + toUpperCaseFirstOne(data.getName()) + "InnerServiceSMO.java";
+                + "out/back/intf/" + data.getShareName() + "/I" + toUpperCaseFirstOne(data.getName()) + "V1InnerServiceSMO.java";
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "java110-interface\\src\\main\\java\\com\\java110\\intf\\" + data.getShareName() + "/I" + toUpperCaseFirstOne(data.getName()) + "InnerServiceSMO.java");
+            FileUtilBase.copyfile(writePath, "java110-interface\\src\\main\\java\\com\\java110\\intf\\" + data.getShareName() + "/I" + toUpperCaseFirstOne(data.getName()) + "V1InnerServiceSMO.java");
         }
     }
 }
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIServiceDaoListener.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIServiceDaoListener.java
index 2443e49..624ee22 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIServiceDaoListener.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorIServiceDaoListener.java
@@ -1,6 +1,7 @@
 package com.java110.code.newBack;
 
 import com.java110.code.util.FileUtilBase;
+import com.java110.utils.util.DateUtil;
 
 public class GeneratorIServiceDaoListener extends BaseGenerator {
 
@@ -18,15 +19,16 @@
         fileContext = fileContext.replace("store",toLowerCaseFirstOne(data.getName()))
                 .replace("@@shareName@@",data.getShareName())
                 .replace("Store",toUpperCaseFirstOne(data.getName()))
-                .replace("鍟嗘埛",data.getDesc());
+                .replace("鍟嗘埛",data.getDesc())
+                .replace("@@date@@", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
 
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/dao/I"+toUpperCaseFirstOne(data.getName())+"ServiceDao.java";
+                + "out/back/dao/I"+toUpperCaseFirstOne(data.getName())+"V1ServiceDao.java";
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-" + data.getShareName()  + "\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\dao\\" + "I" + toUpperCaseFirstOne(data.getName()) + "ServiceDao.java");
+            FileUtilBase.copyfile(writePath, "service-" + data.getShareName()  + "\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\dao\\" + "I" + toUpperCaseFirstOne(data.getName()) + "V1ServiceDao.java");
         }
     }
 }
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorInnerServiceSMOImpl.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorInnerServiceSMOImpl.java
index 5756df8..6fa6614 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorInnerServiceSMOImpl.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorInnerServiceSMOImpl.java
@@ -1,6 +1,7 @@
 package com.java110.code.newBack;
 
 import com.java110.code.util.FileUtilBase;
+import com.java110.utils.util.DateUtil;
 
 /**
  * 鍐呴儴鏈嶅姟绫诲疄鐜扮被
@@ -19,14 +20,15 @@
                 .replace("@@Id@@",toUpperCaseFirstOne(data.getId()))
                 .replace("@@shareName@@",data.getShareName())
                 .replace("Store", toUpperCaseFirstOne(data.getName()))
-                .replace("鍟嗘埛", data.getDesc());
+                .replace("鍟嗘埛", data.getDesc())
+                .replace("@@date@@", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/smo/impl/" + toUpperCaseFirstOne(data.getName()) + "InnerServiceSMOImpl.java";
+                + "out/back/smo/impl/" + toUpperCaseFirstOne(data.getName()) + "V1InnerServiceSMOImpl.java";
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath,"service-" + data.getShareName() + "\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\smo\\impl\\" + toUpperCaseFirstOne(data.getName()) + "InnerServiceSMOImpl.java");
+            FileUtilBase.copyfile(writePath,"service-" + data.getShareName() + "\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\smo\\impl\\" + toUpperCaseFirstOne(data.getName()) + "V1InnerServiceSMOImpl.java");
         }
     }
 }
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplListener.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplListener.java
index 6504ee1..0e45878 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplListener.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplListener.java
@@ -1,6 +1,7 @@
 package com.java110.code.newBack;
 
 import com.java110.code.util.FileUtilBase;
+import com.java110.utils.util.DateUtil;
 
 public class GeneratorServiceDaoImplListener extends BaseGenerator {
 
@@ -16,14 +17,15 @@
         fileContext = fileContext.replace("store", toLowerCaseFirstOne(data.getName()))
                 .replace("@@shareName@@",data.getShareName())
                 .replace("Store", toUpperCaseFirstOne(data.getName()))
-                .replace("鍟嗘埛", data.getDesc());
+                .replace("鍟嗘埛", data.getDesc())
+                .replace("@@date@@", DateUtil.getNow(DateUtil.DATE_FORMATE_STRING_A));
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/dao/impl/" + toUpperCaseFirstOne(data.getName()) + "ServiceDaoImpl.java";
+                + "out/back/dao/impl/" + toUpperCaseFirstOne(data.getName()) + "V1ServiceDaoImpl.java";
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "service-" + data.getShareName() + "\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\dao\\impl\\" + toUpperCaseFirstOne(data.getName()) + "ServiceDaoImpl.java");
+            FileUtilBase.copyfile(writePath, "service-" + data.getShareName() + "\\src\\main\\java\\com\\java110\\"+data.getShareName()+"\\dao\\impl\\" + toUpperCaseFirstOne(data.getName()) + "V1ServiceDaoImpl.java");
         }
     }
 }
diff --git a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplMapperListener.java b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplMapperListener.java
index d568fb9..22d5e9b 100755
--- a/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplMapperListener.java
+++ b/java110-generator/src/main/java/com/java110/code/newBack/GeneratorServiceDaoImplMapperListener.java
@@ -224,13 +224,13 @@
         fileContext = dealUpdateInfoInstance(data, fileContext);
         fileContext = dealGetCount(data, fileContext);
         String writePath = this.getClass().getResource("/").getPath()
-                + "out/back/mapper/" + data.getName() + "/" + toUpperCaseFirstOne(data.getName()) + "ServiceDaoImplMapper.xml";
+                + "out/back/mapper/" + data.getName() + "/" + toUpperCaseFirstOne(data.getName()) + "V1ServiceDaoImplMapper.xml";
 
         writeFile(writePath,
                 fileContext);
         //澶嶅埗鐢熸垚鐨勬枃浠跺埌瀵瑰簲鍒嗗尯鐩綍涓�
         if (data.isAutoMove()) {
-            FileUtilBase.copyfile(writePath, "java110-db\\src\\main\\resources\\mapper\\" + data.getShareName().toString() + "\\" + "/" + toUpperCaseFirstOne(data.getName()) + "ServiceDaoImplMapper.xml");
+            FileUtilBase.copyfile(writePath, "java110-db\\src\\main\\resources\\mapper\\" + data.getShareName().toString() + "\\" + "/" + toUpperCaseFirstOne(data.getName()) + "V1ServiceDaoImplMapper.xml");
         }
     }
 }
diff --git a/java110-generator/src/main/resources/newBack/template_1.json b/java110-generator/src/main/resources/newBack/template_1.json
index e4594a7..5170034 100755
--- a/java110-generator/src/main/resources/newBack/template_1.json
+++ b/java110-generator/src/main/resources/newBack/template_1.json
@@ -1,77 +1,37 @@
 {
   "autoMove": true,
-  "id": "tranId",
-  "name": "hcGovTranslate",
-  "desc": "绀惧尯鏀垮姟鍚屾",
-  "shareParam": "tranId",
-  "shareColumn": "tran_id",
-  "shareName": "common",
-  "tableName": "hc_gov_translate",
+  "id": "hisId",
+  "name": "businessTableHis",
+  "desc": "璁㈠崟杞ㄨ抗",
+  "shareParam": "hisId",
+  "shareColumn": "his_id",
+  "shareName": "dev",
+  "tableName": "c_business_table_his",
   "param": {
-    "tranId": "tran_id",
-    "serviceCode": "service_code",
-    "reqTime": "req_time",
-    "sign": "sign",
-    "extCommunityId": "ext_community_id",
-    "communityId": "community_id",
-    "code": "code",
-    "govTopic": "gov_topic",
-    "state": "state",
-    "sendCount": "send_count",
-    "updateTime": "update_time",
-    "objId": "obj_id",
+    "hisId": "his_id",
+    "action": "action",
+    "actionObj": "action_obj",
+    "actionObjHis": "action_obj_his",
+    "businessTypeCd": "business_type_cd",
     "remark": "remark",
-    "createTime": "create_time",
     "statusCd": "status_cd"
   },
   "required": [
     {
-      "code": "tranId",
-      "msg": "涓氬姟涓嶈兘涓虹┖"
+      "code": "action",
+      "msg": "鍔ㄤ綔涓嶈兘涓虹┖"
     },
     {
-      "code": "serviceCode",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
+      "code": "actionObj",
+      "msg": "鍔ㄤ綔瀵硅薄涓嶈兘涓虹┖"
     },
     {
-      "code": "reqTime",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
+      "code": "actionObjHis",
+      "msg": "杞ㄨ抗琛ㄤ笉鑳戒负绌�"
     },
     {
-      "code": "sign",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "extCommunityId",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "communityId",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "code",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "govTopic",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "state",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "sendCount",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "updateTime",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
-    },
-    {
-      "code": "objId",
-      "msg": "瀹℃壒鍐呭涓嶈兘涓虹┖"
+      "code": "businessTypeCd",
+      "msg": "涓氬姟缂栫爜"
     }
   ]
 }
diff --git a/java110-generator/src/main/resources/newTemplate/Api.txt b/java110-generator/src/main/resources/newTemplate/Api.txt
deleted file mode 100755
index c385627..0000000
--- a/java110-generator/src/main/resources/newTemplate/Api.txt
+++ /dev/null
@@ -1,95 +0,0 @@
-package com.java110.store.api;
-
-import com.java110.dto.Dto;.@@TemplateCode@@Dto;
-import com.java110.po.@@templateCode@@.@@TemplateCode@@Po;
-import com.java110.store.bmo.@@TemplateCode@@.IDelete@@TemplateCode@@BMO;
-import com.java110.store.bmo.@@TemplateCode@@.IGet@@TemplateCode@@BMO;
-import com.java110.store.bmo.@@TemplateCode@@.ISave@@TemplateCode@@BMO;
-import com.java110.store.bmo.@@TemplateCode@@.IUpdate@@TemplateCode@@BMO;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.BeanConvertUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.web.bind.annotation.*;
-
-@RestController
-@RequestMapping(value = "/@@templateCode@@")
-public class @@TemplateCode@@Api {
-
-    @Autowired
-    private ISave@@TemplateCode@@BMO save@@TemplateCode@@BMOImpl;
-    @Autowired
-    private IUpdate@@TemplateCode@@BMO update@@TemplateCode@@BMOImpl;
-    @Autowired
-    private IDelete@@TemplateCode@@BMO delete@@TemplateCode@@BMOImpl;
-
-    @Autowired
-    private IGet@@TemplateCode@@BMO get@@TemplateCode@@BMOImpl;
-
-    /**
-     * 寰俊淇濆瓨娑堟伅妯℃澘
-     * @serviceCode /@@templateCode@@/save@@TemplateCode@@
-     * @path /app/@@templateCode@@/save@@TemplateCode@@
-     * @param reqJson
-     * @return
-     */
-    @RequestMapping(value = "/save@@TemplateCode@@", method = RequestMethod.POST)
-    public ResponseEntity<String> save@@TemplateCode@@(@RequestBody JSONObject reqJson) {
-
-        @@validateSaveTemplateColumns@@
-
-        @@TemplateCode@@Po @@templateCode@@Po = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Po.class);
-        return save@@TemplateCode@@BMOImpl.save(@@templateCode@@Po);
-    }
-
-    /**
-     * 寰俊淇敼娑堟伅妯℃澘
-     * @serviceCode /@@templateCode@@/update@@TemplateCode@@
-     * @path /app/@@templateCode@@/update@@TemplateCode@@
-     * @param reqJson
-     * @return
-     */
-    @RequestMapping(value = "/update@@TemplateCode@@", method = RequestMethod.POST)
-    public ResponseEntity<String> update@@TemplateCode@@(@RequestBody JSONObject reqJson) {
-
-        @@validateUpdateTemplateColumns@@
-
-        @@TemplateCode@@Po @@templateCode@@Po = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Po.class);
-        return update@@TemplateCode@@BMOImpl.update(@@templateCode@@Po);
-    }
-
-    /**
-     * 寰俊鍒犻櫎娑堟伅妯℃澘
-     * @serviceCode /@@templateCode@@/delete@@TemplateCode@@
-     * @path /app/@@templateCode@@/delete@@TemplateCode@@
-     * @param reqJson
-     * @return
-     */
-    @RequestMapping(value = "/delete@@TemplateCode@@", method = RequestMethod.POST)
-    public ResponseEntity<String> delete@@TemplateCode@@(@RequestBody JSONObject reqJson) {
-        Assert.hasKeyAndValue(reqJson, "communityId", "灏忓尯ID涓嶈兘涓虹┖");
-
-        @@validateDeleteTemplateColumns@@
-
-        @@TemplateCode@@Po @@templateCode@@Po = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Po.class);
-        return delete@@TemplateCode@@BMOImpl.delete(@@templateCode@@Po);
-    }
-
-    /**
-     * 寰俊鍒犻櫎娑堟伅妯℃澘
-     * @serviceCode /@@templateCode@@/query@@TemplateCode@@
-     * @path /app/@@templateCode@@/query@@TemplateCode@@
-     * @param communityId 灏忓尯ID
-     * @return
-     */
-    @RequestMapping(value = "/query@@TemplateCode@@", method = RequestMethod.GET)
-    public ResponseEntity<String> query@@TemplateCode@@(@RequestParam(value = "communityId") String communityId,
-                                                      @RequestParam(value = "page") int page,
-                                                      @RequestParam(value = "row") int row) {
-        @@TemplateCode@@Dto @@templateCode@@Dto = new @@TemplateCode@@Dto();
-        @@templateCode@@Dto.setPage(page);
-        @@templateCode@@Dto.setRow(row);
-        @@templateCode@@Dto.setCommunityId(communityId);
-        return get@@TemplateCode@@BMOImpl.get(@@templateCode@@Dto);
-    }
-}
diff --git a/java110-generator/src/main/resources/newTemplate/DeleteBMOImpl.txt b/java110-generator/src/main/resources/newTemplate/DeleteBMOImpl.txt
deleted file mode 100755
index 648fe24..0000000
--- a/java110-generator/src/main/resources/newTemplate/DeleteBMOImpl.txt
+++ /dev/null
@@ -1,48 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.ApiBaseBMO;
-import com.java110.api.bmo.@@templateCode@@.I@@TemplateCode@@BMO;
-import com.java110.core.annotation.Java110Transactional;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.store.IWechatSmsTemplateInnerServiceSMO;
-import com.java110.po.wechatSmsTemplate.WechatSmsTemplatePo;
-import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import com.java110.core.context.DataFlowContext;
-import com.java110.intf.@@templateCode@@.I@@TemplateCode@@InnerServiceSMO;
-import com.java110.dto.@@templateCode@@.@@TemplateCode@@Dto;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.CommonConstant;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.BeanConvertUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service("delete@@TemplateCode@@BMOImpl")
-public class Delete@@TemplateCode@@BMOImpl implements IDelete@@TemplateCode@@BMO {
-
-    @Autowired
-    private I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl;
-
-    /**
-     * @param @@templateCode@@Po 鏁版嵁
-     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
-     */
-    @Java110Transactional
-    public ResponseEntity<String> delete(@@TemplateCode@@Po @@templateCode@@Po) {
-
-        int flag = @@templateCode@@InnerServiceSMOImpl.delete@@TemplateCode@@(@@templateCode@@Po);
-
-        if (flag > 0) {
-        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
-        }
-
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
-    }
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/DeleteCmd.txt b/java110-generator/src/main/resources/newTemplate/DeleteCmd.txt
new file mode 100644
index 0000000..59fd2c6
--- /dev/null
+++ b/java110-generator/src/main/resources/newTemplate/DeleteCmd.txt
@@ -0,0 +1,69 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.@@shareName@@.cmd.@@templateCode@@;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+/**
+ * 绫昏〃杩帮細鍒犻櫎
+ * 鏈嶅姟缂栫爜锛欯@templateCode@@.Delete@@TemplateCode@@
+ * 璇锋眰璺姴锛�/app/@@templateCode@@.Delete@@TemplateCode@@
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "@@templateCode@@.Delete@@TemplateCode@@")
+public class Delete@@TemplateCode@@Cmd extends AbstractServiceCmdListener {
+  private static Logger logger = LoggerFactory.getLogger(Delete@@TemplateCode@@Cmd.class);
+
+    @Autowired
+    private I@@TemplateCode@@V1InnerServiceSMO @@templateCode@@V1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        @@validateTemplateColumns@@
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+       @@TemplateCode@@Po @@templateCode@@Po = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Po.class);
+        int flag = @@templateCode@@V1InnerServiceSMOImpl.delete@@TemplateCode@@(businessTableHisPo);
+
+        if (flag < 1) {
+            throw new CmdException("鍒犻櫎鏁版嵁澶辫触");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}
diff --git a/java110-generator/src/main/resources/newTemplate/GetBMOImpl.txt b/java110-generator/src/main/resources/newTemplate/GetBMOImpl.txt
deleted file mode 100755
index 2d3ada1..0000000
--- a/java110-generator/src/main/resources/newTemplate/GetBMOImpl.txt
+++ /dev/null
@@ -1,57 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.ApiBaseBMO;
-import com.java110.api.bmo.@@templateCode@@.I@@TemplateCode@@BMO;
-import com.java110.core.annotation.Java110Transactional;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.store.IWechatSmsTemplateInnerServiceSMO;
-import com.java110.po.wechatSmsTemplate.WechatSmsTemplatePo;
-import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import com.java110.core.context.DataFlowContext;
-import com.java110.intf.@@templateCode@@.I@@TemplateCode@@InnerServiceSMO;
-import com.java110.dto.@@templateCode@@.@@TemplateCode@@Dto;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.CommonConstant;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.BeanConvertUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service("get@@TemplateCode@@BMOImpl")
-public class Get@@TemplateCode@@BMOImpl implements IGet@@TemplateCode@@BMO {
-
-    @Autowired
-    private I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl;
-
-    /**
-     *
-     *
-     * @param  @@templateCode@@Dto
-     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
-     */
-    public ResponseEntity<String> get(@@TemplateCode@@Dto @@templateCode@@Dto) {
-
-
-        int count = @@templateCode@@InnerServiceSMOImpl.query@@TemplateCode@@sCount(@@templateCode@@Dto);
-
-        List<@@TemplateCode@@Dto> @@templateCode@@Dtos = null;
-        if (count > 0) {
-            @@templateCode@@Dtos = @@templateCode@@InnerServiceSMOImpl.query@@TemplateCode@@s(@@templateCode@@Dto);
-        } else {
-            @@templateCode@@Dtos = new ArrayList<>();
-        }
-
-        ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) @@templateCode@@Dto.getRow()), count, @@templateCode@@Dtos);
-
-        ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
-
-        return responseEntity;
-    }
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/IDeleteBMO.txt b/java110-generator/src/main/resources/newTemplate/IDeleteBMO.txt
deleted file mode 100755
index c6a9fb3..0000000
--- a/java110-generator/src/main/resources/newTemplate/IDeleteBMO.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@;
-import org.springframework.http.ResponseEntity;
-
-public interface IDelete@@TemplateCode@@BMO {
-
-
-    /**
-     * 淇敼@@templateName@@
-     * add by wuxw
-     * @param @@templateCode@@Po
-     * @return
-     */
-    ResponseEntity<String> delete(@@TemplateCode@@Po @@templateCode@@Po);
-
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/IGetBMO.txt b/java110-generator/src/main/resources/newTemplate/IGetBMO.txt
deleted file mode 100755
index 2b223df..0000000
--- a/java110-generator/src/main/resources/newTemplate/IGetBMO.txt
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@;
-import org.springframework.http.ResponseEntity;
-public interface IGet@@TemplateCode@@BMO {
-
-
-    /**
-     * 鏌ヨ@@templateName@@
-     * add by wuxw
-     * @param  @@templateCode@@Dto
-     * @return
-     */
-    ResponseEntity<String> get(@@TemplateCode@@Dto @@templateCode@@Dto);
-
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/IInnerServiceSMO.txt b/java110-generator/src/main/resources/newTemplate/IInnerServiceSMO.txt
index fb4d662..7c66743 100755
--- a/java110-generator/src/main/resources/newTemplate/IInnerServiceSMO.txt
+++ b/java110-generator/src/main/resources/newTemplate/IInnerServiceSMO.txt
@@ -1,7 +1,23 @@
-package com.java110.intf;
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.intf.@@shareName@@;
 
 import com.java110.config.feign.FeignConfiguration;
 import com.java110.dto.store.StoreDto;
+import com.java110.po.store.StorePo;
 import org.springframework.cloud.openfeign.FeignClient;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -10,16 +26,16 @@
 import java.util.List;
 
 /**
- * @ClassName IStoreInnerServiceSMO
- * @Description 鍟嗘埛鎺ュ彛绫�
- * @Author wuxw
- * @Date 2019/4/24 9:04
- * @Version 1.0
- * add by wuxw 2019/4/24
- **/
-@FeignClient(name = "community-service", configuration = {FeignConfiguration.class})
+ * 绫昏〃杩帮細 鏈嶅姟涔嬪墠璋冪敤鐨勬帴鍙g被锛屼笉瀵瑰鎻愪緵鎺ュ彛鑳藉姏 鍙敤浜庢帴鍙e缓璋冪敤
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@FeignClient(name = "@@shareName@@-service", configuration = {FeignConfiguration.class})
 @RequestMapping("/storeApi")
-public interface IStoreInnerServiceSMO {
+public interface IStoreV1InnerServiceSMO {
 
 
     @RequestMapping(value = "/saveStore", method = RequestMethod.POST)
diff --git a/java110-generator/src/main/resources/newTemplate/ISaveBMO.txt b/java110-generator/src/main/resources/newTemplate/ISaveBMO.txt
deleted file mode 100755
index c48bd54..0000000
--- a/java110-generator/src/main/resources/newTemplate/ISaveBMO.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@;
-
-import org.springframework.http.ResponseEntity;
-public interface ISave@@TemplateCode@@BMO {
-
-
-    /**
-     * 娣诲姞@@templateName@@
-     * add by wuxw
-     * @param @@templateCode@@Po
-     * @return
-     */
-    ResponseEntity<String> save(@@TemplateCode@@Po @@templateCode@@Po);
-
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/IServiceDao.txt b/java110-generator/src/main/resources/newTemplate/IServiceDao.txt
index 3cf5d0e..8e20dd6 100755
--- a/java110-generator/src/main/resources/newTemplate/IServiceDao.txt
+++ b/java110-generator/src/main/resources/newTemplate/IServiceDao.txt
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.@@shareName@@.dao;
 
 
@@ -12,13 +27,14 @@
 import java.util.Map;
 
 /**
- * 鍟嗘埛缁勪欢鍐呴儴涔嬮棿浣跨敤锛屾病鏈夌粰澶栧洿绯荤粺鎻愪緵鏈嶅姟鑳藉姏
- * 鍟嗘埛鏈嶅姟鎺ュ彛绫伙紝瑕佹眰鍏ㄩ儴浠ュ瓧绗︿覆浼犺緭锛屾柟渚垮井鏈嶅姟鍖�
- * 鏂板缓瀹㈡埛锛屼慨鏀瑰鎴凤紝鍒犻櫎瀹㈡埛锛屾煡璇㈠鎴风瓑鍔熻兘
- *
- * Created by wuxw on 2016/12/27.
+ * 绫昏〃杩帮細
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
  */
-public interface IStoreServiceDao {
+public interface IStoreV1ServiceDao {
 
 
     /**
@@ -26,7 +42,7 @@
      * @param info
      * @throws DAOException DAO寮傚父
      */
-    void saveStoreInfo(Map info) throws DAOException;
+    int saveStoreInfo(Map info) throws DAOException;
 
 
 
@@ -47,7 +63,7 @@
      * @param info 淇敼淇℃伅
      * @throws DAOException DAO寮傚父
      */
-    void updateStoreInfo(Map info) throws DAOException;
+    int updateStoreInfo(Map info) throws DAOException;
 
 
     /**
diff --git a/java110-generator/src/main/resources/newTemplate/IUpdateBMO.txt b/java110-generator/src/main/resources/newTemplate/IUpdateBMO.txt
deleted file mode 100755
index c388987..0000000
--- a/java110-generator/src/main/resources/newTemplate/IUpdateBMO.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@;
-import org.springframework.http.ResponseEntity;
-
-public interface IUpdate@@TemplateCode@@BMO {
-
-
-    /**
-     * 淇敼@@templateName@@
-     * add by wuxw
-     * @param @@templateCode@@Po
-     * @return
-     */
-    ResponseEntity<String> update(@@TemplateCode@@Po @@templateCode@@Po);
-
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/InnerServiceSMOImpl.txt b/java110-generator/src/main/resources/newTemplate/InnerServiceSMOImpl.txt
index ea51f6f..64d491e 100755
--- a/java110-generator/src/main/resources/newTemplate/InnerServiceSMOImpl.txt
+++ b/java110-generator/src/main/resources/newTemplate/InnerServiceSMOImpl.txt
@@ -1,9 +1,25 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.@@shareName@@.smo.impl;
 
 
-import com.java110.@@shareName@@.dao.IStoreServiceDao;
-import com.java110.intf.store.IStoreInnerServiceSMO;
+import com.java110.@@shareName@@.dao.IStoreV1ServiceDao;
+import com.java110.intf.@@shareName@@.IStoreV1InnerServiceSMO;
 import com.java110.dto.store.StoreDto;
+import com.java110.po.store.StorePo;
 import com.java110.utils.util.BeanConvertUtil;
 import com.java110.core.base.smo.BaseServiceSMO;
 import com.java110.dto.user.UserDto;
@@ -16,40 +32,37 @@
 import java.util.List;
 
 /**
- * @ClassName FloorInnerServiceSMOImpl
- * @Description 鍟嗘埛鍐呴儴鏈嶅姟瀹炵幇绫�
- * @Author wuxw
- * @Date 2019/4/24 9:20
- * @Version 1.0
- * add by wuxw 2019/4/24
- **/
+ * 绫昏〃杩帮細 鏈嶅姟涔嬪墠璋冪敤鐨勬帴鍙e疄鐜扮被锛屼笉瀵瑰鎻愪緵鎺ュ彛鑳藉姏 鍙敤浜庢帴鍙e缓璋冪敤
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
 @RestController
-public class StoreInnerServiceSMOImpl extends BaseServiceSMO implements IStoreInnerServiceSMO {
+public class StoreV1InnerServiceSMOImpl extends BaseServiceSMO implements IStoreV1InnerServiceSMO {
 
     @Autowired
-    private IStoreServiceDao storeServiceDaoImpl;
+    private IStoreV1ServiceDao storeV1ServiceDaoImpl;
 
 
     @Override
     public int saveStore(@RequestBody  StorePo storePo) {
-        int saveFlag = 1;
-        storeServiceDaoImpl.saveStoreInfo(BeanConvertUtil.beanCovertMap(storePo));
+        int saveFlag = storeV1ServiceDaoImpl.saveStoreInfo(BeanConvertUtil.beanCovertMap(storePo));
         return saveFlag;
     }
 
      @Override
     public int updateStore(@RequestBody  StorePo storePo) {
-        int saveFlag = 1;
-         storeServiceDaoImpl.updateStoreInfo(BeanConvertUtil.beanCovertMap(storePo));
+        int saveFlag = storeV1ServiceDaoImpl.updateStoreInfo(BeanConvertUtil.beanCovertMap(storePo));
         return saveFlag;
     }
 
      @Override
     public int deleteStore(@RequestBody  StorePo storePo) {
-        int saveFlag = 1;
-        storePo.setStatusCd("1");
-        storeServiceDaoImpl.updateStoreInfo(BeanConvertUtil.beanCovertMap(storePo));
-        return saveFlag;
+       storePo.setStatusCd("1");
+       int saveFlag = storeV1ServiceDaoImpl.updateStoreInfo(BeanConvertUtil.beanCovertMap(storePo));
+       return saveFlag;
     }
 
     @Override
@@ -63,7 +76,7 @@
             storeDto.setPage((page - 1) * storeDto.getRow());
         }
 
-        List<StoreDto> stores = BeanConvertUtil.covertBeanList(storeServiceDaoImpl.getStoreInfo(BeanConvertUtil.beanCovertMap(storeDto)), StoreDto.class);
+        List<StoreDto> stores = BeanConvertUtil.covertBeanList(storeV1ServiceDaoImpl.getStoreInfo(BeanConvertUtil.beanCovertMap(storeDto)), StoreDto.class);
 
         return stores;
     }
@@ -71,13 +84,6 @@
 
     @Override
     public int queryStoresCount(@RequestBody StoreDto storeDto) {
-        return storeServiceDaoImpl.queryStoresCount(BeanConvertUtil.beanCovertMap(storeDto));    }
+        return storeV1ServiceDaoImpl.queryStoresCount(BeanConvertUtil.beanCovertMap(storeDto));    }
 
-    public IStoreServiceDao getStoreServiceDaoImpl() {
-        return storeServiceDaoImpl;
-    }
-
-    public void setStoreServiceDaoImpl(IStoreServiceDao storeServiceDaoImpl) {
-        this.storeServiceDaoImpl = storeServiceDaoImpl;
-    }
 }
diff --git a/java110-generator/src/main/resources/newTemplate/ListCmd.txt b/java110-generator/src/main/resources/newTemplate/ListCmd.txt
new file mode 100644
index 0000000..50693d7
--- /dev/null
+++ b/java110-generator/src/main/resources/newTemplate/ListCmd.txt
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.@@shareName@@.cmd.@@templateCode@@;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.java110.dto.@@templateCode@@.@@TemplateCode@@Dto;
+import java.util.List;
+import java.util.ArrayList;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.HttpStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * 绫昏〃杩帮細鏌ヨ
+ * 鏈嶅姟缂栫爜锛欯@templateCode@@.List@@TemplateCode@@
+ * 璇锋眰璺姴锛�/app/@@templateCode@@.List@@TemplateCode@@
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "@@templateCode@@.List@@TemplateCode@@")
+public class List@@TemplateCode@@Cmd extends AbstractServiceCmdListener {
+
+  private static Logger logger = LoggerFactory.getLogger(List@@TemplateCode@@Cmd.class);
+    @Autowired
+    private I@@TemplateCode@@V1InnerServiceSMO @@templateCode@@V1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+           @@TemplateCode@@Dto @@templateCode@@Dto = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Dto.class);
+
+           int count = @@templateCode@@V1InnerServiceSMOImpl.query@@TemplateCode@@sCount(@@templateCode@@Dto);
+
+           List<@@TemplateCode@@Dto> @@templateCode@@Dtos = null;
+
+           if (count > 0) {
+               @@templateCode@@Dtos = @@templateCode@@V1InnerServiceSMOImpl.query@@TemplateCode@@s(@@templateCode@@Dto);
+           } else {
+               @@templateCode@@Dtos = new ArrayList<>();
+           }
+
+           ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, @@templateCode@@Dtos);
+
+           ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+           cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+}
diff --git a/java110-generator/src/main/resources/newTemplate/Po.txt b/java110-generator/src/main/resources/newTemplate/Po.txt
index af9859e..c9727bf 100755
--- a/java110-generator/src/main/resources/newTemplate/Po.txt
+++ b/java110-generator/src/main/resources/newTemplate/Po.txt
@@ -1,8 +1,30 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.po.@@templateCode@@;
 
 import java.io.Serializable;
 import java.util.Date;
-
+/**
+ * 绫昏〃杩帮細 Po 鏁版嵁妯″瀷瀹炰綋瀵硅薄 鍩烘湰淇濇寔涓庢暟鎹簱妯″瀷涓�鐩� 鐢ㄤ簬 澧炲姞淇敼鍒犻櫎 绛夋椂鐨勬暟鎹浇浣�
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
 public class @@TemplateCode@@Po implements Serializable {
 
     @@templateColumns@@
diff --git a/java110-generator/src/main/resources/newTemplate/SaveBMOImpl.txt b/java110-generator/src/main/resources/newTemplate/SaveBMOImpl.txt
deleted file mode 100755
index b1646e3..0000000
--- a/java110-generator/src/main/resources/newTemplate/SaveBMOImpl.txt
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.ApiBaseBMO;
-import com.java110.api.bmo.@@templateCode@@.I@@TemplateCode@@BMO;
-import com.java110.core.annotation.Java110Transactional;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.store.IWechatSmsTemplateInnerServiceSMO;
-import com.java110.po.wechatSmsTemplate.WechatSmsTemplatePo;
-import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import com.java110.core.context.DataFlowContext;
-import com.java110.intf.@@templateCode@@.I@@TemplateCode@@InnerServiceSMO;
-import com.java110.dto.@@templateCode@@.@@TemplateCode@@Dto;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.CommonConstant;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.BeanConvertUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service("save@@TemplateCode@@BMOImpl")
-public class Save@@TemplateCode@@BMOImpl implements ISave@@TemplateCode@@BMO {
-
-    @Autowired
-    private I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl;
-
-    /**
-     * 娣诲姞灏忓尯淇℃伅
-     *
-     * @param @@templateCode@@Po
-     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
-     */
-    @Java110Transactional
-    public ResponseEntity<String> save(@@TemplateCode@@Po @@templateCode@@Po) {
-
-        @@templateCode@@Po.set@@TemplateKey@@(GenerateCodeFactory.getGeneratorId(GenerateCodeFactory.CODE_PREFIX_@@templateKey@@));
-        int flag = @@templateCode@@InnerServiceSMOImpl.save@@TemplateCode@@(@@templateCode@@Po);
-
-        if (flag > 0) {
-        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
-        }
-
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
-    }
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/SaveCmd.txt b/java110-generator/src/main/resources/newTemplate/SaveCmd.txt
new file mode 100644
index 0000000..e812919
--- /dev/null
+++ b/java110-generator/src/main/resources/newTemplate/SaveCmd.txt
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.@@shareName@@.cmd.@@templateCode@@;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 绫昏〃杩帮細淇濆瓨
+ * 鏈嶅姟缂栫爜锛欯@templateCode@@.Save@@TemplateCode@@
+ * 璇锋眰璺姴锛�/app/@@templateCode@@.Save@@TemplateCode@@
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "@@templateCode@@.Save@@TemplateCode@@")
+public class Save@@TemplateCode@@Cmd extends AbstractServiceCmdListener {
+
+    private static Logger logger = LoggerFactory.getLogger(Save@@TemplateCode@@Cmd.class);
+
+    public static final String CODE_PREFIX_ID = "10";
+
+    @Autowired
+    private I@@TemplateCode@@V1InnerServiceSMO @@templateCode@@V1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        @@validateTemplateColumns@@
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+       @@TemplateCode@@Po @@templateCode@@Po = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Po.class);
+        @@templateCode@@Po.set@@TemplateKey@@(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        int flag = @@templateCode@@V1InnerServiceSMOImpl.save@@TemplateCode@@(businessTableHisPo);
+
+        if (flag < 1) {
+            throw new CmdException("淇濆瓨鏁版嵁澶辫触");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}
diff --git a/java110-generator/src/main/resources/newTemplate/ServiceCodeConstant.txt b/java110-generator/src/main/resources/newTemplate/ServiceCodeConstant.txt
index 992617f..aa881b8 100755
--- a/java110-generator/src/main/resources/newTemplate/ServiceCodeConstant.txt
+++ b/java110-generator/src/main/resources/newTemplate/ServiceCodeConstant.txt
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.utils.constant;
 
 /**
diff --git a/java110-generator/src/main/resources/newTemplate/ServiceDaoImpl.txt b/java110-generator/src/main/resources/newTemplate/ServiceDaoImpl.txt
index 01996ec..2f1a70f 100755
--- a/java110-generator/src/main/resources/newTemplate/ServiceDaoImpl.txt
+++ b/java110-generator/src/main/resources/newTemplate/ServiceDaoImpl.txt
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.@@shareName@@.dao.impl;
 
 import com.alibaba.fastjson.JSONObject;
@@ -5,7 +20,7 @@
 import com.java110.utils.exception.DAOException;
 import com.java110.utils.util.DateUtil;
 import com.java110.core.base.dao.BaseServiceDao;
-import com.java110.@@shareName@@.dao.IStoreServiceDao;
+import com.java110.@@shareName@@.dao.IStoreV1ServiceDao;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
@@ -15,14 +30,17 @@
 import java.util.Map;
 
 /**
- * 鍟嗘埛鏈嶅姟 涓庢暟鎹簱浜や簰
- * Created by wuxw on 2017/4/5.
+ * 绫昏〃杩帮細
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
  */
-@Service("storeServiceDaoImpl")
-//@Transactional
-public class StoreServiceDaoImpl extends BaseServiceDao implements IStoreServiceDao {
+@Service("storeV1ServiceDaoImpl")
+public class StoreV1ServiceDaoImpl extends BaseServiceDao implements IStoreV1ServiceDao {
 
-    private static Logger logger = LoggerFactory.getLogger(StoreServiceDaoImpl.class);
+    private static Logger logger = LoggerFactory.getLogger(StoreV1ServiceDaoImpl.class);
 
 
 
@@ -34,14 +52,12 @@
      * @throws DAOException DAO寮傚父
      */
     @Override
-    public void saveStoreInfo(Map info) throws DAOException {
-        logger.debug("淇濆瓨鍟嗘埛淇℃伅Instance 鍏ュ弬 info : {}",info);
+    public int saveStoreInfo(Map info) throws DAOException {
+        logger.debug("淇濆瓨 saveStoreInfo 鍏ュ弬 info : {}",info);
 
-        int saveFlag = sqlSessionTemplate.insert("storeServiceDaoImpl.saveStoreInfo",info);
+        int saveFlag = sqlSessionTemplate.insert("storeV1ServiceDaoImpl.saveStoreInfo",info);
 
-        if(saveFlag < 1){
-            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"淇濆瓨鍟嗘埛淇℃伅Instance鏁版嵁澶辫触锛�"+ JSONObject.toJSONString(info));
-        }
+        return saveFlag;
     }
 
 
@@ -53,9 +69,9 @@
      */
     @Override
     public List<Map> getStoreInfo(Map info) throws DAOException {
-        logger.debug("鏌ヨ鍟嗘埛淇℃伅 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ getStoreInfo 鍏ュ弬 info : {}",info);
 
-        List<Map> businessStoreInfos = sqlSessionTemplate.selectList("storeServiceDaoImpl.getStoreInfo",info);
+        List<Map> businessStoreInfos = sqlSessionTemplate.selectList("storeV1ServiceDaoImpl.getStoreInfo",info);
 
         return businessStoreInfos;
     }
@@ -67,14 +83,12 @@
      * @throws DAOException DAO寮傚父
      */
     @Override
-    public void updateStoreInfo(Map info) throws DAOException {
-        logger.debug("淇敼鍟嗘埛淇℃伅Instance 鍏ュ弬 info : {}",info);
+    public int updateStoreInfo(Map info) throws DAOException {
+        logger.debug("淇敼 updateStoreInfo 鍏ュ弬 info : {}",info);
 
-        int saveFlag = sqlSessionTemplate.update("storeServiceDaoImpl.updateStoreInfo",info);
+        int saveFlag = sqlSessionTemplate.update("storeV1ServiceDaoImpl.updateStoreInfo",info);
 
-        if(saveFlag < 1){
-            throw new DAOException(ResponseConstant.RESULT_PARAM_ERROR,"淇敼鍟嗘埛淇℃伅Instance鏁版嵁澶辫触锛�"+ JSONObject.toJSONString(info));
-        }
+        return saveFlag;
     }
 
      /**
@@ -84,9 +98,9 @@
      */
     @Override
     public int queryStoresCount(Map info) {
-        logger.debug("鏌ヨ鍟嗘埛鏁版嵁 鍏ュ弬 info : {}",info);
+        logger.debug("鏌ヨ queryStoresCount 鍏ュ弬 info : {}",info);
 
-        List<Map> businessStoreInfos = sqlSessionTemplate.selectList("storeServiceDaoImpl.queryStoresCount", info);
+        List<Map> businessStoreInfos = sqlSessionTemplate.selectList("storeV1ServiceDaoImpl.queryStoresCount", info);
         if (businessStoreInfos.size() < 1) {
             return 0;
         }
diff --git a/java110-generator/src/main/resources/newTemplate/ServiceDaoImplMapper.txt b/java110-generator/src/main/resources/newTemplate/ServiceDaoImplMapper.txt
index 723c7bd..db5ebd0 100755
--- a/java110-generator/src/main/resources/newTemplate/ServiceDaoImplMapper.txt
+++ b/java110-generator/src/main/resources/newTemplate/ServiceDaoImplMapper.txt
@@ -2,7 +2,7 @@
 <!DOCTYPE mapper
         PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
         "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
-<mapper namespace="storeServiceDaoImpl">
+<mapper namespace="storeV1ServiceDaoImpl">
 
 
 
diff --git a/java110-generator/src/main/resources/newTemplate/UpdateBMOImpl.txt b/java110-generator/src/main/resources/newTemplate/UpdateBMOImpl.txt
deleted file mode 100755
index 5e17bf4..0000000
--- a/java110-generator/src/main/resources/newTemplate/UpdateBMOImpl.txt
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.java110.api.bmo.@@templateCode@@.impl;
-
-import com.alibaba.fastjson.JSONObject;
-import com.java110.api.bmo.ApiBaseBMO;
-import com.java110.api.bmo.@@templateCode@@.I@@TemplateCode@@BMO;
-import com.java110.core.annotation.Java110Transactional;
-import com.java110.core.factory.GenerateCodeFactory;
-import com.java110.intf.store.IWechatSmsTemplateInnerServiceSMO;
-import com.java110.po.wechatSmsTemplate.WechatSmsTemplatePo;
-import com.java110.vo.ResultVo;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.http.ResponseEntity;
-import org.springframework.stereotype.Service;
-import com.java110.core.context.DataFlowContext;
-import com.java110.intf.@@templateCode@@.I@@TemplateCode@@InnerServiceSMO;
-import com.java110.dto.@@templateCode@@.@@TemplateCode@@Dto;
-import com.java110.utils.constant.BusinessTypeConstant;
-import com.java110.utils.constant.CommonConstant;
-import com.java110.utils.util.Assert;
-import com.java110.utils.util.BeanConvertUtil;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-@Service("update@@TemplateCode@@BMOImpl")
-public class Update@@TemplateCode@@BMOImpl implements IUpdate@@TemplateCode@@BMO {
-
-    @Autowired
-    private I@@TemplateCode@@InnerServiceSMO @@templateCode@@InnerServiceSMOImpl;
-
-    /**
-     *
-     *
-     * @param @@templateCode@@Po
-     * @return 璁㈠崟鏈嶅姟鑳藉鎺ュ彈鐨勬姤鏂�
-     */
-    @Java110Transactional
-    public ResponseEntity<String> update(@@TemplateCode@@Po @@templateCode@@Po) {
-
-        int flag = @@templateCode@@InnerServiceSMOImpl.update@@TemplateCode@@(@@templateCode@@Po);
-
-        if (flag > 0) {
-        return ResultVo.createResponseEntity(ResultVo.CODE_OK, "淇濆瓨鎴愬姛");
-        }
-
-        return ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "淇濆瓨澶辫触");
-    }
-
-}
diff --git a/java110-generator/src/main/resources/newTemplate/UpdateCmd.txt b/java110-generator/src/main/resources/newTemplate/UpdateCmd.txt
new file mode 100644
index 0000000..4355472
--- /dev/null
+++ b/java110-generator/src/main/resources/newTemplate/UpdateCmd.txt
@@ -0,0 +1,73 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.@@shareName@@.cmd.@@templateCode@@;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * 绫昏〃杩帮細鏇存柊
+ * 鏈嶅姟缂栫爜锛欯@templateCode@@.Update@@TemplateCode@@
+ * 璇锋眰璺姴锛�/app/@@templateCode@@.Update@@TemplateCode@@
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "@@templateCode@@.Update@@TemplateCode@@")
+public class Update@@TemplateCode@@Cmd extends AbstractServiceCmdListener {
+
+  private static Logger logger = LoggerFactory.getLogger(Update@@TemplateCode@@Cmd.class);
+
+
+    @Autowired
+    private I@@TemplateCode@@V1InnerServiceSMO @@templateCode@@V1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        @@validateTemplateColumns@@
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+       @@TemplateCode@@Po @@templateCode@@Po = BeanConvertUtil.covertBean(reqJson, @@TemplateCode@@Po.class);
+        int flag = @@templateCode@@V1InnerServiceSMOImpl.update@@TemplateCode@@(businessTableHisPo);
+
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鏁版嵁澶辫触");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}
diff --git a/java110-generator/src/main/resources/newTemplate/dto.txt b/java110-generator/src/main/resources/newTemplate/dto.txt
index bbbb771..304f9a9 100755
--- a/java110-generator/src/main/resources/newTemplate/dto.txt
+++ b/java110-generator/src/main/resources/newTemplate/dto.txt
@@ -1,3 +1,18 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
 package com.java110.dto.@@templateCode@@;
 
 import com.java110.dto.PageDto;
@@ -5,13 +20,13 @@
 import java.util.Date;
 
 /**
- * @ClassName FloorDto
- * @Description 鍟嗘埛鏁版嵁灞傚皝瑁�
- * @Author wuxw
- * @Date 2019/4/24 8:52
- * @Version 1.0
- * add by wuxw 2019/4/24
- **/
+ * 绫昏〃杩帮細 dto 瀹炰綋瀵硅薄 鍙槸浣滀负鏁版嵁杞戒綋 鐢ㄤ簬鏌ヨ绛夋暟鎹浇浣�
+ * add by 鍚村鏂� at @@date@@ mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
 public class StoreDto extends PageDto implements Serializable {
 
     $beanVariable$
diff --git a/java110-interface/src/main/java/com/java110/intf/dev/IBusinessTableHisV1InnerServiceSMO.java b/java110-interface/src/main/java/com/java110/intf/dev/IBusinessTableHisV1InnerServiceSMO.java
new file mode 100644
index 0000000..db4ce95
--- /dev/null
+++ b/java110-interface/src/main/java/com/java110/intf/dev/IBusinessTableHisV1InnerServiceSMO.java
@@ -0,0 +1,68 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.intf.dev;
+
+import com.java110.config.feign.FeignConfiguration;
+import com.java110.dto.businessTableHis.BusinessTableHisDto;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestMethod;
+
+import java.util.List;
+
+/**
+ * 绫昏〃杩帮細 鏈嶅姟涔嬪墠璋冪敤鐨勬帴鍙g被锛屼笉瀵瑰鎻愪緵鎺ュ彛鑳藉姏 鍙敤浜庢帴鍙e缓璋冪敤
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@FeignClient(name = "dev-service", configuration = {FeignConfiguration.class})
+@RequestMapping("/businessTableHisApi")
+public interface IBusinessTableHisV1InnerServiceSMO {
+
+
+    @RequestMapping(value = "/saveBusinessTableHis", method = RequestMethod.POST)
+    public int saveBusinessTableHis(@RequestBody  BusinessTableHisPo businessTableHisPo);
+
+    @RequestMapping(value = "/updateBusinessTableHis", method = RequestMethod.POST)
+    public int updateBusinessTableHis(@RequestBody  BusinessTableHisPo businessTableHisPo);
+
+    @RequestMapping(value = "/deleteBusinessTableHis", method = RequestMethod.POST)
+    public int deleteBusinessTableHis(@RequestBody  BusinessTableHisPo businessTableHisPo);
+
+    /**
+     * <p>鏌ヨ灏忓尯妤间俊鎭�</p>
+     *
+     *
+     * @param businessTableHisDto 鏁版嵁瀵硅薄鍒嗕韩
+     * @return BusinessTableHisDto 瀵硅薄鏁版嵁
+     */
+    @RequestMapping(value = "/queryBusinessTableHiss", method = RequestMethod.POST)
+    List<BusinessTableHisDto> queryBusinessTableHiss(@RequestBody BusinessTableHisDto businessTableHisDto);
+
+    /**
+     * 鏌ヨ<p>灏忓尯妤�</p>鎬昏褰曟暟
+     *
+     * @param businessTableHisDto 鏁版嵁瀵硅薄鍒嗕韩
+     * @return 灏忓尯涓嬬殑灏忓尯妤艰褰曟暟
+     */
+    @RequestMapping(value = "/queryBusinessTableHissCount", method = RequestMethod.POST)
+    int queryBusinessTableHissCount(@RequestBody BusinessTableHisDto businessTableHisDto);
+}
diff --git a/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java b/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java
index 2201e3e..023688e 100755
--- a/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java
+++ b/java110-utils/src/main/java/com/java110/utils/constant/ServiceCodeConstant.java
@@ -245,6 +245,11 @@
     public static final String SERVICE_CODE_SYSTEM_TRANSFER = "system.transfer";
 
     /**
+     * cmd鏈嶅姟
+     */
+    public static final String SERVICE_CODE_SYSTEM_CMD = "system.cmd";
+
+    /**
      * 璁㈠崟绫绘湇鍔″鐞�
      */
     public static final String SERVICE_CODE_DO_SERVICE_ORDER = "do.service.order";
diff --git a/java110-utils/src/main/java/com/java110/utils/exception/CmdException.java b/java110-utils/src/main/java/com/java110/utils/exception/CmdException.java
index 817f64b..574f70e 100644
--- a/java110-utils/src/main/java/com/java110/utils/exception/CmdException.java
+++ b/java110-utils/src/main/java/com/java110/utils/exception/CmdException.java
@@ -2,6 +2,7 @@
 
 
 import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.constant.ResponseConstant;
 
 import java.io.PrintStream;
 import java.io.PrintWriter;
@@ -16,10 +17,12 @@
     private Result result;
     private Throwable cause = this;
 
-    public CmdException(){}
+    public CmdException() {
+    }
 
     /**
      * 鏋勯�犳柟娉�
+     *
      * @param result 杩斿洖鍊�
      * @param cause  寮傚父鍫嗘爤
      */
@@ -30,6 +33,17 @@
 
     /**
      * 鏋勯�犳柟娉�
+     *
+     * @param msg 閿欒娑堟伅
+     */
+    public CmdException(String msg) {
+        super(msg);
+        this.result = new Result(ResponseConstant.RESULT_CODE_ERROR, msg);
+    }
+
+    /**
+     * 鏋勯�犳柟娉�
+     *
      * @param code 杩斿洖鐮�
      * @param msg  閿欒娑堟伅
      */
@@ -45,6 +59,7 @@
 
     /**
      * 鏋勯�犳柟娉�
+     *
      * @param result 杩斿洖鍊�
      * @param detail 鍏蜂綋鐨勮繑鍥炴秷鎭�
      */
@@ -55,6 +70,7 @@
 
     /**
      * 鏋勯�犳柟娉�
+     *
      * @param result 杩斿洖鍊�
      * @param detail 鍏蜂綋鐨勮繑鍥炴秷鎭�
      * @param cause  寮傚父鍫嗘爤
@@ -66,52 +82,55 @@
 
     /**
      * 鏋勯�犳柟娉�
-     * @param code	杩斿洖鐮�
-     * @param msg	杩斿洖娑堟伅
+     *
+     * @param code  杩斿洖鐮�
+     * @param msg   杩斿洖娑堟伅
      * @param cause 寮傚父鍫嗘爤
      */
     public CmdException(int code, String msg, Throwable cause) {
         super(msg, cause);
 
-        if(cause != null) {
-            if(cause.getCause() != null) {
+        if (cause != null) {
+            if (cause.getCause() != null) {
                 msg += " cause:" + ExceptionUtils.populateExecption(cause.getCause(), 500);
             }
-            msg += " StackTrace:"+ExceptionUtils.populateExecption(cause, 500);
+            msg += " StackTrace:" + ExceptionUtils.populateExecption(cause, 500);
         }
         this.result = new Result(code, msg);
     }
 
     /**
      * 鏋勯�犳柟娉�
-     * @param code	杩斿洖鐮�
-     * @param cause	寮傚父鍫嗘爤
+     *
+     * @param code  杩斿洖鐮�
+     * @param cause 寮傚父鍫嗘爤
      */
     public CmdException(int code, Throwable cause) {
         super(cause);
         String msg = "";
 
-        if(cause != null) {
-            if(cause.getCause() != null) {
+        if (cause != null) {
+            if (cause.getCause() != null) {
                 msg += " cause:" + ExceptionUtils.populateExecption(cause.getCause(), 500);
             }
-            msg += " StackTrace:"+ExceptionUtils.populateExecption(cause, 500);
+            msg += " StackTrace:" + ExceptionUtils.populateExecption(cause, 500);
         }
         this.result = new Result(code, msg);
     }
 
     /**
-     *
      * TODO 绠�鍗曟弿杩拌鏂规硶鐨勫疄鐜板姛鑳斤紙鍙�夛級.
+     *
      * @see Throwable#getCause()
      */
     public synchronized Throwable getCause() {
-        return (cause==this ? super.getCause() : cause);
+        return (cause == this ? super.getCause() : cause);
     }
 
 
     /**
      * 杩斿洖寮傚父娑堟伅
+     *
      * @return 寮傚父娑堟伅
      */
     @Override
@@ -121,6 +140,7 @@
 
     /**
      * 寮傚父
+     *
      * @return
      */
     public String toJsonString() {
@@ -130,10 +150,11 @@
         if (getResult() != null)
             exceptionJsonObj.putAll(JSONObject.parseObject(result.toString()));
 
-        exceptionJsonObj.put("exceptionTrace",getMessage());
+        exceptionJsonObj.put("exceptionTrace", getMessage());
 
         return exceptionJsonObj.toString();
     }
+
     @Override
     public void printStackTrace(PrintStream ps) {
         ps.print("<exception>");
@@ -176,7 +197,8 @@
 
     /**
      * 杩斿洖寮傚父鍊�
-     * @return	寮傚父鍊煎璞�
+     *
+     * @return 寮傚父鍊煎璞�
      */
     public Result getResult() {
         return result;
diff --git a/service-api/src/main/java/com/java110/api/listener/system/CmdListener.java b/service-api/src/main/java/com/java110/api/listener/system/CmdListener.java
new file mode 100644
index 0000000..622a7f2
--- /dev/null
+++ b/service-api/src/main/java/com/java110/api/listener/system/CmdListener.java
@@ -0,0 +1,129 @@
+package com.java110.api.listener.system;
+
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.utils.StringUtils;
+import com.java110.api.listener.AbstractServiceApiListener;
+import com.java110.core.annotation.Java110Listener;
+import com.java110.core.context.DataFlowContext;
+import com.java110.core.event.service.api.ServiceDataFlowEvent;
+import com.java110.dto.order.OrderDto;
+import com.java110.entity.center.AppService;
+import com.java110.intf.job.IDataBusInnerServiceSMO;
+import com.java110.utils.constant.CommonConstant;
+import com.java110.utils.constant.ServiceCodeConstant;
+import com.java110.utils.util.StringUtil;
+import com.java110.vo.ResultVo;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.http.*;
+import org.springframework.web.client.HttpStatusCodeException;
+import org.springframework.web.client.RestTemplate;
+
+import java.util.Map;
+
+@Java110Listener("cmdListener")
+public class CmdListener extends AbstractServiceApiListener {
+    private final static Logger logger = LoggerFactory.getLogger(CmdListener.class);
+    //databus 涓氬姟绫诲瀷
+    private static final String DATABUS_SWITCH = "DATABUS_SWITCH";
+    private static final String DATABUS_SWITCH_ON = "ON"; // 寮�鍏虫墦寮�
+
+
+    @Autowired
+    private IDataBusInnerServiceSMO dataBusInnerServiceSMOImpl;
+
+    @Autowired
+    private RestTemplate restTemplate;
+
+    @Override
+    protected void validate(ServiceDataFlowEvent event, JSONObject reqJson) {
+
+    }
+
+    @Override
+    protected void doSoService(ServiceDataFlowEvent event, DataFlowContext context, JSONObject reqJson) {
+
+        AppService service = event.getAppService();
+        Map<String, String> reqHeader = context.getRequestCurrentHeaders();
+        HttpHeaders header = new HttpHeaders();
+        for (String key : context.getRequestCurrentHeaders().keySet()) {
+            header.add(key, reqHeader.get(key));
+        }
+        HttpEntity<String> httpEntity = new HttpEntity<String>(reqJson.toJSONString(), header);
+        String orgRequestUrl = context.getRequestHeaders().get("REQUEST_URL");
+
+        String serviceCode = service.getServiceCode();
+
+        serviceCode = serviceCode.startsWith("/") ? serviceCode : ("/" + serviceCode);
+
+        String requestUrl = service.getUrl() + "/cmd" + serviceCode;
+
+        ResponseEntity responseEntity = null;
+        if (!StringUtil.isNullOrNone(orgRequestUrl)) {
+            String param = orgRequestUrl.contains("?") ? orgRequestUrl.substring(orgRequestUrl.indexOf("?") + 1, orgRequestUrl.length()) : "";
+            requestUrl += ("?" + param);
+        }
+        try {
+            if (CommonConstant.HTTP_METHOD_GET.equals(service.getMethod())) {
+                responseEntity = restTemplate.exchange(requestUrl, HttpMethod.GET, httpEntity, String.class);
+            } else if (CommonConstant.HTTP_METHOD_PUT.equals(service.getMethod())) {
+                responseEntity = restTemplate.exchange(requestUrl, HttpMethod.PUT, httpEntity, String.class);
+            } else if (CommonConstant.HTTP_METHOD_DELETE.equals(service.getMethod())) {
+                responseEntity = restTemplate.exchange(requestUrl, HttpMethod.DELETE, httpEntity, String.class);
+            } else {
+                responseEntity = restTemplate.exchange(requestUrl, HttpMethod.POST, httpEntity, String.class);
+            }
+            HttpHeaders headers = responseEntity.getHeaders();
+            String oId = "-1";
+            if (headers.containsKey(OrderDto.O_ID)) {
+                oId = headers.get(OrderDto.O_ID).get(0);
+            }
+
+
+        } catch (HttpStatusCodeException e) { //杩欓噷spring 妗嗘灦 鍦�4XX 鎴� 5XX 鏃舵姏鍑� HttpServerErrorException 寮傚父锛岄渶瑕侀噸鏂板皝瑁呬竴涓�
+            logger.error("璇锋眰涓嬫父鏈嶅姟銆�" + requestUrl + "銆戝紓甯革紝鍙傛暟涓�" + httpEntity + e.getResponseBodyAsString(), e);
+            String body = e.getResponseBodyAsString();
+
+            if (StringUtil.isJsonObject(body)) {
+                JSONObject bodyObj = JSONObject.parseObject(body);
+                if (bodyObj.containsKey("message") && !StringUtil.isEmpty(bodyObj.getString("message"))) {
+                    body = bodyObj.getString("message");
+                }
+            }
+            responseEntity = new ResponseEntity<String>(body, e.getStatusCode());
+        }
+
+        logger.debug("API 鏈嶅姟璋冪敤涓嬫父鏈嶅姟璇锋眰锛歿}锛岃繑鍥炰负锛歿}", httpEntity, responseEntity);
+
+        if (responseEntity.getStatusCode() != HttpStatus.OK) {
+            responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_ERROR, String.valueOf(responseEntity.getBody()));
+            context.setResponseEntity(responseEntity);
+
+            return;
+        }
+        if (StringUtils.isEmpty(responseEntity.getBody() + "")) {
+            responseEntity = ResultVo.createResponseEntity(ResultVo.CODE_ERROR, "澶勭悊澶辫触");
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+        JSONObject resParam = JSONObject.parseObject(responseEntity.getBody() + "");
+        if (resParam.containsKey("code") && resParam.containsKey("msg")) { // 璇存槑寰湇鍔¤繑鍥炵殑鏄� resultVo 瀵硅薄鐩存帴杩斿洖灏卞彲浠�
+            context.setResponseEntity(responseEntity);
+            return;
+        }
+        responseEntity = ResultVo.createResponseEntity(resParam);
+        context.setResponseEntity(responseEntity);
+
+    }
+
+    @Override
+    public String getServiceCode() {
+        return ServiceCodeConstant.SERVICE_CODE_SYSTEM_TRANSFER;
+    }
+
+    @Override
+    public HttpMethod getHttpMethod() {
+        return null;
+    }
+}
diff --git a/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java b/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
index caea3c9..a33b7d9 100755
--- a/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
+++ b/service-api/src/main/java/com/java110/api/smo/impl/ApiServiceSMOImpl.java
@@ -389,6 +389,14 @@
                         "鏈嶅姟銆�" + appService.getServiceCode() + "銆戣皟鐢ㄦ柟寮忎笉瀵硅妫�鏌�,褰撳墠璇锋眰鏂瑰紡涓猴細" + httpMethod);
             }
             dataFlow.setApiCurrentService(ServiceCodeConstant.SERVICE_CODE_SYSTEM_TRANSFER);
+        } else if ("CMD".equals(appService.getIsInstance())) {
+            //濡傛灉鏄�忎紶绫� 璇锋眰鏂瑰紡蹇呴』涓庢帴鍙f彁渚涙柟璋冪敤鏂瑰紡涓�鑷�
+            String httpMethod = dataFlow.getRequestCurrentHeaders().get(CommonConstant.HTTP_METHOD);
+            if (!appService.getMethod().equals(httpMethod)) {
+                throw new ListenerExecuteException(ResponseConstant.RESULT_CODE_ERROR,
+                        "鏈嶅姟銆�" + appService.getServiceCode() + "銆戣皟鐢ㄦ柟寮忎笉瀵硅妫�鏌�,褰撳墠璇锋眰鏂瑰紡涓猴細" + httpMethod);
+            }
+            dataFlow.setApiCurrentService(ServiceCodeConstant.SERVICE_CODE_SYSTEM_CMD);
         } else {
             dataFlow.setApiCurrentService(dataFlow.getRequestHeaders().get(CommonConstant.HTTP_SERVICE));
         }
diff --git a/service-dev/src/main/java/com/java110/dev/DevServiceApplicationStart.java b/service-dev/src/main/java/com/java110/dev/DevServiceApplicationStart.java
index e8f3a42..6062d5b 100644
--- a/service-dev/src/main/java/com/java110/dev/DevServiceApplicationStart.java
+++ b/service-dev/src/main/java/com/java110/dev/DevServiceApplicationStart.java
@@ -1,12 +1,13 @@
 package com.java110.dev;
 
 import com.java110.core.annotation.Java110CmdDiscovery;
-import com.java110.core.annotation.Java110ListenerDiscovery;
 import com.java110.core.client.RestTemplate;
 import com.java110.core.event.cmd.ServiceCmdEventPublishing;
-import com.java110.core.event.cmd.ServiceCmdListener;
-import com.java110.core.event.service.BusinessServiceDataFlowEventPublishing;
+import com.java110.dev.smo.IDevServiceCacheSMO;
 import com.java110.service.init.ServiceStartInit;
+import com.java110.utils.cache.MappingCache;
+import com.java110.utils.factory.ApplicationContextFactory;
+import com.java110.utils.util.StringUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.boot.SpringApplication;
@@ -78,5 +79,36 @@
         ApplicationContext context = SpringApplication.run(DevServiceApplicationStart.class, args);
         ServiceStartInit.initSystemConfig(context);
 
+        //鍒锋柊缂撳瓨
+        flushMainCache(args);
+    }
+
+    /**
+     * 鍒锋柊涓昏鐨勭紦瀛�
+     *
+     * @param args
+     */
+    private static void flushMainCache(String[] args) {
+
+        logger.debug("鍒ゆ柇鏄惁闇�瑕佸埛鏂版棩蹇楋紝鍙傛暟 args 涓� {}", args);
+
+        //鍥犱负濂藉鏈嬪弸鍚姩鏃� 涓嶅姞 鍙傛暟-Dcache 鎵�浠ュ惎鍔ㄦ椂妫�娴� redis 涓槸鍚﹀瓨鍦� java110_hc_version
+        String mapping = MappingCache.getValue("java110_hc_version");
+        if (StringUtil.isEmpty(mapping)) {
+            IDevServiceCacheSMO centerServiceCacheSMO = (IDevServiceCacheSMO) ApplicationContextFactory.getBean("devServiceCacheSMOImpl");
+            centerServiceCacheSMO.startFlush();
+            return;
+        }
+
+        if (args == null || args.length == 0) {
+            return;
+        }
+        for (int i = 0; i < args.length; i++) {
+            if (args[i].equalsIgnoreCase("-Dcache")) {
+                logger.debug("寮�濮嬪埛鏂版棩蹇楋紝鍏ュ弬涓猴細{}", args[i]);
+                IDevServiceCacheSMO centerServiceCacheSMO = (IDevServiceCacheSMO) ApplicationContextFactory.getBean("centerServiceCacheSMOImpl");
+                centerServiceCacheSMO.startFlush();
+            }
+        }
     }
 }
\ No newline at end of file
diff --git a/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/DeleteBusinessTableHisCmd.java b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/DeleteBusinessTableHisCmd.java
new file mode 100644
index 0000000..5c3bb3f
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/DeleteBusinessTableHisCmd.java
@@ -0,0 +1,71 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.cmd.businessTableHis;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+/**
+ * 绫昏〃杩帮細鍒犻櫎
+ * 鏈嶅姟缂栫爜锛歜usinessTableHis.DeleteBusinessTableHis
+ * 璇锋眰璺姴锛�/app/businessTableHis.DeleteBusinessTableHis
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "businessTableHis.DeleteBusinessTableHis")
+public class DeleteBusinessTableHisCmd extends AbstractServiceCmdListener {
+  private static Logger logger = LoggerFactory.getLogger(DeleteBusinessTableHisCmd.class);
+
+    @Autowired
+    private IBusinessTableHisV1InnerServiceSMO businessTableHisV1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "hisId", "hisId涓嶈兘涓虹┖");
+Assert.hasKeyAndValue(reqJson, "hisId", "hisId涓嶈兘涓虹┖");
+
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+       BusinessTableHisPo businessTableHisPo = BeanConvertUtil.covertBean(reqJson, BusinessTableHisPo.class);
+        int flag = businessTableHisV1InnerServiceSMOImpl.deleteBusinessTableHis(businessTableHisPo);
+
+        if (flag < 1) {
+            throw new CmdException("鍒犻櫎鏁版嵁澶辫触");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}
diff --git a/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/ListBusinessTableHisCmd.java b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/ListBusinessTableHisCmd.java
new file mode 100644
index 0000000..739c359
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/ListBusinessTableHisCmd.java
@@ -0,0 +1,85 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.cmd.businessTableHis;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.java110.dto.businessTableHis.BusinessTableHisDto;
+import java.util.List;
+import java.util.ArrayList;
+import org.springframework.http.ResponseEntity;
+import org.springframework.http.HttpStatus;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * 绫昏〃杩帮細鏌ヨ
+ * 鏈嶅姟缂栫爜锛歜usinessTableHis.ListBusinessTableHis
+ * 璇锋眰璺姴锛�/app/businessTableHis.ListBusinessTableHis
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "businessTableHis.ListBusinessTableHis")
+public class ListBusinessTableHisCmd extends AbstractServiceCmdListener {
+
+  private static Logger logger = LoggerFactory.getLogger(ListBusinessTableHisCmd.class);
+    @Autowired
+    private IBusinessTableHisV1InnerServiceSMO businessTableHisV1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        super.validatePageInfo(reqJson);
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+           BusinessTableHisDto businessTableHisDto = BeanConvertUtil.covertBean(reqJson, BusinessTableHisDto.class);
+
+           int count = businessTableHisV1InnerServiceSMOImpl.queryBusinessTableHissCount(businessTableHisDto);
+
+           List<BusinessTableHisDto> businessTableHisDtos = null;
+
+           if (count > 0) {
+               businessTableHisDtos = businessTableHisV1InnerServiceSMOImpl.queryBusinessTableHiss(businessTableHisDto);
+           } else {
+               businessTableHisDtos = new ArrayList<>();
+           }
+
+           ResultVo resultVo = new ResultVo((int) Math.ceil((double) count / (double) reqJson.getInteger("row")), count, businessTableHisDtos);
+
+           ResponseEntity<String> responseEntity = new ResponseEntity<String>(resultVo.toString(), HttpStatus.OK);
+
+           cmdDataFlowContext.setResponseEntity(responseEntity);
+    }
+}
diff --git a/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/SaveBusinessTableHisCmd.java b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/SaveBusinessTableHisCmd.java
new file mode 100644
index 0000000..cd8264b
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/SaveBusinessTableHisCmd.java
@@ -0,0 +1,78 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.cmd.businessTableHis;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * 绫昏〃杩帮細淇濆瓨
+ * 鏈嶅姟缂栫爜锛歜usinessTableHis.SaveBusinessTableHis
+ * 璇锋眰璺姴锛�/app/businessTableHis.SaveBusinessTableHis
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "businessTableHis.SaveBusinessTableHis")
+public class SaveBusinessTableHisCmd extends AbstractServiceCmdListener {
+
+    private static Logger logger = LoggerFactory.getLogger(SaveBusinessTableHisCmd.class);
+
+    public static final String CODE_PREFIX_ID = "10";
+
+    @Autowired
+    private IBusinessTableHisV1InnerServiceSMO businessTableHisV1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "action", "璇锋眰鎶ユ枃涓湭鍖呭惈action");
+Assert.hasKeyAndValue(reqJson, "actionObj", "璇锋眰鎶ユ枃涓湭鍖呭惈actionObj");
+Assert.hasKeyAndValue(reqJson, "actionObjHis", "璇锋眰鎶ユ枃涓湭鍖呭惈actionObjHis");
+Assert.hasKeyAndValue(reqJson, "businessTypeCd", "璇锋眰鎶ユ枃涓湭鍖呭惈businessTypeCd");
+
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+       BusinessTableHisPo businessTableHisPo = BeanConvertUtil.covertBean(reqJson, BusinessTableHisPo.class);
+        businessTableHisPo.setHisId(GenerateCodeFactory.getGeneratorId(CODE_PREFIX_ID));
+        int flag = businessTableHisV1InnerServiceSMOImpl.saveBusinessTableHis(businessTableHisPo);
+
+        if (flag < 1) {
+            throw new CmdException("淇濆瓨鏁版嵁澶辫触");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}
diff --git a/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/UpdateBusinessTableHisCmd.java b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/UpdateBusinessTableHisCmd.java
new file mode 100644
index 0000000..355d607
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/cmd/businessTableHis/UpdateBusinessTableHisCmd.java
@@ -0,0 +1,75 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.cmd.businessTableHis;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.core.annotation.Java110Cmd;
+import com.java110.core.annotation.Java110Transactional;
+import com.java110.core.context.ICmdDataFlowContext;
+import com.java110.core.event.cmd.AbstractServiceCmdListener;
+import com.java110.core.event.cmd.CmdEvent;
+import com.java110.core.factory.GenerateCodeFactory;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.exception.CmdException;
+import com.java110.utils.util.Assert;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.vo.ResultVo;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+/**
+ * 绫昏〃杩帮細鏇存柊
+ * 鏈嶅姟缂栫爜锛歜usinessTableHis.UpdateBusinessTableHis
+ * 璇锋眰璺姴锛�/app/businessTableHis.UpdateBusinessTableHis
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Java110Cmd(serviceCode = "businessTableHis.UpdateBusinessTableHis")
+public class UpdateBusinessTableHisCmd extends AbstractServiceCmdListener {
+
+  private static Logger logger = LoggerFactory.getLogger(UpdateBusinessTableHisCmd.class);
+
+
+    @Autowired
+    private IBusinessTableHisV1InnerServiceSMO businessTableHisV1InnerServiceSMOImpl;
+
+    @Override
+    protected void validate(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) {
+        Assert.hasKeyAndValue(reqJson, "hisId", "hisId涓嶈兘涓虹┖");
+Assert.hasKeyAndValue(reqJson, "hisId", "hisId涓嶈兘涓虹┖");
+
+    }
+
+    @Override
+    @Java110Transactional
+    protected void doCmd(CmdEvent event, ICmdDataFlowContext cmdDataFlowContext, JSONObject reqJson) throws CmdException {
+
+       BusinessTableHisPo businessTableHisPo = BeanConvertUtil.covertBean(reqJson, BusinessTableHisPo.class);
+        int flag = businessTableHisV1InnerServiceSMOImpl.updateBusinessTableHis(businessTableHisPo);
+
+        if (flag < 1) {
+            throw new CmdException("鏇存柊鏁版嵁澶辫触");
+        }
+
+        cmdDataFlowContext.setResponseEntity(ResultVo.success());
+    }
+}
diff --git a/service-dev/src/main/java/com/java110/dev/dao/IBusinessTableHisV1ServiceDao.java b/service-dev/src/main/java/com/java110/dev/dao/IBusinessTableHisV1ServiceDao.java
new file mode 100644
index 0000000..a5e14e1
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/dao/IBusinessTableHisV1ServiceDao.java
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.dao;
+
+
+import com.java110.utils.exception.DAOException;
+import com.java110.entity.merchant.BoMerchant;
+import com.java110.entity.merchant.BoMerchantAttr;
+import com.java110.entity.merchant.Merchant;
+import com.java110.entity.merchant.MerchantAttr;
+
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绫昏〃杩帮細
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+public interface IBusinessTableHisV1ServiceDao {
+
+
+    /**
+     * 淇濆瓨 璁㈠崟杞ㄨ抗淇℃伅
+     * @param info
+     * @throws DAOException DAO寮傚父
+     */
+    int saveBusinessTableHisInfo(Map info) throws DAOException;
+
+
+
+
+    /**
+     * 鏌ヨ璁㈠崟杞ㄨ抗淇℃伅锛坕nstance杩囩▼锛�
+     * 鏍规嵁bId 鏌ヨ璁㈠崟杞ㄨ抗淇℃伅
+     * @param info bId 淇℃伅
+     * @return 璁㈠崟杞ㄨ抗淇℃伅
+     * @throws DAOException DAO寮傚父
+     */
+    List<Map> getBusinessTableHisInfo(Map info) throws DAOException;
+
+
+
+    /**
+     * 淇敼璁㈠崟杞ㄨ抗淇℃伅
+     * @param info 淇敼淇℃伅
+     * @throws DAOException DAO寮傚父
+     */
+    int updateBusinessTableHisInfo(Map info) throws DAOException;
+
+
+    /**
+     * 鏌ヨ璁㈠崟杞ㄨ抗鎬绘暟
+     *
+     * @param info 璁㈠崟杞ㄨ抗淇℃伅
+     * @return 璁㈠崟杞ㄨ抗鏁伴噺
+     */
+    int queryBusinessTableHissCount(Map info);
+
+}
diff --git a/service-dev/src/main/java/com/java110/dev/dao/IDevServiceDAO.java b/service-dev/src/main/java/com/java110/dev/dao/IDevServiceDAO.java
new file mode 100644
index 0000000..c970ae5
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/dao/IDevServiceDAO.java
@@ -0,0 +1,46 @@
+package com.java110.dev.dao;
+
+import com.java110.dto.basePrivilege.BasePrivilegeDto;
+import com.java110.dto.businessDatabus.BusinessDatabusDto;
+import com.java110.entity.mapping.Mapping;
+import com.java110.utils.exception.DAOException;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Created by wuxw on 2018/4/14.
+ */
+public interface IDevServiceDAO {
+
+    /**
+     * 鏌ヨ鎵�鏈夌粍浠�
+     *
+     * @return
+     */
+    public List<Map> getAppRouteAndServiceInfoAll();
+
+    /**
+     * 鏌ヨ鏄犲皠琛�
+     *
+     * @return
+     */
+    public List<Mapping> getMappingInfoAll();
+
+    /**
+     * 鏌ヨ鏄犲皠琛�
+     *
+     * @return
+     */
+    public List<BasePrivilegeDto> getPrivilegeAll();
+    /**
+     * 鏌ヨ鏄犲皠琛�
+     *
+     * @return
+     */
+    public List<BusinessDatabusDto> getDatabusAll();
+
+
+
+
+}
diff --git a/service-dev/src/main/java/com/java110/dev/dao/impl/BusinessTableHisV1ServiceDaoImpl.java b/service-dev/src/main/java/com/java110/dev/dao/impl/BusinessTableHisV1ServiceDaoImpl.java
new file mode 100644
index 0000000..e366ae3
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/dao/impl/BusinessTableHisV1ServiceDaoImpl.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.dao.impl;
+
+import com.alibaba.fastjson.JSONObject;
+import com.java110.utils.constant.ResponseConstant;
+import com.java110.utils.exception.DAOException;
+import com.java110.utils.util.DateUtil;
+import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.dev.dao.IBusinessTableHisV1ServiceDao;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 绫昏〃杩帮細
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@Service("businessTableHisV1ServiceDaoImpl")
+public class BusinessTableHisV1ServiceDaoImpl extends BaseServiceDao implements IBusinessTableHisV1ServiceDao {
+
+    private static Logger logger = LoggerFactory.getLogger(BusinessTableHisV1ServiceDaoImpl.class);
+
+
+
+
+
+    /**
+     * 淇濆瓨璁㈠崟杞ㄨ抗淇℃伅 鍒� instance
+     * @param info   bId 淇℃伅
+     * @throws DAOException DAO寮傚父
+     */
+    @Override
+    public int saveBusinessTableHisInfo(Map info) throws DAOException {
+        logger.debug("淇濆瓨 saveBusinessTableHisInfo 鍏ュ弬 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.insert("businessTableHisV1ServiceDaoImpl.saveBusinessTableHisInfo",info);
+
+        return saveFlag;
+    }
+
+
+    /**
+     * 鏌ヨ璁㈠崟杞ㄨ抗淇℃伅锛坕nstance锛�
+     * @param info bId 淇℃伅
+     * @return List<Map>
+     * @throws DAOException DAO寮傚父
+     */
+    @Override
+    public List<Map> getBusinessTableHisInfo(Map info) throws DAOException {
+        logger.debug("鏌ヨ getBusinessTableHisInfo 鍏ュ弬 info : {}",info);
+
+        List<Map> businessBusinessTableHisInfos = sqlSessionTemplate.selectList("businessTableHisV1ServiceDaoImpl.getBusinessTableHisInfo",info);
+
+        return businessBusinessTableHisInfos;
+    }
+
+
+    /**
+     * 淇敼璁㈠崟杞ㄨ抗淇℃伅
+     * @param info 淇敼淇℃伅
+     * @throws DAOException DAO寮傚父
+     */
+    @Override
+    public int updateBusinessTableHisInfo(Map info) throws DAOException {
+        logger.debug("淇敼 updateBusinessTableHisInfo 鍏ュ弬 info : {}",info);
+
+        int saveFlag = sqlSessionTemplate.update("businessTableHisV1ServiceDaoImpl.updateBusinessTableHisInfo",info);
+
+        return saveFlag;
+    }
+
+     /**
+     * 鏌ヨ璁㈠崟杞ㄨ抗鏁伴噺
+     * @param info 璁㈠崟杞ㄨ抗淇℃伅
+     * @return 璁㈠崟杞ㄨ抗鏁伴噺
+     */
+    @Override
+    public int queryBusinessTableHissCount(Map info) {
+        logger.debug("鏌ヨ queryBusinessTableHissCount 鍏ュ弬 info : {}",info);
+
+        List<Map> businessBusinessTableHisInfos = sqlSessionTemplate.selectList("businessTableHisV1ServiceDaoImpl.queryBusinessTableHissCount", info);
+        if (businessBusinessTableHisInfos.size() < 1) {
+            return 0;
+        }
+
+        return Integer.parseInt(businessBusinessTableHisInfos.get(0).get("count").toString());
+    }
+
+
+}
diff --git a/service-dev/src/main/java/com/java110/dev/dao/impl/DevServiceDAOImpl.java b/service-dev/src/main/java/com/java110/dev/dao/impl/DevServiceDAOImpl.java
new file mode 100644
index 0000000..9caaf29
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/dao/impl/DevServiceDAOImpl.java
@@ -0,0 +1,53 @@
+package com.java110.dev.dao.impl;
+
+import com.java110.core.base.dao.BaseServiceDao;
+import com.java110.dev.dao.IDevServiceDAO;
+import com.java110.dto.basePrivilege.BasePrivilegeDto;
+import com.java110.dto.businessDatabus.BusinessDatabusDto;
+import com.java110.entity.mapping.Mapping;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * 涓績鏈嶅姟 鏁版嵁鎿嶄綔绫�
+ * Created by wuxw on 2018/4/14.
+ */
+@Service("centerServiceDAOImpl")
+@Transactional
+public class DevServiceDAOImpl extends BaseServiceDao implements IDevServiceDAO {
+
+    protected final static Logger logger = LoggerFactory.getLogger(DevServiceDAOImpl.class);
+
+
+    @Override
+    public List<Map> getAppRouteAndServiceInfoAll() {
+        return sqlSessionTemplate.selectList("devServiceDAOImpl.getAppRouteAndServiceInfoAll");
+    }
+
+
+    /**
+     * 鏌ヨ鏄犲皠琛�
+     *
+     * @return
+     */
+    @Override
+    public List<Mapping> getMappingInfoAll() {
+        return sqlSessionTemplate.selectList("devServiceDAOImpl.getMappingInfoAll");
+    }
+
+    @Override
+    public List<BasePrivilegeDto> getPrivilegeAll() {
+        return sqlSessionTemplate.selectList("devServiceDAOImpl.getPrivilegeAll");
+    }
+
+    @Override
+    public List<BusinessDatabusDto> getDatabusAll() {
+        return sqlSessionTemplate.selectList("devServiceDAOImpl.getDatabusAll");
+    }
+
+}
diff --git a/service-order/src/main/java/com/java110/order/smo/ICenterServiceCacheSMO.java b/service-dev/src/main/java/com/java110/dev/smo/IDevServiceCacheSMO.java
old mode 100755
new mode 100644
similarity index 84%
rename from service-order/src/main/java/com/java110/order/smo/ICenterServiceCacheSMO.java
rename to service-dev/src/main/java/com/java110/dev/smo/IDevServiceCacheSMO.java
index d7f754b..7874141
--- a/service-order/src/main/java/com/java110/order/smo/ICenterServiceCacheSMO.java
+++ b/service-dev/src/main/java/com/java110/dev/smo/IDevServiceCacheSMO.java
@@ -1,4 +1,4 @@
-package com.java110.order.smo;
+package com.java110.dev.smo;
 
 import com.java110.service.context.DataQuery;
 
@@ -7,7 +7,7 @@
 /**
  * Created by wuxw on 2018/4/18.
  */
-public interface ICenterServiceCacheSMO {
+public interface IDevServiceCacheSMO {
 
     /**
      * 鍒锋柊 缂撳瓨
diff --git a/service-dev/src/main/java/com/java110/dev/smo/impl/BusinessTableHisV1InnerServiceSMOImpl.java b/service-dev/src/main/java/com/java110/dev/smo/impl/BusinessTableHisV1InnerServiceSMOImpl.java
new file mode 100644
index 0000000..ed86231
--- /dev/null
+++ b/service-dev/src/main/java/com/java110/dev/smo/impl/BusinessTableHisV1InnerServiceSMOImpl.java
@@ -0,0 +1,89 @@
+/*
+ * Copyright 2017-2020 鍚村鏂� and java110 team.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package com.java110.dev.smo.impl;
+
+
+import com.java110.dev.dao.IBusinessTableHisV1ServiceDao;
+import com.java110.intf.dev.IBusinessTableHisV1InnerServiceSMO;
+import com.java110.dto.businessTableHis.BusinessTableHisDto;
+import com.java110.po.businessTableHis.BusinessTableHisPo;
+import com.java110.utils.util.BeanConvertUtil;
+import com.java110.core.base.smo.BaseServiceSMO;
+import com.java110.dto.user.UserDto;
+import com.java110.dto.PageDto;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * 绫昏〃杩帮細 鏈嶅姟涔嬪墠璋冪敤鐨勬帴鍙e疄鐜扮被锛屼笉瀵瑰鎻愪緵鎺ュ彛鑳藉姏 鍙敤浜庢帴鍙e缓璋冪敤
+ * add by 鍚村鏂� at 2021-09-12 13:58:05 mail: 928255095@qq.com
+ * open source address: https://gitee.com/wuxw7/MicroCommunity
+ * 瀹樼綉锛歨ttp://www.homecommunity.cn
+ * 娓╅Θ鎻愮ず锛氬鏋滄偍瀵规鏂囦欢杩涜淇敼 璇蜂笉瑕佸垹闄ゅ師鏈変綔鑰呭強娉ㄩ噴淇℃伅锛岃琛ュ厖鎮ㄧ殑 淇敼鐨勫師鍥犱互鍙婅仈绯婚偖绠卞涓�
+ * // modify by 寮犱笁 at 2021-09-12 绗�10琛屽湪鏌愮鍦烘櫙涓嬪瓨鍦ㄦ煇绉峛ug 闇�瑕佷慨澶嶏紝娉ㄩ噴10鑷�20琛� 鍔犲叆 20琛岃嚦30琛�
+ */
+@RestController
+public class BusinessTableHisV1InnerServiceSMOImpl extends BaseServiceSMO implements IBusinessTableHisV1InnerServiceSMO {
+
+    @Autowired
+    private IBusinessTableHisV1ServiceDao businessTableHisV1ServiceDaoImpl;
+
+
+    @Override
+    public int saveBusinessTableHis(@RequestBody  BusinessTableHisPo businessTableHisPo) {
+        int saveFlag = businessTableHisV1ServiceDaoImpl.saveBusinessTableHisInfo(BeanConvertUtil.beanCovertMap(businessTableHisPo));
+        return saveFlag;
+    }
+
+     @Override
+    public int updateBusinessTableHis(@RequestBody  BusinessTableHisPo businessTableHisPo) {
+        int saveFlag = businessTableHisV1ServiceDaoImpl.updateBusinessTableHisInfo(BeanConvertUtil.beanCovertMap(businessTableHisPo));
+        return saveFlag;
+    }
+
+     @Override
+    public int deleteBusinessTableHis(@RequestBody  BusinessTableHisPo businessTableHisPo) {
+       businessTableHisPo.setStatusCd("1");
+       int saveFlag = businessTableHisV1ServiceDaoImpl.updateBusinessTableHisInfo(BeanConvertUtil.beanCovertMap(businessTableHisPo));
+       return saveFlag;
+    }
+
+    @Override
+    public List<BusinessTableHisDto> queryBusinessTableHiss(@RequestBody  BusinessTableHisDto businessTableHisDto) {
+
+        //鏍¢獙鏄惁浼犱簡 鍒嗛〉淇℃伅
+
+        int page = businessTableHisDto.getPage();
+
+        if (page != PageDto.DEFAULT_PAGE) {
+            businessTableHisDto.setPage((page - 1) * businessTableHisDto.getRow());
+        }
+
+        List<BusinessTableHisDto> businessTableHiss = BeanConvertUtil.covertBeanList(businessTableHisV1ServiceDaoImpl.getBusinessTableHisInfo(BeanConvertUtil.beanCovertMap(businessTableHisDto)), BusinessTableHisDto.class);
+
+        return businessTableHiss;
+    }
+
+
+    @Override
+    public int queryBusinessTableHissCount(@RequestBody BusinessTableHisDto businessTableHisDto) {
+        return businessTableHisV1ServiceDaoImpl.queryBusinessTableHissCount(BeanConvertUtil.beanCovertMap(businessTableHisDto));    }
+
+}
diff --git a/service-order/src/main/java/com/java110/order/smo/impl/CenterServiceCacheSMOImpl.java b/service-dev/src/main/java/com/java110/dev/smo/impl/DevServiceCacheSMOImpl.java
old mode 100755
new mode 100644
similarity index 92%
rename from service-order/src/main/java/com/java110/order/smo/impl/CenterServiceCacheSMOImpl.java
rename to service-dev/src/main/java/com/java110/dev/smo/impl/DevServiceCacheSMOImpl.java
index 669d877..65ef6cc
--- a/service-order/src/main/java/com/java110/order/smo/impl/CenterServiceCacheSMOImpl.java
+++ b/service-dev/src/main/java/com/java110/dev/smo/impl/DevServiceCacheSMOImpl.java
@@ -1,16 +1,16 @@
-package com.java110.order.smo.impl;
+package com.java110.dev.smo.impl;
 
 import com.alibaba.fastjson.JSONObject;
 import com.java110.core.factory.DataTransactionFactory;
 import com.java110.db.dao.IQueryServiceDAO;
+import com.java110.dev.smo.IDevServiceCacheSMO;
 import com.java110.dto.basePrivilege.BasePrivilegeDto;
 import com.java110.dto.businessDatabus.BusinessDatabusDto;
 import com.java110.entity.center.AppRoute;
 import com.java110.entity.mapping.Mapping;
 import com.java110.entity.order.ServiceBusiness;
 import com.java110.entity.service.ServiceSql;
-import com.java110.order.dao.ICenterServiceDAO;
-import com.java110.order.smo.ICenterServiceCacheSMO;
+import com.java110.dev.dao.IDevServiceDAO;
 import com.java110.service.context.DataQuery;
 import com.java110.utils.cache.*;
 import com.java110.utils.constant.CommonConstant;
@@ -31,13 +31,13 @@
  * 鍒锋柊缂撳瓨
  * Created by wuxw on 2018/4/18.
  */
-@Service("centerServiceCacheSMOImpl")
-public class CenterServiceCacheSMOImpl implements ICenterServiceCacheSMO {
+@Service("devServiceCacheSMOImpl")
+public class DevServiceCacheSMOImpl implements IDevServiceCacheSMO {
 
-    private final static Logger logger = LoggerFactory.getLogger(CenterServiceCacheSMOImpl.class);
+    private final static Logger logger = LoggerFactory.getLogger(DevServiceCacheSMOImpl.class);
 
     @Autowired
-    ICenterServiceDAO centerServiceDAOImpl;
+    IDevServiceDAO devServiceDAOImpl;
 
     @Autowired
     IQueryServiceDAO queryServiceDAOImpl;
@@ -294,7 +294,7 @@
 
     private void doFlushMapping() {
         logger.debug("寮�濮嬪埛鏂� Mapping鏁版嵁鍒皉edis鏁版嵁搴撲腑");
-        List<Mapping> mappings = centerServiceDAOImpl.getMappingInfoAll();
+        List<Mapping> mappings = devServiceDAOImpl.getMappingInfoAll();
         //鍒犻櫎鍘熷鏁版嵁
         MappingCache.removeData(MappingCache._SUFFIX_MAPPING);
         for (Mapping mapping : mappings) {
@@ -321,7 +321,7 @@
 
     private void doFlushPrivilege() {
         logger.debug("寮�濮嬪埛鏂� Mapping鏁版嵁鍒皉edis鏁版嵁搴撲腑");
-        List<BasePrivilegeDto> basePrivilegeDtos = centerServiceDAOImpl.getPrivilegeAll();
+        List<BasePrivilegeDto> basePrivilegeDtos = devServiceDAOImpl.getPrivilegeAll();
         //鍒犻櫎鍘熷鏁版嵁
         PrivilegeCache.removeData(PrivilegeCache.DEFAULT_PRIVILEGE);
         PrivilegeCache.setValue(basePrivilegeDtos);
@@ -329,7 +329,7 @@
 
     private void doFlushDatabus() {
         logger.debug("寮�濮嬪埛鏂� Mapping鏁版嵁鍒皉edis鏁版嵁搴撲腑");
-        List<BusinessDatabusDto> businessDatabusDtos = centerServiceDAOImpl.getDatabusAll();
+        List<BusinessDatabusDto> businessDatabusDtos = devServiceDAOImpl.getDatabusAll();
         //鍒犻櫎鍘熷鏁版嵁
         DatabusCache.removeData(DatabusCache.DEFAULT_DATABUS);
         DatabusCache.setValue(businessDatabusDtos);
@@ -366,7 +366,7 @@
 
     private void doFlushAppRoute() {
         logger.debug("寮�濮嬪埛鏂� AppRoute鏁版嵁鍒皉edis鏁版嵁搴撲腑");
-        List<Map> appInfos = centerServiceDAOImpl.getAppRouteAndServiceInfoAll();
+        List<Map> appInfos = devServiceDAOImpl.getAppRouteAndServiceInfoAll();
         Map<String, List<AppRoute>> appRoustsMap = new HashMap<String, List<AppRoute>>();
         List<AppRoute> appRoutes = null;
         for (Map appInfo : appInfos) {
@@ -387,13 +387,6 @@
         }
     }
 
-    public ICenterServiceDAO getCenterServiceDAOImpl() {
-        return centerServiceDAOImpl;
-    }
-
-    public void setCenterServiceDAOImpl(ICenterServiceDAO centerServiceDAOImpl) {
-        this.centerServiceDAOImpl = centerServiceDAOImpl;
-    }
 
     public IQueryServiceDAO getQueryServiceDAOImpl() {
         return queryServiceDAOImpl;
diff --git a/service-dev/src/main/resources/java110.properties b/service-dev/src/main/resources/java110.properties
index 9567600..7d30ea9 100644
--- a/service-dev/src/main/resources/java110.properties
+++ b/service-dev/src/main/resources/java110.properties
@@ -1,3 +1,3 @@
-java110.mappingPath=classpath:mapper/dev/*.xml
+java110.mappingPath=classpath:mapper/*/*.xml
 
 
diff --git a/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java b/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java
index 06b0a07..3c28d8f 100755
--- a/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java
+++ b/service-order/src/main/java/com/java110/order/OrderServiceApplicationStart.java
@@ -111,8 +111,6 @@
             //鍔犺浇浜嬩欢鏁版嵁
             //EventConfigInit.initSystemConfig();
 
-            //鍒锋柊缂撳瓨
-            flushMainCache(args);
 
             //鍔犺浇workId
             loadWorkId();
@@ -122,34 +120,7 @@
     }
 
 
-    /**
-     * 鍒锋柊涓昏鐨勭紦瀛�
-     *
-     * @param args
-     */
-    private static void flushMainCache(String[] args) {
 
-        logger.debug("鍒ゆ柇鏄惁闇�瑕佸埛鏂版棩蹇楋紝鍙傛暟 args 涓� {}", args);
-
-        //鍥犱负濂藉鏈嬪弸鍚姩鏃� 涓嶅姞 鍙傛暟-Dcache 鎵�浠ュ惎鍔ㄦ椂妫�娴� redis 涓槸鍚﹀瓨鍦� java110_hc_version
-        String mapping = MappingCache.getValue("java110_hc_version");
-        if (StringUtil.isEmpty(mapping)) {
-            ICenterServiceCacheSMO centerServiceCacheSMO = (ICenterServiceCacheSMO) ApplicationContextFactory.getBean("centerServiceCacheSMOImpl");
-            centerServiceCacheSMO.startFlush();
-            return;
-        }
-
-        if (args == null || args.length == 0) {
-            return;
-        }
-        for (int i = 0; i < args.length; i++) {
-            if (args[i].equalsIgnoreCase("-Dcache")) {
-                logger.debug("寮�濮嬪埛鏂版棩蹇楋紝鍏ュ弬涓猴細{}", args[i]);
-                ICenterServiceCacheSMO centerServiceCacheSMO = (ICenterServiceCacheSMO) ApplicationContextFactory.getBean("centerServiceCacheSMOImpl");
-                centerServiceCacheSMO.startFlush();
-            }
-        }
-    }
 
     /**
      * 鍔犺浇 workId
diff --git a/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java b/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
index f344b4d..6888056 100755
--- a/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
+++ b/service-order/src/main/java/com/java110/order/dao/impl/CenterServiceDAOImpl.java
@@ -53,6 +53,9 @@
             throw new DAOException(ResponseConstant.RESULT_CODE_INNER_ERROR, "淇濆瓨璁㈠崟椤逛俊鎭け璐ワ細" + JSONObject.toJSONString(orderItem));
         }
 
+        //杩欎釜鍦版柟鎴戜滑琛ュ厖c_business
+
+
         if (!orderItem.containsKey("logText") || StringUtil.isEmpty(orderItem.get("logText") + "")) {
             return;
         }

--
Gitblit v1.8.0