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'));
 
