diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayfinishParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayfinishParam.java
index 0b07e7d..5a997b2 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayfinishParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayfinishParam.java
@@ -4,11 +4,13 @@
 import com.supwisdom.dlpay.api.APIRequestParam;
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.validation.constraints.NotNull;
 
-@Data
+@Getter
+@Setter
 public class CitizenCardPayfinishParam extends APIRequestParam {
   @Sign
   @NotNull(message = "交易参考号不能为空")
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayinitParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayinitParam.java
index b31a90a..79c5160 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayinitParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/CitizenCardPayinitParam.java
@@ -4,13 +4,15 @@
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.util.DateUtil;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
-@Data
+@Getter
+@Setter
 public class CitizenCardPayinitParam extends APIRequestParam {
   @Sign
   @NotNull(message = "卡唯一号不能为空")
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonQueryRechargeResultParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonQueryRechargeResultParam.java
index d76faa8..e18d41e 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonQueryRechargeResultParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonQueryRechargeResultParam.java
@@ -3,11 +3,13 @@
 import com.supwisdom.dlpay.api.APIRequestParam;
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 
 
-@Data
+@Getter
+@Setter
 public class CommonQueryRechargeResultParam extends APIRequestParam {
   @Sign
   private String refno;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeConfirmParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeConfirmParam.java
index db748c4..17a2d10 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeConfirmParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeConfirmParam.java
@@ -4,11 +4,13 @@
 import com.supwisdom.dlpay.api.APIRequestParam;
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.validation.constraints.NotEmpty;
 
-@Data
+@Getter
+@Setter
 public class CommonRechargeConfirmParam extends APIRequestParam {
   @Sign
   @NotEmpty(message = "流水号不能为空")
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeInitParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeInitParam.java
index 66654d8..39099d2 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeInitParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/CommonRechargeInitParam.java
@@ -4,14 +4,16 @@
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.util.DateUtil;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotEmpty;
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
-@Data
+@Getter
+@Setter
 public class CommonRechargeInitParam extends APIRequestParam {
   @Sign
   @NotNull(message = "请指定充值用户")
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumeFeetype.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumeFeetype.java
index d9f75b1..c880685 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumeFeetype.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumeFeetype.java
@@ -1,8 +1,10 @@
 package com.supwisdom.dlpay.api.bean;
 
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 
-@Data
+@Getter
+@Setter
 public class ConsumeFeetype {
   private String feetype;
   private Integer amount;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayCancelParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayCancelParam.java
index b03c75f..3f1091d 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayCancelParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayCancelParam.java
@@ -4,12 +4,14 @@
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.util.DateUtil;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.validation.constraints.NotNull;
 
-@Data
+@Getter
+@Setter
 public class ConsumePayCancelParam extends APIRequestParam {
   @Sign
   @NotNull
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayRefundParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayRefundParam.java
index 50948d0..1dc46f2 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayRefundParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/ConsumePayRefundParam.java
@@ -4,13 +4,15 @@
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.util.DateUtil;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.validation.constraints.Min;
 import javax.validation.constraints.NotNull;
 
-@Data
+@Getter
+@Setter
 public class ConsumePayRefundParam extends APIRequestParam {
   @Sign
   private String refno;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryDtlResultParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryDtlResultParam.java
index 45077bb..a16d55d 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryDtlResultParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/QueryDtlResultParam.java
@@ -3,10 +3,12 @@
 import com.supwisdom.dlpay.api.APIRequestParam;
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 
-@Data
+@Getter
+@Setter
 public class QueryDtlResultParam extends APIRequestParam {
   @Sign
   private String refno;
diff --git a/common/src/main/java/com/supwisdom/dlpay/api/bean/YktCardPayinitParam.java b/common/src/main/java/com/supwisdom/dlpay/api/bean/YktCardPayinitParam.java
index aa06109..34a734f 100644
--- a/common/src/main/java/com/supwisdom/dlpay/api/bean/YktCardPayinitParam.java
+++ b/common/src/main/java/com/supwisdom/dlpay/api/bean/YktCardPayinitParam.java
@@ -4,7 +4,8 @@
 import com.supwisdom.dlpay.api.annotation.Sign;
 import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
 import com.supwisdom.dlpay.api.util.DateUtil;
-import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
 import org.apache.commons.lang3.StringUtils;
 
 import javax.validation.constraints.Min;
@@ -12,7 +13,8 @@
 import javax.validation.constraints.NotNull;
 import java.util.List;
 
-@Data
+@Getter
+@Setter
 public class YktCardPayinitParam extends APIRequestParam {
   @Sign
   private String uid;
diff --git a/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt b/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
index ca0ba0a..b4f11a1 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
@@ -45,30 +45,31 @@
 
 
     override fun onAuthenticationSuccess(request: HttpServletRequest, response: HttpServletResponse, authentication: Authentication) {
-        logger.error(request?.getParameter("platform"))
-        var temp = authentication!!.principal as TBMobileUser
+        logger.error(request.getParameter("platform"))
+        var temp = authentication.principal as TBMobileUser
         var user = mobileUserDao.findByPhone(temp.phone)
-        if(user!=null) {
-            var exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.SYSPARAID_NO3,60*60*24*3)
-            jwtConfig.expiration = exp.toLong()
+        val exp = systemUtilService.getSysparaValueAsInt(SysparaUtil.SYSPARAID_NO3,60*60*24*3)
+        jwtConfig.expiration = exp.toLong()
+        if (user != null) {
+            //TODO 从数据取jwtConfig.expiration
             val token = JwtTokenUtil(jwtConfig).generateToken(
                     mapOf("uid" to user.uid, "issuer" to "payapi",
                             "audience" to temp.phone,
                             Constants.JWT_CLAIM_TENANTID to "mobile",
                             Constants.JWT_CLAIM_AUTHORITIES to temp.authorities))
-            var jwt = JwtRedis().apply {
+            val jwt = JwtRedis().apply {
                 jti = token.jti
                 uid = temp.phone
                 status = TradeDict.JWT_STATUS_NORMAL
                 expiration = token.expiration.valueInMillis
             }.apply {
                 //删除之前的token
-                if(!user.jti.isNullOrEmpty()){
+                if (!user.jti.isNullOrEmpty()) {
                     apiJwtRepository.deleteById(user.jti!!)
                 }
                 apiJwtRepository.save(this)
             }
-            if (user.loginpwderror != null && user.loginpwderror!! > 0) {
+            if (user.loginpwderror > 0) {
                 user.loginpwderror = 0
                 user.loginpwderrortime = null
             }
@@ -99,7 +100,7 @@
                     ?.put("paypwdset",payseted)
                     ?.put("signed", if (user.issigned.isNullOrEmpty()) "" else user.issigned)
                     ?.put("userid",if(user.userid.isNullOrEmpty()) "" else user.userid)))
-        }else{
+        } else {
             throw UserLoginFailException("登录错误")
         }
     }
@@ -118,13 +119,10 @@
     override fun onAuthenticationFailure(request: HttpServletRequest,
                                          response: HttpServletResponse, exception: AuthenticationException) {
         logger.error("登录失败:" + exception.message + "|" + exception.javaClass)
-        var errmsg = ""
-        if (exception is BadCredentialsException) {
-            errmsg = "手机号或密码错误"
-        } else if (exception is LockedException) {
-            errmsg = "账户被锁定"
-        } else  {
-            errmsg = exception.message!!
+        val errmsg = when (exception) {
+            is BadCredentialsException -> "手机号或密码错误"
+            is LockedException -> "账户被锁定"
+            else -> exception.message!!
         }
         var temp = request.getParameter("username")
         if(!temp.isNullOrEmpty()) {
@@ -141,4 +139,4 @@
         response.contentType = "application/json;charset=UTF-8"
         response.writer.write(objectMapper.writeValueAsString(JsonResult.error(errmsg)))
     }
-}
\ No newline at end of file
+}
