签约时保存手机用户密钥
diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/SignBxyParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/SignBxyParam.java
new file mode 100644
index 0000000..43161f2
--- /dev/null
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/SignBxyParam.java
@@ -0,0 +1,39 @@
+package com.supwisdom.dlpay.api.bean;
+
+import com.supwisdom.dlpay.api.APIRequestParam;
+import com.supwisdom.dlpay.api.annotation.Sign;
+import com.supwisdom.dlpay.api.exception.RequestParamCheckException;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotEmpty;
+
+@Getter
+@Setter
+public class SignBxyParam extends APIRequestParam {
+  @Sign
+  @NotEmpty(message = "用户id不能为空")
+  private String userid;
+  @Sign
+  @NotEmpty(message = "手机用户id不能为空")
+  private String uid;
+  @Sign
+  @NotEmpty(message = "rsaprivate不能为空")
+  private String rsaprivate;
+  @Sign
+  @NotEmpty(message = "secertkey不能为空")
+  private String secertkey;
+  @Sign
+  @NotEmpty(message = "rsapublic不能为空")
+  private String rsapublic;
+  @Sign
+  @NotEmpty(message = "验证码不能为空")
+  private String code;
+  @Sign
+  @NotEmpty(message = "手机号不能为空")
+  private String phone;
+  @Override
+  public boolean checkParam() throws RequestParamCheckException {
+    return true;
+  }
+}
diff --git a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
index 575d011..ac510c5 100644
--- a/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
+++ b/payapi-sdk/src/main/java/com/supwisdom/dlpay/paysdk/proxy/UserProxy.java
@@ -65,7 +65,7 @@
   Map<String, Object> bindCardCode(@RequestParam("userid") String userid,@RequestParam("phone") String phone);
 
   @PostMapping("/api/user/signbxy")
-  ApiResponse signbxy(@RequestParam("userid") String userid,@RequestParam("code") String code,@RequestParam("phone") String phone);
+  ApiResponse signbxy(@RequestBody SignBxyParam param);
 
   @PostMapping("/api/user/unsignbxy")
   ApiResponse unsignbxy(@RequestParam("userid") String userid,@RequestParam("phone") String phone);
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/UserSecretDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/UserSecretDao.java
new file mode 100644
index 0000000..a31419d
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/UserSecretDao.java
@@ -0,0 +1,7 @@
+package com.supwisdom.dlpay.api.dao;
+
+import com.supwisdom.dlpay.api.domain.TUserSecret;
+import org.springframework.data.jpa.repository.JpaRepository;
+
+public interface UserSecretDao extends JpaRepository<TUserSecret, String> {
+}
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TUserSecret.java b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TUserSecret.java
new file mode 100644
index 0000000..e5598e9
--- /dev/null
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/domain/TUserSecret.java
@@ -0,0 +1,66 @@
+package com.supwisdom.dlpay.api.domain;
+
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import javax.persistence.Id;
+import javax.persistence.Table;
+
+@Entity
+@Table(name = "tb_user_secret")
+public class TUserSecret {
+  @Id
+  @Column(name = "uid", nullable = false, length = 32)
+  private String uid;
+
+  @Column(name = "userid", length = 32)
+  private String userid;
+
+  @Column(name = "rsaprivate", length = 1000)
+  private String rsaprivate;
+
+  @Column(name = "rsapublic", length = 1000)
+  private String rsapublic;
+
+  @Column(name = "secertkey", length = 64)
+  private String secertkey;
+
+  public String getUid() {
+    return uid;
+  }
+
+  public void setUid(String uid) {
+    this.uid = uid;
+  }
+
+  public String getUserid() {
+    return userid;
+  }
+
+  public void setUserid(String userid) {
+    this.userid = userid;
+  }
+
+  public String getRsaprivate() {
+    return rsaprivate;
+  }
+
+  public void setRsaprivate(String rsaprivate) {
+    this.rsaprivate = rsaprivate;
+  }
+
+  public String getRsapublic() {
+    return rsapublic;
+  }
+
+  public void setRsapublic(String rsapublic) {
+    this.rsapublic = rsapublic;
+  }
+
+  public String getSecertkey() {
+    return secertkey;
+  }
+
+  public void setSecertkey(String secertkey) {
+    this.secertkey = secertkey;
+  }
+}
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
index 755d619..da943d3 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/controller/user_api_controller.kt
@@ -360,19 +360,18 @@
      * 签约银行协议
      */
     @PostMapping("/signbxy")
