diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java
index 9dd87c1..d4a4d21 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TAccount.java
@@ -7,7 +7,9 @@
 import javax.persistence.*;
 
 @Entity
-@Table(name = "TB_ACCOUNT")
+@Table(name = "TB_ACCOUNT",
+    indexes = {@Index(name = "acc_userid_idx", columnList = "userid"),
+        @Index(name = "acc_status_idx", columnList = "status")})
 public class TAccount {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -15,52 +17,52 @@
   @Column(name = "ACCNO", nullable = false, length = 32)
   private String accno; //账号
 
-  @Column(name="ACCNAME", length = 100)
+  @Column(name = "ACCNAME", length = 100)
   private String accname; //账户名
 
-  @Column(name="SUBJNO", length = 10)
+  @Column(name = "SUBJNO", length = 10)
   private String subjno; //科目号
 
-  @Column(name="USERID", nullable = false, length = 32)
+  @Column(name = "USERID", nullable = false, length = 32)
   private String userid; //用户ID
 
-  @Column(name="STATUS", nullable = false, length = 20)
+  @Column(name = "STATUS", nullable = false, length = 20)
   private String status; //状态：normal-正常；closed-注销；locked-冻结
 
-  @Column(name="BALANCE", nullable = false, precision = 15, scale = 2)
+  @Column(name = "BALANCE", nullable = false, precision = 15, scale = 2)
   private Double balance; //总余额
 
-  @Column(name="AVAILBAL", nullable = false, precision = 15, scale = 2)
+  @Column(name = "AVAILBAL", nullable = false, precision = 15, scale = 2)
   private Double availbal; //可用余额
 
-  @Column(name="FROZEBAL", nullable = false, precision = 15, scale = 2)
+  @Column(name = "FROZEBAL", nullable = false, precision = 15, scale = 2)
   private Double frozebal; //冻结金额
 
-  @Column(name="LOWFREE_FLAG", nullable = false, precision = 1, scale = 0)
+  @Column(name = "LOWFREE_FLAG", nullable = false, precision = 1, scale = 0)
   private Boolean lowfreeFlag; //低额免密开关
 
-  @Column(name="LOWFREE_LIMIT", precision = 9, scale = 2)
+  @Column(name = "LOWFREE_LIMIT", precision = 9, scale = 2)
   private Double lowfreeLimit; //免密额度
 
-  @Column(name="DAYLIMIT", precision = 9, scale = 2)
+  @Column(name = "DAY_LIMIT", precision = 9, scale = 2)
   private Double daylimit; // 日累计消费额度
 
-  @Column(name="MAXBAL",  precision = 15, scale = 2)
+  @Column(name = "MAX_BAL", precision = 15, scale = 2)
   private Double maxbal; // 最大余额限制
 
-  @Column(name = "LASTTRANSDATE", length = 8)
+  @Column(name = "LAST_TRANSDATE", length = 8)
   private String lasttransdate; //最后交易日期
 
-  @Column(name="LASTDAY_TRANSAMT",  precision = 9, scale = 2)
+  @Column(name = "LASTDAY_TRANSAMT", precision = 9, scale = 2)
   private Double lastdayTransamt; //最后一天消费金额
 
-  @Column(name="LASTDAY_DPSAMT",  precision = 9, scale = 2)
+  @Column(name = "LASTDAY_DPSAMT", precision = 9, scale = 2)
   private Double lastdayDpsamt; //最后一天充值金额
 
-  @Column(name="TAC",  length = 32)
+  @Column(name = "TAC", length = 32)
   private String tac; //校验
 
-  @Column(name="OPENDATE", nullable = false, length = 8)
+  @Column(name = "OPENDATE", nullable = false, length = 8)
   private String opendate;
 
   @Column(name = "CLOSEDATE", length = 8)
@@ -233,14 +235,14 @@
     this.closedate = closedate;
   }
 
