refactor: 将paytype 改为sourcetype
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/OperatorDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/OperatorDao.java
index 27b511f..3563a48 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/OperatorDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/OperatorDao.java
@@ -12,5 +12,6 @@
 public interface OperatorDao extends JpaRepository<TOperator, String>, JpaSpecificationExecutor<TOperator> {
   TOperator findByOpercode(String opercode);
 
+  TOperator findByOperid(String operid);
 
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java
index af782a8..1bd85c4 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PermissionDao.java
@@ -3,9 +3,13 @@
 import com.supwisdom.dlpay.framework.domain.TPermission;
 import org.springframework.data.jpa.repository.JpaRepository;
 
+import java.util.List;
+
 public interface PermissionDao extends JpaRepository<TPermission, String> {
 
     TPermission findByRoleIdAndResid(String roleId, Integer resid);
 
+    List<TPermission> findByRoleId(String roleId);
+
     void deleteByRoleId(String roleId);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
index 9ccc7c9..1e4e925 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/RoleDao.java
@@ -11,16 +11,16 @@
 
 @Repository
 public interface RoleDao extends JpaRepository<TRole, String> {
-    @Query("from TRole order by createtime asc ")
-    List<TRole> getAllRoles();
+  @Query("from TRole order by createtime asc ")
+  List<TRole> getAllRoles();
 
-    TRole findByRoleCode(String roleCode);
+  TRole findByRoleCode(String roleCode);
 
-    Page<TRole> findAllByRoleNameContaining(String roleName, Pageable pageable);
+  Page<TRole> findAllByRoleNameContaining(String roleName, Pageable pageable);
 
-    TRole findByRoleNameAndRoleIdNot(String roleName, String roleId);
+  TRole findByRoleNameAndRoleIdNot(String roleName, String roleId);
 
-    TRole findByRoleCodeAndRoleIdNot(String roleCode, String roleId);
+  TRole findByRoleCodeAndRoleIdNot(String roleCode, String roleId);
 
-    TRole findByRoleName(String roleName);
+  TRole findByRoleName(String roleName);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
index 9ffe634..a9c2b05 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TApiClient.java
@@ -2,29 +2,37 @@
 
 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 
-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_APICLIENT")
+@Table(name = "TB_APICLIENT",
+    indexes = {@Index(name = "apiclient_idx", columnList = "appid, tenantid", unique = true)})
 public class TApiClient {
   @Id
-  @Column(name = "appid", nullable = false, length = 20)
+  @SequenceGenerator(name = "apiclient_id", sequenceName = "SEQ_APICLIENT", allocationSize = 1, initialValue = 10)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "apiclient_id")
+  @Column(name = "id")
+  @NotNull
+  private Integer id;
+
+  @Column(name = "appid", length = 20)
+  @NotNull
   private String appid;
 
-  @Column(name = "secret", nullable = false, length = 64)
+  @Column(name = "secret", length = 64)
+  @NotNull
   private String secret;
 
-  @Column(name = "status", nullable = false, length = 10)
+  @Column(name = "status", length = 10)
+  @NotNull
   private String status;
 
   @Column(name = "roles", length = 300)
   private String roles;
 
-  @Column(name = "BCRYPT_SECRET", nullable = false, length = 64)
+  @Column(name = "BCRYPT_SECRET", length = 64)
+  @NotNull
   private String bcryptSecret;
 
   @Column(name = "THIRDURL", length = 200)
@@ -87,4 +95,12 @@
   public void setTenantId(String tenantId) {
     this.tenantId = tenantId;
   }
+
+  public Integer getId() {
+    return id;
+  }
+
+  public void setId(Integer id) {
+    this.id = id;
+  }
 }
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 17ca2dd..29e2e13 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
@@ -1,11 +1,13 @@
 package com.supwisdom.dlpay.framework.domain;
 
+import com.supwisdom.dlpay.api.annotation.MobileNumber;
 import com.supwisdom.dlpay.framework.util.TradeDict;
 import org.hibernate.annotations.GenericGenerator;
 import org.springframework.security.core.GrantedAuthority;
 import org.springframework.security.core.userdetails.UserDetails;
 
 import javax.persistence.*;
+import javax.validation.constraints.Email;
 import javax.validation.constraints.NotNull;
 import java.util.Collection;
 
@@ -44,9 +46,11 @@
   private String sex;
 
   @Column(name = "MOBILE", length = 20)
+  @MobileNumber(message = "请输入正确手机号")
   private String mobile;
 
   @Column(name = "EMAIL", length = 60)
+  @Email(message = "请输入正确邮箱")
   private String email;
 
   @Column(name = "OPENDATE", length = 8)
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 31f2481..35f0044 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
@@ -7,7 +7,7 @@
 
 @Entity
 @Table(name = "TB_PERMISSION",
-    indexes = {@Index(name = "permission_idx", columnList = "role_func_id, tenantid", unique = true)})
+    indexes = {@Index(name = "permission_idx", columnList = "resid, roleid, tenantid", unique = true)})
 public class TPermission {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
index 911ca71..b64e0e9 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
@@ -6,7 +6,8 @@
 import javax.validation.constraints.NotNull;
 
 @Entity
-@Table(name = "TB_ROLE_FUNCTION")
+@Table(name = "TB_ROLE_FUNCTION",
+    indexes = {@Index(name = "role_funcation_idx", columnList = "roleid, functionid, tenantid", unique = true)})
 public class TRoleFunction {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -22,9 +23,6 @@
   @NotNull
   private Integer functionId;
 
-  @Column(name = "PERMISSIONS", length = 200)
-  private String permissions;
-
   @Column(name = "tenantid", length = 20)
   @NotNull
   private String tenantId;
@@ -53,14 +51,6 @@
     this.functionId = functionId;
   }
 
-  public String getPermissions() {
-    return permissions;
-  }
-
-  public void setPermissions(String permissions) {
-    this.permissions = permissions;
-  }
-
   public String getTenantId() {
     return tenantId;
   }
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 3a16f18..ba54f21 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
@@ -10,10 +10,11 @@
     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 = "subjid")
+  @NotNull
+  @SequenceGenerator(name = "subjectid", sequenceName = "SEQ_SUBJECTID", allocationSize = 1, initialValue = 1000)
+  @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "subjectid")
+  private Integer id;
 
   @Column(name = "SUBJNO", nullable = false, length = 10)
   private String subjno;
