diff --git a/build.gradle b/build.gradle
index 0f9897b..72ec3a0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -37,12 +37,10 @@
     implementation 'org.springframework.social:spring-social-web:1.1.6.RELEASE'
     implementation 'org.jetbrains.kotlin:kotlin-reflect'
     implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
+    implementation 'org.hibernate:hibernate-validator:5.4.1.Final'
 
     implementation 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
 
-    implementation 'com.github.chenhaiyangs:rpc-tcc-transaction-spring:1.2.0'
-    implementation 'com.github.chenhaiyangs:rpc-tcc-transaction-api:1.1.0'
-    implementation 'com.github.chenhaiyangs:rpc-tcc-transaction-core:1.2.0'
     implementation 'org.postgresql:postgresql:42.2.5'
     implementation 'com.fasterxml.jackson.module:jackson-module-kotlin'
     implementation 'com.jcabi:jcabi-manifests:1.1'
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java b/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
index 16ed73c..c019cee 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TAccount.java
@@ -6,6 +6,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.sql.Timestamp;
 
@@ -27,22 +28,28 @@
   @Column(name = "SUBJNO", length = 10)
   private String subjno; //科目号
 
-  @Column(name = "USERID", nullable = false, length = 32)
+  @Column(name = "USERID", length = 32)
+  @NotNull
   private String userid; //用户ID
 
-  @Column(name = "TRANS_STATUS", nullable = false, length = 20)
+  @Column(name = "TRANS_STATUS", length = 20)
+  @NotNull
   private String transStatus = TradeDict.STATUS_NORMAL; //状态：normal-正常；closed-注销；locked-冻结
 
-  @Column(name = "BALANCE", nullable = false, precision = 15, scale = 2)
+  @Column(name = "BALANCE", precision = 15, scale = 2)
+  @NotNull
   private Double balance; //总余额
 
-  @Column(name = "AVAILBAL", nullable = false, precision = 15, scale = 2)
+  @Column(name = "AVAILBAL", precision = 15, scale = 2)
+  @NotNull
   private Double availbal; //可用余额
 
-  @Column(name = "FROZEBAL", nullable = false, precision = 15, scale = 2)
+  @Column(name = "FROZEBAL", precision = 15, scale = 2)
+  @NotNull
   private Double frozebal; //冻结金额
 
-  @Column(name = "LOWFREE_FLAG", nullable = false, precision = 1, scale = 0)
+  @Column(name = "LOWFREE_FLAG", precision = 1, scale = 0)
+  @NotNull
   private Boolean lowfreeFlag; //低额免密开关
 
   @Column(name = "LOWFREE_LIMIT", precision = 9, scale = 2)
@@ -55,7 +62,7 @@
   private Double maxbal; // 最大余额限制
 
   @Version
-  @Column(name = "LAST_TRANSTIME", nullable = false)
+  @Column(name = "LAST_TRANSTIME")
   private Timestamp lasttranstime; //最后交易日期
 
   @Column(name = "LASTDAY_TRANSAMT", precision = 9, scale = 2)
@@ -67,12 +74,17 @@
   @Column(name = "TAC", length = 32)
   private String tac; //校验
 
-  @Column(name = "OPENDATE", nullable = false, length = 8)
+  @Column(name = "OPENDATE", length = 8)
+  @NotNull
   private String opendate;
 
   @Column(name = "CLOSEDATE", length = 8)
   private String closedate;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   @OneToOne
   @JoinColumn(name = "USERID", insertable = false, updatable = false)
   private TPerson person;
@@ -294,4 +306,11 @@
     this.person = person;
   }
 
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java b/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java
index c5bd5f4..c34fa33 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TAccountDayBal.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.sql.Timestamp;
 
@@ -20,10 +21,12 @@
   private Double amount;
 
   @Version
-  @Column(name = "update_time", nullable = false)
+  @Column(name = "update_time")
+  @NotNull
   private Timestamp updateTime;
 
-  @Column(name = "lastRefno", nullable = false, length = 32)
+  @Column(name = "lastRefno", length = 32)
+  @NotNull
   private String lastRefno;
 
   @Column(name = "remark", length = 250)
@@ -32,6 +35,9 @@
   @Column(name = "checked")
   private Boolean checked;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
 
   public String getAccno() {
     return accno;
@@ -89,4 +95,11 @@
     this.checked = checked;
   }
 
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TDebitCreditDtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TDebitCreditDtl.java
index 940a895..b9cfdc8 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TDebitCreditDtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TDebitCreditDtl.java
@@ -1,6 +1,8 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_USERDTL_DEBITCREDIT")
@@ -16,26 +18,36 @@
   private Integer seqno;
 
   @Column(name = "settledate", length = 8)
+  @Digits(integer = 8, fraction = 0)
   private String settleDate;
 
   @Column(name = "DRSUBJNO", length = 10)
+  @NotNull
   private String drsubjno; //借方科目
 
   @Column(name = "DRACCNO", length = 32)
+  @NotNull
   private String draccno;  //借方账号
 
   @Column(name = "AMOUNT", precision = 9, scale = 2)
+  @NotNull
   private Double amount; //金额
 
   @Column(name = "CRSUBJNO", length = 10)
+  @NotNull
   private String crsubjno; //贷方科目
 
   @Column(name = "CRACCNO", length = 32)