-    fun signbxy(userid: String, code: String, phone: String): ResponseEntity<Any> {
-        val card = mobileApiService.findCardByUserid(userid)
+    fun signbxy(@RequestBody param:SignBxyParam): ResponseEntity<Any> {
+        val card = mobileApiService.findCardByUserid(param.userid)
                 ?: return ResponseEntity.ok(ResponseBodyBuilder.create()
                         .fail(400, "卡片不存在,请重新绑定"))
         //call sign api
         val person = userService.findOnePersonByUserid(card.userid)
-        val resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, phone, YnrccUtil.TRANSTYPE_SIGNCARD, code)
+        val resp = citizencardPayService.signCard(card.cardno, person.name, person.idtype, person.idno, param.phone, YnrccUtil.TRANSTYPE_SIGNCARD, param.code)
         if (resp.code != "0000") {
             return ResponseEntity.ok(ResponseBodyBuilder.create()
                     .fail(500, resp.message))
         }
-        card.signed = true
-        mobileApiService.saveCard(card)
+        mobileApiService.signBxy(card,param)
         return ResponseEntity.ok(ResponseBodyBuilder.create()
                 .success("ok"))
     }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
index 55d717c..bbe2e84 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/MobileApiService.kt
@@ -1,6 +1,7 @@
 package com.supwisdom.dlpay.mobile.service
 
 import com.supwisdom.dlpay.api.bean.BaseResp
+import com.supwisdom.dlpay.api.bean.SignBxyParam
 import com.supwisdom.dlpay.api.domain.TCard
 import com.supwisdom.dlpay.mobile.domain.TBMobileUser
 import com.supwisdom.dlpay.mobile.domain.TBPages
@@ -22,6 +23,8 @@
 
     fun saveCard(card:TCard):TCard
 
+    fun signBxy(card:TCard,param: SignBxyParam)
+
     fun sendSms(phone:String,code:String):BaseResp
 
     fun findByUseridAndStatus(userid:String,status:String):List<TBMobileUser>?
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
index f9c2b1e..2aebcee 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/mobile/service/impl/MobileApiServiceImpl.kt
@@ -2,8 +2,11 @@
 
 import com.mascloud.sdkclient.Client
 import com.supwisdom.dlpay.api.bean.BaseResp
+import com.supwisdom.dlpay.api.bean.SignBxyParam
 import com.supwisdom.dlpay.api.dao.CardDao
+import com.supwisdom.dlpay.api.dao.UserSecretDao
 import com.supwisdom.dlpay.api.domain.TCard
+import com.supwisdom.dlpay.api.domain.TUserSecret
 import com.supwisdom.dlpay.framework.service.SystemUtilService
 import com.supwisdom.dlpay.mobile.dao.MobileUserDao
 import com.supwisdom.dlpay.mobile.dao.PagesDao
@@ -29,6 +32,9 @@
     lateinit var pagesDao: PagesDao
 
     @Autowired
+    lateinit var userSecretDao: UserSecretDao
+
+    @Autowired
     lateinit var systemUtilService: SystemUtilService
     companion object {
         var isMsgLogined: Boolean = false
@@ -71,6 +77,28 @@
         return cardDao.save(card)
     }
 
+    override fun signBxy(card: TCard, param: SignBxyParam) {
+        card.signed = true
+        cardDao.save(card)
+        val optional = userSecretDao.findById(param.uid)
+        if (optional.isPresent) {
+            val userSecret = optional.get()
+            userSecret.userid = param.userid
+            userSecret.rsaprivate = param.rsaprivate
+            userSecret.rsapublic = param.rsapublic
+            userSecret.secertkey = param.secertkey
+            userSecretDao.save(userSecret)
+        } else {
+            val userSecret = TUserSecret()
+            userSecret.uid = param.uid
+            userSecret.userid = param.userid
+            userSecret.rsaprivate = param.rsaprivate
+            userSecret.rsapublic = param.rsapublic
+            userSecret.secertkey = param.secertkey
+            userSecretDao.save(userSecret)
+        }
+    }
+
     override fun sendSms(phone: String, code: String): BaseResp {
         var resp = BaseResp()
         var url = systemUtilService.getBusinessValue("sms.url")