refactor: 将 paytype 改为 sourcetype
diff --git a/payapi/build.gradle b/payapi/build.gradle
index e62b471..eb51a3c 100644
--- a/payapi/build.gradle
+++ b/payapi/build.gradle
@@ -57,6 +57,7 @@
     implementation 'org.jetbrains.kotlin:kotlin-reflect'
     implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk8'
     implementation 'commons-codec:commons-codec:1.12'
+    implementation 'org.apache.commons:commons-lang3:3.9'
 
     implementation 'org.springframework.cloud:spring-cloud-starter-consul-discovery:2.1.2.RELEASE'
 
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeConfigDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeConfigDao.java
deleted file mode 100644
index 50cf1e1..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PaytypeConfigDao.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package com.supwisdom.dlpay.api.dao;
-
-import com.supwisdom.dlpay.api.domain.TPaytypeConfig;
-import com.supwisdom.dlpay.api.domain.TPaytypeConfigPK;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-/**
- * Created by shuwei on 2019/4/9.
- */
-@Repository
-public interface PaytypeConfigDao extends JpaRepository<TPaytypeConfig, TPaytypeConfigPK> {
-    List<TPaytypeConfig> getByPaytype(String paytype);
-
-    TPaytypeConfig getByPaytypeAndAndConfigid(String paytype, String configid);
-
-    List<TPaytypeConfig> getByPaytypeOrderByConfigid(String paytype);
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopPaytypeConfigDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopPaytypeConfigDao.java
deleted file mode 100644
index a7164c8..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopPaytypeConfigDao.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package com.supwisdom.dlpay.api.dao;
-
-import com.supwisdom.dlpay.api.domain.TShopPaytypeConfig;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-
-import java.util.List;
-
-@Repository
-public interface ShopPaytypeConfigDao extends JpaRepository<TShopPaytypeConfig, String> {
-  @Query("select a from TShopPaytypeConfig a where a.paytype=?1 and a.shopaccno=?2 ")
-  List<TShopPaytypeConfig> getShopPaytypeConfigs(String paytype, String shopaccno);
-
-  @Query("select a from TShopPaytypeConfig a where a.shopaccno=?1 and a.paytype=?2 and a.configid=?3 ")
-  TShopPaytypeConfig getShopPaytypeConfigById(String shopaccno,String paytype, String configid);
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopPaytypeDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopPaytypeDao.java
deleted file mode 100644
index 03196e1..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopPaytypeDao.java
+++ /dev/null
@@ -1,15 +0,0 @@
-package com.supwisdom.dlpay.api.dao;
-
-import com.supwisdom.dlpay.api.domain.TShopPaytype;
-import com.supwisdom.dlpay.api.domain.TShopPaytypePK;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-import org.springframework.data.jpa.repository.Query;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface ShopPaytypeDao extends JpaRepository<TShopPaytype, TShopPaytypePK>, JpaSpecificationExecutor<TShopPaytype> {
-  @Query("select a from TShopPaytype a where a.paytype=?1 and a.shopaccno=?2 ")
-  TShopPaytype getById(String paytype, String shopaccno);
-
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopSourceTypeConfigDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopSourceTypeConfigDao.java
new file mode 100644
index 0000000..e861165
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopSourceTypeConfigDao.java
@@ -0,0 +1,17 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TShopSourceTypeConfig;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+@Repository
+public interface ShopSourceTypeConfigDao extends JpaRepository<TShopSourceTypeConfig, String> {
+  @Query("select a from TShopSourceTypeConfig a where a.sourceType=?1 and a.shopaccno=?2 ")
+  List<TShopSourceTypeConfig> getShopSourceTypeConfigs(String paytype, String shopaccno);
+
+  @Query("select a from TShopSourceTypeConfig a where a.shopaccno=?1 and a.sourceType=?2 and a.configid=?3 ")
+  TShopSourceTypeConfig getShopSourceTypeConfigById(String shopaccno, String sourceType, String configid);
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopSourceTypeDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopSourceTypeDao.java
new file mode 100644
index 0000000..8099292
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/ShopSourceTypeDao.java
@@ -0,0 +1,14 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TShopSourceType;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.stereotype.Repository;
+
+@Repository
+public interface ShopSourceTypeDao extends JpaRepository<TShopSourceType, String>, JpaSpecificationExecutor<TShopSourceType> {
+  @Query("select a from TShopSourceType a where a.sourceType=?1 and a.shopaccno=?2 ")
+  TShopSourceType getById(String sourceType, String shopaccno);
+
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeConfigDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeConfigDao.java
new file mode 100644
index 0000000..9caf30d
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/SourceTypeConfigDao.java
@@ -0,0 +1,20 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
+import org.springframework.data.jpa.repository.JpaRepository;
+import org.springframework.stereotype.Repository;
+
+import java.util.List;
+
+/**
+ * Created by shuwei on 2019/4/9.
+ */
+@Repository
+public interface SourceTypeConfigDao extends JpaRepository<TSourceTypeConfig, String> {
+
+  List<TSourceTypeConfig> getBySourceType(String sourceType);
+
+  TSourceTypeConfig getBySourceTypeAndAndConfigid(String sourceType, String configid);
+
+  List<TSourceTypeConfig> getBySourceTypeOrderByConfigid(String paytype);
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java
deleted file mode 100644
index 4a239dd..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfig.java
+++ /dev/null
@@ -1,73 +0,0 @@
-package com.supwisdom.dlpay.api.domain;
-
-import javax.persistence.*;
-import javax.validation.constraints.NotNull;
-import java.io.Serializable;
-
-/**
- * Created by shuwei on 2019/4/9.
- */
-@Entity
-@Table(name = "TB_PAYTYPE_CONFIG")
-@IdClass(TPaytypeConfigPK.class)
-public class TPaytypeConfig implements Serializable {
-  @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_NAME", length = 200)
-  private String configName;
-
-  @Column(name = "GLOBALFLAG", length = 200)
-  private Boolean globalflag = false;
-
-  @Column(name = "tenantid", length = 20)
-  @NotNull
-  private String tenantid = "";
-
-  public String getPaytype() {
-    return paytype;
-  }
-
-  public void setPaytype(String paytype) {
-    this.paytype = paytype;
-  }
-
-  public String getConfigid() {
-    return configid;
-  }
-
-  public void setConfigid(String configid) {
-    this.configid = configid;
-  }
-
-  public String getConfigValue() {
-    return configValue;
-  }
-
-  public void setConfigValue(String configValue) {
-    this.configValue = configValue;
-  }
-
-  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/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfigPK.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfigPK.java
deleted file mode 100644
index 8f7e46f..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TPaytypeConfigPK.java
+++ /dev/null
@@ -1,53 +0,0 @@
-package com.supwisdom.dlpay.api.domain;
-
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-/**
- * Created by shuwei on 2019/4/9.
- */
-@Embeddable
-public class TPaytypeConfigPK implements Serializable {
-    @Id
-    @Column(name = "PAYTYPE", nullable = false, length = 20)
-    private String paytype;
-    @Id
-    @Column(name = "CONFIGID", nullable = false, length = 40)
-    private String configid;
-
-    public String getPaytype() {
-        return paytype;
-    }
-
-    public void setPaytype(String paytype) {
-        this.paytype = paytype;
-    }
-
-    public String getConfigid() {
-        return configid;
-    }
-
-    public void setConfigid(String configid) {
-        this.configid = configid;
-    }
-
-    @Override
-    public boolean equals(Object o) {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        TPaytypeConfigPK that = (TPaytypeConfigPK) o;
-
-        if (!paytype.equals(that.paytype)) return false;
-        return configid.equals(that.configid);
-    }
-
-    @Override
-    public int hashCode() {
-        int result = paytype.hashCode();
-        result = 31 * result + configid.hashCode();
-        return result;
-    }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypePK.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypePK.java
deleted file mode 100644
index 4196b55..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypePK.java
+++ /dev/null
@@ -1,61 +0,0 @@
-package com.supwisdom.dlpay.api.domain;
-
-import javax.persistence.Column;
-import javax.persistence.Embeddable;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-@Embeddable
-public class TShopPaytypePK implements Serializable {
-  @Id
-  @Column(name = "SHOPACCNO", nullable = false, length = 10)
-  private String shopaccno;
-
-  @Id
-  @Column(name = "PAYTYPE", nullable = false, length = 20)
-  private String paytype;
-
-  public TShopPaytypePK() {
-  }
-
-  public TShopPaytypePK(String shopaccno, String paytype) {
-    this.shopaccno = shopaccno;
-    this.paytype = paytype;
-  }
-
-  public String getShopaccno() {
-    return shopaccno;
-  }
-
-  public void setShopaccno(String shopaccno) {
-    this.shopaccno = shopaccno;
-  }
-
-  public String getPaytype() {
-    return paytype;
-  }
-
-  public void setPaytype(String paytype) {
-    this.paytype = paytype;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
-    TShopPaytypePK tShopPaytypePK = (TShopPaytypePK) o;
-    if (shopaccno != null ? !shopaccno.equals(tShopPaytypePK.getShopaccno()) : shopaccno != null)
-      return false;
-    if (paytype != null ? !paytype.equals(tShopPaytypePK.getPaytype()) : paytype != null)
-      return false;
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = shopaccno != null ? shopaccno.hashCode() : 0;
-    result = 31 * result + (paytype != null ? paytype.hashCode() : 0);
-    return result;
-  }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopSourceType.java
similarity index 65%
rename from payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java
rename to payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopSourceType.java
index 0310592..f28f307 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytype.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopSourceType.java
@@ -1,19 +1,31 @@
 package com.supwisdom.dlpay.api.domain;
 
+import org.hibernate.annotations.GenericGenerator;
+
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 
 @Entity
-@Table(name = "TB_SHOP_PAYTYPE")
-@IdClass(TShopPaytypePK.class)
-public class TShopPaytype {
-  @Id
-  @Column(name = "SHOPACCNO", nullable = false, length = 10)
-  private String shopaccno;
+@Table(name = "TB_SHOP_SOURCETYPE",
+    indexes = {@Index(name = "shop_sourcetype_idx",
+        columnList = "shopaccno, sourcetype, tenantid", unique = true)})
+public class TShopSourceType implements Serializable {
+  private static final long serialVersionUID = -5789612905074310179L;
 
   @Id
-  @Column(name = "PAYTYPE", nullable = false, length = 20)
-  private String paytype;
+  @GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")
+  @Column(name = "id")
+  private String id;
+
+  @Column(name = "SHOPACCNO", length = 10)
+  @NotNull
+  private String shopaccno;
+
+  @Column(name = "SOURCETYPE", length = 20)
+  @NotNull
+  private String sourceType;
 
   @Column(name = "CONSUME_ENABLE", length = 10)
   @NotNull
@@ -42,12 +54,12 @@
     this.shopaccno = shopaccno;
   }
 
-  public String getPaytype() {
-    return paytype;
+  public String getSourceType() {
+    return sourceType;
   }
 
-  public void setPaytype(String paytype) {
-    this.paytype = paytype;
+  public void setSourceType(String sourceType) {
+    this.sourceType = sourceType;
   }
 
   public boolean getConsumeEnable() {
@@ -89,4 +101,12 @@
   public void setTenantid(String tenantid) {
     this.tenantid = tenantid;
   }
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopSourceTypeConfig.java
similarity index 70%
rename from payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java
rename to payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopSourceTypeConfig.java
index a86da1c..981b0d1 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopPaytypeConfig.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TShopSourceTypeConfig.java
@@ -4,10 +4,15 @@
 
 import javax.persistence.*;
 import javax.validation.constraints.NotNull;
+import java.io.Serializable;
 
 @Entity
-@Table(name = "TB_SHOP_PAYTYPE_CONFIG", indexes = {@Index(name = "shop_paytype_config_uk", unique = true, columnList = "shopaccno,paytype,configid")})
-public class TShopPaytypeConfig {
+@Table(name = "TB_SHOP_PAYTYPE_CONFIG",
+    indexes = {@Index(name = "shop_sourceype_config_idx", unique = true,
+        columnList = "shopaccno,sourcetype,configid,tenantid")})
+public class TShopSourceTypeConfig implements Serializable {
+  private static final long serialVersionUID = 135187738251025666L;
+
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
   @GeneratedValue(generator = "idGenerator")
@@ -18,9 +23,9 @@
   @NotNull
   private String shopaccno;
 
-  @Column(name = "PAYTYPE", length = 20)
+  @Column(name = "SOURCETYPE", length = 20)
   @NotNull
-  private String paytype;
+  private String sourceType;
 
   @Column(name = "CONFIGID", length = 40)
   @NotNull
@@ -36,12 +41,12 @@
   @NotNull
   private String tenantid = "";
 
-  public TShopPaytypeConfig() {
+  public TShopSourceTypeConfig() {
   }
 
-  public TShopPaytypeConfig(String shopaccno, String paytype, String configid, String configValue, String configName) {
+  public TShopSourceTypeConfig(String shopaccno, String sourceType, String configid, String configValue, String configName) {
     this.shopaccno = shopaccno;
-    this.paytype = paytype;
+    this.sourceType = sourceType;
     this.configid = configid;
     this.configValue = configValue;
     this.configName = configName;
@@ -63,12 +68,12 @@
     this.shopaccno = shopaccno;
   }
 
-  public String getPaytype() {
-    return paytype;
+  public String getSourceType() {
+    return sourceType;
   }
 
-  public void setPaytype(String paytype) {
-    this.paytype = paytype;
+  public void setSourceType(String sourceType) {
+    this.sourceType = sourceType;
   }
 
   public String getConfigid() {
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
index 1748dc5..1a27f32 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceType.java
@@ -1,11 +1,10 @@
 package com.supwisdom.dlpay.api.domain;
 
 import com.supwisdom.dlpay.framework.domain.DictionaryTable;
+import org.hibernate.annotations.GenericGenerator;
+import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
@@ -13,9 +12,17 @@
  * Created by shuwei on 2019/4/9.
  */
 @Entity
-@Table(name = "TB_SOURCETYPE")
+@Table(name = "TB_SOURCETYPE",
+    indexes = {@Index(name = "sourcetype_idx", columnList = "sourcetype, tenantid", unique = true)})
 public class TSourceType implements DictionaryTable, Serializable {
+  private static final long serialVersionUID = 2424711106241326859L;
+
   @Id
+  @GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")
+  @Column(name = "sourcetype_id", length = 32)
+  private String sourceTypeId;
+
   @Column(name = "SOURCETYPE", nullable = false, length = 20)
   private String sourceType;
 
@@ -131,4 +138,12 @@
   public Object getDictValue() {
     return this.paydesc;
   }
+
+  public String getSourceTypeId() {
+    return sourceTypeId;
+  }
+
+  public void setSourceTypeId(String sourceTypeId) {
+    this.sourceTypeId = sourceTypeId;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceTypeConfig.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceTypeConfig.java
new file mode 100644
index 0000000..df7ec88
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TSourceTypeConfig.java
@@ -0,0 +1,98 @@
+package com.supwisdom.dlpay.api.domain;
+
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+
+/**
+ * Created by shuwei on 2019/4/9.
+ */
+@Entity
+@Table(name = "TB_SOURCETYPE_CONFIG",
+    indexes = {@Index(name = "source_type_config_idx", columnList = "sourcetype, configid, tenantid", unique = true)})
+public class TSourceTypeConfig implements Serializable {
+  @Id
+  @SequenceGenerator(name = "sourcetype_cfg_id", sequenceName = "SEQ_SOURCETYPE_CONFIG", allocationSize = 1, initialValue = 1000)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "sourcetype_cfg_id")
+  @Column(name = "id", length = 32)
+  private String id;
+
+  @Column(name = "SOURCETYPE", length = 20)
+  @NotNull
+  private String sourceType;
+
+  @Column(name = "CONFIGID", length = 40)
+  @NotNull
+  private String configid;
+
+  @Column(name = "CONFIG_VALUE", length = 2000)
+  private String configValue;
+
+  @Column(name = "CONFIG_NAME", length = 200)
+  private String configName;
+
+  @Column(name = "GLOBALFLAG")
+  private Boolean globalflag = false;
+
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantid = "";
+
+  public String getSourceType() {
+    return sourceType;
+  }
+
+  public void setSourceType(String sourceType) {
+    this.sourceType = sourceType;
+  }
+
+  public String getConfigid() {
+    return configid;
+  }
+
+  public void setConfigid(String configid) {
+    this.configid = configid;
+  }
+
+  public String getConfigValue() {
+    return configValue;
+  }
+
+  public void setConfigValue(String configValue) {
+    this.configValue = configValue;
+  }
+
+  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;
+  }
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
+
+  public Boolean getGlobalflag() {
+    return globalflag;
+  }
+
+  public void setGlobalflag(Boolean globalflag) {
+    this.globalflag = globalflag;
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
index 60cf1a5..c2c7f21 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/service/impl/SourceTypeServiceImpl.java
@@ -1,12 +1,10 @@
 package com.supwisdom.dlpay.api.service.impl;
 
-import com.supwisdom.dlpay.api.dao.PaytypeConfigDao;
+import com.supwisdom.dlpay.api.dao.SourceTypeConfigDao;
 import com.supwisdom.dlpay.api.dao.SourceTypeDao;
 import com.supwisdom.dlpay.api.domain.TSourceType;
-import com.supwisdom.dlpay.api.domain.TPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
 import com.supwisdom.dlpay.api.service.SourceTypeService;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.cache.annotation.CacheConfig;
 import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Service;
 
@@ -18,25 +16,27 @@
  * Created by shuwei on 2019/4/9.
  */
 @Service
-@CacheConfig(cacheNames = "sourcetypeCache")
 public class SourceTypeServiceImpl implements SourceTypeService {
-  @Autowired
-  private SourceTypeDao paytypeDao;
-  @Autowired
-  private PaytypeConfigDao paytypeConfigDao;
+  private final SourceTypeDao paytypeDao;
+  private final SourceTypeConfigDao paytypeConfigDao;
+
+  public SourceTypeServiceImpl(SourceTypeDao paytypeDao, SourceTypeConfigDao paytypeConfigDao) {
+    this.paytypeDao = paytypeDao;
+    this.paytypeConfigDao = paytypeConfigDao;
+  }
 
   @Override
-  @Cacheable
+  @Cacheable(cacheNames = "source_type_cache", keyGenerator = "tenantCacheKey")
   public TSourceType getByPaytype(String paytype) {
     return paytypeDao.getOne(paytype);
   }
 
   @Override
-  @Cacheable
+  @Cacheable(cacheNames = "source_type_config_cache", keyGenerator = "tenantCacheKey")
   public Map<String, String> getPaytypeConfigByPaytype(String pattype) {
-    List<TPaytypeConfig> list = paytypeConfigDao.getByPaytype(pattype);
+    List<TSourceTypeConfig> list = paytypeConfigDao.getBySourceType(pattype);
     Map<String, String> map = new HashMap<>(list.size());
-    for (TPaytypeConfig paytypeConfig : list) {
+    for (TSourceTypeConfig paytypeConfig : list) {
       map.put(paytypeConfig.getConfigid(), paytypeConfig.getConfigValue());
     }
     return map;
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/DictionaryDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/DictionaryDao.java
index 6ffdc21..e9a19cf 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/DictionaryDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/DictionaryDao.java
@@ -1,16 +1,14 @@
 package com.supwisdom.dlpay.framework.dao;
 
 import com.supwisdom.dlpay.framework.domain.TDictionary;
-import com.supwisdom.dlpay.framework.domain.TDictionaryPK;
-import org.springframework.cache.annotation.CacheConfig;
-import org.springframework.cache.annotation.Cacheable;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.stereotype.Repository;
 
 import java.util.List;
 
 @Repository
-public interface DictionaryDao extends JpaRepository<TDictionary, TDictionaryPK> {
+public interface DictionaryDao extends JpaRepository<TDictionary, Integer> {
   List<TDictionary> findAllByDicttype(String dicttype);
+
   void deleteByDicttype(String dicttype);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/FeetypeConfigDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/FeetypeConfigDao.java
index b626087..56ce647 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/FeetypeConfigDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/FeetypeConfigDao.java
@@ -1,13 +1,12 @@
 package com.supwisdom.dlpay.framework.dao;
 
 import com.supwisdom.dlpay.framework.domain.TFeetypeConfig;
-import com.supwisdom.dlpay.framework.domain.TFeetypeConfigPK;
 import org.springframework.data.jpa.repository.JpaRepository;
 import org.springframework.data.jpa.repository.Query;
 import org.springframework.stereotype.Repository;
 
 @Repository
-public interface FeetypeConfigDao extends JpaRepository<TFeetypeConfig, TFeetypeConfigPK> {
+public interface FeetypeConfigDao extends JpaRepository<TFeetypeConfig, Integer> {
   @Query("select a from TFeetypeConfig a where a.feetype=?1 and a.paytype=?2 ")
   TFeetypeConfig getById(String feetype, String paytype);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TranstypeDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TranstypeDao.java
deleted file mode 100644
index a276c61..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/TranstypeDao.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.supwisdom.dlpay.framework.dao;
-
-import com.supwisdom.dlpay.framework.domain.TTranstype;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.stereotype.Repository;
-
-@Repository
-public interface TranstypeDao extends JpaRepository<TTranstype, Integer> {
-  TTranstype findByTranstype(Integer transtype);
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java
index 16c4a9a..76bcc21 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionary.java
@@ -5,15 +5,22 @@
 import java.io.Serializable;
 
 @Entity
-@Table(name = "TB_DICTIONARY")
-@IdClass(TDictionaryPK.class)
+@Table(name = "TB_DICTIONARY",
+    indexes = {@Index(name = "dictionary_idx", columnList = "dicttype, dictval, tenantid", unique = true)})
 public class TDictionary implements DictionaryTable, Serializable {
   @Id
-  @Column(name = "DICTTYPE", nullable = false)
+  @Column(name = "id")
+  @SequenceGenerator(name = "dictid", sequenceName = "SEQ_DICTIONARY", allocationSize = 1, initialValue = 1000)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "dictid")
+  @NotNull
+  private Integer dictid;
+
+  @Column(name = "DICTTYPE")
+  @NotNull
   private String dicttype;
 
-  @Id
-  @Column(name = "DICTVAL", nullable = false, length = 30)
+  @Column(name = "DICTVAL", length = 30)
+  @NotNull
   private String dictval;
 
   @Column(name = "DICTTYPENAME", length = 60)
@@ -58,6 +65,14 @@
     this.dictcaption = dictcaption;
   }
 
+  public Integer getDictid() {
+    return dictid;
+  }
+
+  public void setDictid(Integer dictid) {
+    this.dictid = dictid;
+  }
+
   @Override
   public String getDictKey() {
     return this.dictval;
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionaryPK.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionaryPK.java
deleted file mode 100644
index 1dbb4c8..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TDictionaryPK.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package com.supwisdom.dlpay.framework.domain;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class TDictionaryPK implements Serializable {
-  @Id
-  @Column(name = "DICTTYPE", nullable = false)
-  private String dicttype;
-
-  @Id
-  @Column(name = "DICTVAL", nullable = false, length = 30)
-  private String dictval;
-
-  public String getDicttype() {
-    return dicttype;
-  }
-
-  public void setDicttype(String dicttype) {
-    this.dicttype = dicttype;
-  }
-
-  public String getDictval() {
-    return dictval;
-  }
-
-  public void setDictval(String dictval) {
-    this.dictval = dictval;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
-    TDictionaryPK tDictionaryPK = (TDictionaryPK) o;
-    if (dicttype != null ? !dicttype.equals(tDictionaryPK.getDicttype()) : dicttype != null)
-      return false;
-    if (dictval != null ? !dictval.equals(tDictionaryPK.getDictval()) : dictval != null)
-      return false;
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = dicttype != null ? dicttype.hashCode() : 0;
-    result = 31 * result + (dictval != null ? dictval.hashCode() : 0);
-    return result;
-  }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java
index ef85c21..9c27ac7 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfig.java
@@ -1,18 +1,26 @@
 package com.supwisdom.dlpay.framework.domain;
 
 import javax.persistence.*;
+import javax.validation.constraints.NegativeOrZero;
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_FEETYPE_CONFIG")
-@IdClass(TFeetypeConfigPK.class)
+@Table(name = "TB_FEETYPE_CONFIG",
+    indexes = {@Index(name = "feetype_config_idx", columnList = "feetype, paytype, tenantid", unique = true)})
 public class TFeetypeConfig {
   @Id
-  @Column(name = "FEETYPE", nullable = false, length = 20)
+  @SequenceGenerator(name = "feetype_cfg_id", sequenceName = "SEQ_FEETYPECONFIG", allocationSize = 1, initialValue = 10)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "feetype_cfg_id")
+  @Column(name = "id")
+  @NotNull
+  private Integer id;
+
+  @Column(name = "FEETYPE", length = 20)
+  @NotNull
   private String feetype;
 
-  @Id
-  @Column(name = "PAYTYPE", nullable = false, length = 20)
+  @Column(name = "PAYTYPE", length = 20)
+  @NotNull
   private String paytype;
 
   @Column(name = "DRSUBJNO", length = 10)
@@ -67,4 +75,20 @@
   public void setSummary(String summary) {
     this.summary = summary;
   }
+
+  public Integer getId() {
+    return id;
+  }
+
+  public void setId(Integer id) {
+    this.id = id;
+  }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfigPK.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfigPK.java
deleted file mode 100644
index 92fbf6a..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFeetypeConfigPK.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.supwisdom.dlpay.framework.domain;
-
-import javax.persistence.Column;
-import javax.persistence.Id;
-import java.io.Serializable;
-
-public class TFeetypeConfigPK implements Serializable {
-  @Id
-  @Column(name = "FEETYPE", nullable = false, length = 20)
-  private String feetype;
-
-  @Id
-  @Column(name = "PAYTYPE", nullable = false, length = 20)
-  private String paytype;
-
-  public String getFeetype() {
-    return feetype;
-  }
-
-  public void setFeetype(String feetype) {
-    this.feetype = feetype;
-  }
-
-  public String getPaytype() {
-    return paytype;
-  }
-
-  public void setPaytype(String paytype) {
-    this.paytype = paytype;
-  }
-
-  @Override
-  public boolean equals(Object o) {
-    if (this == o) return true;
-    if (o == null || getClass() != o.getClass()) return false;
-    TFeetypeConfigPK tFeetypeConfigPK = (TFeetypeConfigPK) o;
-    if (feetype != null ? !feetype.equals(tFeetypeConfigPK.getFeetype()) : feetype != null)
-      return false;
-    if (paytype != null ? !paytype.equals(tFeetypeConfigPK.getPaytype()) : paytype != null)
-      return false;
-
-    return true;
-  }
-
-  @Override
-  public int hashCode() {
-    int result = feetype != null ? feetype.hashCode() : 0;
-    result = 31 * result + (paytype != null ? paytype.hashCode() : 0);
-    return result;
-  }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
index 594a258..1477cec 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
@@ -7,7 +7,8 @@
 import java.io.Serializable;
 
 @Entity
-@Table(name = "TB_FUNCTION")
+@Table(name = "TB_FUNCTION",
+    indexes = {@Index(name = "function_idx", columnList = "tenantid")})
 @JsonIgnoreProperties(value = {"hibernateLazyInitializer"})
 @SequenceGenerator(name = "SEQ_FUNC", sequenceName = "SEQ_FUNC", allocationSize = 1, initialValue = 1000)
 public class TFunction implements Serializable {
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java
index 5fad64a..4d9c2f1 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperLog.java
@@ -6,7 +6,8 @@
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_OPER_LOG")
+@Table(name = "TB_OPER_LOG",
+    indexes = {@Index(name = "oper_log_idx", columnList = "tenantid")})
 public class TOperLog {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
index 22fadc9..17ca2dd 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -11,7 +11,7 @@
 
 @Entity
 @Table(name = "TB_OPERATOR",
-    indexes = {@Index(name = "opercode_idx", columnList = "OPERCODE", unique = true)})
+    indexes = {@Index(name = "opercode_idx", columnList = "OPERCODE, tenantid", unique = true)})
 public class TOperator implements UserDetails {
   private static final long serialVersionUID = 2148742269021236587L;
   @Id
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java
index e6fd9e1..31f2481 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPermission.java
@@ -6,7 +6,8 @@
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_PERMISSION")
+@Table(name = "TB_PERMISSION",
+    indexes = {@Index(name = "permission_idx", columnList = "role_func_id, tenantid", unique = true)})
 public class TPermission {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
index 1ee94c3..110541f 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
@@ -6,7 +6,8 @@
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_ROLE")
+@Table(name = "TB_ROLE",
+    indexes = {@Index(name = "role_idx", columnList = "rolecode, tenantid", unique = true)})
 public class TRole {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java
index fa1554c..3a16f18 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubject.java
@@ -1,15 +1,20 @@
 package com.supwisdom.dlpay.framework.domain;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import org.hibernate.annotations.GenericGenerator;
+
+import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_SUBJECT")
+@Table(name = "TB_SUBJECT",
+    indexes = {@Index(name = "subject_idx", columnList = "subjno, tenantid", unique = true)})
 public class TSubject {
   @Id
+  @Column(name = "id", length = 32)
+  @GenericGenerator(name = "idGenerator", strategy = "uuid")
+  @GeneratedValue(generator = "idGenerator")
+  private String id;
+
   @Column(name = "SUBJNO", nullable = false, length = 10)
   private String subjno;
 
@@ -121,4 +126,12 @@
   public void setTenantId(String tenantId) {
     this.tenantId = tenantId;
   }
+
+  public String getId() {
+    return id;
+  }
+
+  public void setId(String id) {
+    this.id = id;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java
index f58c591..93a64e1 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectbal.java
@@ -1,16 +1,18 @@
 package com.supwisdom.dlpay.framework.domain;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_SUBJECTBAL")
+@Table(name = "TB_SUBJECTBAL",
+    indexes = {@Index(name = "subjectbal_idx", columnList = "subjno, tenantid", unique = true)})
 public class TSubjectbal {
   @Id
-  @Column(name = "SUBJNO", nullable = false, length = 10)
+  @Column(name = "subjid", nullable = false, length = 32)
+  private String subjid;
+
+  @Column(name = "SUBJNO", length = 10)
+  @NotNull
   private String subjno;
 
   @Column(name = "ACCUMDRAMT", precision = 15, scale = 2)
@@ -183,4 +185,12 @@
   public void setTenantId(String tenantId) {
     this.tenantId = tenantId;
   }
+
+  public String getSubjid() {
+    return subjid;
+  }
+
+  public void setSubjid(String subjid) {
+    this.subjid = subjid;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java
index eedf9b5..18b151d 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectday.java
@@ -8,38 +8,42 @@
 @IdClass(TSubjectdayPK.class)
 public class TSubjectday {
   @Id
-  @Column(name="ACCDATE", nullable = false, length = 8)
-  private String accdate;
+  @Column(name = "subjid", nullable = false, length = 32)
+  private String subjid;
 
   @Id
-  @Column(name="SUBJNO", nullable = false, length = 10)
+  @Column(name = "ACCDATE", nullable = false, length = 8)
+  private String accdate;
+
+  @Column(name = "SUBJNO", length = 10)
+  @NotNull
   private String subjno;
 
-  @Column(name="PERIOD_YEAR", precision = 4)
+  @Column(name = "PERIOD_YEAR", precision = 4)
   private Integer periodYear;
 
-  @Column(name="PERIOD_MONTH", precision = 2)
+  @Column(name = "PERIOD_MONTH", precision = 2)
   private Integer periodMonth;
 
-  @Column(name="BEGINDRBAL", precision = 15, scale = 2)
+  @Column(name = "BEGINDRBAL", precision = 15, scale = 2)
   private Double begindrbal;
 
-  @Column(name="BEGINCRBAL", precision = 15, scale = 2)
+  @Column(name = "BEGINCRBAL", precision = 15, scale = 2)
   private Double begincrbal;
 
-  @Column(name="DRAMT", precision = 15, scale = 2)
+  @Column(name = "DRAMT", precision = 15, scale = 2)
   private Double dramt;
 
-  @Column(name="CRAMT", precision = 15, scale = 2)
+  @Column(name = "CRAMT", precision = 15, scale = 2)
   private Double cramt;
 
-  @Column(name="DRBAL", precision = 15, scale = 2)
+  @Column(name = "DRBAL", precision = 15, scale = 2)
   private Double drbal;
 
-  @Column(name="CRBAL", precision = 15, scale = 2)
+  @Column(name = "CRBAL", precision = 15, scale = 2)
   private Double crbal;
 
-  @Column(name="UPDTIME", precision = 15, scale = 2)
+  @Column(name = "UPDTIME", precision = 15, scale = 2)
   private String updtime;
 
   @Column(name = "tenantid", length = 20)
@@ -171,4 +175,12 @@
   public void setTenantId(String tenantId) {
     this.tenantId = tenantId;
   }
+
+  public String getSubjid() {
+    return subjid;
+  }
+
+  public void setSubjid(String subjid) {
+    this.subjid = subjid;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectdayPK.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectdayPK.java
index a3fdd45..ac70e2f 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectdayPK.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSubjectdayPK.java
@@ -10,8 +10,8 @@
   private String accdate;
 
   @Id
-  @Column(name = "SUBJNO", nullable = false, length = 10)
-  private String subjno;
+  @Column(name = "SUBJID", nullable = false, length = 32)
+  private String subjid;
 
   public String getAccdate() {
     return accdate;
@@ -21,12 +21,12 @@
     this.accdate = accdate;
   }
 
-  public String getSubjno() {
-    return subjno;
+  public String getSubjid() {
+    return subjid;
   }
 
-  public void setSubjno(String subjno) {
-    this.subjno = subjno;
+  public void setSubjid(String subjid) {
+    this.subjid = subjid;
   }
 
   @Override
@@ -36,7 +36,7 @@
     TSubjectdayPK tSubjectdayPK = (TSubjectdayPK) o;
     if (accdate != null ? !accdate.equals(tSubjectdayPK.getAccdate()) : accdate != null)
       return false;
-    if (subjno != null ? !subjno.equals(tSubjectdayPK.getSubjno()) : subjno != null)
+    if (subjid != null ? !subjid.equals(tSubjectdayPK.getSubjid()) : subjid != null)
       return false;
 
     return true;
@@ -45,7 +45,7 @@
   @Override
   public int hashCode() {
     int result = accdate != null ? accdate.hashCode() : 0;
-    result = 31 * result + (subjno != null ? subjno.hashCode() : 0);
+    result = 31 * result + (subjid != null ? subjid.hashCode() : 0);
     return result;
   }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java
index d669146..8ec551c 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSyspara.java
@@ -5,19 +5,22 @@
 import com.supwisdom.dlpay.framework.util.StringUtil;
 import com.supwisdom.dlpay.framework.util.SysparaUtil;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 
 @Entity
 @Table(name = "TB_SYSPARA")
+@IdClass(TSysparaPK.class)
 public class TSyspara {
   @Id
   @Column(name = "PARAID", nullable = false, precision = 9)
   private Integer paraid;
 
+  @Id
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
   @Column(name = "PARAVAL", length = 100)
   private String paraval;
 
@@ -45,9 +48,6 @@
   @NotNull
   private String lastsaved;
 
-  @Column(name = "tenantid", length = 20)
-  @NotNull
-  private String tenantId;
 
   public TSyspara() {
   }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSysparaPK.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSysparaPK.java
new file mode 100644
index 0000000..353225a
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TSysparaPK.java
@@ -0,0 +1,48 @@
+package com.supwisdom.dlpay.framework.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Id;
+import javax.validation.constraints.NotNull;
+import java.io.Serializable;
+import java.util.Objects;
+
+public class TSysparaPK implements Serializable {
+  @Id
+  @Column(name = "PARAID", nullable = false, precision = 9)
+  private Integer paraid;
+
+  @Id
+  @Column(name = "tenantid", length = 20)
+  @NotNull
+  private String tenantId;
+
+  public Integer getParaid() {
+    return paraid;
+  }
+
+  public void setParaid(Integer paraid) {
+    this.paraid = paraid;
+  }
+
+  public String getTenantId() {
+    return tenantId;
+  }
+
+  public void setTenantId(String tenantId) {
+    this.tenantId = tenantId;
+  }
+
+  @Override
+  public boolean equals(Object o) {
+    if (this == o) return true;
+    if (!(o instanceof TSysparaPK)) return false;
+    TSysparaPK that = (TSysparaPK) o;
+    return Objects.equals(getParaid(), that.getParaid()) &&
+        Objects.equals(getTenantId(), that.getTenantId());
+  }
+
+  @Override
+  public int hashCode() {
+    return Objects.hash(getParaid(), getTenantId());
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java
index ac42871..46e53e4 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranscode.java
@@ -1,16 +1,18 @@
 package com.supwisdom.dlpay.framework.domain;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 
 @Entity
-@Table(name = "TB_TRANSCODE")
+@Table(name = "TB_TRANSCODE",
+    indexes = {@Index(name = "transcode_idx", columnList = "transcode, tenantid", unique = true)})
 public class TTranscode implements DictionaryTable, Serializable {
   @Id
+  @Column(name = "transcode_id")
+  @NotNull
+  private Integer trascodeId;
+
   @Column(name = "TRANSCODE", nullable = false, precision = 4)
   private Integer transcode;
 
@@ -54,4 +56,12 @@
   public Object getDictValue() {
     return this.transname;
   }
+
+  public Integer getTrascodeId() {
+    return trascodeId;
+  }
+
+  public void setTrascodeId(Integer trascodeId) {
+    this.trascodeId = trascodeId;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java
deleted file mode 100644
index 5a52e0b..0000000
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TTranstype.java
+++ /dev/null
@@ -1,68 +0,0 @@
-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_TRANSTYPE")
-public class TTranstype {
-  @Id
-  @Column(name = "TRANSTYPE", nullable = false, precision = 4)
-  private Integer transtype;
-
-  @Column(name = "DRSUBJNO", length = 10)
-  private String drsubjno;
-
-  @Column(name = "CRSUBJNO", length = 10)
-  private String crsubjno;
-
-  @Column(name = "SUMMARY", length = 200)
-  private String summary;
-
-  @Column(name = "tenantid", length = 20)
-  @NotNull
-  private String tenantId;
-
-  public Integer getTranstype() {
-    return transtype;
-  }
-
-  public void setTranstype(Integer transtype) {
-    this.transtype = transtype;
-  }
-
-  public String getDrsubjno() {
-    return drsubjno;
-  }
-
-  public void setDrsubjno(String drsubjno) {
-    this.drsubjno = drsubjno;
-  }
-
-  public String getCrsubjno() {
-    return crsubjno;
-  }
-
-  public void setCrsubjno(String crsubjno) {
-    this.crsubjno = crsubjno;
-  }
-
-  public String getSummary() {
-    return summary;
-  }
-
-  public void setSummary(String summary) {
-    this.summary = summary;
-  }
-
-  public String getTenantId() {
-    return tenantId;
-  }
-
-  public void setTenantId(String tenantId) {
-    this.tenantId = tenantId;
-  }
-}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
index 71b30d8..679d14e 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
@@ -4,7 +4,8 @@
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_VOUCHER")
+@Table(name = "TB_VOUCHER",
+    indexes = {@Index(name = "voucher_idx", columnList = "voucherdate, tenantid")})
 public class TVoucher {
   @Id
   @SequenceGenerator(name = "voucherid", sequenceName = "SEQ_VOUCHERID", allocationSize = 1)
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java
index ba7ac78..f918b86 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/filter/XssHttpServletRequestWrapper.java
@@ -13,16 +13,13 @@
 
 /**
  * 防止sql注入,xss攻击
- * */
+ */
 public class XssHttpServletRequestWrapper extends HttpServletRequestWrapper {
   private final static Logger log = LoggerFactory.getLogger(XssHttpServletRequestWrapper.class);
-  private final static String key = "'|and|exec|execute|insert|select|delete|update|count|drop|%|chr|mid|master|truncate|" +
-      "char|declare|sitename|net user|xp_cmdshell|;|or|-|+|,|like'|and|exec|execute|insert|create|drop|" +
-      "table|from|grant|use|group_concat|column_name|" +
-      "information_schema.columns|table_schema|union|where|select|delete|update|order|by|count|" +
-      "chr|mid|master|truncate|char|declare|or|;|-|--|,|like|//|/|%|#";
+  private final static String key = "and|or|exec|insert|select|delete|update|truncate|declare";
   private static Set<String> notAllowedKeyWords = new HashSet<String>(0);
-  private static String replacedString="INVALID";
+  private static String replacedString = "INVALID";
+
   static {
     String keyStr[] = key.split("\\|");
     for (String str : keyStr) {
@@ -43,7 +40,8 @@
     currentUrl = request.getRequestURI();
   }
 
-  /**覆盖getParameter方法,将参数名和参数值都做xss过滤。
+  /**
+   * 覆盖getParameter方法,将参数名和参数值都做xss过滤。
    * 如果需要获得原始的值,则通过super.getParameterValues(name)来获取
    * getParameterNames,getParameterValues和getParameterMap也可能需要覆盖
    */
@@ -55,6 +53,7 @@
     }
     return cleanXSS(value);
   }
+
   @Override
   public String[] getParameterValues(String parameter) {
     String[] values = super.getParameterValues(parameter);
@@ -70,20 +69,20 @@
   }
 
   @Override
-  public Map<String, String[]> getParameterMap(){
-    Map<String, String[]> values=super.getParameterMap();
+  public Map<String, String[]> getParameterMap() {
+    Map<String, String[]> values = super.getParameterMap();
     if (values == null) {
       return null;
     }
-    Map<String, String[]> result=new HashMap<>();
-    for(String key:values.keySet()){
-      String encodedKey=cleanXSS(key);
-      int count=values.get(key).length;
+    Map<String, String[]> result = new HashMap<>();
+    for (String key : values.keySet()) {
+      String encodedKey = cleanXSS(key);
+      int count = values.get(key).length;
       String[] encodedValues = new String[count];
-      for (int i = 0; i < count; i++){
-        encodedValues[i]=cleanXSS(values.get(key)[i]);
+      for (int i = 0; i < count; i++) {
+        encodedValues[i] = cleanXSS(values.get(key)[i]);
       }
-      result.put(encodedKey,encodedValues);
+      result.put(encodedKey, encodedValues);
     }
     return result;
   }
@@ -120,10 +119,10 @@
     String paramValue = value;
     for (String keyword : notAllowedKeyWords) {
       if (paramValue.length() > keyword.length() + 4
-          && (paramValue.contains(" "+keyword)||paramValue.contains(keyword+" ")||paramValue.contains(" "+keyword+" "))) {
+          && (paramValue.contains(" " + keyword) || paramValue.contains(keyword + " ") || paramValue.contains(" " + keyword + " "))) {
         paramValue = StringUtils.replace(paramValue, keyword, replacedString);
         log.error(this.currentUrl + "已被过滤,因为参数中包含不允许sql的关键词(" + keyword
-            + ")"+";参数:"+value+";过滤后的参数:"+paramValue);
+            + ")" + ";参数:" + value + ";过滤后的参数:" + paramValue);
       }
     }
     return paramValue;
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/DayendSettleServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/DayendSettleServiceImpl.java
index 2f4959b..8310435 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/DayendSettleServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/service/impl/DayendSettleServiceImpl.java
@@ -469,7 +469,7 @@
 //    List<TVoucherEntry> entryList = voucherEntryDao.getVoucherEntryByVoucherid(voucherid);
 //    if (null == voucher) {
 //      throw new Exception("凭证查询无记录");
-//    } else if ("auto".equals(voucher.getSourcetype())) {
+//    } else if ("auto".equals(voucher.getSourceType())) {
 //      throw new Exception("该凭证不是手工录入凭证");
 //    } else if (voucher.getCheckflag() != 1) {
 //      throw new Exception("该凭证未审核");
@@ -499,7 +499,7 @@
 //
 //    //明细
 //    for (TVoucherEntry entry : entryList) {
-//      if (Subject.SUBJNO_MACHANT_INCOME.equals(entry.getSubjno())) {
+//      if (Subject.SUBJNO_MACHANT_INCOME.equals(entry.getSubjid())) {
 //        TShopaccbal tShopaccbal = shopaccbalDao.getTShopaccbalByIdWithLock(entry.getAccno());
 //        if (null == tShopaccbal) {
 //          throw new Exception("商户表商户账号[" + entry.getAccno() + "]不存在");
@@ -509,12 +509,12 @@
 //        entry.setBalflag(2);
 //        entry.setBalance(tShopaccbal.getBalance());
 //      } else {
-//        TSubjectbal tSubjectbal = subjectbalDao.getTSubjectbalBySubjnoWithLock(entry.getSubjno());
-//        TSubject subject = subjectDao.getOne(entry.getSubjno());
+//        TSubjectbal tSubjectbal = subjectbalDao.getTSubjectbalBySubjnoWithLock(entry.getSubjid());
+//        TSubject subject = subjectDao.getOne(entry.getSubjid());
 //        if (null == tSubjectbal || null == subject) {
-//          throw new Exception("科目表科目号[" + entry.getSubjno() + "]不存在");
+//          throw new Exception("科目表科目号[" + entry.getSubjid() + "]不存在");
 //        } else if (subject.getEndflag() != 1) {
-//          throw new Exception("科目[" + entry.getSubjno() + "]非末级科目");
+//          throw new Exception("科目[" + entry.getSubjid() + "]非末级科目");
 //        }
 //        entry.setBalflag(subject.getBalflag());
 //        if (subject.getBalflag() == 1) {
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java
new file mode 100644
index 0000000..bbf9486
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/tenant/TenantCacheKeyGen.java
@@ -0,0 +1,25 @@
+package com.supwisdom.dlpay.framework.tenant;
+
+
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.cache.interceptor.KeyGenerator;
+
+import java.lang.reflect.Method;
+
+public class TenantCacheKeyGen implements KeyGenerator {
+  private static final char delimiter = ':';
+
+  @Override
+  public Object generate(Object target, Method method, Object... params) {
+    StringBuilder name = new StringBuilder();
+    String tenant = TenantContext.getTenantSchema();
+    if (StringUtils.isEmpty(tenant)) {
+      tenant = "default";
+    }
+    name.append(tenant);
+    for (Object item : params) {
+      name.append(delimiter).append(item.toString());
+    }
+    return name.toString();
+  }
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/ShopConfigBean.java b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/ShopConfigBean.java
index 1e477e7..9085d2e 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/bean/ShopConfigBean.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/bean/ShopConfigBean.java
@@ -3,7 +3,7 @@
 public class ShopConfigBean {
   private String shopaccno;
   private String shopname;
-  private String paytype;
+  private String sourceType;
   private String paydesc;
   private boolean consumeEnable;
   private boolean anonymousEnable;
@@ -12,10 +12,10 @@
   public ShopConfigBean() {
   }
 
-  public ShopConfigBean(String shopaccno, String shopname, String paytype, String paydesc, boolean consumeEnable, boolean anonymousEnable, boolean reverseEnable) {
+  public ShopConfigBean(String shopaccno, String shopname, String sourceType, String paydesc, boolean consumeEnable, boolean anonymousEnable, boolean reverseEnable) {
     this.shopaccno = shopaccno;
     this.shopname = shopname;
-    this.paytype = paytype;
+    this.sourceType = sourceType;
     this.paydesc = paydesc;
     this.consumeEnable = consumeEnable;
     this.anonymousEnable = anonymousEnable;
@@ -38,12 +38,12 @@
     this.shopname = shopname;
   }
 
-  public String getPaytype() {
-    return paytype;
+  public String getSourceType() {
+    return sourceType;
   }
 
-  public void setPaytype(String paytype) {
-    this.paytype = paytype;
+  public void setSourceType(String sourceType) {
+    this.sourceType = sourceType;
   }
 
   public String getPaydesc() {
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
index cdc4a4a..2bf71b3 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ParamController.java
@@ -2,7 +2,7 @@
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.api.domain.TSourceType;
-import com.supwisdom.dlpay.api.domain.TPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
 import com.supwisdom.dlpay.framework.domain.TApiClient;
 import com.supwisdom.dlpay.framework.domain.TBusinesspara;
 import com.supwisdom.dlpay.framework.domain.TSyspara;
@@ -355,45 +355,45 @@
    * 支付能力配置
    * ====================================================
    */
-  @GetMapping("/param/paytype")
-  public String paytypeView() {
-    return "system/param/paytype";
+  @GetMapping("/param/sourcetype")
+  public String sourcetypeView() {
+    return "system/param/sourcetype";
   }
 
-  @GetMapping("/param/paytypelist")
-  @PreAuthorize("hasPermission('/param/paytype','')")
+  @GetMapping("/param/sourcetypelist")
+  @PreAuthorize("hasPermission('/param/sourcetype','')")
   @ResponseBody
   public PageResult<TSourceType> getPaytypeDataList(@RequestParam("page") Integer pageNo,
                                                     @RequestParam("limit") Integer pageSize,
-                                                    @RequestParam(value = "paytype", required = false) String paytype) {
+                                                    @RequestParam(value = "sourcetype", required = false) String sourcetype) {
     try {
       if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
       if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
-      return paramService.getSourceTypePage(paytype, pageNo, pageSize);
+      return paramService.getSourceTypePage(sourcetype, pageNo, pageSize);
     } catch (Exception e) {
       e.printStackTrace();
       return new PageResult<>(99, "系统查询错误");
     }
   }
 
-  @GetMapping("/param/load4addpaytype")
-  @PreAuthorize("hasPermission('/param/load4addpaytype','')")
+  @GetMapping("/param/load4addsourcetype")
+  @PreAuthorize("hasPermission('/param/load4addsourcetype','')")
   public String load4AddPaytype(Model model) {
-    return "system/param/paytypeform";
+    return "system/param/sourcetypeform";
   }
 
-  @PostMapping("/param/updatepaytypestate")
-  @PreAuthorize("hasPermission('/param/updatepaytypestate','')")
+  @PostMapping("/param/updatesourcetypestate")
+  @PreAuthorize("hasPermission('/param/updatesourcetypestate','')")
   @ResponseBody
-  public JsonResult updatePaytypeState(@RequestParam("paytype") String paytype,
+  public JsonResult updatePaytypeState(@RequestParam("sourcetype") String sourcetype,
                                        @RequestParam("state") Boolean state,
                                        @RequestParam(value = "optype", required = false) String optype) {
-    if (StringUtil.isEmpty(paytype)
+    if (StringUtil.isEmpty(sourcetype)
         || (!StringUtil.isEmpty(optype) && !"charge".equals(optype) && !"consume".equals(optype) && !"anonymous".equals(optype) && !"reversable".equals(optype) && !"checkable".equals(optype))) {
       return JsonResult.error("参数传递错误");
     }
     try {
-      TSourceType tPaytype = paramService.getSourceType(paytype);
+      TSourceType tPaytype = paramService.getSourceType(sourcetype);
       if (null == tPaytype) {
         return JsonResult.error("支付方式不存在!");
       }
@@ -412,17 +412,17 @@
           return JsonResult.error("状态错误,请重新查询后操作");
         }
         tPaytype.setAnonymousEnable(state);
-      } else if("reversable".equals(optype)){
-        if(state.equals(tPaytype.getReversable())){
+      } else if ("reversable".equals(optype)) {
+        if (state.equals(tPaytype.getReversable())) {
           return JsonResult.error("状态错误,请重新查询后操作");
         }
         tPaytype.setReversable(state);
-      }else if("checkable".equals(optype)){
-        if(state.equals(tPaytype.getCheckable())){
+      } else if ("checkable".equals(optype)) {
+        if (state.equals(tPaytype.getCheckable())) {
           return JsonResult.error("状态错误,请重新查询后操作");
         }
         tPaytype.setCheckable(state);
-      }else{
+      } else {
         if (state.equals(tPaytype.getEnable())) {
           return JsonResult.error("状态错误,请重新查询后操作");
         }
@@ -440,20 +440,20 @@
     }
   }
 
-  @PostMapping("/param/updatepaytypename")
-  @PreAuthorize("hasPermission('/param/updatepaytypename','')")
+  @PostMapping("/param/updatesourcetypename")
+  @PreAuthorize("hasPermission('/param/updatesourcetypename','')")
   @ResponseBody
-  public JsonResult updatePaytypeName(@RequestParam("paytype") String paytype,
-                                      @RequestParam("paydesc") String paydesc) {
-    if (StringUtil.isEmpty(paytype) || StringUtil.isEmpty(paydesc)) {
+  public JsonResult updatePaytypeName(@RequestParam("sourcetype") String sourcetype,
+                                      @RequestParam("paydesc") String desc) {
+    if (StringUtil.isEmpty(sourcetype) || StringUtil.isEmpty(desc)) {
       return JsonResult.error("参数传递错误");
     }
     try {
-      TSourceType tPaytype = paramService.getSourceType(paytype);
+      TSourceType tPaytype = paramService.getSourceType(sourcetype);
       if (null == tPaytype) {
         return JsonResult.error("支付方式不存在!");
       }
-      tPaytype.setPaydesc(paydesc.trim());
+      tPaytype.setPaydesc(desc.trim());
       if (paramService.saveOrUpdateSourceType(tPaytype)) {
         return JsonResult.ok("修改成功");
       } else {
@@ -465,12 +465,12 @@
     }
   }
 
-  @PostMapping("/param/deletepaytype")
-  @PreAuthorize("hasPermission('/param/deletepaytype','')")
+  @PostMapping("/param/deletesourcetype")
+  @PreAuthorize("hasPermission('/param/deletesourcetype','')")
   @ResponseBody
-  public JsonResult deletePaytype(@RequestParam("paytype") String paytype) {
+  public JsonResult deletePaytype(@RequestParam("sourcetype") String sourcetype) {
     try {
-      TSourceType tPaytype = paramService.getSourceType(paytype);
+      TSourceType tPaytype = paramService.getSourceType(sourcetype);
       if (null == tPaytype) {
         return JsonResult.error("支付方式不存在!");
       }
@@ -485,10 +485,10 @@
     }
   }
 
-  @PostMapping("/param/addpaytype")
-  @PreAuthorize("hasPermission('/param/addpaytype','')")
+  @PostMapping("/param/addsourcetype")
+  @PreAuthorize("hasPermission('/param/addsourcetype','')")
   @ResponseBody
-  public JsonResult addPaytype(@RequestParam("paytype") String paytype,
+  public JsonResult addPaytype(@RequestParam("sourcetype") String sourcetype,
                                @RequestParam(value = "enable", required = false, defaultValue = "no") String enable,
                                @RequestParam(value = "chargeEnable", required = false, defaultValue = "no") String chargeEnable,
                                @RequestParam(value = "consumeEnable", required = false, defaultValue = "no") String consumeEnable,
@@ -497,12 +497,12 @@
                                @RequestParam(value = "checkable", required = false, defaultValue = "no") String checkable,
                                @RequestParam("paydesc") String paydesc) {
     try {
-      TSourceType tPaytype = paramService.getSourceType(paytype);
+      TSourceType tPaytype = paramService.getSourceType(sourcetype);
       if (null != tPaytype) {
         return JsonResult.error("支付方式已经存在");
       }
       tPaytype = new TSourceType();
-      tPaytype.setSourceType(paytype.trim());
+      tPaytype.setSourceType(sourcetype.trim());
       if (StringUtil.isEmpty(paydesc)) return JsonResult.error("支付名称不能为空!");
       tPaytype.setPaydesc(paydesc.trim());
       tPaytype.setEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(enable));
@@ -522,10 +522,10 @@
     }
   }
 
-  @GetMapping("/param/checkpaytype")
+  @GetMapping("/param/checksourcetype")
   @ResponseBody
-  public JsonResult checkPaytype(@RequestParam("paytype") String paytype) {
-    TSourceType tPaytype = paramService.getSourceType(paytype);
+  public JsonResult checkPaytype(@RequestParam("sourcetype") String sourcetype) {
+    TSourceType tPaytype = paramService.getSourceType(sourcetype);
     if (null != tPaytype) {
       return JsonResult.error("支付方式已经存在");
     } else {
@@ -533,28 +533,28 @@
     }
   }
 
-  @GetMapping("/param/load4paytypeconfig")
-  @PreAuthorize("hasPermission('/param/load4paytypeconfig','')")
-  public String load4PaytypeConfig(@RequestParam("paytype") String paytype, Model model) {
-    List<TPaytypeConfig> configList = paramService.getSourceTypeConfigList(paytype);
+  @GetMapping("/param/load4sourcetypeconfig")
+  @PreAuthorize("hasPermission('/param/load4sourcetypeconfig','')")
+  public String load4PaytypeConfig(@RequestParam("sourcetype") String sourceType, Model model) {
+    List<TSourceTypeConfig> configList = paramService.getSourceTypeConfigList(sourceType);
     model.addAttribute("configlist", configList);
-    model.addAttribute("paytype", paytype);
-    return "system/param/paytypeconfig";
+    model.addAttribute("sourcetype", sourceType);
+    return "system/param/sourcetypeconfig";
   }
 
-  @PostMapping("/param/addpaytypeconfig")
-  @PreAuthorize("hasPermission('/param/addpaytypeconfig','')")
+  @PostMapping("/param/addsourcetypeconfig")
+  @PreAuthorize("hasPermission('/param/addsourcetypeconfig','')")
   @ResponseBody
   public JsonResult addPaytypeConfig(@RequestBody Map<String, String> param) {
-    String paytypeHtmlKey = "hid_paytype"; //页面上传来paytype的KEY
-    if (null == param || StringUtil.isEmpty(param.get(paytypeHtmlKey))) {
+    String sourcetypeHtmlKey = "hid_sourcetype"; //页面上传来sourcetype的KEY
+    if (null == param || StringUtil.isEmpty(param.get(sourcetypeHtmlKey))) {
       return JsonResult.error("参数传递错误");
     }
 
     try {
-      String paytype = param.get(paytypeHtmlKey).trim();
-      param.remove(paytypeHtmlKey);
-      if (paramService.saveSourceTypeConfig(paytype, param)) {
+      String sourcetype = param.get(sourcetypeHtmlKey).trim();
+      param.remove(sourcetypeHtmlKey);
+      if (paramService.saveSourceTypeConfig(sourcetype, param)) {
         return JsonResult.ok("配置成功");
       } else {
         return JsonResult.error("配置失败");
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ShopController.java b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ShopController.java
index b85095a..9cc74c5 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ShopController.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/controller/ShopController.java
@@ -2,8 +2,8 @@
 
 import com.supwisdom.dlpay.api.bean.JsonResult;
 import com.supwisdom.dlpay.api.domain.TSourceType;
-import com.supwisdom.dlpay.api.domain.TShopPaytype;
-import com.supwisdom.dlpay.api.domain.TShopPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TShopSourceType;
+import com.supwisdom.dlpay.api.domain.TShopSourceTypeConfig;
 import com.supwisdom.dlpay.framework.domain.TShop;
 import com.supwisdom.dlpay.framework.domain.TShopacc;
 import com.supwisdom.dlpay.framework.service.SystemUtilService;
@@ -171,36 +171,36 @@
     return JsonResult.ok("OK").put("data", shopDataService.getAllShopNodes());
   }
 
-  @GetMapping("/shop/shoppaytypelist")
-  @PreAuthorize("hasPermission('/shop/shoppaytypelist','')")
+  @GetMapping("/shop/shopsourcetypelist")
+  @PreAuthorize("hasPermission('/shop/shopsourcetypelist','')")
   @ResponseBody
   public PageResult<ShopConfigBean> getShopPaytypeList(@RequestParam("page") Integer pageNo,
                                                        @RequestParam("limit") Integer pageSize,
-                                                       @RequestParam(value = "paytype", required = false) String paytype,
+                                                       @RequestParam(value = "sourcetype", required = false) String sourcetype,
                                                        @RequestParam(value = "shopaccno", required = false) String shopaccno) {
     try {
       if (null == pageNo || pageNo < 1) pageNo = WebConstant.PAGENO_DEFAULT;
       if (null == pageSize || pageSize < 1) pageSize = WebConstant.PAGESIZE_DEFAULT;
-      return shopDataService.getShopPaytypeInfos(shopaccno, paytype, pageNo, pageSize);
+      return shopDataService.getShopPaytypeInfos(shopaccno, sourcetype, pageNo, pageSize);
     } catch (Exception e) {
       e.printStackTrace();
       return new PageResult<>(99, "系统查询错误");
     }
   }
 
-  @PostMapping("/shop/updatepaytypestat")
-  @PreAuthorize("hasPermission('/shop/updatepaytypestat','')")
+  @PostMapping("/shop/updatesourcetypestat")
+  @PreAuthorize("hasPermission('/shop/updatesourcetypestat','')")
   @ResponseBody
-  public JsonResult updateShopPaytypeStat(@RequestParam("shopaccno") String shopaccno, @RequestParam("paytype") String paytype,
+  public JsonResult updateShopPaytypeStat(@RequestParam("shopaccno") String shopaccno, @RequestParam("sourceType") String sourcetype,
                                           @RequestParam("state") String state, @RequestParam("optype") String optype) {
-    if (StringUtil.isEmpty(shopaccno) || StringUtil.isEmpty(paytype)
+    if (StringUtil.isEmpty(shopaccno) || StringUtil.isEmpty(sourcetype)
         || (!ConstantUtil.ENABLE_NO.equals(state) && !ConstantUtil.ENABLE_YES.equals(state))
         || (!"consume".equals(optype) && !"anonymous".equals(optype) && !"reverse".equals(optype))) {
       return JsonResult.error("参数传递错误");
     }
 
     try {
-      TShopPaytype shopPaytype = shopDataService.getShopPaytype(shopaccno.trim(), paytype.trim());
+      TShopSourceType shopPaytype = shopDataService.getShopPaytype(shopaccno.trim(), sourcetype.trim());
       if (null == shopPaytype) {
         return JsonResult.error("商户支付能力不存在!");
       }
@@ -233,41 +233,41 @@
     }
   }
 
-  @GetMapping("/shop/load4addpaytype")
-  @PreAuthorize("hasPermission('/shop/load4addpaytype','')")
+  @GetMapping("/shop/load4addsourcetype")
+  @PreAuthorize("hasPermission('/shop/load4addsourcetype','')")
   public String load4AddShopPaytype(Model model) {
     model.addAttribute(Dictionary.PAY_TYPE,
         dictionaryProxy.getDictionaryAsList(Dictionary.SOURCE_TYPE));
     return "system/shop/configform";
   }
 
-  @PostMapping("/shop/addshoppaytype")
-  @PreAuthorize("hasPermission('/shop/addshoppaytype','')")
+  @PostMapping("/shop/addshopsourcetype")
+  @PreAuthorize("hasPermission('/shop/addshopsourcetype','')")
   @ResponseBody
-  public JsonResult addShoppaytype(@RequestParam("shopaccno") String shopaccno,
-                                   @RequestParam("paytype") String paytype,
-                                   @RequestParam(value = "consumeEnable", required = false, defaultValue = "no") String consumeEnable,
-                                   @RequestParam(value = "anonymousEnable", required = false, defaultValue = "no") String anonymousEnable,
-                                   @RequestParam(value = "reverseEnable", required = false, defaultValue = "no") String reverseEnable) {
-    if (StringUtil.isEmpty(shopaccno) || StringUtil.isEmpty(paytype)) {
+  public JsonResult addShopsourcetype(@RequestParam("shopaccno") String shopaccno,
+                                      @RequestParam("sourcetype") String sourcetype,
+                                      @RequestParam(value = "consumeEnable", required = false, defaultValue = "no") String consumeEnable,
+                                      @RequestParam(value = "anonymousEnable", required = false, defaultValue = "no") String anonymousEnable,
+                                      @RequestParam(value = "reverseEnable", required = false, defaultValue = "no") String reverseEnable) {
+    if (StringUtil.isEmpty(shopaccno) || StringUtil.isEmpty(sourcetype)) {
       return JsonResult.error("参数传递错误");
     }
     try {
       TShopacc shopacc = shopDataService.getShopaccByAccno(shopaccno.trim());
-      TSourceType tPaytype = paramService.getSourceType(paytype.trim());
+      TSourceType tPaytype = paramService.getSourceType(sourcetype.trim());
       if (null == shopacc) {
         return JsonResult.error("商户账户不存在!");
       }
       if (null == tPaytype) {
         return JsonResult.error("支付方式在系统中不存在!");
       }
-      TShopPaytype shopPaytype = shopDataService.getShopPaytype(shopaccno.trim(), paytype.trim());
+      TShopSourceType shopPaytype = shopDataService.getShopPaytype(shopaccno.trim(), sourcetype.trim());
       if (null != shopPaytype) {
         return JsonResult.error("商户该支付能力已经存在!");
       }
-      shopPaytype = new TShopPaytype();
+      shopPaytype = new TShopSourceType();
       shopPaytype.setShopaccno(shopacc.getShopaccno());
-      shopPaytype.setPaytype(tPaytype.getSourceType());
+      shopPaytype.setSourceType(tPaytype.getSourceType());
       shopPaytype.setConsumeEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(consumeEnable));
       shopPaytype.setAnonymousEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(anonymousEnable));
       shopPaytype.setReverseEnable(ConstantUtil.ENABLE_YES.equalsIgnoreCase(reverseEnable));
@@ -283,33 +283,33 @@
     }
   }
 
-  @GetMapping("/shop/load4paytypepara")
-  @PreAuthorize("hasPermission('/shop/load4paytypepara','')")
+  @GetMapping("/shop/load4sourcetypepara")
+  @PreAuthorize("hasPermission('/shop/load4sourcetypepara','')")
   public String load4AddShopPaytypePara(@RequestParam("shopaccno") String shopaccno,
-                                        @RequestParam("paytype") String paytype,
+                                        @RequestParam("sourceType") String sourcetype,
                                         Model model) {
-    List<TShopPaytypeConfig> configList = shopDataService.getShopPaytypeConfigs(shopaccno, paytype);
+    List<TShopSourceTypeConfig> configList = shopDataService.getShopPaytypeConfigs(shopaccno, sourcetype);
     model.addAttribute("configlist", configList);
     model.addAttribute("shopaccno", shopaccno);
-    model.addAttribute("paytype", paytype);
+    model.addAttribute("sourcetype", sourcetype);
     return "system/shop/configpara";
   }
 
-  @PostMapping("/shop/addpaytypepara")
-  @PreAuthorize("hasPermission('/shop/addpaytypepara','')")
+  @PostMapping("/shop/addsourcetypepara")
+  @PreAuthorize("hasPermission('/shop/addsourcetypepara','')")
   @ResponseBody
   public JsonResult addShopPaytypePara(@RequestBody Map<String, String> param) {
     String shopaccnoHtmlKey = "hid_shopaccno"; //页面上传来shopaccno的KEY
-    String paytypeHtmlKey = "hid_paytype"; //页面上传来paytype的KEY
-    if (null == param || StringUtil.isEmpty(param.get(paytypeHtmlKey)) || StringUtil.isEmpty(param.get(shopaccnoHtmlKey))) {
+    String sourcetypeHtmlKey = "hid_sourcetype"; //页面上传来sourcetype的KEY
+    if (null == param || StringUtil.isEmpty(param.get(sourcetypeHtmlKey)) || StringUtil.isEmpty(param.get(shopaccnoHtmlKey))) {
       return JsonResult.error("参数传递错误");
     }
     try {
       String shopaccno = param.get(shopaccnoHtmlKey).trim();
-      String paytype = param.get(paytypeHtmlKey).trim();
+      String sourcetype = param.get(sourcetypeHtmlKey).trim();
       param.remove(shopaccnoHtmlKey);
-      param.remove(paytypeHtmlKey);
-      if (shopDataService.saveOrUpdateShopPaytypeConfig(shopaccno, paytype, param)) {
+      param.remove(sourcetypeHtmlKey);
+      if (shopDataService.saveOrUpdateShopPaytypeConfig(shopaccno, sourcetype, param)) {
         return JsonResult.ok("配置成功");
       } else {
         return JsonResult.error("配置失败");
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
index dc9d180..b2a0334 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/ParamService.java
@@ -1,7 +1,7 @@
 package com.supwisdom.dlpay.system.service;
 
 import com.supwisdom.dlpay.api.domain.TSourceType;
-import com.supwisdom.dlpay.api.domain.TPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
 import com.supwisdom.dlpay.framework.domain.TApiClient;
 import com.supwisdom.dlpay.framework.domain.TBusinesspara;
 import com.supwisdom.dlpay.framework.domain.TSyspara;
@@ -64,7 +64,7 @@
   boolean deleteSourceType(TSourceType paytype);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
-  List<TPaytypeConfig> getSourceTypeConfigList(String paytype);
+  List<TSourceTypeConfig> getSourceTypeConfigList(String paytype);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   boolean saveSourceTypeConfig(String paytype, Map<String, String> param) throws WebCheckException;
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/ShopDataService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/ShopDataService.java
index 9f5bd1a..606cb7c 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/ShopDataService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/ShopDataService.java
@@ -1,8 +1,7 @@
 package com.supwisdom.dlpay.system.service;
 
-import com.supwisdom.dlpay.api.domain.TSourceType;
-import com.supwisdom.dlpay.api.domain.TShopPaytype;
-import com.supwisdom.dlpay.api.domain.TShopPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TShopSourceType;
+import com.supwisdom.dlpay.api.domain.TShopSourceTypeConfig;
 import com.supwisdom.dlpay.framework.domain.TShop;
 import com.supwisdom.dlpay.framework.domain.TShopacc;
 import com.supwisdom.dlpay.framework.util.PageResult;
@@ -32,16 +31,16 @@
   PageResult<ShopConfigBean> getShopPaytypeInfos(String shopaccno, String paytype, int pageNo, int pageSize);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
-  TShopPaytype getShopPaytype(String shopaccno, String paytype);
+  TShopSourceType getShopPaytype(String shopaccno, String paytype);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
   TShopacc getShopaccByAccno(String shopaccno);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
-  boolean saveOrUpdateShopPaytype(TShopPaytype shopPaytype);
+  boolean saveOrUpdateShopPaytype(TShopSourceType shopPaytype);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class,readOnly = true)
-  List<TShopPaytypeConfig> getShopPaytypeConfigs(String shopaccno, String paytype);
+  List<TShopSourceTypeConfig> getShopPaytypeConfigs(String shopaccno, String paytype);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class)
   boolean saveOrUpdateShopPaytypeConfig(String shopaccno, String paytype, Map<String, String> param) throws WebCheckException;
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
index a0f86cd..d933a65 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ParamServiceImpl.java
@@ -1,8 +1,8 @@
 package com.supwisdom.dlpay.system.service.impl;
 
-import com.supwisdom.dlpay.api.dao.PaytypeConfigDao;
+import com.supwisdom.dlpay.api.dao.SourceTypeConfigDao;
 import com.supwisdom.dlpay.api.dao.SourceTypeDao;
-import com.supwisdom.dlpay.api.domain.TPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
 import com.supwisdom.dlpay.api.domain.TSourceType;
 import com.supwisdom.dlpay.framework.dao.ApiClientDao;
 import com.supwisdom.dlpay.framework.dao.BusinessparaDao;
@@ -46,7 +46,7 @@
   @Autowired
   private SourceTypeDao sourceTypeDao;
   @Autowired
-  private PaytypeConfigDao paytypeConfigDao;
+  private SourceTypeConfigDao paytypeConfigDao;
 
   @Override
   public PageResult<TSyspara> getSysparaPage(Integer paraid, String paraname, int pageNo, int pageSize) {
@@ -200,9 +200,9 @@
 
   @Override
   @Cacheable(cacheNames = "source_type_config_cache", key = "#p0")
-  public List<TPaytypeConfig> getSourceTypeConfigList(String paytype) {
+  public List<TSourceTypeConfig> getSourceTypeConfigList(String paytype) {
     if (!StringUtil.isEmpty(paytype)) {
-      List<TPaytypeConfig> list = paytypeConfigDao.getByPaytypeOrderByConfigid(paytype.trim());
+      List<TSourceTypeConfig> list = paytypeConfigDao.getBySourceTypeOrderByConfigid(paytype.trim());
       if (!StringUtil.isEmpty(list))
         return list;
     }
@@ -216,7 +216,7 @@
     if (null == tPaytype) throw new WebCheckException("支付能力[" + paytype + "]不存在");
     for (String key : param.keySet()) {
       String value = param.get(key);
-      TPaytypeConfig config = paytypeConfigDao.getByPaytypeAndAndConfigid(tPaytype.getSourceType(), key);
+      TSourceTypeConfig config = paytypeConfigDao.getBySourceTypeAndAndConfigid(tPaytype.getSourceType(), key);
       if (null == config)
         throw new WebCheckException("支付能力[" + tPaytype.getSourceType() + "]不存在配置项[" + key + "],请重新查询");
       config.setConfigValue(StringUtil.isEmpty(value) ? null : value.trim());
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java
index 88d4deb..1993949 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/ShopDataServiceImpl.java
@@ -1,13 +1,13 @@
 package com.supwisdom.dlpay.system.service.impl;
 
-import com.supwisdom.dlpay.api.dao.PaytypeConfigDao;
+import com.supwisdom.dlpay.api.dao.SourceTypeConfigDao;
 import com.supwisdom.dlpay.api.dao.SourceTypeDao;
-import com.supwisdom.dlpay.api.dao.ShopPaytypeConfigDao;
-import com.supwisdom.dlpay.api.dao.ShopPaytypeDao;
+import com.supwisdom.dlpay.api.dao.ShopSourceTypeConfigDao;
+import com.supwisdom.dlpay.api.dao.ShopSourceTypeDao;
 import com.supwisdom.dlpay.api.domain.TSourceType;
-import com.supwisdom.dlpay.api.domain.TPaytypeConfig;
-import com.supwisdom.dlpay.api.domain.TShopPaytype;
-import com.supwisdom.dlpay.api.domain.TShopPaytypeConfig;
+import com.supwisdom.dlpay.api.domain.TSourceTypeConfig;
+import com.supwisdom.dlpay.api.domain.TShopSourceType;
+import com.supwisdom.dlpay.api.domain.TShopSourceTypeConfig;
 import com.supwisdom.dlpay.framework.dao.ShopDao;
 import com.supwisdom.dlpay.framework.dao.ShopaccDao;
 import com.supwisdom.dlpay.framework.data.SystemDateTime;
@@ -22,7 +22,6 @@
 import com.supwisdom.dlpay.system.bean.ShopConfigBean;
 import com.supwisdom.dlpay.system.bean.ZTreeNode;
 import com.supwisdom.dlpay.system.service.ShopDataService;
-import com.supwisdom.dlpay.util.ConstantUtil;
 import com.supwisdom.dlpay.util.WebCheckException;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
@@ -44,15 +43,15 @@
   @Autowired
   private ShopaccDao shopaccDao;
   @Autowired
-  private ShopPaytypeDao shopPaytypeDao;
+  private ShopSourceTypeDao shopSourceTypeDao;
   @Autowired
   private SystemUtilService systemUtilService;
   @Autowired
-  private SourceTypeDao paytypeDao;
+  private SourceTypeDao sourceTypeDao;
   @Autowired
-  private PaytypeConfigDao paytypeConfigDao;
+  private SourceTypeConfigDao sourceTypeConfigDao;
   @Autowired
-  private ShopPaytypeConfigDao shopPaytypeConfigDao;
+  private ShopSourceTypeConfigDao shopPaytypeConfigDao;
 
   @Override
   public List<ZTreeNode> getAllShopNodes() {
@@ -148,46 +147,46 @@
 
 //        TShopPaytype shopPaytype = new TShopPaytype();
 //        shopPaytype.setShopaccno(shopacc.getShopaccno());
-//        shopPaytype.setPaytype(TradeDict.PAYTYPE_BALANCE);
+//        shopPaytype.setSourceType(TradeDict.PAYTYPE_BALANCE);
 //        shopPaytype.setConsumeEnable(true);
 //        shopPaytype.setAnonymousEnable(false);
 //        shopPaytype.setReverseEnable(false);
 //        shopPaytype.setCreatetime(dt.getHostdatetime());
-//        shopPaytypeDao.save(shopPaytype); //默认增加余额支付方式
+//        shopSourceTypeDao.save(shopPaytype); //默认增加余额支付方式
       }
       return true;
     }
   }
 
   @Override
-  public PageResult<ShopConfigBean> getShopPaytypeInfos(String shopaccno, String paytype, int pageNo, int pageSize) {
-    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("shopaccno", "paytype"));
+  public PageResult<ShopConfigBean> getShopPaytypeInfos(String shopaccno, String sourceType, int pageNo, int pageSize) {
+    Pageable pageable = PageRequest.of(pageNo - 1, pageSize, Sort.by("shopaccno", "sourceType"));
 
-    Page<TShopPaytype> page = shopPaytypeDao.findAll(new Specification<TShopPaytype>() {
+    Page<TShopSourceType> page = shopSourceTypeDao.findAll(new Specification<TShopSourceType>() {
       @Override
-      public Predicate toPredicate(Root<TShopPaytype> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
+      public Predicate toPredicate(Root<TShopSourceType> root, CriteriaQuery<?> query, CriteriaBuilder criteriaBuilder) {
         List<Predicate> predicates = new ArrayList<>();
         if (!StringUtil.isEmpty(shopaccno)) {
           predicates.add(criteriaBuilder.equal(root.get("shopaccno").as(String.class), shopaccno.trim()));
         }
-        if (!StringUtil.isEmpty(paytype)) {
-          predicates.add(criteriaBuilder.equal(root.get("paytype").as(String.class), paytype.trim()));
+        if (!StringUtil.isEmpty(sourceType)) {
+          predicates.add(criteriaBuilder.equal(root.get("sourceType").as(String.class), sourceType.trim()));
         }
         return criteriaBuilder.and(predicates.toArray(new Predicate[0]));
       }
     }, pageable);
 
-    if (null == page || page.getTotalElements() == 0) {
+    if (page.getTotalElements() == 0) {
       return new PageResult<>(99, "无数据");
     }
     List<ShopConfigBean> list = new ArrayList<>(0);
-    for (TShopPaytype pt : page.getContent()) {
+    for (TShopSourceType pt : page.getContent()) {
       ShopConfigBean bean = new ShopConfigBean();
       bean.setShopaccno(pt.getShopaccno());
       TShopacc shopacc = shopaccDao.getByShopaccno(pt.getShopaccno());
       bean.setShopname(shopacc == null ? "" : shopacc.getShopname());
-      bean.setPaytype(pt.getPaytype());
-      TSourceType tPaytype = paytypeDao.getBySourceType(pt.getPaytype());
+      bean.setSourceType(pt.getSourceType());
+      TSourceType tPaytype = sourceTypeDao.getBySourceType(pt.getSourceType());
       bean.setPaydesc(tPaytype == null ? "" : tPaytype.getPaydesc());
       bean.setConsumeEnable(pt.getConsumeEnable());
       bean.setAnonymousEnable(pt.getAnonymousEnable());
@@ -198,8 +197,8 @@
   }
 
   @Override
-  public TShopPaytype getShopPaytype(String shopaccno, String paytype) {
-    return shopPaytypeDao.getById(paytype, shopaccno);
+  public TShopSourceType getShopPaytype(String shopaccno, String paytype) {
+    return shopSourceTypeDao.getById(paytype, shopaccno);
   }
 
   @Override
@@ -211,27 +210,27 @@
   }
 
   @Override
-  public boolean saveOrUpdateShopPaytype(TShopPaytype shopPaytype) {
+  public boolean saveOrUpdateShopPaytype(TShopSourceType shopPaytype) {
     if (null != shopPaytype) {
       shopPaytype.setTenantid(TenantContext.getTenantSchema());
-      shopPaytypeDao.save(shopPaytype);
+      shopSourceTypeDao.save(shopPaytype);
       return true;
     }
     return false;
   }
 
   @Override
-  public List<TShopPaytypeConfig> getShopPaytypeConfigs(String shopaccno, String paytype) {
-    List<TShopPaytypeConfig> result = new ArrayList<>(0);
+  public List<TShopSourceTypeConfig> getShopPaytypeConfigs(String shopaccno, String paytype) {
+    List<TShopSourceTypeConfig> result = new ArrayList<>(0);
     if (!StringUtil.isEmpty(paytype)) {
-      List<TPaytypeConfig> list = paytypeConfigDao.getByPaytypeOrderByConfigid(paytype.trim());
+      List<TSourceTypeConfig> list = sourceTypeConfigDao.getBySourceTypeOrderByConfigid(paytype.trim());
       if (!StringUtil.isEmpty(list)) {
-        for (TPaytypeConfig pt : list) {
-          TShopPaytypeConfig spc = shopPaytypeConfigDao.getShopPaytypeConfigById(shopaccno, pt.getPaytype(), pt.getConfigid());
+        for (TSourceTypeConfig pt : list) {
+          TShopSourceTypeConfig spc = shopPaytypeConfigDao.getShopSourceTypeConfigById(shopaccno, pt.getSourceType(), pt.getConfigid());
           if (null == spc) {
-            spc = new TShopPaytypeConfig();
+            spc = new TShopSourceTypeConfig();
             spc.setShopaccno(shopaccno);
-            spc.setPaytype(pt.getPaytype());
+            spc.setSourceType(pt.getSourceType());
             spc.setConfigid(pt.getConfigid());
             spc.setConfigName(pt.getConfigName());
             spc.setConfigValue(null);
@@ -245,22 +244,22 @@
 
   @Override
   public boolean saveOrUpdateShopPaytypeConfig(String shopaccno, String paytype, Map<String, String> param) throws WebCheckException {
-    TShopPaytype shopPaytype = getShopPaytype(shopaccno, paytype);
+    TShopSourceType shopPaytype = getShopPaytype(shopaccno, paytype);
     if (null == shopPaytype) {
       throw new WebCheckException("此商户[" + shopaccno + "]还不具有该支付能力[" + paytype + "]");
     }
     for (String key : param.keySet()) {
       String value = param.get(key);
-      TShopPaytypeConfig spc = shopPaytypeConfigDao.getShopPaytypeConfigById(shopPaytype.getShopaccno(), shopPaytype.getPaytype(), key);
+      TShopSourceTypeConfig spc = shopPaytypeConfigDao.getShopSourceTypeConfigById(shopPaytype.getShopaccno(), shopPaytype.getSourceType(), key);
       if (null != spc) {
         spc.setConfigValue(StringUtil.isEmpty(value) ? null : value.trim());
       } else {
-        spc = new TShopPaytypeConfig();
+        spc = new TShopSourceTypeConfig();
         spc.setShopaccno(shopPaytype.getShopaccno());
-        spc.setPaytype(shopPaytype.getPaytype());
+        spc.setSourceType(shopPaytype.getSourceType());
         spc.setConfigid(key);
         spc.setConfigValue(StringUtil.isEmpty(value) ? null : value.trim());
-        TPaytypeConfig paytypeConfig = paytypeConfigDao.getByPaytypeAndAndConfigid(shopPaytype.getPaytype(), key);
+        TSourceTypeConfig paytypeConfig = sourceTypeConfigDao.getBySourceTypeAndAndConfigid(shopPaytype.getSourceType(), key);
         if (null != paytypeConfig) {
           spc.setConfigName(paytypeConfig.getConfigName());
         }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
index 8632b7f..b6f81aa 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/PayApiApplication.kt
@@ -1,15 +1,16 @@
 package com.supwisdom.dlpay
 
+import com.supwisdom.dlpay.framework.tenant.TenantCacheKeyGen
 import io.lettuce.core.ReadFrom
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.boot.SpringApplication
 import org.springframework.boot.autoconfigure.SpringBootApplication
 import org.springframework.boot.autoconfigure.data.redis.RedisProperties
 import org.springframework.boot.builder.SpringApplicationBuilder
-import org.springframework.boot.runApplication
 import org.springframework.boot.web.servlet.ServletComponentScan
 import org.springframework.boot.web.servlet.support.SpringBootServletInitializer
 import org.springframework.cache.annotation.EnableCaching
+import org.springframework.cache.interceptor.KeyGenerator
 import org.springframework.cloud.client.discovery.EnableDiscoveryClient
 import org.springframework.context.annotation.Bean
 import org.springframework.context.annotation.Configuration
@@ -44,6 +45,11 @@
         serverConfig.database = redis.database
         return LettuceConnectionFactory(serverConfig, clientConfig)
     }
+
+    @Bean("tenantCacheKey")
+    fun createTenantCacheableKey(): KeyGenerator {
+        return TenantCacheKeyGen()
+    }
 }
 
 @Configuration
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/consume_pay_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/consume_pay_service_impl.kt
index f367feb..fe0df77 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/consume_pay_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/consume_pay_service_impl.kt
@@ -1,15 +1,14 @@
 package com.supwisdom.dlpay.api.service.impl
 
 import com.supwisdom.dlpay.api.dao.SourceTypeDao
-import com.supwisdom.dlpay.api.dao.ShopPaytypeConfigDao
-import com.supwisdom.dlpay.api.dao.ShopPaytypeDao
+import com.supwisdom.dlpay.api.dao.ShopSourceTypeConfigDao
+import com.supwisdom.dlpay.api.dao.ShopSourceTypeDao
 import com.supwisdom.dlpay.api.dao.TransactionMainDao
 import com.supwisdom.dlpay.api.domain.TTransactionMain
 import com.supwisdom.dlpay.api.service.ConsumePayService
 import com.supwisdom.dlpay.exception.TransactionProcessException
 import com.supwisdom.dlpay.framework.util.StringUtil
 import com.supwisdom.dlpay.framework.util.TradeErrorCode
-import com.supwisdom.dlpay.util.ConstantUtil
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.stereotype.Service
 
@@ -18,9 +17,9 @@
     @Autowired
     lateinit var sourceTypeDao: SourceTypeDao
     @Autowired
-    lateinit var shopPaytypeDao: ShopPaytypeDao
+    lateinit var shopSourceTypeDao: ShopSourceTypeDao
     @Autowired
-    lateinit var shopPaytypeConfigDao: ShopPaytypeConfigDao
+    lateinit var shopSourceTypeConfigDao: ShopSourceTypeConfigDao
     @Autowired
     lateinit var transactionMainDao: TransactionMainDao
 
@@ -37,7 +36,7 @@
                 }
             }
         }
-        shopPaytypeDao.getById(sourceType, shopaccno).let {
+        shopSourceTypeDao.getById(sourceType, shopaccno).let {
             if (null == it) {
                 throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]未启用支付方式[$sourceType]")
             } else {
@@ -68,7 +67,7 @@
             }
         }
 
-        shopPaytypeDao.getById(paytype, shopaccno).let {
+        shopSourceTypeDao.getById(paytype, shopaccno).let {
             if (null == it) {
                 throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]未启用支付方式[$paytype]")
             } else {
@@ -82,7 +81,7 @@
             }
         }
 
-        shopPaytypeConfigDao.getShopPaytypeConfigs(paytype, shopaccno)?.let {
+        shopSourceTypeConfigDao.getShopSourceTypeConfigs(paytype, shopaccno)?.let {
             if (it.size < 1) {
                 throw TransactionProcessException(TradeErrorCode.INPUT_DATA_ERROR, "该商户[$shopaccno]的支付方式[$paytype]未配置参数")
             } else {
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 4b81a02..2e747ae 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -48,7 +48,6 @@
 import javax.servlet.http.HttpServletRequest
 import javax.servlet.http.HttpServletResponse
 import javax.sql.DataSource
-import kotlin.collections.ArrayList
 
 
 @Component
diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql
index fdec8f7..b3ea34b 100644
--- a/payapi/src/main/resources/data.sql
+++ b/payapi/src/main/resources/data.sql
@@ -36,7 +36,7 @@
 INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
 VALUES (17, NULL, 1, NULL, 'layui-icon-util', '/param/apiclientpara', '应用参数配置', 3, 10, '{tenantid}');
 INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
-VALUES (18, NULL, 1, NULL, 'layui-icon-util', '/param/paytype', '支付能力配置', 4, 10, '{tenantid}');
+VALUES (18, NULL, 1, NULL, 'layui-icon-util', '/param/sourceType', '支付能力配置', 4, 10, '{tenantid}');
 INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
 VALUES (19, NULL, 0, NULL, 'layui-icon-user', '#', '用户中心', 5, -1, '{tenantid}');
 INSERT INTO "tb_function" ("id", "createtime", "isleaf", "lastsaved", "menuicon", "menuurl", "name", "ordernum", "parentid", tenantid)
@@ -183,21 +183,21 @@
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (40, '', 17, '新增', '/param/addapiclientpara', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (41, '', 18, '查询', '/param/paytype', '{tenantid}');
+VALUES (41, '', 18, '查询', '/param/sourceType', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (42, '', 21, '查询', '/user/list', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (43, '', 18, '新增跳转', '/param/load4addpaytype', '{tenantid}');
+VALUES (43, '', 18, '新增跳转', '/param/load4addsourcetype', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (44, '', 18, '切换状态', '/param/updatepaytypestate', '{tenantid}');
+VALUES (44, '', 18, '切换状态', '/param/updatesourcetypestate', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (45, '', 18, '修改', '/param/updatepaytypename', '{tenantid}');
+VALUES (45, '', 18, '修改', '/param/updatesourcetypename', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (46, '', 18, '删除', '/param/deletepaytype', '{tenantid}');
+VALUES (46, '', 18, '删除', '/param/deletesourcetype', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (48, '', 18, '配置跳转', '/param/load4paytypeconfig', '{tenantid}');
+VALUES (48, '', 18, '配置跳转', '/param/load4sourcetypeconfig', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (49, '', 18, '配置参数', '/param/addpaytypeconfig', '{tenantid}');
+VALUES (49, '', 18, '配置参数', '/param/addsourcetypeconfig', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (50, '', 22, '查询', '/user/account', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
@@ -221,17 +221,17 @@
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (63, '', 25, '商户树', '/shop/config', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (64, '', 25, '查询', '/shop/shoppaytypelist', '{tenantid}');
+VALUES (64, '', 25, '查询', '/shop/shopsourcetypelist', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (65, '', 25, '切换状态', '/shop/updatepaytypestat', '{tenantid}');
+VALUES (65, '', 25, '切换状态', '/shop/updatesourcetypestat', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (66, '', 25, '新增跳转', '/shop/load4addpaytype', '{tenantid}');
+VALUES (66, '', 25, '新增跳转', '/shop/load4addsourcetype', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (67, '', 25, '新增', '/shop/addshoppaytype', '{tenantid}');
+VALUES (67, '', 25, '新增', '/shop/addshopsourcetype', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (68, '', 25, '配置跳转', '/shop/load4paytypepara', '{tenantid}');
+VALUES (68, '', 25, '配置跳转', '/shop/load4sourcetypepara', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (69, '', 25, '配置', '/shop/addpaytypepara', '{tenantid}');
+VALUES (69, '', 25, '配置', '/shop/addsourcetypepara', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (70, '', 27, '查询', '/dtl/userdtl', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
@@ -243,7 +243,7 @@
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
 VALUES (74, '', 31, '查询', '/report/shopbusiness', '{tenantid}');
 INSERT INTO "tb_resource" ("id", "code", "function_id", "name", "uri", tenantid)
-VALUES (76, '', 18, '新增', '/param/addpaytype', '{tenantid}');
+VALUES (76, '', 18, '新增', '/param/addsourcetype', '{tenantid}');
 
 INSERT INTO "tb_permission" ("id", "resid", "role_func_id", "roleid", tenantid)
 VALUES ('ff8080816b7947ed016b795577300036', 16, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
@@ -373,117 +373,123 @@
 VALUES ('ff8080816bbb130c016bbb6ea2f600b3', 26, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{tenantid}');
 
 
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('1001', 1, 'y', 1, NULL, 20190430, 1, '库存现金', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('1002', 1, 'y', 1, NULL, 20190430, 1, '银行存款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('1121', 1, 'n', 0, NULL, 20190430, 1, '应收票据', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112101', 1, 'n', 1, '1121', 20190430, 2, '支票', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112102', 1, 'n', 1, '1121', 20190430, 2, '经费本', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('1122', 1, 'y', 0, NULL, 20190430, 1, '应收账款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112201', 1, 'y', 1, '1122', 20190430, 2, '现金充值款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112209', 1, 'y', 1, '1122', 20190617, 2, '其他第三方充值款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112210', 1, 'y', 1, '1122', 20190430, 2, '支付宝充值款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112211', 1, 'y', 1, '1122', 20190430, 2, '微信充值款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112212', 1, 'n', 1, '1122', 20190430, 2, '银联充值款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112213', 1, 'y', 1, '1122', 20190430, 2, '一卡通充值款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112230', 1, 'y', 1, '1122', 20190430, 2, '支付宝支付款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112231', 1, 'y', 1, '1122', 20190430, 2, '微信支付款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112232', 1, 'n', 1, '1122', 20190430, 2, '银联支付款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112233', 1, 'y', 1, '1122', 20190430, 2, '一卡通支付款', 1, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('112234', 1, 'y', 1, '1122', NULL, 2, '市民卡支付款', 1, '{tenantid}');
 --负债
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('2001', 2, 'n', 1, NULL, 20190430, 1, '用户押金', 2, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('2004', 2, 'y', 1, NULL, 20190430, 1, '商户营业款', 2, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('2202', 2, 'y', 0, NULL, 20190430, 1, '应付账款', 2, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('220201', 2, 'y', 1, '2202', 20190430, 2, '个人存款', 2, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('220211', 2, 'n', 1, '2202', 20190430, 2, '销户退款', 2, '{tenantid}');
 --损益
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('6021', 2, 'y', 0, NULL, 20190430, 1, '手续费收入', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('602101', 2, 'y', 1, '6021', 20190430, 2, '支付宝充值手续费', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('602102', 2, 'y', 1, '6021', 20190430, 2, '微信充值手续费', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('602103', 2, 'n', 1, '6021', 20190430, 2, '银联充值手续费', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('6601', 2, 'y', 0, NULL, 20190430, 1, '销售费用', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('660101', 2, 'y', 1, '6601', 20190430, 2, '折扣优惠款', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('660102', 2, 'y', 1, '6601', 20190430, 2, '积分抵扣款', 6, '{tenantid}');
-INSERT INTO "tb_subject" ("subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+INSERT INTO "tb_subject" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
 VALUES ('6602', 2, 'y', 1, NULL, 20190430, 1, '管理费收入', 6, '{tenantid}');
 
 
 
-INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "enable", "charge_enable", "consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('citizenCard', 't', '大理市民卡', 't', 'f', 't', 'f', 't', '{tenantid}');
-INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "enable", "charge_enable", "consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('balance', 'f', '账户余额', 't', 'f', 't', 'f', 't', '{tenantid}');
-INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "enable", "charge_enable", "consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('thirdpart', 'f', '其他第三方支付', 't', 't', 'f', 'f', 'f', '{tenantid}');
-INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "enable", "charge_enable", "consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('yktpay', 't', '一卡通支付', 't', 't', 't', 't', 't', '{tenantid}');
-INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "enable", "charge_enable", "consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('alipay', 't', '支付宝', 't', 't', 't', 't', 'f', '{tenantid}');
-INSERT INTO "tb_sourcetype" ("sourcetype", "checkable", "paydesc", "enable", "charge_enable", "consume_enable", "anonymous_enable", "reversable", "tenantid")
-VALUES ('wechat', 't', '微信支付', 't', 't', 't', 't', 'f', '{tenantid}');
+INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+"consume_enable", "anonymous_enable", "reversable", "tenantid")
+VALUES ('D3820D49DACA49199E36537F6719665F', 'citizenCard', 't', '大理市民卡', 't', 'f', 't', 'f', 't', '{tenantid}');
+INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+"consume_enable", "anonymous_enable", "reversable", "tenantid")
+VALUES ('0997477F40904AD1A2E37FD15345CE00', 'balance', 'f', '账户余额', 't', 'f', 't', 'f', 't', '{tenantid}');
+INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+"consume_enable", "anonymous_enable", "reversable", "tenantid")
+VALUES ('F0CA47ADC0F24DFCA0D95DF4136CC2D0', 'thirdpart', 'f', '其他第三方支付', 't', 't', 'f', 'f', 'f', '{tenantid}');
+INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+"consume_enable", "anonymous_enable", "reversable", "tenantid")
+VALUES ('F5B344726FA24BD896E70DEE3D3F46CA', 'yktpay', 't', '一卡通支付', 't', 't', 't', 't', 't', '{tenantid}');
+INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+"consume_enable", "anonymous_enable", "reversable", "tenantid")
+VALUES ('28EE54CD3B044CC197D6C5B0E309F8B8', 'alipay', 't', '支付宝', 't', 't', 't', 't', 'f', '{tenantid}');
+INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+"consume_enable", "anonymous_enable", "reversable", "tenantid")
+VALUES ('DAEF88B54B684347B2B83940C38C7671', 'wechat', 't', '微信支付', 't', 't', 't', 't', 'f', '{tenantid}');
 
 -- 支付方式
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('yktpay','appid',null,'100005', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('yktpay','appkey',null,'adc4ac6822fd462780f878b86cb94688', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('yktpay','orderurl',null,'http://172.28.201.101:9116/epayapi/services/thirdparty/common/pay', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('yktpay','reverseurl',null,'http://172.28.201.101:9116/epayapi/services/thirdparty/common/payreverse', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'alipay.gateway', '支付宝网关地址', 'https://openapi.alipay.com/gateway.do', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'enable.paymethod', '支付渠道', 'balance,moneyFund,debitCardExpress,bankPay,pcredit', 'f', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'notify.url', '异步通知地址', 'http://ykt.supwisdom.com:9116/epay/zfb/newnotify', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'timeout.express', '支付超时时间', '5m', 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'alipay.public.key', '支付宝商户应用的支付宝公钥', NULL, 'f', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'alipay.rsa.private.key', '支付宝商户应用RSA私钥', NULL, 'f', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'alipay.rsa.public.key', '支付宝商户应用RSA公钥', NULL, 'f', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('alipay', 'appid', '支付宝应用APPID', NULL, 'f', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('citizenCard', 'socket.ip', 'socket的IP', NULL, 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('citizenCard', 'socket.port', 'socket的端口', NULL, 't', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('citizenCard', 'bankcardno', '商户银行卡号', NULL, 'f', '{tenantid}');
-INSERT INTO TB_PAYTYPE_CONFIG (PAYTYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
-VALUES ('citizenCard', 'bankaccname', '银行开户名', NULL, 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('1', 'yktpay','appid','模板','100005', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('2', 'yktpay','appkey','模板','adc4ac6822fd462780f878b86cb94688', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('3', 'yktpay','orderurl','模板','http://172.28.201.101:9116/epayapi/services/thirdparty/common/pay', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('4', 'yktpay','reverseurl','模板','http://172.28.201.101:9116/epayapi/services/thirdparty/common/payreverse', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('5', 'alipay', 'alipay.gateway', '支付宝网关地址', 'https://openapi.alipay.com/gateway.do', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('6', 'alipay', 'enable.paymethod', '支付渠道', 'balance,moneyFund,debitCardExpress,bankPay,pcredit', 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('7', 'alipay', 'notify.url', '异步通知地址', 'http://ykt.supwisdom.com:9116/epay/zfb/newnotify', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('8', 'alipay', 'timeout.express', '支付超时时间', '5m', 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('9', 'alipay', 'alipay.public.key', '支付宝商户应用的支付宝公钥', NULL, 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('10', 'alipay', 'alipay.rsa.private.key', '支付宝商户应用RSA私钥', NULL, 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('11', 'alipay', 'alipay.rsa.public.key', '支付宝商户应用RSA公钥', NULL, 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('12', 'alipay', 'appid', '支付宝应用APPID', NULL, 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('13', 'citizenCard', 'socket.ip', 'socket的IP', NULL, 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('14', 'citizenCard', 'socket.port', 'socket的端口', NULL, 't', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('15', 'citizenCard', 'bankcardno', '商户银行卡号', NULL, 'f', '{tenantid}');
+INSERT INTO TB_SOURCETYPE_CONFIG (ID, SOURCETYPE,CONFIGID,CONFIG_NAME,CONFIG_VALUE,GLOBALFLAG, "tenantid")
+VALUES ('16', 'citizenCard', 'bankaccname', '银行开户名', NULL, 'f', '{tenantid}');
 
 INSERT INTO "tb_syspara" ("paraid", "displayflag", "editflag", "lastsaved", "paraname", "paraunit", "paraval", "remark", "valuetype", "tenantid")
 VALUES (1, 'yes', 1, '20190514165658', '账户最大余额默认值', '元', '10001', '账户开户时的默认账户最大余额', 'amount', '{tenantid}');
diff --git a/payapi/src/main/resources/templates/system/dtl/shopdtl.html b/payapi/src/main/resources/templates/system/dtl/shopdtl.html
index a83361b..ecebe4e 100644
--- a/payapi/src/main/resources/templates/system/dtl/shopdtl.html
+++ b/payapi/src/main/resources/templates/system/dtl/shopdtl.html
@@ -27,7 +27,7 @@
                 <div class="layui-inline">
                     <label class="layui-form-label">支付方式</label>
                     <div class="layui-input-block" style="height: 38px;">
-                        <select name="sourcetype" id="shopdtl-search-sourcetype" class="layui-select">
+                        <select name="sourceType" id="shopdtl-search-sourceType" class="layui-select">
                             <option value=""> 全部</option>
                             <option th:each="pt:${paytypelist}" th:value="${pt.sourceType}"
                                     th:text="${pt.paydesc}"></option>
@@ -184,7 +184,7 @@
                     endTransdate: $("#shopdtl-search-endTransdate").val(),
                     personname: $("#shopdtl-search-personname").val(),
                     shopaccno: $("#shopdtl-search-shopaccno").val(),
-                    sourcetype: $("#shopdtl-search-sourcetype").val(),
+                    sourceType: $("#shopdtl-search-sourceType").val(),
                     tradeflag: $("#shopdtl-search-tradeflag").val(),
                     transcode: $("#shopdtl-search-transcode").val(),
                     transStatus: $("#shopdtl-search-transStatus").val()
@@ -200,7 +200,7 @@
                 "endTransdate": "",
                 "shopname": "",
                 "shopaccno": "",
-                "sourcetype": "",
+                "sourceType": "",
                 "tradeflag": "",
                 "transcode": "",
                 "transStatus": ""
diff --git a/payapi/src/main/resources/templates/system/dtl/userdtl.html b/payapi/src/main/resources/templates/system/dtl/userdtl.html
index ead6ab2..85c7665 100644
--- a/payapi/src/main/resources/templates/system/dtl/userdtl.html
+++ b/payapi/src/main/resources/templates/system/dtl/userdtl.html
@@ -35,7 +35,7 @@
                 <div class="layui-inline">
                     <label class="layui-form-label">支付方式</label>
                     <div class="layui-input-block" style="height: 38px;">
-                        <select name="sourcetype" id="userdtl-search-sourcetype" class="layui-select">
+                        <select name="sourceType" id="userdtl-search-sourceType" class="layui-select">
                             <option value=""> 全部</option>
                             <option th:each="pt:${paytypelist}" th:value="${pt.sourceType}"
                                     th:text="${pt.paydesc}"></option>
@@ -148,7 +148,7 @@
                     endTransdate: $("#userdtl-search-endTransdate").val(),
                     personname: $("#userdtl-search-personname").val(),
                     cardno: $("#userdtl-search-cardno").val(),
-                    sourcetype: $("#userdtl-search-sourcetype").val(),
+                    sourceType: $("#userdtl-search-sourceType").val(),
                     tradeflag: $("#userdtl-search-tradeflag").val(),
                     transcode: $("#userdtl-search-transcode").val(),
                     transStatus: $("#userdtl-search-transStatus").val()
@@ -164,7 +164,7 @@
                 "endTransdate": "",
                 "personname": "",
                 "cardno": "",
-                "sourcetype": "",
+                "sourceType": "",
                 "tradeflag": "",
                 "transcode": "",
                 "transStatus": ""
diff --git a/payapi/src/main/resources/templates/system/param/paytype.html b/payapi/src/main/resources/templates/system/param/sourcetype.html
similarity index 86%
rename from payapi/src/main/resources/templates/system/param/paytype.html
rename to payapi/src/main/resources/templates/system/param/sourcetype.html
index 8c5d102..a288eea 100644
--- a/payapi/src/main/resources/templates/system/param/paytype.html
+++ b/payapi/src/main/resources/templates/system/param/sourcetype.html
@@ -18,7 +18,7 @@
             <button id="btn-reset-param" class="layui-btn layui-btn-primary" data-type="reset"><i class="layui-icon"></i>清 空
             </button>
         </div>
-        <table class="layui-table" id="paytypeTable" lay-filter="paytypeTable-filter"></table>
+        <table class="layui-table" id="sourcetypeTable" lay-filter="sourcetypeTable-filter"></table>
     </div>
 </div>
 
@@ -86,8 +86,8 @@
         var admin = layui.admin;
         // 渲染表格
         table.render({
-            elem: '#paytypeTable',
-            url: '[[@{/param/paytypelist}]]',
+            elem: '#sourcetypeTable',
+            url: '[[@{/param/sourcetypelist}]]',
             page: true,
             cols: [
                 [
@@ -131,7 +131,7 @@
                     },
                     {
                         align: 'center', title: '操作', width: 150, fixed: 'right', templet: function (item) {
-                            if (item.sourceType != 'balance') {
+                            if (item.sourceType !== 'balance') {
                                 return '<a class="layui-btn layui-btn-xs" lay-event="config">配置</a> <a class="layui-btn layui-btn-danger layui-btn-xs" lay-event="del">删除</a>';
                             }
                             return '';
@@ -143,15 +143,15 @@
         // 搜索按钮点击事件
         $('#btn-search-param').click(function () {
             var sourceType = $("#search-global-sourceType").val();
-            table.reload('paytypeTable', {where: {paytype: sourceType}, page: {curr: 1}});
+            table.reload('sourcetypeTable', {where: {sourceType: sourceType}, page: {curr: 1}});
         });
 
         $('#btn-add-param').click(function () {
             admin.popupCenter({
                 title: "新增支付能力",
-                path: '[[@{/param/load4addpaytype}]]',
+                path: '[[@{/param/load4addsourcetype}]]',
                 finish: function () {
-                    table.reload('paytypeTable');
+                    table.reload('sourcetypeTable');
                 }
             });
         });
@@ -163,19 +163,18 @@
         // 修改总状态
         form.on('switch(enable-tpl-state)', function (obj) {
             var token = $("meta[name='_csrf_token']").attr("value");
-            admin.go('[[@{/param/updatepaytypestate}]]', {
-                paytype: obj.elem.value,
+            admin.go('[[@{/param/updatesourcetypestate}]]', {
+                sourceType: obj.elem.value,
                 state: obj.elem.checked,
                 _csrf: token
             }, function (data) {
-                if (data.code == 200) {
+                if (data.code === 200) {
                     layer.msg(data.msg, {icon: 1, time:1000});
-                    table.reload('paytypeTable');
-                } else if (data.code == 401) {
+                    table.reload('sourcetypeTable');
+                } else if (data.code === 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
                         location.replace('[[@{/login}]]');
                     }, 1000);
-                    return;
                 } else {
                     layer.msg(data.msg, {icon: 2});
                     $(obj.elem).prop('checked', !obj.elem.checked);
@@ -215,19 +214,18 @@
 
 
         function updatePaytypeState(obj, optype, token) {
-            admin.go('[[@{/param/updatepaytypestate}]]', {
-                paytype: obj.elem.value,
+            admin.go('[[@{/param/updatesourcetypestate}]]', {
+                sourceType: obj.elem.value,
                 state: obj.elem.checked,
                 optype: optype,
                 _csrf: token
             }, function (data) {
-                if (data.code == 200) {
+                if (data.code === 200) {
                     layer.msg(data.msg, {icon: 1, time: 1000});
-                } else if (data.code == 401) {
+                } else if (data.code === 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
                         location.replace('[[@{/login}]]');
                     }, 1000);
-                    return;
                 } else {
                     layer.msg(data.msg, {icon: 2});
                     $(obj.elem).prop('checked', !obj.elem.checked);
@@ -240,46 +238,45 @@
             });
         }
 
-        table.on('edit(paytypeTable-filter)', function (obj) {
+        table.on('edit(sourcetypeTable-filter)', function (obj) {
             var row = obj.data; //得到所在行所有键值
             var newval = obj.value; //得到修改后的值
-            admin.go('[[@{/param/updatepaytypename}]]', {
-                paytype: row.sourceType,
+            admin.go('[[@{/param/updatesourcetypename}]]', {
+                sourceType: row.sourceType,
                 paydesc: newval,
-                _csrf: $("meta[name='_csrf_token']").attr("value"),
+                _csrf: $("meta[name='_csrf_token']").attr("value")
             }, function (data) {
-                if (data.code == 200) {
+                if (data.code === 200) {
                     layer.msg("修改成功", {icon: 1, time: 1000});
-                } else if (data.code == 401) {
+                } else if (data.code === 401) {
                     layer.msg(data.msg, {icon: 2, time: 1500}, function () {
                         location.replace('[[@{/login}]]');
                     }, 1000);
-                    return;
                 } else {
                     layer.msg(data.msg, {icon: 2});
-                    table.reload('paytypeTable');
+                    table.reload('sourcetypeTable');
                 }
             },function () {
                 layer.msg('修改失败了,请稍后再试', {icon: 2});
-                table.reload('paytypeTable');
+                table.reload('sourcetypeTable');
             });
         })
 
         //监听单元格
-        table.on('tool(paytypeTable-filter)', function (obj) {
+        table.on('tool(sourcetypeTable-filter)', function (obj) {
             var data = obj.data;
-            if('del' == obj.event){
+            if('del' === obj.event){
                 if (confirm("确定要删除支付方式[" + data.sourceType + "_" + data.paydesc + "]吗?")) {
                     layer.load(2);
-                    admin.go('[[@{/param/deletepaytype}]]', {
-                        paytype: data.sourceType,
+                    admin.go('[[@{/param/deletesourcetype}]]', {
+                        sourceType: data.sourceType,
                         _csrf: $("meta[name='_csrf_token']").attr("value")
                     }, function (data) {
                         console.log(data.code);
                         layer.closeAll('loading');
-                        if (data.code == 200) {
+                        if (data.code === 200) {
                             layer.msg(data.msg, {icon: 1, time: 1000});
-                        } else if (data.code == 401) {
+                        } else if (data.code === 401) {
                             layer.msg(data.msg, {icon: 2, time: 1500}, function () {
                                 location.replace('[[@{/login}]]');
                             }, 1000);
@@ -287,20 +284,20 @@
                         } else {
                             layer.msg(data.msg, {icon: 2});
                         }
-                        table.reload('paytypeTable');
+                        table.reload('sourcetypeTable');
                     }, function (ret) {
                         console.log(ret);
                         layer.closeAll('loading');
                         layer.msg('请求失败了,请稍后再试', {icon: 2});
                     });
                 }
-            }else if('config' ==obj.event){
+            }else if('config' ===obj.event){
                 admin.popupCenter({
                     title: "配置参数【" + data.sourceType + "_" + data.paydesc + "】",
-                    path: '[[@{/param/load4paytypeconfig}]]?paytype='+data.sourceType,
+                    path: '[[@{/param/load4sourcetypeconfig}]]?sourceType='+data.sourceType,
                     area: '800px',
                     finish: function () {
-                        table.reload('paytypeTable');
+                        table.reload('sourcetypeTable');
                     }
                 });
             }
diff --git a/payapi/src/main/resources/templates/system/param/paytypeconfig.html b/payapi/src/main/resources/templates/system/param/sourcetypeconfig.html
similarity index 85%
rename from payapi/src/main/resources/templates/system/param/paytypeconfig.html
rename to payapi/src/main/resources/templates/system/param/sourcetypeconfig.html
index ad6c9cf..502a3be 100644
--- a/payapi/src/main/resources/templates/system/param/paytypeconfig.html
+++ b/payapi/src/main/resources/templates/system/param/sourcetypeconfig.html
@@ -1,6 +1,6 @@
 <form id="sourceType-config-form" lay-filter="sourceType-config-form" class="layui-form model-form">
     <div class="layui-form-item" style="display: none;">
-        <input type="hidden" class="layui-input" id="hid_paytype" th:value="${paytype}"/>
+        <input type="hidden" class="layui-input" id="hid_sourcetype" th:value="${sourceType}"/>
     </div>
 
     <div class="layui-form-item" style="text-align: center;" th:if="${configlist.size()} le 0">
@@ -32,35 +32,34 @@
         form.on('submit(form-submit)', function (data) {
             layer.load(2);
             var vdata = data.field;
-            if(JSON.stringify(vdata)=="{}"){
+            if(JSON.stringify(vdata)==="{}"){
                 layer.closeAll('loading');
                 admin.closePopupCenter();
                 return; //无配置项,直接关闭
             }
             var token=$("meta[name='_csrf_token']").attr("value");
-            vdata["hid_paytype"] = $("#hid_paytype").val();
-            console.log('addpaytype:',vdata);
+            vdata["hid_sourcetype"] = $("#hid_sourcetype").val();
+            console.log('addsourcetype:',vdata);
             debugger
             $.ajax({
                 type : "POST",
                 dataType : "json",
-                url : '[[@{/param/addpaytypeconfig}]]',
+                url : '[[@{/param/addsourcetypeconfig}]]',
                 headers: {
                     'Accept': 'application/json',
                     'Content-Type': 'application/json',
-                    'X-CSRF-TOKEN':token,
+                    'X-CSRF-TOKEN':token
                 },
                 data : JSON.stringify(vdata),
                 success : function(result) {
                     layer.closeAll('loading');
-                    if (result.code == 200) {
+                    if (result.code === 200) {
                         layer.msg(result.msg, {icon: 1});
                         admin.finishPopupCenter();
-                    } else if (result.code == 401) {
+                    } else if (result.code === 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
                             location.replace('[[@{/login}]]');
                         }, 1000);
-                        return;
                     } else {
                         console.log('err:' + result.code);
                         layer.msg(result.msg, {icon: 2});
diff --git a/payapi/src/main/resources/templates/system/param/paytypeform.html b/payapi/src/main/resources/templates/system/param/sourcetypeform.html
similarity index 75%
rename from payapi/src/main/resources/templates/system/param/paytypeform.html
rename to payapi/src/main/resources/templates/system/param/sourcetypeform.html
index 1ec0c3d..f3650db 100644
--- a/payapi/src/main/resources/templates/system/param/paytypeform.html
+++ b/payapi/src/main/resources/templates/system/param/sourcetypeform.html
@@ -2,7 +2,7 @@
     <div class="layui-form-item">
         <label class="layui-form-label">支付方式</label>
         <div class="layui-input-block">
-            <input name="paytype" placeholder="请输入支付方式代码" type="text" class="layui-input" maxlength="20"
+            <input name="sourceType" placeholder="请输入支付方式代码" type="text" class="layui-input" maxlength="20"
                    lay-verify="required|sourceType" required/>
         </div>
     </div>
@@ -16,48 +16,54 @@
     <div class="layui-form-item">
         <label class="layui-form-label">状态</label>
         <div class="layui-input-block">
-            <input name="enable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+            <input name="enable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes"
+                   lay-verify="required" checked/>
         </div>
     </div>
 
     <div class="layui-form-item">
         <label class="layui-form-label">能否充值</label>
         <div class="layui-input-block">
-            <input name="chargeEnable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+            <input name="chargeEnable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes"
+                   lay-verify="required" checked/>
         </div>
     </div>
 
     <div class="layui-form-item">
         <label class="layui-form-label">能否消费</label>
         <div class="layui-input-block">
-            <input name="consumeEnable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+            <input name="consumeEnable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes"
+                   lay-verify="required" checked/>
         </div>
     </div>
 
     <div class="layui-form-item">
         <label class="layui-form-label">匿名消费</label>
         <div class="layui-input-block">
-            <input name="anonymousEnable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+            <input name="anonymousEnable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes"
+                   lay-verify="required" checked/>
         </div>
     </div>
 
     <div class="layui-form-item">
         <label class="layui-form-label">能否冲正</label>
         <div class="layui-input-block">
-            <input name="reversable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+            <input name="reversable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes"
+                   lay-verify="required" checked/>
         </div>
     </div>
 
     <div class="layui-form-item">
         <label class="layui-form-label">是否清算</label>
         <div class="layui-input-block">
-            <input name="checkable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes" lay-verify="required" checked/>
+            <input name="checkable" type="checkbox" lay-skin="switch" lay-text="启用|关闭" value="yes"
+                   lay-verify="required" checked/>
         </div>
     </div>
 
     <div class="layui-form-item model-form-footer">
         <button class="layui-btn layui-btn-primary" type="button" ew-event="closeDialog">取消</button>
-        <button class="layui-btn" lay-filter="form-submit" lay-submit  id="submitbtn">保存</button>
+        <button class="layui-btn" lay-filter="form-submit" lay-submit id="submitbtn">保存</button>
     </div>
 </form>
 
@@ -73,13 +79,13 @@
                 var msg = "";
                 $.ajax({
                     type: "GET",
-                    url: '[[@{/param/checkpaytype}]]',
+                    url: '[[@{/param/checksourcetype}]]',
                     async: false,
                     data: {
-                        paytype: e
+                        sourceType: e
                     },
                     success: function (result) {
-                        if (result.code != 200) {
+                        if (result.code !== 200) {
                             msg = result.msg;
                         }
                     },
@@ -87,7 +93,7 @@
                         msg = "请求服务器校验支付方式失败";
                     }
                 });
-                if (msg != "") {
+                if (msg !== "") {
                     return msg;
                 }
             }
@@ -99,26 +105,25 @@
             var vdata = data.field;
             vdata["_csrf"] = $("meta[name='_csrf_token']").attr("value");
             $.ajax({
-                type : "POST",
-                dataType : "json",
-                url : '[[@{/param/addpaytype}]]',
-                data : vdata,
-                success : function(result) {
+                type: "POST",
+                dataType: "json",
+                url: '[[@{/param/addsourcetype}]]',
+                data: vdata,
+                success: function (result) {
                     layer.closeAll('loading');
-                    if (result.code == 200) {
+                    if (result.code === 200) {
                         layer.msg(result.msg, {icon: 1});
                         admin.finishPopupCenter();
-                    } else if (result.code == 401) {
+                    } else if (result.code === 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
                             location.replace('[[@{/login}]]');
                         }, 1000);
-                        return;
                     } else {
                         console.log('err:' + result.code);
                         layer.msg(result.msg, {icon: 2});
                     }
                 },
-                error : function(err){
+                error: function (err) {
                     admin.errorBack(err);
                 }
             });
diff --git a/payapi/src/main/resources/templates/system/report/subjectday.html b/payapi/src/main/resources/templates/system/report/subjectday.html
index 41cdf17..bcff987 100644
--- a/payapi/src/main/resources/templates/system/report/subjectday.html
+++ b/payapi/src/main/resources/templates/system/report/subjectday.html
@@ -78,7 +78,7 @@
                 title: '科目汇总表',
                 treeColIndex: 0,
                 treeSpid: '-1',
-                treeIdName: 'subjno',
+                treeIdName: 'subjid',
                 treePidName: 'fsubjno',
                 treeDefaultClose: false,
                 treeLinkage: false,
@@ -90,7 +90,7 @@
                 toolbar:'#subjectday-toolbar',
                 cols: [
                     [
-                        {field: 'subjno', title: '科目号', align: 'left', rowspan: 2},
+                        {field: 'subjid', title: '科目号', align: 'left', rowspan: 2},
                         {
                             field: 'subjname', title: '科目名称', align: 'left', rowspan: 2, templet: function (d) {
                                 if (d.subjlevel == 1) {
@@ -115,7 +115,7 @@
                 ],
                 // cols: [
                 //     [
-                //         {field: 'subjno', title: '科目号', align: 'left'},
+                //         {field: 'subjid', title: '科目号', align: 'left'},
                 //         {
                 //             field: 'subjname', title: '科目名称', align: 'left', templet: function (d) {
                 //                 if (d.subjlevel == 1) {
diff --git a/payapi/src/main/resources/templates/system/report/subjectdetail.html b/payapi/src/main/resources/templates/system/report/subjectdetail.html
index 7776301..b8956f2 100644
--- a/payapi/src/main/resources/templates/system/report/subjectdetail.html
+++ b/payapi/src/main/resources/templates/system/report/subjectdetail.html
@@ -26,7 +26,7 @@
                 <div class="layui-inline">
                     <label class="layui-form-label">选择科目</label>
                     <div class="layui-input-block">
-                        <input type="text" name="subjno" id="subjectdetail-search-subjno" placeholder="选择科目" lay-filter="subjectdetail-search-subjno-filter"
+                        <input type="text" name="subjid" id="subjectdetail-search-subjid" placeholder="选择科目" lay-filter="subjectdetail-search-subjid-filter"
                                autocomplete="off" class="layui-input"/>
                     </div>
                 </div>
@@ -70,7 +70,7 @@
         });
 
         treeSelect.render({
-            elem: '#subjectdetail-search-subjno',
+            elem: '#subjectdetail-search-subjid',
             data: '[[@{/report/subjectselecttree}]]',
             type: 'get',
             placeholder: '选择科目',
@@ -89,8 +89,8 @@
                 console.log(treeNode);
                 if(treeNode.accno == '0'){
                     layer.msg("请选择末级科目", {icon: 2, time:1500});
-                    $("#subjectdetail-search-subjno").val("");
-                    treeSelect.revokeNode('subjectdetail-search-subjno-filter');
+                    $("#subjectdetail-search-subjid").val("");
+                    treeSelect.revokeNode('subjectdetail-search-subjid-filter');
                     return false;
                 }
                 return true;
@@ -139,14 +139,14 @@
         renderTable({
             startdate: $('#subjectdetail-search-startdate').val(),
             enddate: $('#subjectdetail-search-enddate').val(),
-            subjno: null
+            subjid: null
         })
 
 
         $('#subjectdetail-search-btn').click(function () {
             var startdate = $("#subjectdetail-search-startdate").val();
             var enddate = $("#subjectdetail-search-enddate").val();
-            var subjno = $("#subjectdetail-search-subjno").val();
+            var subjid = $("#subjectdetail-search-subjid").val();
             if (null == startdate || "" == $.trim(startdate)) {
                 layer.msg('请选择起始日期', {icon: 2, time: 1500});
                 return;
@@ -155,7 +155,7 @@
                 layer.msg('请选择截止日期', {icon: 2, time: 1500});
                 return;
             }
-            if (null == subjno || "" == $.trim(subjno)) {
+            if (null == subjid || "" == $.trim(subjid)) {
                 layer.msg('请选择科目', {icon: 2, time: 1500});
                 return;
             }
@@ -163,7 +163,7 @@
             renderTable({
                 startdate: startdate,
                 enddate: enddate,
-                subjno: subjno
+                subjid: subjid
             })
         });
 
diff --git a/payapi/src/main/resources/templates/system/shop/config.html b/payapi/src/main/resources/templates/system/shop/config.html
index 56400e7..b8acc1d 100644
--- a/payapi/src/main/resources/templates/system/shop/config.html
+++ b/payapi/src/main/resources/templates/system/shop/config.html
@@ -28,12 +28,12 @@
                                 <option th:each="pt:${paytypelist}" th:value="${pt.sourceType}"
                                         th:text="${pt.paydesc}"></option>
                             </select>&emsp;
-                            <button id="btn-search-shoppaytype" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
+                            <button id="btn-search-shopsourcetype" class="layui-btn icon-btn" data-type="search"><i class="layui-icon">&#xe615;</i>搜索
                             </button>
-                            <button id="btn-add-shoppaytype" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe654;</i>新
+                            <button id="btn-add-shopsourcetype" class="layui-btn icon-btn" data-type="add"><i class="layui-icon">&#xe654;</i>新

                             </button>
-                            <button id="btn-reset-shoppaytype" class="layui-btn layui-btn-primary" data-type="reset"><i
+                            <button id="btn-reset-shopsourcetype" class="layui-btn layui-btn-primary" data-type="reset"><i
                                     class="layui-icon"></i>清 空
                             </button>
                         </div>
@@ -47,22 +47,22 @@
 
 <!-- 表格状态列 -->
 <script type="text/html" id="shop-consumeenable-tpl-state">
-    <input type="checkbox" lay-filter="shop-consumeenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+    <input type="checkbox" lay-filter="shop-consumeenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
            {{d.consumeEnable==true?'checked':''}}/>
 </script>
 <script type="text/html" id="shop-anonymousenable-tpl-state">
     {{# if(d.consumeEnable == true ){ }}
-    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch"
+    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch"
            lay-text="启用|关闭"
            {{(d.consumeEnable==true && d.anonymousEnable==true)?'checked':''}}/>
     {{# }else{ }}
-    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch"
+    <input type="checkbox" lay-filter="shop-anonymousenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch"
            lay-text="启用|关闭"
            {{(d.consumeEnable==true && d.anonymousEnable==true)?'checked':''}} disabled/>
     {{# } }}
 </script>
 <script type="text/html" id="shop-reverseenable-tpl-state">
-    <input type="checkbox" lay-filter="shop-reverseenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.paytype}}" lay-skin="switch" lay-text="启用|关闭"
+    <input type="checkbox" lay-filter="shop-reverseenable-tpl-state" value="{{d.shopaccno}}" def-sourceType="{{d.sourceType}}" lay-skin="switch" lay-text="启用|关闭"
            {{d.reverseEnable==true?'checked':''}}/>
 </script>
 
@@ -106,13 +106,13 @@
             layer.msg('查询商户树失败了,请稍后再试', {icon: 2});
         });
 
-        $('#btn-reset-shoppaytype').click(function () {
+        $('#btn-reset-shopsourcetype').click(function () {
             $("#search-sourceType").val("");
             form.render('select');
         });
-        $('#btn-search-shoppaytype').click(function(){
+        $('#btn-search-shopsourcetype').click(function(){
             var ptype = $("#search-sourceType").val();
-            table.reload('shopPaytypeTable', {where: {paytype: ptype, shopaccno:""}, page: {curr: 1}});
+            table.reload('shopPaytypeTable', {where: {sourceType: ptype, shopaccno:""}, page: {curr: 1}});
         });
 
         function ondblclick(event, treeId, treeNode) {
@@ -121,13 +121,13 @@
                 return;
             }
             var ptype = $("#search-sourceType").val();
-            table.reload('shopPaytypeTable', {where: {paytype: ptype, shopaccno: treeNode.shopaccno}, page: {curr: 1}});
+            table.reload('shopPaytypeTable', {where: {sourceType: ptype, shopaccno: treeNode.shopaccno}, page: {curr: 1}});
         }
 
         // 渲染表格
         table.render({
             elem: '#shopPaytypeTable',
-            url: '[[@{/shop/shoppaytypelist}]]',
+            url: '[[@{/shop/shopsourcetypelist}]]',
             page: true,
             width: 1010,
             cols: [
@@ -160,7 +160,7 @@
                         sort: true
                     },
                     {align: 'center', title: '操作', width: 90, fixed: 'right', templet: function (item) {
-                            if (item.paytype !== 'balance') {
+                            if (item.sourceType !== 'balance') {
                                 return '<a class="layui-btn layui-btn-xs" lay-event="config">配置</a>';
                             }
                             return '<span style="font-size: 12px;color: #D3D4D3;">无配置</span>';
@@ -173,9 +173,9 @@
         // 修改总状态
         form.on('switch(shop-consumeenable-tpl-state)', function (obj) {
             var token = $("meta[name='_csrf_token']").attr("value");
-            admin.go('[[@{/shop/updatepaytypestat}]]', {
+            admin.go('[[@{/shop/updatesourcetypestat}]]', {
                 shopaccno: obj.elem.value,
-                paytype: $(obj.elem).attr("def-sourceType"),
+                sourceType: $(obj.elem).attr("def-sourceType"),
                 optype: "consume",
                 state: obj.elem.checked ? 'yes' : 'no',
                 _csrf: token
@@ -210,9 +210,9 @@
         });
 
         function updateShopPaytypeState(obj, optype, token) {
-            admin.go('[[@{/shop/updatepaytypestat}]]', {
+            admin.go('[[@{/shop/updatesourcetypestat}]]', {
                 shopaccno: obj.elem.value,
-                paytype: $(obj.elem).attr("def-sourceType"),
+                sourceType: $(obj.elem).attr("def-sourceType"),
                 state: obj.elem.checked ? 'yes' : 'no',
                 optype: optype,
                 _csrf: token
@@ -235,7 +235,7 @@
             });
         }
 
-        $('#btn-add-shoppaytype').click(function () {
+        $('#btn-add-shopsourcetype').click(function () {
             var ztree = $.fn.zTree.getZTreeObj("shopacctree");
             var shopNodes = ztree.getSelectedNodes();
             if (undefined === shopNodes || null == shopNodes || shopNodes.length < 1) {
@@ -247,16 +247,16 @@
                 layer.msg("请选择结算商户!", {icon: 2, time: 1000});
                 return;
             }
-            admin.putTempData('t_addshoppaytype', {
+            admin.putTempData('t_addshopsourcetype', {
                 shopaccno:shopNode.shopaccno,
                 shopname: shopNode.name.slice(shopNode.id.length+1)  //23_第一食堂,截取商户名称
             });
             admin.popupCenter({
                 title: "新增支付能力",
-                path: '[[@{/shop/load4addpaytype}]]',
+                path: '[[@{/shop/load4addsourcetype}]]',
                 finish: function () {
                     table.reload('shopPaytypeTable', {
-                        where: {paytype: "", shopaccno: shopNode.shopaccno},
+                        where: {sourceType: "", shopaccno: shopNode.shopaccno},
                         page: {curr: 1}
                     });
                 }
@@ -269,7 +269,7 @@
             if ('config' === obj.event) {
                 admin.popupCenter({
                     title: "配置参数【" + data.shopname + "_" + data.paydesc + "】",
-                    path: '[[@{/shop/load4paytypepara}]]?shopaccno=' + data.shopaccno + '&paytype=' + data.paytype,
+                    path: '[[@{/shop/load4sourcetypepara}]]?shopaccno=' + data.shopaccno + '&sourceType=' + data.sourceType,
                     area: '800px',
                     finish: function () {
                         table.reload('shopPaytypeTable');
diff --git a/payapi/src/main/resources/templates/system/shop/configform.html b/payapi/src/main/resources/templates/system/shop/configform.html
index e0bd620..0532b6a 100644
--- a/payapi/src/main/resources/templates/system/shop/configform.html
+++ b/payapi/src/main/resources/templates/system/shop/configform.html
@@ -14,7 +14,7 @@
     <div class="layui-form-item">
         <label class="layui-form-label">支付方式</label>
         <div class="layui-input-block">
-            <select name="paytype" lay-verify="required">
+            <select name="sourceType" lay-verify="required">
                 <option th:each="pt:${paytypelist}" th:value="${pt.sourceType}"
                         th:text="${pt.paydesc}"></option>
             </select>&emsp;
@@ -57,7 +57,7 @@
         form.render('checkbox');
         form.render('select');
         // 回显数据
-        var shop = admin.getTempData('t_addshoppaytype');
+        var shop = admin.getTempData('t_addshopsourcetype');
         if (shop) {
             form.val('shop-sourceType-form', {
                 shopaccno: shop.shopaccno,
@@ -73,18 +73,17 @@
             $.ajax({
                 type : "POST",
                 dataType : "json",
-                url : '[[@{/shop/addshoppaytype}]]',
+                url : '[[@{/shop/addshopsourcetype}]]',
                 data : vdata,
                 success : function(result) {
                     layer.closeAll('loading');
-                    if (result.code == 200) {
+                    if (result.code === 200) {
                         layer.msg(result.msg, {icon: 1});
                         admin.finishPopupCenter();
-                    } else if (result.code == 401) {
+                    } else if (result.code === 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
                             location.replace('[[@{/login}]]');
                         }, 1000);
-                        return;
                     } else {
                         console.log('err:', result);
                         layer.msg(result.msg, {icon: 2});
diff --git a/payapi/src/main/resources/templates/system/shop/configpara.html b/payapi/src/main/resources/templates/system/shop/configpara.html
index 6e77151..dcaeb05 100644
--- a/payapi/src/main/resources/templates/system/shop/configpara.html
+++ b/payapi/src/main/resources/templates/system/shop/configpara.html
@@ -1,7 +1,8 @@
-<form id="shop-sourceType-config-form" lay-filter="shop-sourceType-config-form" class="layui-form model-form">
+<form id="shop-sourceType-config-form" lay-filter="shop-sourceType-config-form" class="layui-form model-form"
+      xmlns:th="http://www.w3.org/1999/xhtml">
     <div class="layui-form-item" style="display: none;">
         <input type="hidden" class="layui-input" id="hid_shopaccno" th:value="${shopaccno}"/>
-        <input type="hidden" class="layui-input" id="hid_paytype" th:value="${paytype}"/>
+        <input type="hidden" class="layui-input" id="hid_sourcetype" th:value="${sourcetype}"/>
     </div>
 
     <div class="layui-form-item" style="text-align: center;" th:if="${configlist.size()} le 0">
@@ -33,36 +34,35 @@
         form.on('submit(form-submit)', function (data) {
             layer.load(2);
             var vdata = data.field;
-            if(JSON.stringify(vdata)=="{}"){
+            if(JSON.stringify(vdata)==="{}"){
                 layer.closeAll('loading');
                 admin.closePopupCenter();
                 return; //无配置项,直接关闭
             }
             var token = $("meta[name='_csrf_token']").attr("value");
-            vdata["hid_paytype"] = $("#hid_paytype").val();
+            vdata["hid_sourcetype"] = $("#hid_sourcetype").val();
             vdata["hid_shopaccno"] = $("#hid_shopaccno").val();
             console.log('addShopPaytype:', vdata);
             debugger
             $.ajax({
                 type : "POST",
                 dataType : "json",
-                url : '[[@{/shop/addpaytypepara}]]',
+                url : '[[@{/shop/addsourcetypepara}]]',
                 headers: {
                     'Accept': 'application/json',
                     'Content-Type': 'application/json',
-                    'X-CSRF-TOKEN':token,
+                    'X-CSRF-TOKEN':token
                 },
                 data : JSON.stringify(vdata),
                 success : function(result) {
                     layer.closeAll('loading');
-                    if (result.code == 200) {
+                    if (result.code === 200) {
                         layer.msg(result.msg, {icon: 1});
                         admin.finishPopupCenter();
-                    } else if (result.code == 401) {
+                    } else if (result.code === 401) {
                         layer.msg(result.msg, {icon: 2, time: 1500}, function () {
                             location.replace('[[@{/login}]]');
                         }, 1000);
-                        return;
                     } else {
                         console.log('err:' + result.code);
                         layer.msg(result.msg, {icon: 2});