@@ -127,11 +128,11 @@
     this.tenantId = tenantId;
   }
 
-  public String getId() {
+  public Integer getId() {
     return id;
   }
 
-  public void setId(String id) {
+  public void setId(Integer id) {
     this.id = id;
   }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
index 8a5a1c1..508361c 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/OperatorServiceImpl.java
@@ -91,11 +91,10 @@
         operRoleDao.save(operRole);
       }
     } else {
-      Optional<TOperator> temp = operatorDao.findById(operator.getOperid());
-      if (!temp.isPresent()) {
+      TOperator op = operatorDao.findByOperid(operator.getOperid());
+      if (op == null) {
         return false;
       }
-      TOperator op = temp.get();
       op.setSex(operator.getSex());
       op.setEmail(operator.getEmail());
       op.setMobile(operator.getMobile());
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
index 3d83ae5..ce04c41 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/RoleServiceImpl.java
@@ -14,6 +14,8 @@
 import com.supwisdom.dlpay.system.bean.FunctionSearchBean;
 import com.supwisdom.dlpay.system.bean.ZTreeNode;
 import com.supwisdom.dlpay.system.service.RoleService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.domain.Pageable;
@@ -26,6 +28,8 @@
 
 @Service
 public class RoleServiceImpl implements RoleService {
+  private Logger logger = LoggerFactory.getLogger(RoleServiceImpl.class);
+
   @Autowired
   private RoleDao roleDao;
 
@@ -91,7 +95,6 @@
       temp = opt.get();
       temp.setRoleName(role.getRoleName());
       temp.setRoleDesc(role.getRoleDesc());
-//      temp.setRoleCode(role.getRoleCode());
       temp.setLastsaved(DateUtil.getNow());
       temp.setTenantId(TenantContext.getTenantSchema());
       roleDao.save(temp);
@@ -121,32 +124,63 @@
     return permissionDao.findByRoleIdAndResid(roleFuncId, resid);
   }
 
+  private TPermission findOrNewPermission(List<TPermission> exists, String roleId, Integer resId) {
+    for (TPermission item : exists) {
+      if (resId.equals(item.getResid())) {
+        return item;
+      }
+    }
+
+    TPermission perm = new TPermission();
+    perm.setRoleId(roleId);
+    perm.setResid(resId);
+    perm.setTenantId(TenantContext.getTenantSchema());
+    return perm;
+  }
+
+  private TRoleFunction findOrNewRoleFunction(List<TRoleFunction> exists, String roleId, Integer funcId) {
+    for (TRoleFunction item : exists) {
+      if (funcId.equals(item.getFunctionId())) {
+        return item;
+      }
+    }
+    TRoleFunction func = new TRoleFunction();
+    func.setFunctionId(funcId);
+    func.setRoleId(roleId);
+    func.setTenantId(TenantContext.getTenantSchema());
+    return func;
+  }
+
   @Override
   public JsonResult saveRoleFuncId(String roleId, String funcs) {
     Optional<TRole> ret = roleDao.findById(roleId);
-    if (ret == null || !ret.isPresent()) {
+    if (!ret.isPresent()) {
       return JsonResult.error("角色不存在");
     }
-    roleFunctionDao.deleteByRoleId(roleId);
-    permissionDao.deleteByRoleId(roleId);
+    List<TRoleFunction> functions = roleFunctionDao.findByRoleId(roleId);
+    List<TPermission> permissions = permissionDao.findByRoleId(roleId);
+    ArrayList<TRoleFunction> retainFuncs = new ArrayList<>();
+    ArrayList<TPermission> retainPerms = new ArrayList<>();
     String[] datas = funcs.split(",");
     for (String func : datas) {
       if (func.contains("_res")) {
         String id = func.replace("_res", "");
-        TPermission permission = new TPermission();
-        permission.setResid(Integer.valueOf(id));
-        permission.setRoleId(roleId);
-        permission.setTenantId(TenantContext.getTenantSchema());
-        permissionDao.save(permission);
+        retainPerms.add(findOrNewPermission(permissions, roleId, Integer.parseInt(id)));
       } else {
-        if("-1".equals(func)) continue; //全选排除
-        TRoleFunction roleFunction = new TRoleFunction();
-        roleFunction.setFunctionId(Integer.valueOf(func));
-        roleFunction.setRoleId(roleId);
-        roleFunction.setTenantId(TenantContext.getTenantSchema());
-        roleFunctionDao.save(roleFunction);
+        if ("-1".equals(func)) continue; //全选排除
+        retainFuncs.add(findOrNewRoleFunction(functions, roleId, Integer.parseInt(func)));
       }
     }
+    // funcations
+    functions.removeAll(retainFuncs);
+    if (functions.size() > 0)
+      roleFunctionDao.deleteAll(functions);
+    roleFunctionDao.saveAll(retainFuncs);
+    // permissions
+    permissions.removeAll(retainPerms);
+    if (permissions.size() > 0)
+      permissionDao.deleteAll(permissions);
+    permissionDao.saveAll(retainPerms);
     return JsonResult.ok("成功");
   }
 
@@ -160,9 +194,9 @@
       zTreeNode.setpId(data.getPid());
       zTreeNode.setId(data.getId());
       zTreeNode.setName(data.getName());
-      zTreeNode.setChecked(data.getChecked() == 0 ? false : true);
+      zTreeNode.setChecked(data.getChecked() != 0);
       if (allChecked && !zTreeNode.isChecked()) allChecked = false;
-      zTreeNode.setOpen(data.getOpen() == 0 ? false : true);
+      zTreeNode.setOpen(data.getOpen() != 0);
       ret.add(zTreeNode);
     }
     ZTreeNode root = new ZTreeNode();
@@ -178,7 +212,7 @@
   @Override
   public JsonResult deleteRole(String roleid) {
     Optional<TRole> ret = roleDao.findById(roleid);
-    if (ret == null || !ret.isPresent()) {
+    if (!ret.isPresent()) {
       return JsonResult.error("角色不存在");
     }
     if (ret.get().getEditflag() != 1) {
diff --git a/payapi/src/main/resources/data.sql b/payapi/src/main/resources/data.sql
index b3ea34b..f1caa1f 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/sourceType', '支付能力配置', 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,7 +183,7 @@
 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/sourceType', '{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)
@@ -373,87 +373,87 @@
 VALUES ('ff8080816bbb130c016bbb6ea2f600b3', 26, NULL, 'd1yctWs5+ks0iQN3m9bUvRHus6HbKbrs', '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('1002', 1, 'y', 1, NULL, 20190430, 1, '银行存款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('112101', 1, 'n', 1, '1121', 20190430, 2, '支票', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('1122', 1, 'y', 0, NULL, 20190430, 1, '应收账款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('112209', 1, 'y', 1, '1122', 20190617, 2, '其他第三方充值款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('112211', 1, 'y', 1, '1122', 20190430, 2, '微信充值款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('112213', 1, 'y', 1, '1122', 20190430, 2, '一卡通充值款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('112231', 1, 'y', 1, '1122', 20190430, 2, '微信支付款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('112233', 1, 'y', 1, '1122', 20190430, 2, '一卡通支付款', 1, '{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" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (1, '1001', 1, 'y', 1, NULL, 20190430, 1, '库存现金', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (2, '1002', 1, 'y', 1, NULL, 20190430, 1, '银行存款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (3, '1121', 1, 'n', 0, NULL, 20190430, 1, '应收票据', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (4, '112101', 1, 'n', 1, '1121', 20190430, 2, '支票', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (5, '112102', 1, 'n', 1, '1121', 20190430, 2, '经费本', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (6, '1122', 1, 'y', 0, NULL, 20190430, 1, '应收账款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (7, '112201', 1, 'y', 1, '1122', 20190430, 2, '现金充值款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (8, '112209', 1, 'y', 1, '1122', 20190617, 2, '其他第三方充值款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (9, '112210', 1, 'y', 1, '1122', 20190430, 2, '支付宝充值款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (10, '112211', 1, 'y', 1, '1122', 20190430, 2, '微信充值款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (11, '112212', 1, 'n', 1, '1122', 20190430, 2, '银联充值款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (12, '112213', 1, 'y', 1, '1122', 20190430, 2, '一卡通充值款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (13, '112230', 1, 'y', 1, '1122', 20190430, 2, '支付宝支付款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (14, '112231', 1, 'y', 1, '1122', 20190430, 2, '微信支付款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (15, '112232', 1, 'n', 1, '1122', 20190430, 2, '银联支付款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (16, '112233', 1, 'y', 1, '1122', 20190430, 2, '一卡通支付款', 1, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (17, '112234', 1, 'y', 1, '1122', NULL, 2, '市民卡支付款', 1, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('2004', 2, 'y', 1, NULL, 20190430, 1, '商户营业款', 2, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('220201', 2, 'y', 1, '2202', 20190430, 2, '个人存款', 2, '{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" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (18, '2001', 2, 'n', 1, NULL, 20190430, 1, '用户押金', 2, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (19, '2004', 2, 'y', 1, NULL, 20190430, 1, '商户营业款', 2, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (20, '2202', 2, 'y', 0, NULL, 20190430, 1, '应付账款', 2, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (21, '220201', 2, 'y', 1, '2202', 20190430, 2, '个人存款', 2, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (22, '220211', 2, 'n', 1, '2202', 20190430, 2, '销户退款', 2, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('602101', 2, 'y', 1, '6021', 20190430, 2, '支付宝充值手续费', 6, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('602103', 2, 'n', 1, '6021', 20190430, 2, '银联充值手续费', 6, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('660101', 2, 'y', 1, '6601', 20190430, 2, '折扣优惠款', 6, '{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" ("subjid", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
-VALUES ('6602', 2, 'y', 1, NULL, 20190430, 1, '管理费收入', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (23, '6021', 2, 'y', 0, NULL, 20190430, 1, '手续费收入', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (24, '602101', 2, 'y', 1, '6021', 20190430, 2, '支付宝充值手续费', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (25, '602102', 2, 'y', 1, '6021', 20190430, 2, '微信充值手续费', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (26, '602103', 2, 'n', 1, '6021', 20190430, 2, '银联充值手续费', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (27, '6601', 2, 'y', 0, NULL, 20190430, 1, '销售费用', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (28, '660101', 2, 'y', 1, '6601', 20190430, 2, '折扣优惠款', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (29, '660102', 2, 'y', 1, '6601', 20190430, 2, '积分抵扣款', 6, '{tenantid}');
+INSERT INTO "tb_subject" ("subjid","subjno", "balflag", "displayflag", "endflag", "fsubjno", "opendate", "subjlevel", "subjname", "subjtype", "tenantid")
+VALUES (30, '6602', 2, 'y', 1, NULL, 20190430, 1, '管理费收入', 6, '{tenantid}');
 
 
 
-INSERT INTO "tb_sourcetype" ("sourcetype_id", "sourceType", "checkable", "paydesc", "enable", "charge_enable",
+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",
+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",
+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",
+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",
+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",
+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}');
 
diff --git a/payapi/src/main/resources/templates/system/param/sourcetype.html b/payapi/src/main/resources/templates/system/param/sourcetype.html
index a288eea..32ed15d 100644
--- a/payapi/src/main/resources/templates/system/param/sourcetype.html
+++ b/payapi/src/main/resources/templates/system/param/sourcetype.html
@@ -164,7 +164,7 @@
         form.on('switch(enable-tpl-state)', function (obj) {
             var token = $("meta[name='_csrf_token']").attr("value");
             admin.go('[[@{/param/updatesourcetypestate}]]', {
-                sourceType: obj.elem.value,
+                sourcetype: obj.elem.value,
                 state: obj.elem.checked,
                 _csrf: token
             }, function (data) {
@@ -215,7 +215,7 @@
 
         function updatePaytypeState(obj, optype, token) {
             admin.go('[[@{/param/updatesourcetypestate}]]', {
-                sourceType: obj.elem.value,
+                sourcetype: obj.elem.value,
                 state: obj.elem.checked,
                 optype: optype,
                 _csrf: token
@@ -242,7 +242,7 @@
             var row = obj.data; //得到所在行所有键值
             var newval = obj.value; //得到修改后的值
             admin.go('[[@{/param/updatesourcetypename}]]', {
-                sourceType: row.sourceType,
+               sourcetype: row.sourceType,
                 paydesc: newval,
                 _csrf: $("meta[name='_csrf_token']").attr("value")
             }, function (data) {
@@ -269,7 +269,7 @@
                 if (confirm("确定要删除支付方式[" + data.sourceType + "_" + data.paydesc + "]吗?")) {
                     layer.load(2);
                     admin.go('[[@{/param/deletesourcetype}]]', {
-                        sourceType: data.sourceType,
+                       sourcetype: data.sourceType,
                         _csrf: $("meta[name='_csrf_token']").attr("value")
                     }, function (data) {
                         console.log(data.code);
@@ -294,7 +294,7 @@
             }else if('config' ===obj.event){
                 admin.popupCenter({
                     title: "配置参数【" + data.sourceType + "_" + data.paydesc + "】",
-                    path: '[[@{/param/load4sourcetypeconfig}]]?sourceType='+data.sourceType,
+                    path: '[[@{/param/load4sourcetypeconfig}]]?sourcetype='+data.sourceType,
                     area: '800px',
                     finish: function () {
                         table.reload('sourcetypeTable');
diff --git a/payapi/src/main/resources/templates/system/param/sourcetypeconfig.html b/payapi/src/main/resources/templates/system/param/sourcetypeconfig.html
index 502a3be..5d51626 100644
--- a/payapi/src/main/resources/templates/system/param/sourcetypeconfig.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_sourcetype" th:value="${sourceType}"/>
+        <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">
diff --git a/payapi/src/main/resources/templates/system/param/sourcetypeform.html b/payapi/src/main/resources/templates/system/param/sourcetypeform.html
index f3650db..f99ad4c 100644
--- a/payapi/src/main/resources/templates/system/param/sourcetypeform.html
+++ b/payapi/src/main/resources/templates/system/param/sourcetypeform.html
@@ -2,8 +2,8 @@
     <div class="layui-form-item">
         <label class="layui-form-label">支付方式</label>
         <div class="layui-input-block">
-            <input name="sourceType" placeholder="请输入支付方式代码" type="text" class="layui-input" maxlength="20"
-                   lay-verify="required|sourceType" required/>
+            <input name="sourcetype" placeholder="请输入支付方式代码" type="text" class="layui-input" maxlength="20"
+                   lay-verify="required|sourcetype" required/>
         </div>
     </div>
     <div class="layui-form-item">