+  @NotNull
   private String craccno;  //贷方账号
 
   @Column(name = "SUMMARY", length = 240)
   private String summary;  //摘要
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
 
   public String getRefno() {
     return refno;
@@ -108,4 +120,12 @@
   public void setSettleDate(String settleDate) {
     this.settleDate = settleDate;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java
index 020cad6..048cbb1 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 /**
  * Created by shuwei on 2019/4/9.
@@ -9,48 +10,60 @@
 @Table(name = "TB_PAYTYPE_CONFIG")
 @IdClass(TPaytypeConfigPK.class)
 public class TPaytypeConfig {
-    @Id
-    @Column(name = "PAYTYPE", nullable = false, length = 20)
-    private String paytype;
-    @Id
-    @Column(name = "CONFIGID", nullable = false, length = 40)
-    private String configid;
+  @Id
+  @Column(name = "PAYTYPE", nullable = false, length = 20)
+  private String paytype;
+  @Id
+  @Column(name = "CONFIGID", nullable = false, length = 40)
+  private String configid;
 
-    @Column(name = "CONFIG_VALUE", length = 2000)
-    private String configValue;
+  @Column(name = "CONFIG_VALUE", length = 2000)
+  private String configValue;
 
-    @Column(name = "CONFIG_NAME", length = 200)
-    private String configName;
+  @Column(name = "CONFIG_NAME", length = 200)
+  private String configName;
 
-    public String getPaytype() {
-        return paytype;
-    }
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
 
-    public void setPaytype(String paytype) {
-        this.paytype = paytype;
-    }
+  public String getPaytype() {
+    return paytype;
+  }
 
-    public String getConfigid() {
-        return configid;
-    }
+  public void setPaytype(String paytype) {
+    this.paytype = paytype;
+  }
 
-    public void setConfigid(String configid) {
-        this.configid = configid;
-    }
+  public String getConfigid() {
+    return configid;
+  }
 
-    public String getConfigValue() {
-        return configValue;
-    }
+  public void setConfigid(String configid) {
+    this.configid = configid;
+  }
 
-    public void setConfigValue(String configValue) {
-        this.configValue = configValue;
-    }
+  public String getConfigValue() {
+    return configValue;
+  }
 
-    public String getConfigName() {
-        return configName;
-    }
+  public void setConfigValue(String configValue) {
+    this.configValue = configValue;
+  }
 
-    public void setConfigName(String configName) {
-        this.configName = configName;
-    }
+  public String getConfigName() {
+    return configName;
+  }
+
+  public void setConfigName(String configName) {
+    this.configName = configName;
+  }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPerson.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPerson.java
index fafd0e6..75fa85a 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPerson.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPerson.java
@@ -3,6 +3,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_PERSON",
@@ -21,7 +22,8 @@
   @Column(name = "SEX", length = 10)
   private String sex;
 
-  @Column(name = "STATUS", nullable = false, length = 10)
+  @Column(name = "STATUS", length = 10)
+  @NotNull
   private String status;
 
   @Column(name = "IDTYPE", length = 20)
@@ -54,6 +56,10 @@
   @Column(name = "LASTSAVED", length = 14)
   private String lastsaved;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public TPerson() {
   }
 
@@ -74,7 +80,6 @@
   }
 
 
-
   public String getUserid() {
     return userid;
   }
@@ -186,4 +191,12 @@
   public void setLastsaved(String lastsaved) {
     this.lastsaved = lastsaved;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPersonIdentity.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPersonIdentity.java
index 1125f8e..2eae021 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPersonIdentity.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPersonIdentity.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_PERSON_IDENTITY")
@@ -13,18 +14,25 @@
   @JoinColumn(name = "USERID")
   private TPerson person; //绑定的系统用户
 
-  @Column(name = "STATUS", nullable = false, length = 20)
+  @Column(name = "STATUS", length = 20)
+  @NotNull
   private String status;
 
-  @Column(name = "LOSSFLAG",nullable = false, precision = 1)
-  private Integer lossflag=0;
+  @Column(name = "LOSSFLAG", precision = 1)
+  @NotNull
+  private Integer lossflag = 0;
 
-  @Column(name = "LOCKFLAG", nullable = false, precision = 1)
-  private Integer lockflag=0;
+  @Column(name = "LOCKFLAG", precision = 1)
+  @NotNull
+  private Integer lockflag = 0;
 
   @Column(name = "CREATETIME", length = 14)
   private String createtime;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public TPersonIdentity() {
   }
 
@@ -85,4 +93,11 @@
     this.createtime = createtime;
   }
 
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
index 54591d4..5740a36 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPersondtl.java
@@ -3,6 +3,7 @@
 import com.supwisdom.dlpay.framework.util.TradeDict;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_PERSONDTL",
@@ -16,10 +17,12 @@
   @Column(name = "REFNO", nullable = false, length = 32)
   private String refno; //流水号
 
-  @Column(name = "ACCDATE", length = 8, nullable = false)
+  @Column(name = "ACCDATE", length = 8)
+  @NotNull
   private String accdate; //记账日期
 
-  @Column(name = "USERID", length = 32, nullable = false)
+  @Column(name = "USERID", length = 32)
+  @NotNull
   private String userid;  //用户ID，或账号
 
   @Column(name = "ACCNO", length = 32)
@@ -28,19 +31,23 @@
   @Column(name = "USERNAME", length = 200)
   private String userName;
 
-  @Column(name = "TRANSDATE", length = 8, nullable = false)
+  @Column(name = "TRANSDATE", length = 8)
+  @NotNull
   private String transdate;
 
-  @Column(name = "TRANSTIME", length = 6, nullable = false)
+  @Column(name = "TRANSTIME", length = 6)
+  @NotNull
   private String transtime;
 
-  @Column(name = "STATUS", length = 20, nullable = false)
+  @Column(name = "STATUS", length = 20)
+  @NotNull
   private String status = TradeDict.DTL_STATUS_NONE;
 
   @Column(name = "BEFBAL", precision = 9, scale = 2)
   private Double befbal;
 
-  @Column(name = "amount", precision = 9, scale = 2, nullable = false)
+  @Column(name = "amount", precision = 9, scale = 2)
+  @NotNull
   private Double amount; //实际付款金额
 
   @Column(name = "SOURCETYPE", length = 20)
@@ -49,7 +56,8 @@
   @Column(name = "PAYINFO", length = 200)
   private String payinfo; //记录支付信息备用字段
 
-  @Column(name = "TRANSCODE", precision = 4, nullable = false)
+  @Column(name = "TRANSCODE", precision = 4)
+  @NotNull
   private Integer transcode;
 
   @Column(name = "TRANSDESC", length = 240)
@@ -67,18 +75,24 @@
   @Column(name = "OPERID", precision = 9)
   private Integer operid; //操作员ID
 
-  @Column(name = "REVERSE_FLAG", nullable = false, length = 10)
+  @Column(name = "REVERSE_FLAG", length = 10)
+  @NotNull
   private String reverseFlag = "none"; //none, cancel, reversed
 
   @Column(name = "REVERSE_AMOUNT", precision = 9, scale = 2)
   private Double reverseAmount = 0D; //撤销金额填写
 
-  @Column(name = "TRADEFLAG", nullable = false, length = 10)
+  @Column(name = "TRADEFLAG", length = 10)
+  @NotNull
   private String tradeflag; // out - 支出，in - 收入
 
   @Column(name = "REMARK", length = 240)
   private String remark;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public String getRefno() {
     return refno;
   }
@@ -254,4 +268,12 @@
   public void setAccountNo(String accountNo) {
     this.accountNo = accountNo;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java
index d19e905..b023c38 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsAccount.java
@@ -3,6 +3,7 @@
 import com.supwisdom.dlpay.framework.util.MD5;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 /**
  * 积分账户表
@@ -11,10 +12,11 @@
 @Table(name = "TB_POINTS_ACCOUNT")
 public class TPointsAccount {
   @Id
-  @Column(name = "USERID", nullable = false, length = 32)
+  @Column(name = "USERID", length = 32)
   private String userid;
 
-  @Column(name = "POINTS", nullable = false, precision = 15)
+  @Column(name = "POINTS", precision = 15)
+  @NotNull
   private Long points; //积分
 
   @Column(name = "ACCUMPOINTS", precision = 15)
@@ -29,8 +31,12 @@
   @Column(name = "LASTSAVED", precision = 15)
   private String lastsaved;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   @OneToOne
-  @JoinColumn(name = "USERID",insertable = false,updatable = false)
+  @JoinColumn(name = "USERID", insertable = false, updatable = false)
   private TPerson person;
 
   public TPerson getPerson() {
@@ -139,5 +145,11 @@
     }
   }
 
+  public String getTenantid() {
+    return tenantid;
+  }
 
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
index dba4514..778b9b2 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TPointsTransdtl.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 /**
  * 积分流水表
@@ -10,36 +11,45 @@
     indexes = {@Index(name = "points_transdtl_idx", columnList = "billno")})
 public class TPointsTransdtl {
   @Id
-  @Column(name="REFNO", nullable = false, length = 32)
+  @Column(name = "REFNO", nullable = false, length = 32)
   private String refno;
 
-  @Column(name="USERID", nullable = false, length = 32)
+  @Column(name = "USERID", length = 32)
+  @NotNull
   private String userid;
 
-  @Column(name="ACCDATE", length = 8)
+  @Column(name = "ACCDATE", length = 8)
+  @NotNull
   private String accdate;
 
-  @Column(name="POINTS", nullable = false, length = 15)
+  @Column(name = "POINTS", length = 15)
+  @NotNull
   private Long points;
 
-  @Column(name="BEFPOINTS", length = 15)
+  @Column(name = "BEFPOINTS", length = 15)
   private Long befpoints;
 
-  @Column(name="AFTPOINTS", length = 15)
+  @Column(name = "AFTPOINTS", length = 15)
   private Long aftpoints;
 
-  @Column(name="STATUS", length = 15)
+  @Column(name = "STATUS", length = 15)
   private String status;
 
-  @Column(name="BILLNO", length = 32)
+  @Column(name = "BILLNO", length = 32)
   private String billno; //关联的消费流水号
 
-  @Column(name="TRANSDATE", length = 8)
+  @Column(name = "TRANSDATE", length = 8)
+  @NotNull
   private String transdate;
 
-  @Column(name="TRANSTIME", length = 9)
+  @Column(name = "TRANSTIME", length = 9)
+  @NotNull
   private String transtime;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public TPointsTransdtl() {
   }
 
@@ -135,4 +145,12 @@
   public void setTranstime(String transtime) {
     this.transtime = transtime;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java b/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java
index c358b6c..0310592 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SHOP_PAYTYPE")
@@ -14,18 +15,25 @@
   @Column(name = "PAYTYPE", nullable = false, length = 20)
   private String paytype;
 
-  @Column(name = "CONSUME_ENABLE", nullable = false, length = 10)
+  @Column(name = "CONSUME_ENABLE", length = 10)
+  @NotNull
   private boolean consumeEnable; //该商户下，此支付方式能否消费
 
-  @Column(name = "ANONYMOUS_ENABLE", nullable = false, length = 10)
+  @Column(name = "ANONYMOUS_ENABLE", length = 10)
+  @NotNull
   private boolean anonymousEnable; //该商户下，此支付方式能否匿名消费
 
-  @Column(name = "REVERSE_ENABLE", nullable = false, length = 10)
+  @Column(name = "REVERSE_ENABLE", length = 10)
+  @NotNull
   private boolean reverseEnable; //该商户下，此支付方式能否冲正
 
   @Column(name = "CREATETIME", length = 14)
   private String createtime;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public String getShopaccno() {
     return shopaccno;
   }
@@ -73,4 +81,12 @@
   public void setCreatetime(String createtime) {
     this.createtime = createtime;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java b/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java
index acea209..a86da1c 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java
@@ -3,6 +3,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SHOP_PAYTYPE_CONFIG", indexes = {@Index(name = "shop_paytype_config_uk", unique = true, columnList = "shopaccno,paytype,configid")})
@@ -13,13 +14,16 @@
   @Column(name = "CFGID", nullable = false, length = 32)
   private String cfgid;
 
-  @Column(name = "SHOPACCNO", nullable = false, length = 10)
+  @Column(name = "SHOPACCNO", length = 10)
+  @NotNull
   private String shopaccno;
 
-  @Column(name = "PAYTYPE", nullable = false, length = 20)
+  @Column(name = "PAYTYPE", length = 20)
+  @NotNull
   private String paytype;
 
-  @Column(name = "CONFIGID", nullable = false, length = 40)
+  @Column(name = "CONFIGID", length = 40)
+  @NotNull
   private String configid;
 
   @Column(name = "CONFIG_VALUE", length = 2000)
@@ -28,6 +32,10 @@
   @Column(name = "CONFIG_NAME", length = 200)
   private String configName;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public TShopPaytypeConfig() {
   }
 
@@ -86,4 +94,12 @@
   public void setConfigName(String configName) {
     this.configName = configName;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java
index aeae783..1653771 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TShopdtl.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SHOPDTL",
@@ -13,22 +14,27 @@
   @Column(name = "REFNO", length = 32, nullable = false)
   private String refno;
 
-  @Column(name = "ACCDATE", length = 8, nullable = false)
+  @Column(name = "ACCDATE", length = 8)
+  @NotNull
   private String accdate;
 
-  @Column(name = "SHOPACCNO", length = 10, nullable = false)
+  @Column(name = "SHOPACCNO", length = 10)
+  @NotNull
   private String shopaccno;
 
   @Column(name = "SHOPNAME", length = 200)
   private String shopname;
 
-  @Column(name = "AMOUNT", scale = 2, precision = 15, nullable = false)
+  @Column(name = "AMOUNT", scale = 2, precision = 15)
+  @NotNull
   private Double amount;
 
-  @Column(name = "TRANSDATE", length = 8, nullable = false)
+  @Column(name = "TRANSDATE", length = 8)
+  @NotNull
   private String transdate;
 
-  @Column(name = "TRANSTIME", length = 6, nullable = false)
+  @Column(name = "TRANSTIME", length = 6)
+  @NotNull
   private String transtime;
 
   @Column(name = "TRANSCODE", precision = 8)
@@ -40,7 +46,8 @@
   @Column(name = "PAYINFO", length = 200)
   private String payInfo;
 
-  @Column(name = "TRADEFLAG", length = 6, nullable = false)
+  @Column(name = "TRADEFLAG", length = 6)
+  @NotNull
   private String tradeflag; // out - 支出 ， in - 收入
 
   @Column(name = "TRANSDESC", length = 240)
@@ -50,10 +57,12 @@
   private String reverseFlag;
 
   @Column(name = "STATUS", length = 20)
+  @NotNull
   private String status;
 
   @Column(name = "updatebala")
-  private Boolean updateBala;
+  @NotNull
+  private Boolean updateBala = false;
 
   @Column(name = "OPPOSITEACCNO", length = 64)
   private String oppositeAccNo;
@@ -64,6 +73,11 @@
   @Column(name = "REMARK", length = 240)
   private String remark;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
+
   public String getRefno() {
     return refno;
   }
@@ -207,4 +221,12 @@
   public void setUpdateBala(Boolean updateBala) {
     this.updateBala = updateBala;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java b/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
index 4bd83f2..808e656 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
@@ -1,6 +1,10 @@
 package com.supwisdom.dlpay.api.domain;
 
-import javax.persistence.*;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 /**
  * Created by shuwei on 2019/4/9.
@@ -12,30 +16,41 @@
   @Column(name = "SOURCETYPE", nullable = false, length = 20)
   private String sourceType;
 
-  @Column(name = "ENABLE", nullable = false, length = 20)
+  @Column(name = "ENABLE", length = 20)
+  @NotNull
   private Boolean enable;
 
-  @Column(name = "CHARGE_ENABLE", nullable = false, length = 10)
+  @Column(name = "CHARGE_ENABLE", length = 10)
+  @NotNull
   private Boolean chargeEnable; //充值总开关
 
-  @Column(name = "CONSUME_ENABLE", nullable = false, length = 10)
+  @Column(name = "CONSUME_ENABLE", length = 10)
+  @NotNull
   private Boolean consumeEnable; //消费总开关
 
-  @Column(name = "ANONYMOUS_ENABLE", nullable = false, length = 10)
+  @Column(name = "ANONYMOUS_ENABLE", length = 10)
+  @NotNull
   private Boolean anonymousEnable; //匿名消费总开关
 
   @Column(name = "reversable")
+  @NotNull
   private Boolean reversable;
 
   @Column(name = "dps_enable")
+  @NotNull
   private Boolean depositEnable;
 
   @Column(name = "checkable")
+  @NotNull
   private Boolean checkable; // 是否需要清算
 
   @Column(name = "PAYDESC", length = 200)
   private String paydesc;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public String getSourceType() {
     return sourceType;
   }
@@ -107,4 +122,12 @@
   public void setDepositEnable(Boolean depositEnable) {
     this.depositEnable = depositEnable;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java b/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java
index 3fd3be2..ba51cfd 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TSubjectdtl.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.api.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SUBJECTDTL",
@@ -11,25 +12,31 @@
   @Column(name = "refno", length = 32, nullable = false)
   private String refno;
 
-  @Column(name = "accdate", length = 8, nullable = false)
+  @Column(name = "accdate", length = 8)
+  @NotNull
   private String accdate;
 
-  @Column(name = "subjno", length = 10, nullable = false)
+  @Column(name = "subjno", length = 10)
+  @NotNull
   private String subjectno;
 
   @Column(name = "subjname", length = 200)
   private String subjectName;
 
   @Column(name = "amount", scale = 2, precision = 15)
+  @NotNull
   private Double amount;
 
   @Column(name = "tradecode", precision = 8)
+  @NotNull
   private Integer tradeCode;
 
   @Column(name = "transdate", length = 8)
+  @NotNull
   private String transDate;
 
   @Column(name = "transtime", length = 6)
+  @NotNull
   private String transTime;
 
   @Column(name = "paytype", length = 20)
@@ -45,8 +52,13 @@
   private String oppositeAccName;
 
   @Column(name = "status", length = 20)
+  @NotNull
   private String status;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public String getRefno() {
     return refno;
   }
@@ -150,4 +162,12 @@
   public void setTradeCode(Integer tradeCode) {
     this.tradeCode = tradeCode;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
index bf9ac18..9cbdde4 100644
--- a/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
+++ b/src/main/java/com/supwisdom/dlpay/api/domain/TTransactionMain.java
@@ -4,7 +4,8 @@
 import com.supwisdom.dlpay.framework.util.TradeDict;
 
 import javax.persistence.*;
-
+import javax.validation.constraints.Digits;
+import javax.validation.constraints.NotNull;
 import java.sql.Timestamp;
 import java.util.List;
 
@@ -21,28 +22,36 @@
   @Column(name = "refno", nullable = false, length = 32)
   private String refno;
 
-  @Column(name = "accdate", nullable = false, length = 8)
+  @Column(name = "accdate", length = 8)
+  @NotNull
+  @Digits(integer = 8, fraction = 0)
   private String accdate;
 
   @Column(name = "checkable")
+  @NotNull
   private Boolean checkable; // 是否需要清算的交易
 
   @Column(name = "checkdate", length = 8)
   private String checkDate;
 
   @Column(name = "transcode")
+  @NotNull
   private Integer transCode;
 
   @Column(name = "person")
+  @NotNull
   private Boolean person = false;
 
   @Column(name = "shop")
+  @NotNull
   private Boolean shop = false;
 
   @Column(name = "subject")
+  @NotNull
   private Boolean subject = false;
 
   @Column(name = "status", length = 20)
+  @NotNull
   private String status = TradeDict.DTL_STATUS_NONE;
 
   @Column(name = "sourcetype", length = 20)
@@ -64,12 +73,14 @@
   private String settleDate;
 
   @Column(name = "create_time")
+  @NotNull
   private Timestamp createTime;
 
   @Column(name = "end_time")
   private Timestamp endTime;
 
   @Column(name = "reverse_type", nullable = false, length = 10)
+  @NotNull
   private String reverseType = TradeDict.REVERSE_FLAG_NONE; // 流水标识， none - 正常交易流水， cancel - 撤销流水， refund - 退款流水
 
   // 撤销、退款原流水参考号
@@ -77,6 +88,7 @@
   private String reverseRefno = "";
 
   @Column(name = "reverse_flag", nullable = false, length = 10)
+  @NotNull
   private String reverseFlag = TradeDict.REVERSE_FLAG_NONE; // 冲正标识， none - 未冲正, refund - 被退款, cancel - 被冲正
 
   @Column(name = "refund_amount", nullable = false)
@@ -98,6 +110,10 @@
   @JoinColumn(name = "refno", referencedColumnName = "refno")
   private List<TDebitCreditDtl> details;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
   public String getRefno() {
     return refno;
   }
@@ -331,4 +347,12 @@
     }
     return 0.0;
   }
+
+  public String getTenantid() {
+    return tenantid;
+  }
+
+  public void setTenantid(String tenantid) {
+    this.tenantid = tenantid;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java b/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java
index 481df61..71f65bf 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/core/JwtTokenUtil.java
@@ -1,5 +1,6 @@
 package com.supwisdom.dlpay.framework.core;
 
+import com.supwisdom.dlpay.framework.util.Constants;
 import org.jose4j.jwa.AlgorithmConstraints;
 import org.jose4j.jwk.JsonWebKey;
 import org.jose4j.jws.AlgorithmIdentifiers;
@@ -40,11 +41,14 @@
     if (params.get("subject") != null) {
       claims.setSubject(params.get("subject").toString()); // the subject/principal is whom the token is about
     }
-    if (params.get("authorities") != null) {
-      claims.setClaim("authorities", params.get("authorities"));
+    if (params.get(Constants.JWT_CLAIM_AUTHORITIES) != null) {
+      claims.setClaim(Constants.JWT_CLAIM_AUTHORITIES, params.get(Constants.JWT_CLAIM_AUTHORITIES));
     }
-    if(params.get("uid") != null) {
-      claims.setClaim("uid", params.get("uid"));
+    if (params.get(Constants.JWT_CLAIM_UID) != null) {
+      claims.setClaim(Constants.JWT_CLAIM_UID, params.get(Constants.JWT_CLAIM_UID));
+    }
+    if (params.get(Constants.JWT_CLAIM_TENANTID) != null) {
+      claims.setClaim(Constants.JWT_CLAIM_TENANTID, params.get(Constants.JWT_CLAIM_TENANTID));
     }
     /*
     claims.setClaim("email", "mail@example.com"); // additional claims/attributes about the subject can be added
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
new file mode 100644
index 0000000..b52710e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/TenantConfigDao.java
@@ -0,0 +1,12 @@
+package com.supwisdom.dlpay.framework.dao;
+
+import com.supwisdom.dlpay.framework.domain.TTenantConfig;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface TenantConfigDao extends CrudRepository<TTenantConfig, String> {
+  @Query("select t from TTenantConfig  t where t.cfgid='main'")
+  TTenantConfig getDefault();
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java b/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
index d7bb016..2904156 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/ApiClientRedis.java
@@ -15,6 +15,8 @@
 
   String loginTimestamp;
 
+  String tenantId;
+
   public String getId() {
     return id;
   }
@@ -46,4 +48,12 @@
   public void setRoles(String roles) {
     this.roles = roles;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
index c7aeb26..0e94b39 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
@@ -6,6 +6,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_APICLIENT")
@@ -29,6 +30,10 @@
   @Column(name = "THIRDURL", length = 200)
   private String thirdurl;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
 
   public String getAppid() {
     return appid;
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java
index 6c6691e..9b38245 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TBusinesspara.java
@@ -4,6 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_BUSINESSPARA")
@@ -15,6 +16,10 @@
   @Column(name="PARAVAL", length = 1000)
   private String paraval;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TBusinesspara() {
   }
 
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java
index 461ef29..24fccb2 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_DICTIONARY")
@@ -20,6 +21,10 @@
   @Column(name = "DICTCAPTION", length = 60)
   private String dictcaption;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public Integer getDicttype() {
     return dicttype;
   }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java
index beb3489..ef85c21 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_FEETYPE_CONFIG")
@@ -14,15 +15,19 @@
   @Column(name = "PAYTYPE", nullable = false, length = 20)
   private String paytype;
 
-  @Column(name="DRSUBJNO", length = 10)
+  @Column(name = "DRSUBJNO", length = 10)
   private String drsubjno;
 
-  @Column(name="CRSUBJNO", length = 10)
+  @Column(name = "CRSUBJNO", length = 10)
   private String crsubjno;
 
-  @Column(name="SUMMARY", length = 200)
+  @Column(name = "SUMMARY", length = 200)
   private String summary;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getFeetype() {
     return feetype;
   }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
index 2f3b83c..d0a4349 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
@@ -1,40 +1,45 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_FUNCTION")
-@SequenceGenerator(name="SEQ_FUNC",sequenceName="SEQ_FUNC",allocationSize=1)
+@SequenceGenerator(name = "SEQ_FUNC", sequenceName = "SEQ_FUNC", allocationSize = 1)
 public class TFunction {
   @Id
-  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_FUNC")
-  @Column(name="ID", nullable = false)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_FUNC")
+  @Column(name = "ID", nullable = false)
   private Integer id;
 
-  @Column(name="PARENTID")
+  @Column(name = "PARENTID")
   private Integer parentId;
 
-  @Column(name="NAME", length = 32)
+  @Column(name = "NAME", length = 32)
   private String name;
 
-  @Column(name="MENUURL", nullable = false, length = 60)
+  @Column(name = "MENUURL", nullable = false, length = 60)
   private String menuUrl; //菜单url
 
-  @Column(name="ISLEAF", nullable = false, precision = 1)
+  @Column(name = "ISLEAF", nullable = false, precision = 1)
   private Integer isLeaf;
 
-  @Column(name="ORDERNUM", precision = 9)
+  @Column(name = "ORDERNUM", precision = 9)
   private Integer orderNum;
 
-  @Column(name="MENUICON", precision = 9)
+  @Column(name = "MENUICON", precision = 9)
   private String menuIcon;
 
-  @Column(name="CREATETIME", length = 14)
+  @Column(name = "CREATETIME", length = 14)
   private String createtime;
 
-  @Column(name="LASTSAVED", length = 14)
+  @Column(name = "LASTSAVED", length = 14)
   private String lastsaved;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public Integer getId() {
     return id;
   }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java
index 1243efd..5fad64a 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java
@@ -3,97 +3,110 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_OPER_LOG")
 public class TOperLog {
-    @Id
-    @GenericGenerator(name = "idGenerator", strategy = "uuid")
-    @GeneratedValue(generator = "idGenerator")
-    @Column(name = "ID", nullable = false, length = 32)
-    private String id;
+  @Id
+  @GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")
+  @Column(name = "ID", nullable = false, length = 32)
+  private String id;
 
-    @Column(name = "OPERID", nullable = false, length = 32)
-    private String operid;
-    @Column(name = "OPERNAME")
-    private String opername;
+  @Column(name = "OPERID", nullable = false, length = 32)
+  private String operid;
+  @Column(name = "OPERNAME")
+  private String opername;
 
-    @Column(name = "RESNAME")
-    private String resname;
+  @Column(name = "RESNAME")
+  private String resname;
 
-    @Column(name = "RESPATH")
-    private String respath;
+  @Column(name = "RESPATH")
+  private String respath;
 
-    @Column(name = "LOGDATE")
-    private String logdate;
+  @Column(name = "LOGDATE")
+  private String logdate;
 
-    @Column(name = "FUNCTIONID")
-    private Integer functionid;
+  @Column(name = "FUNCTIONID")
+  private Integer functionid;
 
-    @Column(name = "FUNCTIONNAME")
-    private String functionname;
+  @Column(name = "FUNCTIONNAME")
+  private String functionname;
 
-    public Integer getFunctionid() {
-        return functionid;
-    }
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
 
-    public void setFunctionid(Integer functionid) {
-        this.functionid = functionid;
-    }
+  public Integer getFunctionid() {
+    return functionid;
+  }
 
-    public String getFunctionname() {
-        return functionname;
-    }
+  public void setFunctionid(Integer functionid) {
+    this.functionid = functionid;
+  }
 
-    public void setFunctionname(String functionname) {
-        this.functionname = functionname;
-    }
+  public String getFunctionname() {
+    return functionname;
+  }
 
-    public String getId() {
-        return id;
-    }
+  public void setFunctionname(String functionname) {
+    this.functionname = functionname;
+  }
 
-    public void setId(String id) {
-        this.id = id;
-    }
+  public String getId() {
+    return id;
+  }
 
-    public String getOperid() {
-        return operid;
-    }
+  public void setId(String id) {
+    this.id = id;
+  }
 
-    public void setOperid(String operid) {
-        this.operid = operid;
-    }
+  public String getOperid() {
+    return operid;
+  }
 
-    public String getOpername() {
-        return opername;
-    }
+  public void setOperid(String operid) {
+    this.operid = operid;
+  }
 
-    public void setOpername(String opername) {
-        this.opername = opername;
-    }
+  public String getOpername() {
+    return opername;
+  }
 
-    public String getResname() {
-        return resname;
-    }
+  public void setOpername(String opername) {
+    this.opername = opername;
+  }
 
-    public void setResname(String resname) {
-        this.resname = resname;
-    }
+  public String getResname() {
+    return resname;
+  }
 
-    public String getRespath() {
-        return respath;
-    }
+  public void setResname(String resname) {
+    this.resname = resname;
+  }
 
-    public void setRespath(String respath) {
-        this.respath = respath;
-    }
+  public String getRespath() {
+    return respath;
+  }
 
-    public String getLogdate() {
-        return logdate;
-    }
+  public void setRespath(String respath) {
+    this.respath = respath;
+  }
 
-    public void setLogdate(String logdate) {
-        this.logdate = logdate;
-    }
+  public String getLogdate() {
+    return logdate;
+  }
+
+  public void setLogdate(String logdate) {
+    this.logdate = logdate;
+  }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
index d17c273..54df513 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
@@ -3,6 +3,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_OPER_ROLE",
@@ -14,12 +15,18 @@
   @Column(name = "ID", nullable = false, length = 32)
   private String id;
 
-  @Column(name = "ROLEID", nullable = false, length = 32)
+  @Column(name = "ROLEID", length = 32)
+  @NotNull
   private String roleId;
 
-  @Column(name = "OPERID", nullable = false, length = 32)
+  @Column(name = "OPERID", length = 32)
+  @NotNull
   private String operid;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getId() {
     return id;
   }
@@ -43,4 +50,12 @@
   public void setOperid(String operid) {
     this.operid = operid;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
index cfcbeea..9d250ac 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -6,6 +6,7 @@
 import org.springframework.security.core.userdetails.UserDetails;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.util.Collection;
 
 @Entity
@@ -19,19 +20,24 @@
   @Column(name = "OPERID", nullable = false, length = 32)
   private String operid;
 
-  @Column(name = "OPERCODE", nullable = false, length = 20)
+  @Column(name = "OPERCODE", length = 20)
+  @NotNull
   private String opercode;
 
-  @Column(name = "OPERTYPE", nullable = false, length = 20)
+  @Column(name = "OPERTYPE", length = 20)
+  @NotNull
   private String opertype;
 
-  @Column(name = "OPERNAME", nullable = false, length = 100)
+  @Column(name = "OPERNAME", length = 100)
+  @NotNull
   private String opername;
 
-  @Column(name = "OPERPWD", nullable = false, length = 80)
+  @Column(name = "OPERPWD", length = 80)
+  @NotNull
   private String operpwd;
 
-  @Column(name = "STATUS", nullable = false, length = 32)
+  @Column(name = "STATUS", length = 32)
+  @NotNull
   private String status;
 
   @Column(name = "SEX", length = 10)
@@ -51,6 +57,10 @@
   @Transient
   private String roleids;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   @Transient
   private Collection<? extends GrantedAuthority> authorities;  //权限
 
@@ -210,4 +220,12 @@
   public void setRoleids(String roleids) {
     this.roleids = roleids;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TPeriod.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TPeriod.java
index 4334eae..5d54268 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TPeriod.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TPeriod.java
@@ -1,27 +1,35 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_PERIOD")
 @IdClass(TPeriodPK.class)
 public class TPeriod {
   @Id
-  @Column(name="PERIOD_YEAR", nullable = false, precision = 4)
+  @Column(name = "PERIOD_YEAR", nullable = false, precision = 4)
   private Integer periodYear;
 
   @Id
-  @Column(name="PERIOD_MONTH", nullable = false, precision = 2)
+  @Column(name = "PERIOD_MONTH", nullable = false, precision = 2)
   private Integer periodMonth;
 
-  @Column(name="STARTDATE", nullable = false, length = 8)
+  @Column(name = "STARTDATE", length = 8)
+  @NotNull
   private String startdate;
 
-  @Column(name="ENDDATE", nullable = false, length = 8)
+  @Column(name = "ENDDATE", length = 8)
+  @NotNull
   private String enddate;
 
-  @Column(name="SETTLEFLAG", nullable = false, precision = 1)
-  private Integer settleflag=0;
+  @Column(name = "SETTLEFLAG", precision = 1)
+  @NotNull
+  private Integer settleflag = 0;
+
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
 
   public Integer getPeriodYear() {
     return periodYear;
@@ -62,4 +70,12 @@
   public void setSettleflag(Integer settleflag) {
     this.settleflag = settleflag;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java
index f9a2368..2c83c18 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java
@@ -3,54 +3,70 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_PERMISSION")
 public class TPermission {
-    @Id
-    @GenericGenerator(name = "idGenerator", strategy = "uuid")
-    @GeneratedValue(generator = "idGenerator")
-    @Column(name = "ID", nullable = false, length = 32)
-    private String id;
+  @Id
+  @GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")
+  @Column(name = "ID", nullable = false, length = 32)
+  private String id;
 
-    @Column(name = "ROLE_FUNC_ID", length = 32)
-    private String roleFuncId;
+  @Column(name = "ROLE_FUNC_ID", length = 32)
+  @NotNull
+  private String roleFuncId;
 
-    @Column(name = "RESID")
-    private Integer resid;
+  @Column(name = "RESID")
+  @NotNull
+  private Integer resid;
 
-    @Column(name = "ROLEID",length = 32)
-    private String roleId;
+  @Column(name = "ROLEID", length = 32)
+  @NotNull
+  private String roleId;
 
-    public String getRoleId() {
-        return roleId;
-    }
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
 
-    public void setRoleId(String roleId) {
-        this.roleId = roleId;
-    }
+  public String getRoleId() {
+    return roleId;
+  }
 
-    public String getId() {
-        return id;
-    }
+  public void setRoleId(String roleId) {
+    this.roleId = roleId;
+  }
 
-    public void setId(String id) {
-        this.id = id;
-    }
+  public String getId() {
+    return id;
+  }
 
-    public String getRoleFuncId() {
-        return roleFuncId;
-    }
+  public void setId(String id) {
+    this.id = id;
+  }
 
-    public void setRoleFuncId(String roleFuncId) {
-        this.roleFuncId = roleFuncId;
-    }
+  public String getRoleFuncId() {
+    return roleFuncId;
+  }
 
-    public Integer getResid() {
-        return resid;
-    }
+  public void setRoleFuncId(String roleFuncId) {
+    this.roleFuncId = roleFuncId;
+  }
 
-    public void setResid(Integer resid) {
-        this.resid = resid;
-    }
+  public Integer getResid() {
+    return resid;
+  }
+
+  public void setResid(Integer resid) {
+    this.resid = resid;
+  }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java
index 63044cb..9658a21 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TResource.java
@@ -1,17 +1,19 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_RESOURCE")
-@SequenceGenerator(name="SEQ_RES",sequenceName="SEQ_RES",allocationSize=1)
+@SequenceGenerator(name = "SEQ_RES", sequenceName = "SEQ_RES", allocationSize = 1)
 public class TResource {
   @Id
-  @GeneratedValue(strategy=GenerationType.SEQUENCE, generator="SEQ_RES")
-  @Column(name = "ID", nullable = false,length = 9)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "SEQ_RES")
+  @Column(name = "ID", nullable = false, length = 9)
   private Integer id;
 
-  @Column(name = "CODE", nullable = false, length = 32)
+  @Column(name = "CODE", length = 32)
+  @NotNull
   private String code;
 
   @Column(name = "NAME", length = 32)
@@ -20,9 +22,14 @@
   @Column(name = "URI", length = 32)
   private String uri;
 
-  @Column(name = "FUNCTION_ID", nullable = false, length = 32)
+  @Column(name = "FUNCTION_ID", length = 32)
+  @NotNull
   private Integer functionId;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public Integer getId() {
     return id;
   }
@@ -62,4 +69,12 @@
   public void setFunctionId(Integer functionId) {
     this.functionId = functionId;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
index 3112259..1ee94c3 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
@@ -3,6 +3,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_ROLE")
@@ -10,27 +11,35 @@
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
   @GeneratedValue(generator = "idGenerator")
-  @Column(name="ROLEID", nullable = false, length = 32)
+  @Column(name = "ROLEID", nullable = false, length = 32)
   private String roleId;
 
-  @Column(name="ROLENAME", nullable = false, length = 60)
+  @Column(name = "ROLENAME", length = 60)
+  @NotNull
   private String roleName;
 
-  @Column(name="ROLECODE", nullable = false, length = 20)
+  @Column(name = "ROLECODE", length = 20)
+  @NotNull
   private String roleCode;
 
-  @Column(name="ROLEDESC", length = 60)
+  @Column(name = "ROLEDESC", length = 60)
   private String roleDesc;
 
-  @Column(name="EDITFLAG", length = 60)
+  @Column(name = "EDITFLAG", length = 60)
+  @NotNull
   private Integer editflag;
 
-  @Column(name="CREATETIME", length = 14)
+  @Column(name = "CREATETIME", length = 14)
+  @NotNull
   private String createtime;
 
-  @Column(name="LASTSAVED", length = 14)
+  @Column(name = "LASTSAVED", length = 14)
   private String lastsaved;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getRoleId() {
     return roleId;
   }
@@ -86,4 +95,12 @@
   public void setLastsaved(String lastsaved) {
     this.lastsaved = lastsaved;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
index c5e9f05..5aebc73 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
@@ -3,6 +3,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_ROLE_FUNCTION")
@@ -10,18 +11,25 @@
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
   @GeneratedValue(generator = "idGenerator")
-  @Column(name="ID", nullable = false, length = 32)
+  @Column(name = "ID", nullable = false, length = 32)
   private String id;
 
-  @Column(name="ROLEID", nullable = false, length = 32)
+  @Column(name = "ROLEID", length = 32)
+  @NotNull
   private String roleId;
 
-  @Column(name="FUNCTIONID", nullable = false, length = 32)
+  @Column(name = "FUNCTIONID", length = 32)
+  @NotNull
   private Integer functionId;
 
-  @Column(name="PERMISSIONS", length = 200)
+  @Column(name = "PERMISSIONS", length = 200)
+  @NotNull
   private String permissions;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getId() {
     return id;
   }
@@ -53,4 +61,12 @@
   public void setPermissions(String permissions) {
     this.permissions = permissions;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettleLog.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettleLog.java
index abdd5e7..1953d2f 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettleLog.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettleLog.java
@@ -3,6 +3,7 @@
 import org.hibernate.annotations.GenericGenerator;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SETTLE_LOG")
@@ -25,6 +26,10 @@
   @Column(name = "ERRMSG", length = 600)
   private String errmsg;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getId() {
     return id;
   }
@@ -70,4 +75,12 @@
     this.errmsg = errmsg;
     return this;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
index 73dbf10..aa0a515 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
@@ -4,6 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SETTLECTL")
@@ -30,6 +31,10 @@
   @Column(name="UPDTIME", length = 14)
   private String updtime;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public Integer getBooksetno() {
     return booksetno;
   }
@@ -85,4 +90,12 @@
   public void setUpdtime(String updtime) {
     this.updtime = updtime;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java
index 664e1ad..fad9bbd 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TShop.java
@@ -2,6 +2,7 @@
 
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SHOP",
@@ -10,58 +11,63 @@
   @Id
   @SequenceGenerator(name = "shopid", sequenceName = "SEQ_SHOP", allocationSize = 1)
   @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "shopid")
-  @Column(name="SHOPID", nullable = false, precision = 9)
+  @Column(name = "SHOPID", nullable = false, precision = 9)
   private Integer shopid;
 
-  @Column(name="FSHOPID", precision = 9)
+  @Column(name = "FSHOPID", precision = 9)
   private Integer fshopid;
 
-  @Column(name="SHOPNAME", length = 200)
+  @Column(name = "SHOPNAME", length = 200)
   private String shopname;
 
   @Column(name = "SHOPTYPE", precision = 1)
   private Integer shoptype;
 
-  @Column(name="STATUS", length = 20)
+  @Column(name = "STATUS", length = 20)
+  @NotNull
   private String status;
 
-  @Column(name="SHOPACCNO", length = 20)
+  @Column(name = "SHOPACCNO", length = 20)
   private String shopaccno;
 
-  @Column(name="CONTACTMAN", length = 60)
+  @Column(name = "CONTACTMAN", length = 60)
   private String contactman;
 
-  @Column(name="IDTYPE", length = 1)
+  @Column(name = "IDTYPE", length = 1)
   private String idtype;
 
-  @Column(name="IDNO", length = 60)
+  @Column(name = "IDNO", length = 60)
   private String idno;
 
-  @Column(name="TEL", length = 20)
+  @Column(name = "TEL", length = 20)
   private String tel;
 
-  @Column(name="MOBILE", length = 30)
+  @Column(name = "MOBILE", length = 30)
   private String mobile;
 
-  @Column(name="EMAIL", length = 60)
+  @Column(name = "EMAIL", length = 60)
   private String email;
 
-  @Column(name="ADDR", length = 240)
+  @Column(name = "ADDR", length = 240)
   private String addr;
 
-  @Column(name="ZIPCODE", length = 10)
+  @Column(name = "ZIPCODE", length = 10)
   private String zipcode;
 
-  @Column(name="OPENDATE", length = 8)
+  @Column(name = "OPENDATE", length = 8)
   private String opendate;
 
-  @Column(name="CLOSEDATE", length = 8)
+  @Column(name = "CLOSEDATE", length = 8)
   private String closedate;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   /**
    * 第三方唯一ID
-   * */
-  @Column(name="THIRD_UNIQUE_IDENTY", length = 200)
+   */
+  @Column(name = "THIRD_UNIQUE_IDENTY", length = 200)
   private String thirdUniqueIdenty;
 
   public TShop() {
@@ -221,4 +227,12 @@
   public void setClosedate(String closedate) {
     this.closedate = closedate;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java
index fdb5d2f..fe9c1d1 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopacc.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 import java.sql.Timestamp;
 
 @Entity
@@ -17,18 +18,22 @@
   private String shopname;
 
   @Column(name = "SUBJNO", length = 10)
+  @NotNull
   private String subjno;
 
   @Column(name = "STATUS", length = 20)
+  @NotNull
   private String status;
 
   @Column(name = "OPENDATE", length = 8)
+  @NotNull
   private String opendate;
 
   @Column(name = "CLOSEDATE", length = 8)
   private String closedate;
 
   @Column(name = "BALANCE", length = 15, precision = 2)
+  @NotNull
   private Double balance = 0.0;
 
   @Version
@@ -38,6 +43,10 @@
   @Column(name = "MAC")
   private String mac;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getShopaccno() {
     return shopaccno;
   }
@@ -122,4 +131,12 @@
   public void setLastUpdate(Timestamp lastUpdate) {
     this.lastUpdate = lastUpdate;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopaccday.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopaccday.java
index 90671b8..d08d22f 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TShopaccday.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TShopaccday.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SHOPACCDAY")
@@ -35,6 +36,10 @@
   @Column(name="UPDTIME", precision = 15, scale = 2)
   private String updtime;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TShopaccday() {
   }
 
@@ -132,4 +137,12 @@
   public void setUpdtime(String updtime) {
     this.updtime = updtime;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java
index 2e48915..fa1554c 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java
@@ -4,6 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SUBJECT")
@@ -12,30 +13,35 @@
   @Column(name = "SUBJNO", nullable = false, length = 10)
   private String subjno;
 
-  @Column(name = "SUBJNAME", nullable = false, length = 60)
+  @Column(name = "SUBJNAME", length = 60)
+  @NotNull
   private String subjname;
 
   @Column(name = "SUBJTYPE", precision = 1)
   private Integer subjtype;
 
-  @Column(name="BALFLAG", precision = 1)
+  @Column(name = "BALFLAG", precision = 1)
   private Integer balflag;
 
-  @Column(name="FSUBJNO", length = 10)
+  @Column(name = "FSUBJNO", length = 10)
   private String fsubjno;
 
-  @Column(name="SUBJLEVEL", precision = 1)
+  @Column(name = "SUBJLEVEL", precision = 1)
   private Integer subjlevel;
 
-  @Column(name="ENDFLAG", precision = 1)
+  @Column(name = "ENDFLAG", precision = 1)
   private Integer endflag;
 
-  @Column(name="OPENDATE", precision = 8)
+  @Column(name = "OPENDATE", precision = 8)
   private Integer opendate;
 
-  @Column(name="DISPLAYFLAG", length = 1)
+  @Column(name = "DISPLAYFLAG", length = 1)
   private String displayflag;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getSubjno() {
     return subjno;
   }
@@ -107,4 +113,12 @@
   public void setDisplayflag(String displayflag) {
     this.displayflag = displayflag;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java
index 4f19413..f58c591 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java
@@ -4,6 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SUBJECTBAL")
@@ -45,6 +46,10 @@
   @Column(name = "ACCUMSETTLEAMT", precision = 15, scale = 2)
   private Double accumsettleamt;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TSubjectbal() {
   }
 
@@ -170,4 +175,12 @@
   public void setAccumsettleamt(Double accumsettleamt) {
     this.accumsettleamt = accumsettleamt;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java
index 57abe7a..eedf9b5 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SUBJECTDAY")
@@ -41,6 +42,10 @@
   @Column(name="UPDTIME", precision = 15, scale = 2)
   private String updtime;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TSubjectday() {
   }
 
@@ -158,4 +163,12 @@
   public void setUpdtime(String updtime) {
     this.updtime = updtime;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java
index 50cd0f7..3434b87 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java
@@ -9,6 +9,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SYSPARA")
@@ -29,18 +30,25 @@
   @Column(name = "VALUETYPE", length = 10)
   private String valueType = SysparaUtil.SYSPARA_VALUETYPE_STRING;
 
-  @Column(name = "EDITFLAG", nullable = false, precision = 1)
+  @Column(name = "EDITFLAG", precision = 1)
+  @NotNull
   private Integer editflag;
 
   @Column(name = "DISPLAYFLAG", length = 10)
+  @NotNull
   private String displayflag;
 
   @Column(name = "REMARK", length = 240)
   private String remark;
 
   @Column(name = "LASTSAVED", length = 14)
+  @NotNull
   private String lastsaved;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TSyspara() {
   }
 
@@ -133,8 +141,17 @@
     this.lastsaved = lastsaved;
   }
 
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
+
   /**
    * 判断参数是否非法
+   *
    * @return 非法 -> true; 合法 -> false
    */
   public boolean checkValueInvalid() {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TTaskLock.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TTaskLock.java
index 72912c7..6baf8b4 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TTaskLock.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TTaskLock.java
@@ -5,6 +5,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_TASK_LOCK")
@@ -22,6 +23,10 @@
   @Column(name="REMARK", length = 600)
   private String remark;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public String getTaskcode() {
     return taskcode;
   }
@@ -53,4 +58,12 @@
   public void setRemark(String remark) {
     this.remark = remark;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantConfig.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantConfig.java
new file mode 100644
index 0000000..30701d8
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TTenantConfig.java
@@ -0,0 +1,46 @@
+package com.supwisdom.dlpay.framework.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
+
+@Entity
+@Table(name = "tb_tenantconfig")
+public class TTenantConfig {
+  @Id
+  @Column(name = "cfgid", length = 20)
+  private String cfgid;
+
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
+  @Column(name = "datacenter_id", length = 40)
+  private String dataCenterId;
+
+  public String getCfgid() {
+    return cfgid;
+  }
+
+  public void setCfgid(String cfgid) {
+    this.cfgid = cfgid;
+  }
+
+  public String getDataCenterId() {
+    return dataCenterId;
+  }
+
+  public void setDataCenterId(String dataCenterId) {
+    this.dataCenterId = dataCenterId;
+  }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java
index f4bb2f0..d63b46b 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java
@@ -4,17 +4,22 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_TRANSCODE")
 public class TTranscode {
   @Id
-  @Column(name="TRANSCODE", nullable = false, precision = 4)
+  @Column(name = "TRANSCODE", nullable = false, precision = 4)
   private Integer transcode;
 
-  @Column(name="TRANSNAME", nullable = false, length = 100)
+  @Column(name = "TRANSNAME", nullable = false, length = 100)
   private String transname;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public Integer getTranscode() {
     return transcode;
   }
@@ -30,4 +35,12 @@
   public void setTransname(String transname) {
     this.transname = transname;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java
index 6f0c036..5a52e0b 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java
@@ -4,6 +4,7 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_TRANSTYPE")
@@ -21,6 +22,10 @@
   @Column(name = "SUMMARY", length = 200)
   private String summary;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public Integer getTranstype() {
     return transtype;
   }
@@ -52,4 +57,12 @@
   public void setSummary(String summary) {
     this.summary = summary;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
index b85e4e0..71b30d8 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_VOUCHER")
@@ -8,72 +9,79 @@
   @Id
   @SequenceGenerator(name = "voucherid", sequenceName = "SEQ_VOUCHERID", allocationSize = 1)
   @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "voucherid")
-  @Column(name="VOUCHERID", nullable = false, precision = 9)
+  @Column(name = "VOUCHERID", nullable = false, precision = 9)
   private Integer voucherid;
 
-  @Column(name="PERIODYEAR", precision = 8)
+  @Column(name = "PERIODYEAR", precision = 8)
   private Integer periodYear;
 
-  @Column(name="PERIODMONTH", precision = 2)
+  @Column(name = "PERIODMONTH", precision = 2)
   private Integer periodMonth;
 
-  @Column(name="VOUCHERNO", precision = 9)
+  @Column(name = "VOUCHERNO", precision = 9)
   private Integer voucherno;
 
-  @Column(name="VOUCHERDATE", precision = 8)
+  @Column(name = "VOUCHERDATE", precision = 8)
   private Integer voucherdate;
 
-  @Column(name="TRANSDATE", precision = 8)
+  @Column(name = "TRANSDATE", precision = 8)
   private Integer transdate;
 
-  @Column(name="TRANSCNT", precision = 9)
+  @Column(name = "TRANSCNT", precision = 9)
   private Integer transcnt;
 
-  @Column(name="AMOUNT", precision = 15, scale = 2)
+  @Column(name = "AMOUNT", precision = 15, scale = 2)
+  @NotNull
   private Double amount;
 
-  @Column(name="SUMMARY", length = 200)
+  @Column(name = "SUMMARY", length = 200)
   private String summary;
 
-  @Column(name="ENTRYCNT", precision = 2)
-  private Integer entrycnt=2;
+  @Column(name = "ENTRYCNT", precision = 2)
+  private Integer entrycnt = 2;
 
-  @Column(name="ATTACHMENTS", precision = 1)
+  @Column(name = "ATTACHMENTS", precision = 1)
   private Integer attachments;
 
-  @Column(name="SOURCETYPE", nullable = false, length = 20)
+  @Column(name = "SOURCETYPE", length = 20)
+  @NotNull
   private String sourcetype; //auto-自动生成;hand-手工凭证;jiekuan-解款凭证(商户营业额不会统计解款凭证)
 
-  @Column(name="SIGNFLAG", precision = 1)
+  @Column(name = "SIGNFLAG", precision = 1)
   private Integer signflag;
 
-  @Column(name="CHECKFLAG", precision =1)
+  @Column(name = "CHECKFLAG", precision = 1)
   private Integer checkflag;
 
-  @Column(name="POSTFLAG", precision = 1)
+  @Column(name = "POSTFLAG", precision = 1)
   private Integer postflag;
 
-  @Column(name="INVALIDFLAG", precision =1)
+  @Column(name = "INVALIDFLAG", precision = 1)
   private Integer invalidflag;
 
-  @Column(name="EDITFLAG", precision =1)
+  @Column(name = "EDITFLAG", precision = 1)
   private Integer editflag;
 
-  @Column(name="PREPARER", length = 32)
+  @Column(name = "PREPARER", length = 32)
   private String preparer;
 
-  @Column(name="CASHIER", length = 32)
+  @Column(name = "CASHIER", length = 32)
   private String cashier;
 
-  @Column(name="CHECKER", length = 32)
+  @Column(name = "CHECKER", length = 32)
   private String checker;
 
-  @Column(name="POSTER", length = 32)
+  @Column(name = "POSTER", length = 32)
   private String poster;
 
-  @Column(name="CREATEDATE", precision =8)
+  @Column(name = "CREATEDATE", precision = 8)
   private Integer createdate;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
+
   public TVoucher(Integer periodYear, Integer periodMonth, Integer voucherno, Integer voucherdate, Integer transdate, Integer transcnt, Double amount, String summary, String sourcetype, Integer createdate) {
     this.periodYear = periodYear;
     this.periodMonth = periodMonth;
@@ -293,4 +301,12 @@
   public void setCreatedate(Integer createdate) {
     this.createdate = createdate;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucherEntry.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucherEntry.java
index 4a8e005..b3006d8 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucherEntry.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucherEntry.java
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_VOUCHERENTRY")
@@ -44,6 +45,10 @@
   @Column(name = "OPPNAME", length = 240)
   private String oppname;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TVoucherEntry() {
   }
 
@@ -169,4 +174,12 @@
   public void setOppname(String oppname) {
     this.oppname = oppname;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
index 24f75c3..f7ff649 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
@@ -4,20 +4,27 @@
 import javax.persistence.Entity;
 import javax.persistence.Id;
 import javax.persistence.Table;
+import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_VOUCHERNOCTL")
 public class TVouchernoCtl {
   @Id
-  @Column(name="VOUCHERTYPE", nullable = false, precision = 2)
+  @Column(name = "VOUCHERTYPE", nullable = false, precision = 2)
   private Integer vouchertype;
 
-  @Column(name="PERIODMONTH", nullable = false, precision = 2)
+  @Column(name = "PERIODMONTH", precision = 2)
+  @NotNull
   private Integer periodMonth;
 
-  @Column(name = "VOUCHERNO", nullable = false, precision = 9)
+  @Column(name = "VOUCHERNO", precision = 9)
+  @NotNull
   private Integer voucherno;
 
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   public TVouchernoCtl() {
   }
 
@@ -50,4 +57,12 @@
   public void setVoucherno(Integer voucherno) {
     this.voucherno = voucherno;
   }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java b/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java
new file mode 100644
index 0000000..c2e8555
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/util/Constants.java
@@ -0,0 +1,11 @@
+package com.supwisdom.dlpay.framework.util;
+
+public class Constants {
+  //  HTTP HEADER define
+  public static final String HEADER_TETANTID = "TENANT-ID";
+
+  // define
+  public static final String JWT_CLAIM_TENANTID = "tenantId";
+  public static final String JWT_CLAIM_UID = "uid";
+  public static final String JWT_CLAIM_AUTHORITIES = "authorities";
+}
diff --git a/src/main/java/com/supwisdom/dlpay/system/common/DictPool.java b/src/main/java/com/supwisdom/dlpay/system/common/DictPool.java
index 56128cc..2a83dd1 100644
--- a/src/main/java/com/supwisdom/dlpay/system/common/DictPool.java
+++ b/src/main/java/com/supwisdom/dlpay/system/common/DictPool.java
@@ -2,6 +2,7 @@
 
 import com.supwisdom.dlpay.system.service.DictionaryDataService;
 import com.supwisdom.dlpay.util.ConstantUtil;
+import kotlin.Suppress;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Component;
@@ -12,11 +13,15 @@
 @Component("dictPool")
 @Scope("singleton")
 public class DictPool {
-  private static HashMap<String, Object> dictmap = new HashMap<>();
+  private static final HashMap<String, Object> dictmap = new HashMap<>();
 
-  @Autowired
   private DictionaryDataService dictionaryDataService;
 
+  public DictPool(@Autowired DictionaryDataService dataService) {
+    this.dictionaryDataService = dataService;
+  }
+
+  @SuppressWarnings("unchecked")
   public static HashMap<Object, Object> getDictMap(String key) {
     synchronized (dictmap) {
       return (HashMap<Object, Object>) dictmap.get(key);
diff --git a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
index faaf171..6f51928 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/transaction_service_impl.kt
@@ -58,7 +58,8 @@
         }
     }
 
-    private fun getTransAmountFromDetail(builder: TransactionBuilder, amount: Double): Double {
+    private fun getTransAmountFromDetail(@Suppress("UNUSED_PARAMETER") builder: TransactionBuilder,
+                                         amount: Double): Double {
         return amount
     }
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index 5fb889e..2304b37 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -1,9 +1,11 @@
 package com.supwisdom.dlpay.framework.controller
 
+import com.supwisdom.dlpay.exception.TransactionCheckException
 import com.supwisdom.dlpay.framework.ResponseBodyBuilder
 import com.supwisdom.dlpay.framework.core.JwtConfig
 import com.supwisdom.dlpay.framework.core.JwtTokenUtil
 import com.supwisdom.dlpay.framework.dao.ApiClientDao
+import com.supwisdom.dlpay.framework.dao.TenantConfigDao
 import com.supwisdom.dlpay.framework.domain.ApiClientRedis
 import com.supwisdom.dlpay.framework.domain.JwtRedis
 import com.supwisdom.dlpay.framework.domain.TOperator
@@ -13,9 +15,7 @@
 import com.supwisdom.dlpay.framework.security.validate.VerifyCode
 import com.supwisdom.dlpay.framework.service.CommonService
 import com.supwisdom.dlpay.framework.service.SystemUtilService
-import com.supwisdom.dlpay.framework.util.DateUtil
-import com.supwisdom.dlpay.framework.util.HmacUtil
-import com.supwisdom.dlpay.framework.util.TradeDict
+import com.supwisdom.dlpay.framework.util.*
 import com.supwisdom.dlpay.system.service.FunctionService
 import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
@@ -59,15 +59,28 @@
     @Autowired
     lateinit var jwtConfig: JwtConfig
 
+    @Autowired
+    private lateinit var tetantConfigDao: TenantConfigDao
+
     @GetMapping(value = ["/gettoken", "/gettoken/{clientid}"])
-    fun loginInit(appid: String, @PathVariable clientid: String?): ResponseEntity<Any> {
+    fun loginInit(appid: String, @PathVariable clientid: String?,
+                  @RequestHeader(Constants.HEADER_TETANTID) tetantId: String): ResponseEntity<Any> {
+
+        tetantConfigDao.default?.also {
+            if (it.tenantId != tetantId) {
+                throw TransactionCheckException(TradeErrorCode.INPUT_DATA_ERROR,
+                        "租户ID错误")
+            }
+        } ?: throw TransactionCheckException(TradeErrorCode.BUSINESS_DEAL_ERROR,
+                "系统未配置租户信息")
+
         apiClientDao.findById(appid).run {
             if (!isPresent) {
                 return ResponseEntity.status(HttpStatus.UNAUTHORIZED).build()
             }
-            if (get().status != "normal") {
+            if (get().status != TradeDict.STATUS_NORMAL) {
                 return ResponseEntity.ok(ResponseBodyBuilder.create()
-                        .fail(1, "API状态错误"))
+                        .fail(TradeErrorCode.BUSINESS_DEAL_ERROR, "API状态错误"))
             }
             get()
         }.let {
@@ -77,6 +90,7 @@
                 id = if (clientid == null) appid else "$appid-$clientid"
                 loginTimestamp = now
                 roles = it.roles
+                this.tenantId = tenantId
                 this.token = HmacUtil.HMACSHA256(token, it.secret)
             }.also {
                 apiClientRepository.save(it)
@@ -105,9 +119,11 @@
             if (it.isPresent && checkSecretToken(it.get(), secret)) {
                 apiClientRepository.deleteById(requestId)
                 val token = JwtTokenUtil(jwtConfig).generateToken(
-                        mapOf("uid" to appid, "issuer" to "payapi",
+                        mapOf(Constants.JWT_CLAIM_UID to appid,
+                                "issuer" to "payapi",
                                 "audience" to (clientid ?: appid),
-                                "authorities" to it.get().roles.split(";")))
+                                Constants.JWT_CLAIM_TENANTID to it.get().tenantId,
+                                Constants.JWT_CLAIM_AUTHORITIES to it.get().roles.split(";")))
                 JwtRedis().apply {
                     jti = token.jti
                     uid = appid
@@ -140,9 +156,10 @@
             if (it.isPresent && it.get().status == TradeDict.STATUS_NORMAL) {
                 // 新证书
                 val token = JwtTokenUtil(jwtConfig).generateToken(
-                        mapOf("uid" to appid, "issuer" to "payapi",
+                        mapOf(Constants.JWT_CLAIM_UID to appid,
+                                "issuer" to "payapi",
                                 "audience" to jwt["audience"],
-                                "authorities" to it.get().roles.split(";")))
+                                Constants.JWT_CLAIM_AUTHORITIES to it.get().roles.split(";")))
                 JwtRedis().apply {
                     jti = token.jti
                     uid = appid
@@ -179,7 +196,7 @@
 class UserInforController {
 
     @RequestMapping("/api/userinfor")
-    fun user(user:Principal ): Principal {
+    fun user(user: Principal): Principal {
         System.out.println(user)
         return user
     }
@@ -199,14 +216,14 @@
     fun loginView() = "ologin"
 
     @RequestMapping("/third/logout")
-    fun oauthLogout(request:HttpServletRequest,response:HttpServletResponse ) {
+    fun oauthLogout(request: HttpServletRequest, response: HttpServletResponse) {
         val back = request.getParameter("redirect_uri")
         SecurityContextLogoutHandler().logout(request, null, null);
         try {
             SecurityContextHolder.getContext().authentication = null
-            if(back!=null){
+            if (back != null) {
                 response.sendRedirect(back)
-            }else{
+            } else {
                 logger.debug { request.getHeader("referer") }
                 response.sendRedirect(request.getHeader("referer"))
             }
@@ -214,6 +231,7 @@
             e.printStackTrace()
         }
     }
+
     @GetMapping("/logout")
     fun logout(request: HttpServletRequest, response: HttpServletResponse): String {
         SecurityContextHolder.getContext().authentication?.also {
@@ -241,7 +259,7 @@
      * 控制台
      */
     @GetMapping("/console")
-    fun console() :String{
+    fun console(): String {
         return "home/console"
     }
 
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 0914da6..3b7ce49 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -6,14 +6,14 @@
 import com.supwisdom.dlpay.framework.core.PasswordBCryptConfig
 import com.supwisdom.dlpay.framework.redisrepo.ApiJwtRepository
 import com.supwisdom.dlpay.framework.security.MyAuthenticationFailureHandler
-import com.supwisdom.dlpay.framework.security.MyPermissionEvaluator
 import com.supwisdom.dlpay.framework.security.ValidateCodeSecurityConfig
 import com.supwisdom.dlpay.framework.service.OperatorDetailService
+import com.supwisdom.dlpay.framework.util.Constants
 import com.supwisdom.dlpay.framework.util.TradeDict
 import com.supwisdom.dlpay.mobile.AuthLoginFailHandler
 import com.supwisdom.dlpay.mobile.AuthLoginSuccessHandler
 import com.supwisdom.dlpay.mobile.service.MobileUserService
-import com.supwisdom.dlpay.system.common.DictPool
+import org.jose4j.jwt.ReservedClaimNames
 import org.jose4j.jwt.consumer.InvalidJwtException
 import org.jose4j.lang.JoseException
 import org.springframework.beans.factory.annotation.Autowired
@@ -34,19 +34,13 @@
 import org.springframework.security.core.authority.SimpleGrantedAuthority
 import org.springframework.security.core.context.SecurityContextHolder
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder
-import org.springframework.security.oauth2.config.annotation.web.configuration.EnableResourceServer
 import org.springframework.security.oauth2.provider.token.store.redis.RedisTokenStore
-import org.springframework.security.web.access.expression.DefaultWebSecurityExpressionHandler
 import org.springframework.security.web.authentication.AuthenticationFailureHandler
-import org.springframework.security.web.authentication.AuthenticationSuccessHandler
 import org.springframework.security.web.authentication.UsernamePasswordAuthenticationFilter
 import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher
 import org.springframework.stereotype.Component
-import org.springframework.util.StringUtils
 import org.springframework.web.filter.OncePerRequestFilter
-import org.springframework.web.servlet.DispatcherServlet
-import org.springframework.web.servlet.view.RedirectView
 import java.security.SecureRandom
 import javax.servlet.FilterChain
 import javax.servlet.http.HttpServletRequest
@@ -80,13 +74,13 @@
         if (context == null || "" == context.trim { it <= ' ' }) {
             context = "/"
         }
-        if(request.requestURI.isEmpty()){
+        if (request.requestURI.isEmpty()) {
             filterChain.doFilter(request, response)
             return
         }
         var url = request.requestURI
         if ("/" != context) {
-            url = url.replace(context,"")
+            url = url.replace(context, "")
         }
         logger.info(url)
         if(!url.startsWith("/api/")&&!url.startsWith("/mobileapi/")){
@@ -100,7 +94,7 @@
                 } else {
                     throw JoseException("JWT Header error")
                 }
-                if(url.contains("/userinfor")){
+                if (url.contains("/userinfor")) {
                     SecurityContextHolder.getContext().authentication = RedisTokenStore(redisConnectionFactory).readAuthentication(jwt)
                     filterChain.doFilter(request, response)
                     return
@@ -108,10 +102,11 @@
                 val claims = getUtil().verifyToken(jwt)
                 if(url.equals("/mobileapi/logout")){
                     SecurityContextHolder.clearContext()
-                    apiJwtRepository.deleteById(claims["jti"].toString())
+                    apiJwtRepository.deleteById(claims[ReservedClaimNames.JWT_ID].toString())
                     throw JoseException("JWT has not been register")
                 }
-                apiJwtRepository.findById(claims["jti"].toString()).let {
+
+                apiJwtRepository.findById(claims[ReservedClaimNames.JWT_ID].toString()).let {
                     if (!it.isPresent) {
                         throw JoseException("JWT has not been register")
                     }
@@ -120,8 +115,17 @@
                         throw JoseException("JWT status error : ${it.get().status}")
                     }
                 }
-                val auth = UsernamePasswordAuthenticationToken(claims["uid"], null,
-                        (claims["authorities"] as ArrayList<*>)
+                val tenantId = request.getHeader(Constants.HEADER_TETANTID)
+                if (tenantId == null) {
+                    response.sendError(HttpStatus.UNAUTHORIZED.value(), "未定义租户ID")
+                    return
+                }
+                if (claims[Constants.JWT_CLAIM_TENANTID] != tenantId) {
+                    response.sendError(HttpStatus.UNAUTHORIZED.value(), "未定义租户ID")
+                    return
+                }
+                val auth = UsernamePasswordAuthenticationToken(claims[Constants.JWT_CLAIM_UID], null,
+                        (claims[Constants.JWT_CLAIM_AUTHORITIES] as ArrayList<*>)
                                 .map { SimpleGrantedAuthority(it as String) })
                 SecurityContextHolder.getContext().authentication = auth
             } catch (e: InvalidJwtException) {
@@ -166,7 +170,7 @@
                         .authorizeRequests()
                         .antMatchers("/api/auth/**").permitAll()
                         .antMatchers("/api/notify/**").permitAll()
-                        .antMatchers("/api/userinfor").hasAnyRole("ADMIN","THIRD_ADMIN")
+                        .antMatchers("/api/userinfor").hasAnyRole("ADMIN", "THIRD_ADMIN")
                         .antMatchers("/api/common/**").hasAnyRole("THIRD_COMMON", "THIRD_ADMIN")
                         .antMatchers("/api/consume/**").hasRole("THIRD_CONSUME")
                         .antMatchers("/api/recharge/**").hasRole("THIRD_DEPOSIT")
@@ -174,7 +178,7 @@
                         .antMatchers("/api/shop/**").hasRole("THIRD_SHOP")
                         .anyRequest().hasRole("THIRD_COMMON")
                         .and()
-                        .csrf().ignoringAntMatchers("/api/**","oauth/**")
+                        .csrf().ignoringAntMatchers("/api/**", "oauth/**")
             }
 
             @Bean
@@ -298,7 +302,7 @@
                         .loginPage("/login")
                         .loginProcessingUrl("/login/form")
                         .failureHandler(authenticationFailureHandler)
-                        .defaultSuccessUrl("/",false)
+                        .defaultSuccessUrl("/", false)
                         .and()
                         .logout()
                         .logoutRequestMatcher(AntPathRequestMatcher("/logout"))
diff --git a/src/main/resources/import.sql b/src/main/resources/import.sql
index 2e4595d..4760e09 100644
--- a/src/main/resources/import.sql
+++ b/src/main/resources/import.sql
@@ -1,5 +1,3 @@
-insert into tb_apiclient(appid, secret, transStatus, roles)
-values ('100001', 'oUw2NmA09ficiVWD4TUQLDOkPyzQa3VzbjjsW0B2qTk=', 'normal', 'ROLE_THIRD_ADMIN');
 INSERT INTO tb_operator(
 	operid, closedate, opendate, opercode, opername, operpwd, opertype, transStatus)
 	VALUES ('LOR2IwRkbOjp+sVG9KR2BpHZbwGKepS4', '20500101', '20190101', 'system', '系统管理员', '$2a$10$Ex9xp11.vCaD8D0a7ahiUOKqDij1TcCUBwRAmrqXeDvAkmzLibn4.', 'oper', 'normal');
@@ -12,20 +10,34 @@
 	id, operid, roleid)
 	VALUES ('1', 'LOR2IwRkbOjp+sVG9KR2BpHZbwGKepS4', 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 
--- 功能表
---Insert into TB_FUNCTION (ID,PARENTID,NAME,ORDERNUM,MENUURL,MENUICON,ISLEAF)
---values ('1','-1','系统中心',1,'#','layui-icon-set',0);
---Insert into TB_FUNCTION (ID,PARENTID,NAME,ORDERNUM,MENUURL,MENUICON,ISLEAF)
---values ('2','1','管理员维护',1,'#','layui-icon-set',1);
 
---Insert into TB_ROLE_FUNCTION (ID,FUNCTIONID,ROLEID) values ('1','1','d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
---Insert into TB_ROLE_FUNCTION (ID,FUNCTIONID,ROLEID) values ('2','2','d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
-
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('1',null,0,null,'layui-icon-home','#','主页',1,'-1');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('2',null,1,null,'layui-icon-home','/home/console','控制台',1,'1');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('3',null,0,null,'layui-icon-set','#','系统中心',2,'-1');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('4',null,1,null,'layui-icon-set','/operator/index','管理员维护',1,'3');
-Insert into TB_FUNCTION (ID,CREATETIME,ISLEAF,LASTSAVED,MENUICON,MENUURL,NAME,ORDERNUM,PARENTID) values ('5',null,1,null,'layui-icon-set','/role/index','角色管理',2,'3');
+INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid")
+VALUES ('1', NULL, '0', NULL, 'layui-icon-home', '#', '主页', '1', '-1'),
+('2', NULL, '1', NULL, 'layui-icon-home', '/home/console', '控制台', '1', '1'),
+('3', NULL, '0', NULL, 'layui-icon-set', '#', '系统中心', '2', '-1'),
+('4', NULL, '1', NULL, 'layui-icon-set', '/function/index', '功能维护', '1', '3'),
+('5', NULL, '1', NULL, 'layui-icon-set', '/role/index', '角色管理', '2', '3'),
+('6', NULL, '1', NULL, 'layui-icon-set', '/operator/index', '操作员管理', '4', '3'),
+('7', NULL, '0', NULL, 'layui-icon-release', '#', '商户中心', '4', '-1'),
+('9', NULL, '1', NULL, '', '/operator/logs', '操作日志', '4', '3'),
+('10', NULL, '0', NULL, 'layui-icon-util', '#', '参数管理', '3', '-1'),
+('11', NULL, '1', NULL, 'layui-icon-util', '/param/syspara', '全局参数配置', '1', '10'),
+('12', NULL, '1', NULL, 'layui-icon-util', '/param/businesspara', '业务参数配置', '2', '10'),
+('17', NULL, '1', NULL, 'layui-icon-util', '/param/apiclientpara', '应用参数配置', '3', '10'),
+('18', NULL, '1', NULL, 'layui-icon-util', '/param/paytype', '支付能力配置', '4', '10'),
+('19', NULL, '0', NULL, 'layui-icon-user', '#', '用户中心', '5', '-1'),
+('20', NULL, '0', NULL, 'layui-icon-rmb', '#', '结算中心', '6', '-1'),
+('21', NULL, '1', NULL, '', '/user/index', '用户管理', '1', '19'),
+('22', NULL, '1', NULL, '', '/user/acc', '账户管理', '2', '19'),
+('23', NULL, '1', NULL, '', '/shop/index', '商户管理', '1', '7'),
+('24', NULL, '1', NULL, '', '/user/point', '积分管理', '3', '19'),
+('25', NULL, '1', NULL, '', '/shop/config', '商户支付能力配置', '2', '7'),
+('26', NULL, '0', NULL, 'layui-icon-tabs', '#', '流水管理', '3', '-1'),
+('27', NULL, '1', NULL, '', '/dtl/userdtl', '个人流水查询', '1', '26'),
+('28', NULL, '1', NULL, '', '/dtl/shopdtl', '商户流水查询', '2', '26'),
+('29', NULL, '1', NULL, '', '/report/subjectday', '科目汇总表', '1', '20'),
+('30', NULL, '1', NULL, '', '/report/subjectdetail', '科目明细账', NULL, '20'),
+('31', NULL, '1', NULL, '', '/report/shopbusiness', '商户营业情况表', NULL, '20');
 
 
 Insert into TB_ROLE_FUNCTION (ID,FUNCTIONID,ROLEID) values ('5','5','d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
@@ -34,6 +46,118 @@
 Insert into TB_ROLE_FUNCTION (ID,FUNCTIONID,ROLEID) values ('3','3','d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 Insert into TB_ROLE_FUNCTION (ID,FUNCTIONID,ROLEID) values ('4','4','d1yctWs5+ks0iQN3m9bUvRHus6HbKbrs');
 
+
+
+INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri")
+VALUES ('4', '1', '4', '添加功能', '/function/add'),
+('5', '', '4', '添加父功能', '/function/loadadd'),
+('6', '1', '6', '查询', '/operator/index'),
+('7', '', '6', '添加查询', '/operator/load4add'),
+('8', '', '6', '添加和修改', '/operator/add'),
+('9', '', '6', '重置密码', '/operator/resetpwd'),
+('10', '', '4', '查询', '/function/index'),
+('11', '', '4', '删除', '/function/delfunc'),
+('12', '', '4', '添加子功能', '/function/loadsubadd'),
+('13', '', '4', '维护资源', '/function/loadres'),
+('14', '', '4', '添加资源', '/function/addres'),
+('15', '', '4', '删除资源', '/function/delres'),
+('16', '', '5', '查询', '/role/index'),
+('17', '', '5', '添加', '/role/add'),
+('19', '', '5', '分配功能', '/role/addfunc'),
+('20', '', '5', '加载分配功能', '/role/loadfunc'),
+('21', '', '5', '删除角色', '/role/del'),
+('22', '', '6', '修改状态', '/operator/updatestate'),
+('24', '', '9', '查询', '/operator/logslist'),
+('26', '', '11', '修改', '/param/sysparaupdate'),
+('27', '', '11', '查询', '/param/syspara'),
+('28', '', '12', '查询', '/param/businesspara'),
+('29', '', '12', '删除', '/param/deletebusinesspara'),
+('30', '', '12', '修改', '/param/businessparaupdate'),
+('32', '', '12', '新增', '/param/addbusinesspara'),
+('33', '', '12', '新增跳转', '/param/load4addbuspara'),
+('34', '', '17', '查询', '/param/apiclientpara'),
+('35', '', '17', '新增修改跳转', '/param/load4addapiclient'),
+('36', '', '17', '修改状态', '/param/updateapiclientstate'),
+('37', '', '17', '删除', '/param/deleteapiclient'),
+('39', '', '17', '修改', '/param/updateapiclientpara'),
+('40', '', '17', '新增', '/param/addapiclientpara'),
+('41', '', '18', '查询', '/param/paytype'),
+('42', '', '21', '查询', '/user/list'),
+('43', '', '18', '新增跳转', '/param/load4addpaytype'),
+('44', '', '18', '切换状态', '/param/updatepaytypestate'),
+('45', '', '18', '修改', '/param/updatepaytypename'),
+('46', '', '18', '删除', '/param/deletepaytype'),
+('48', '', '18', '配置跳转', '/param/load4paytypeconfig'),
+('49', '', '18', '配置参数', '/param/addpaytypeconfig'),
+('50', '', '22', '查询', '/user/account'),
+('52', '', '24', '查询', '/user/pointlist'),
+('53', '', '23', '删除', '/shop/deleteshop'),
+('54', '', '21', '添加', '/user/add'),
+('56', '', '23', '查询', '/shop/getshopinfo'),
+('57', '', '23', '商户树', '/shop/index'),
+('58', '', '23', '新增修改', '/shop/saveorupdate'),
+('59', '', '21', '删除', '/user/del'),
+('60', '', '21', '注销账户', '/user/delacc'),
+('61', '', '21', '删除积分账户', '/user/delpoint'),
+('63', '', '25', '商户树', '/shop/config'),
+('64', '', '25', '查询', '/shop/shoppaytypelist'),
+('65', '', '25', '切换状态', '/shop/updatepaytypestat'),
+('66', '', '25', '新增跳转', '/shop/load4addpaytype'),
+('67', '', '25', '新增', '/shop/addshoppaytype'),
+('68', '', '25', '配置跳转', '/shop/load4paytypepara'),
+('69', '', '25', '配置', '/shop/addpaytypepara'),
+('70', '', '27', '查询', '/dtl/userdtl'),
+('71', '', '28', '查询', '/dtl/shopdtl'),
+('72', '', '29', '查询', '/report/subjectday'),
+('73', '', '30', '查询', '/report/subjectdetail'),
+('74', '', '31', '查询', '/report/shopbusiness'),
+('76', '', '18', '新增', '/param/addpaytype');
+
+
+INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype")
+VALUES ('1001', '1', 'y', '1', NULL, '20190430', '1', '库存现金', '1'),
+('1002', '1', 'y', '1', NULL, '20190430', '1', '银行存款', '1'),
+('1121', '1', 'n', '0', NULL, '20190430', '1', '应收票据', '1'),
+('112101', '1', 'n', '1', '1121', '20190430', '2', '支票', '1'),
+('112102', '1', 'n', '1', '1121', '20190430', '2', '经费本', '1'),
+('1122', '1', 'y', '0', NULL, '20190430', '1', '应收账款', '1'),
+('112201', '1', 'y', '1', '1122', '20190430', '2', '现金充值款', '1'),
+('112209', '1', 'y', '1', '1122', '20190617', '2', '其他第三方充值款', '1'),
+('112210', '1', 'y', '1', '1122', '20190430', '2', '支付宝充值款', '1'),
+('112211', '1', 'y', '1', '1122', '20190430', '2', '微信充值款', '1'),
+('112212', '1', 'n', '1', '1122', '20190430', '2', '银联充值款', '1'),
+('112213', '1', 'y', '1', '1122', '20190430', '2', '一卡通充值款', '1'),
+('112230', '1', 'y', '1', '1122', '20190430', '2', '支付宝支付款', '1'),
+('112231', '1', 'y', '1', '1122', '20190430', '2', '微信支付款', '1'),
+('112232', '1', 'n', '1', '1122', '20190430', '2', '银联支付款', '1'),
+('112233', '1', 'y', '1', '1122', '20190430', '2', '一卡通支付款', '1'),
+('112234', '1', 'y', '1', '1122', NULL, '2', '市民卡支付款', '1'),
+('2001', '2', 'n', '1', NULL, '20190430', '1', '用户押金', '2'),
+('2004', '2', 'y', '1', NULL, '20190430', '1', '商户营业款', '2'),
+('2202', '2', 'y', '0', NULL, '20190430', '1', '应付账款', '2'),
+('220201', '2', 'y', '1', '2202', '20190430', '2', '个人存款', '2'),
+('220211', '2', 'n', '1', '2202', '20190430', '2', '销户退款', '2'),
+('6021', '2', 'y', '0', NULL, '20190430', '1', '手续费收入', '6'),
+('602101', '2', 'y', '1', '6021', '20190430', '2', '支付宝充值手续费', '6'),
+('602102', '2', 'y', '1', '6021', '20190430', '2', '微信充值手续费', '6'),
+('602103', '2', 'n', '1', '6021', '20190430', '2', '银联充值手续费', '6'),
+('6601', '2', 'y', '0', NULL, '20190430', '1', '销售费用', '6'),
+('660101', '2', 'y', '1', '6601', '20190430', '2', '折扣优惠款', '6'),
+('660102', '2', 'y', '1', '6601', '20190430', '2', '积分抵扣款', '6'),
+('6602', '2', 'y', '1', NULL, '20190430', '1', '管理费收入', '6');
+
+update TB_SUBJECT set opendate = to_number(to_char(CURRENT_TIMESTAMP,'yyyymmdd'),'99999999');
+
+
+INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "reversable", "dps_enable",
+"anonymous_enable", "charge_enable", "consume_enable", "enable")
+VALUES ('alipay', 't', '支付宝', 't', 't', 't', 't', 't', 't'),
+('balance', 't', '账户余额', 't', 't', 't', 't', 't', 't'),
+('citizenCard', 't', '大理市民卡', 't', 't', 't', 't', 't', 't'),
+('thirdpart', 'f', '其他第三方支付', NULL, NULL, 'f', 't', 'f', 't'),
+('wechat', 't', '微信支付', 't', 't', 't', 't', 't', 't'),
+('yktpay', 't', '一卡通支付', 't', 't', 't', 't', 't', 't');
+
 -- 支付方式
 Insert into TB_PAYTYPE (PAYTYPE,DPS_ENABLE,ENABLE,REVERSE_ENABLE) values ('yktpay','no','yes','yes');
 
@@ -41,63 +165,43 @@
 Insert into TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE) values ('yktpay','appkey',null,'adc4ac6822fd462780f878b86cb94688');
 Insert into TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE) values ('yktpay','orderurl',null,'http://172.28.201.101:9116/epayapi/services/thirdparty/common/pay');
 Insert into TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE) values ('yktpay','reverseurl',null,'http://172.28.201.101:9116/epayapi/services/thirdparty/common/payreverse');
--- 资产类
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('1001','库存现金',1,1,null,1,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('1002','银行存款',1,1,null,1,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('1121','应收票据',1,1,null,1,0,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112101','支票',1,1,'1121',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112102','经费本',1,1,'1121',2,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('1122','应收账款',1,1,null,1,0,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112201','现金充值款',1,1,'1122',2,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112210','支付宝充值款',1,1,'1122',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112211','微信充值款',1,1,'1122',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112212','银联充值款',1,1,'1122',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112213','一卡通充值款',1,1,'1122',2,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112230','支付宝支付款',1,1,'1122',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112231','微信支付款',1,1,'1122',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112232','银联支付款',1,1,'1122',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('112233','一卡通支付款',1,1,'1122',2,1,null,'y');
-
--- 负债类
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('2001','用户押金',2,2,null,1,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('2004','商户营业款',2,2,null,1,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('2202','应付账款',2,2,null,1,0,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('220201','个人存款',2,2,'2202',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('220211','销户退款',2,2,'2202',2,1,null,'y');
-
--- 损益类
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('6021','手续费收入',6,2,null,1,0,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('602101','支付宝充值手续费',6,2,'6021',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('602102','微信充值手续费',6,2,'6021',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('602103','银联充值手续费',6,2,'6021',2,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('6601','销售费用',6,2,null,1,0,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('660101','折扣优惠款',6,2,'6601',2,1,null,'y');
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('660102','积分抵扣款',6,2,'6601',2,1,null,'y');
-
-Insert into TB_SUBJECT (SUBJNO,SUBJNAME,SUBJTYPE,BALFLAG,FSUBJNO,SUBJLEVEL,ENDFLAG,OPENDATE,DISPLAYFLAG) values ('6602','管理费收入',6,2,null,1,1,null,'y');
--- -- oracle --
--- update TB_SUBJECT set opendate = to_char(sysdate,'yyyyMMdd');
-update TB_SUBJECT set opendate = to_number(to_char(CURRENT_TIMESTAMP,'yyyymmdd'),'99999999');
 
 
- -- oracle --
-/*
-insert into TB_SETTLECTL(BOOKSETNO,PERIODYEAR,PERIODMONTH,STATDATE,SETTLEDATE,STATUS,updtime)
-values (1,to_number(to_char(sysdate,'yyyy')),to_number(to_char(sysdate,'MM')),to_number(to_char(sysdate,'yyyyMMdd')),to_number(to_char(sysdate,'yyyyMMdd')),0,to_char(sysdate,'yyyyMMddhh24miss'));
 
-insert into TB_VOUCHERNOCTL(VOUCHERTYPE,PERIODMONTH,VOUCHERNO)
-values (1,to_number(to_char(sysdate,'MM')),0);
+INSERT INTO "tb_syspara" ("paraid", "displayflag", "editflag", "lastsaved", "paraname",
+"paraunit", "paraval", "remark", "valuetype")
+VALUES ('1', 'yes', '1', '20190514165658', '账户最大余额默认值', '元', '10001', '账户开户时的默认账户最大余额', 'amount');
 
-commit;
-*/
 
--- --pg--
+
+INSERT INTO "tb_task_lock" ("taskcode", "remark", "taskstatus", "tasktime")
+VALUES ('DAYENDSETTLETASK', '日终结算', '0', '20190619100600');
+
+
+INSERT INTO "tb_transcode" ("transcode", "transname")
+VALUES ('3010', '市民卡代扣'),
+('3500', '账户充值');
+
+
+INSERT INTO "tb_dictionary" ("dictval", "dicttype", "dictcaption", "dicttypename")
+VALUES ('cancel', '1', '冲正', '冲正状态'),
+('cancel', '2', '交易取消', '流水状态'),
+('fail', '2', '交易失败', '流水状态'),
+('init', '2', '初始化', '流水状态'),
+('none', '1', ' ', '冲正状态'),
+('reverse', '1', '手工撤销', '冲正状态'),
+('success', '2', '交易成功', '流水状态'),
+('wip', '2', '待支付', '流水状态');
+
+
+
+INSERT INTO "public"."tb_apiclient" ("appid", "roles", "secret", "status", "bcrypt_secret", "thirdurl")
+VALUES ('100001', 'ROLE_THIRD_ADMIN;ROLE_THIRD_CONSUME;ROLE_THIRD_DEPOSIT', '$2a$10$Xa/UKDQ/WkiKVQAyv5Hu4eiqt6HtwVK3YA0Glg1/y1uiEsXnG7ZeS', 'normal', '$2a$10$VXISc2jXrJCZHIaOZ4Fc3OPvlT9QihAkC2h9n6uNe317HzIbuZU6a', NULL),
+('200001', 'ROLE_THIRD_ADMIN;ROLE_THIRD_DEPOSIT;ROLE_THIRD_CONSUME;ROLE_THIRD_SHOP;ROLE_THIRD_COMMON', 'oUw2NmA09ficiVWD4TUQLDOkPyzQa3VzbjjsW0B2qTk=', 'normal', '$2a$10$UR8FYSu4jpE3Mj/CwfWrlOqocMAKHDEiaFZghBFonxTJN1KAQZfyO', NULL),
+('700001', 'ROLE_THIRD_DEPOSIT;ROLE_THIRD_ADMIN;ROLE_THIRD_CONSUME;ROLE_THIRD_COMMON', '8455ff2162c0438583cb3f974cf214b4', 'normal', '$2a$10$2zp6c0PaUkTEftKt.PLznOFW/ncMeun4Z7pKtpE5Do5C/rrKo98fe', NULL);
+
+
+--pg--
 insert into TB_SETTLECTL(BOOKSETNO,PERIODYEAR,PERIODMONTH,STATDATE,SETTLEDATE,STATUS,updtime)
 values (1,to_number(to_char(CURRENT_TIMESTAMP,'yyyy'),'9999'),to_number(to_char(CURRENT_TIMESTAMP,'MM'),'99'),to_number(to_char(CURRENT_TIMESTAMP,'yyyyMMdd'),'99999999'),to_number(to_char(CURRENT_TIMESTAMP,'yyyyMMdd'),'99999999'),0,to_char(CURRENT_TIMESTAMP,'yyyyMMddhh24miss'));
 