-  public String  generateTac(){
-    String data = this.accno+ MoneyUtil.YuanToFen(this.availbal)+MoneyUtil.YuanToFen(this.balance)+MoneyUtil.YuanToFen(this.frozebal);
+  public String generateTac() {
+    String data = this.accno + MoneyUtil.YuanToFen(this.availbal) + MoneyUtil.YuanToFen(this.balance) + MoneyUtil.YuanToFen(this.frozebal);
     return MD5.generatePassword(data, this.accno);
   }
 
-  public boolean tacCheck(){
+  public boolean tacCheck() {
     String tac_c = generateTac();
-    if (tac_c.equalsIgnoreCase(this.tac)||this.tac==null) {
+    if (tac_c.equalsIgnoreCase(this.tac) || this.tac == null) {
       return true;
     }
     return false;
@@ -252,9 +254,9 @@
     this.tac = this.generateTac();
   }
 
-  public boolean checkOverflow(){
-    if(null!=this.maxbal && this.maxbal>0){
-      if(MoneyUtil.moneyCompare(this.balance,this.maxbal)>0){
+  public boolean checkOverflow() {
+    if (null != this.maxbal && this.maxbal > 0) {
+      if (MoneyUtil.moneyCompare(this.balance, this.maxbal) > 0) {
         return true; //超出账户最大值
       }
     }
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java
index c5bceb6..cfe4872 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TPerson.java
@@ -5,7 +5,8 @@
 import javax.persistence.*;
 
 @Entity
-@Table(name = "TB_PERSON")
+@Table(name = "TB_PERSON",
+    indexes = {@Index(name = "person_name_idx", columnList = "name")})
 public class TPerson {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
@@ -19,7 +20,7 @@
   @Column(name = "SEX", length = 10)
   private String sex;
 
-  @Column(name = "STATUS",nullable = false, length = 10)
+  @Column(name = "STATUS", nullable = false, length = 10)
   private String status;
 
   @Column(name = "IDTYPE", length = 20)
@@ -54,7 +55,7 @@
 
   /**
    * 第三方唯一标识，可为学工号，银行卡号等
-   * */
+   */
   @Column(name = "THIRD_UNIQUE_IDENTY", length = 32)
   private String thirdUniqueIdenty;
 
diff --git a/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java b/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java
index 4b59d98..5826052 100644
--- a/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java
+++ b/src/main/java/com/supwisdom/dlpay/consume/domain/TUserdtl.java
@@ -1,12 +1,13 @@
 package com.supwisdom.dlpay.consume.domain;
 
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.Id;
-import javax.persistence.Table;
+import javax.persistence.*;
 
 @Entity
-@Table(name = "TB_USERDTL")
+@Table(name = "TB_USERDTL",
+    indexes = {@Index(name = "userdtl_transdate_idx", columnList = "transdate"),
+        @Index(name = "userdtl_accdate_idx", columnList = "accdate"),
+        @Index(name = "userdtl_status_idx", columnList = "status"),
+        @Index(name = "userdtl_reverse_idx", columnList = "REVERSE_FLAG")})
 public class TUserdtl {
   @Id
   @Column(name = "REFNO", nullable = false, length = 32)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/core/PasswordBCryptConfig.java b/src/main/java/com/supwisdom/dlpay/framework/core/PasswordBCryptConfig.java
new file mode 100644
index 0000000..1743e2e
--- /dev/null
+++ b/src/main/java/com/supwisdom/dlpay/framework/core/PasswordBCryptConfig.java
@@ -0,0 +1,28 @@
+package com.supwisdom.dlpay.framework.core;
+
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.context.annotation.Configuration;
+
+@Configuration
+public class PasswordBCryptConfig {
+  @Value("${auth.password.bcrypt.length:10}")
+  private Integer length;
+  @Value("${auth.password.bcrypt.seed}")
+  private String seed = "";
+
+  public Integer getLength() {
+    return length;
+  }
+
+  public void setLength(Integer length) {
+    this.length = length;
+  }
+
+  public String getSeed() {
+    return seed;
+  }
+
+  public void setSeed(String seed) {
+    this.seed = seed;
+  }
+}
diff --git a/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java b/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java
index 72dc37a..292a999 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/dao/OperRoleDao.java
@@ -10,6 +10,6 @@
 @Repository
 public interface OperRoleDao extends JpaRepository<TOperRole, String> {
 
-  @Query(value = "select distinct role_code from TB_OPER_ROLE a,TB_ROLE b where a.role_id=b.role_id and a.operid=?1", nativeQuery = true)
+  @Query(value = "select distinct rolecode from TB_OPER_ROLE a,TB_ROLE b where a.roleid=b.roleid and a.operid=?1", nativeQuery = true)
   List<String> getRolecodeByOperid(String operid);
 }
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
index 5b7beab..8c135e8 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TFunction.java
@@ -13,22 +13,22 @@
   @Column(name="ID", nullable = false, length = 32)
   private String id;
 
-  @Column(name="PARENT_ID", length = 32)
+  @Column(name="PARENTID", length = 32)
   private String parentId;
 
   @Column(name="NAME", length = 32)
   private String name;
 
-  @Column(name="MENU_URL", nullable = false, length = 60)
+  @Column(name="MENUURL", nullable = false, length = 60)
   private String menuUrl; //菜单url
 
-  @Column(name="IS_LEAF", nullable = false, precision = 1)
+  @Column(name="ISLEAF", nullable = false, precision = 1)
   private Integer isLeaf;
 
-  @Column(name="ORDER_NUM", precision = 9)
+  @Column(name="ORDERNUM", precision = 9)
   private Integer orderNum;
 
-  @Column(name="MENU_ICON", precision = 9)
+  @Column(name="MENUICON", precision = 9)
   private String menuIcon;
 
   @Column(name="CREATETIME", length = 14)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
index f889fac..d17c273 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperRole.java
@@ -5,18 +5,19 @@
 import javax.persistence.*;
 
 @Entity
-@Table(name = "TB_OPER_ROLE")
+@Table(name = "TB_OPER_ROLE",
+    indexes = {@Index(name = "operrole_operid_idx", columnList = "operid")})
 public class TOperRole {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
   @GeneratedValue(generator = "idGenerator")
-  @Column(name="ID", nullable = false, length = 32)
+  @Column(name = "ID", nullable = false, length = 32)
   private String id;
 
-  @Column(name="ROLE_ID", nullable = false, length = 32)
+  @Column(name = "ROLEID", nullable = false, length = 32)
   private String roleId;
 
-  @Column(name="OPERID", nullable = false, length = 32)
+  @Column(name = "OPERID", nullable = false, length = 32)
   private String operid;
 
   public String getId() {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
index 6285302..520f19a 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TOperator.java
@@ -9,33 +9,34 @@
 import java.util.Collection;
 
 @Entity
-@Table(name = "TB_OPERATOR")
+@Table(name = "TB_OPERATOR",
+    indexes = {@Index(name = "opercode_idx", columnList = "OPERCODE", unique = true)})
 public class TOperator implements UserDetails {
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
   @GeneratedValue(generator = "idGenerator")
-  @Column(name="OPERID", nullable = false, length = 32)
+  @Column(name = "OPERID", nullable = false, length = 32)
   private String operid;
 
-  @Column(name="OPERCODE", nullable = false, length = 20)
+  @Column(name = "OPERCODE", nullable = false, length = 20)
   private String opercode;
 
-  @Column(name="OPERTYPE", nullable = false, length = 20)
+  @Column(name = "OPERTYPE", nullable = false, length = 20)
   private String opertype;
 
-  @Column(name="OPERNAME", nullable = false, length = 100)
+  @Column(name = "OPERNAME", nullable = false, length = 100)
   private String opername;
 
-  @Column(name="OPERPWD", nullable = false, length = 80)
+  @Column(name = "OPERPWD", nullable = false, length = 80)
   private String operpwd;
 
-  @Column(name="STATUS", nullable = false, length = 32)
+  @Column(name = "STATUS", nullable = false, length = 32)
   private String status;
 
-  @Column(name="OPENDATE", length = 8)
+  @Column(name = "OPENDATE", length = 8)
   private String opendate;
 
-  @Column(name="CLOSEDATE", length = 8)
+  @Column(name = "CLOSEDATE", length = 8)
   private String closedate;
 
   @Transient
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
index 6be9d78..3112259 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRole.java
@@ -10,16 +10,16 @@
   @Id
   @GenericGenerator(name = "idGenerator", strategy = "uuid")
   @GeneratedValue(generator = "idGenerator")
-  @Column(name="ROLE_ID", nullable = false, length = 32)
+  @Column(name="ROLEID", nullable = false, length = 32)
   private String roleId;
 
-  @Column(name="ROLE_NAME", nullable = false, length = 60)
+  @Column(name="ROLENAME", nullable = false, length = 60)
   private String roleName;
 
-  @Column(name="ROLE_CODE", nullable = false, length = 20)
+  @Column(name="ROLECODE", nullable = false, length = 20)
   private String roleCode;
 
-  @Column(name="ROLE_DESC", length = 60)
+  @Column(name="ROLEDESC", length = 60)
   private String roleDesc;
 
   @Column(name="EDITFLAG", length = 60)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
index 3475cd3..91f4307 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TRoleFunction.java
@@ -13,10 +13,10 @@
   @Column(name="ID", nullable = false, length = 32)
   private String id;
 
-  @Column(name="ROLE_ID", nullable = false, length = 32)
+  @Column(name="ROLEID", nullable = false, length = 32)
   private String roleId;
 
-  @Column(name="FUNCTION_ID", nullable = false, length = 32)
+  @Column(name="FUNCTIONID", nullable = false, length = 32)
   private String functionId;
 
   public String getId() {
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
index 80895c6..73dbf10 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TSettlectl.java
@@ -12,10 +12,10 @@
   @Column(name="BOOKSETNO", nullable = false, precision = 2)
   private Integer booksetno;
 
-  @Column(name="PERIOD_YEAR", nullable = false, precision = 4)
+  @Column(name="PERIODYEAR", nullable = false, precision = 4)
   private Integer periodYear;
 
-  @Column(name="PERIOD_MONTH", nullable = false, precision = 2)
+  @Column(name="PERIODMONTH", nullable = false, precision = 2)
   private Integer periodMonth;
 
   @Column(name="STATDATE", precision = 8)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
index d2faa89..7f42c1f 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVoucher.java
@@ -13,10 +13,10 @@
   @Column(name="VOUCHERID", nullable = false, length = 32)
   private String voucherid;
 
-  @Column(name="PERIOD_YEAR", precision = 8)
+  @Column(name="PERIODYEAR", precision = 8)
   private Integer periodYear;
 
-  @Column(name="PERIOD_MONTH", precision = 2)
+  @Column(name="PERIODMONTH", precision = 2)
   private Integer periodMonth;
 
   @Column(name="VOUCHERNO", precision = 9)
diff --git a/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java b/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
index 8b010c4..24f75c3 100644
--- a/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
+++ b/src/main/java/com/supwisdom/dlpay/framework/domain/TVouchernoCtl.java
@@ -12,7 +12,7 @@
   @Column(name="VOUCHERTYPE", nullable = false, precision = 2)
   private Integer vouchertype;
 
-  @Column(name="PERIOD_MONTH", nullable = false, precision = 2)
+  @Column(name="PERIODMONTH", nullable = false, precision = 2)
   private Integer periodMonth;
 
   @Column(name = "VOUCHERNO", nullable = false, precision = 9)
diff --git a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
index 147270b..5bcea3a 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/framework/controller/security_controller.kt
@@ -15,6 +15,7 @@
 import com.supwisdom.dlpay.framework.util.HmacUtil
 import com.supwisdom.dlpay.system.service.CommonService
 import com.supwisdom.dlpay.system.service.FunctionService
+import mu.KotlinLogging
 import org.springframework.beans.factory.annotation.Autowired
 import org.springframework.http.HttpStatus
 import org.springframework.http.ResponseEntity
@@ -122,10 +123,10 @@
 }
 
 
-data class LoginForm(val username: String, val password: String, val imageCode: String)
-
 @Controller
 class WebHomeController {
+
+    private val logger = KotlinLogging.logger {}
     @Autowired
     lateinit var functionService: FunctionService
     @Autowired
@@ -137,12 +138,13 @@
     @GetMapping("/logout")
     fun logout(request: HttpServletRequest, response: HttpServletResponse): String {
         SecurityContextHolder.getContext().authentication?.also {
+            logger.debug { "user logout!!" }
             SecurityContextLogoutHandler().logout(request, response, it)
         }
         return "redirect:/login?logout"
     }
 
-    @GetMapping("/index")
+    @GetMapping(value = ["/", "/index"])
     fun homeView(@AuthenticationPrincipal operUser: UserDetails, model: Model): String {
         model.addAttribute("loginOper", operUser as TOperator)
         val funclist = functionService.getFunctionsByOperid(operUser.operid)
diff --git a/src/main/kotlin/com/supwisdom/dlpay/security.kt b/src/main/kotlin/com/supwisdom/dlpay/security.kt
index 5b375ff..491cc46 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/security.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/security.kt
@@ -2,6 +2,7 @@
 
 import com.supwisdom.dlpay.framework.core.JwtConfig
 import com.supwisdom.dlpay.framework.core.JwtTokenUtil
+import com.supwisdom.dlpay.framework.core.PasswordBCryptConfig
 import com.supwisdom.dlpay.framework.security.ValidateCodeSecurityConfig
 import com.supwisdom.dlpay.framework.service.OperatorDetailService
 import org.jose4j.jwt.consumer.InvalidJwtException
@@ -26,6 +27,7 @@
 import org.springframework.security.web.authentication.rememberme.JdbcTokenRepositoryImpl
 import org.springframework.security.web.util.matcher.AntPathRequestMatcher
 import org.springframework.web.filter.OncePerRequestFilter
+import java.security.SecureRandom
 import javax.servlet.FilterChain
 import javax.servlet.http.HttpServletRequest
 import javax.servlet.http.HttpServletResponse
@@ -54,7 +56,6 @@
 @EnableWebSecurity
 class WebSecurityConfig {
 
-
     companion object {
         @Configuration
         @Order(1)
@@ -94,6 +95,8 @@
             lateinit var authenticationFailureHandler: AuthenticationFailureHandler
             @Autowired
             lateinit var authenticationSuccessHandler: AuthenticationSuccessHandler
+            @Autowired
+            lateinit var passwordBCryptConfig: PasswordBCryptConfig
 
 
             @Autowired
@@ -113,7 +116,12 @@
 
             @Bean
             fun passwordEncoder(): BCryptPasswordEncoder {
-                return BCryptPasswordEncoder()
+                return if (passwordBCryptConfig.seed.isBlank()) {
+                    BCryptPasswordEncoder()
+                } else {
+                    BCryptPasswordEncoder(passwordBCryptConfig.length,
+                            SecureRandom(passwordBCryptConfig.seed.toByteArray()))
+                }
             }
 
             @Bean
diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties
index 6abc8d8..b54e727 100644
--- a/src/main/resources/application.properties
+++ b/src/main/resources/application.properties
@@ -18,3 +18,8 @@
 spring.thymeleaf.mode=HTML5
 spring.thymeleaf.cache=false
 spring.thymeleaf.enabled=true
+
+################################################
+# user password
+auth.password.bcrypt.length=10
+
