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 6a441fc..691fb09 100644
--- a/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
+++ b/src/main/kotlin/com/supwisdom/dlpay/mobile/AuthLoginHandler.kt
@@ -40,29 +40,29 @@
     lateinit var apiJwtRepository: ApiJwtRepository
 
     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) {
+        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",
                             "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
             }
@@ -73,7 +73,7 @@
             response.contentType = "application/json;charset=UTF-8"
             response.writer.write(objectMapper.writeValueAsString(JsonResult.ok().put("token", token.jwtToken)
                     ?.put("tenantid", "mobile")))
-        }else{
+        } else {
             throw UserLoginFailException("登录错误")
         }
     }
@@ -92,17 +92,14 @@
     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")
+        val temp = request.getParameter("username")
         mobileUserDao.findByPhone(temp)?.let {
-            if (it.loginpwderror == null || it.loginpwderror == 0) {
+            if (it.loginpwderror == 0) {
                 it.loginpwderror = 0
                 it.loginpwderrortime = System.currentTimeMillis()
             }
