diff --git a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardParam.java b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardParam.java
index f9c6c03..934946b 100644
--- a/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardParam.java
+++ b/payapi-common/src/main/java/com/supwisdom/dlpay/api/bean/QueryCardParam.java
@@ -22,7 +22,7 @@
 
   @Override
   public boolean checkParam() throws RequestParamCheckException {
-    if (StringUtils.isEmpty(cardno) && StringUtils.isEmpty(cardno)) {
+    if (StringUtils.isEmpty(cardno) && StringUtils.isEmpty(userid)) {
       throw new RequestParamCheckException("卡号或用户ID不能全为空");
     }
     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 45ea831..55aa02e 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
@@ -29,13 +29,13 @@
   ApiResponse testmsg();
 
   @PostMapping("/api/user/userTask")
-  ApiResponse userTask();
+  ApiResponse userTask(@RequestBody UserTaskParam param);
 
   @PostMapping("/api/user/getTask")
-  ApiResponse getTPointsTaskNoPage();
+  Map<String, Object> getTPointsTaskNoPage();
 
   @PostMapping("/api/user/getUserPoints")
-  ApiResponse getUserPoints(@RequestBody UserPointsParam param);
+  Map<String, Object> getUserPoints(@RequestBody UserPointsParam param);
 
   @PostMapping("/api/user/queryPersonDtl")
   Map<String, Object> queryPersonDtl(@RequestBody QueryPersonDtlParam param);
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 e0100f2..14a7bf8 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
@@ -164,7 +164,10 @@
         val ret = pointsService.finishTask(param.userid, param.taskid)
         return if(ret.get("code")==200){
             ResponseEntity.ok(ResponseBodyBuilder.create()
-                    .success("ok"))
+                    .success(ApiResponse().apply {
+                        this.retcode = 0
+                        this.retmsg = "ok"
+                    }, "ok"))
         }else{
             ResponseEntity.ok(ResponseBodyBuilder.create()
                     .fail(500, ret.get("msg") as String))
@@ -174,7 +177,7 @@
     fun getTPointsTaskNoPage(): ResponseEntity<Any> {
         val ret = pointsService.getTPointsTaskNoPage()
         return if(ret.get("code")==200){
-            ResponseEntity.ok(ResponseBodyBuilder.create().data("ret", ret.get("dataList")!!)
+            ResponseEntity.ok(ResponseBodyBuilder.create().data("data", ret.get("dataList")!!)
                     .success("ok"))
         }else{
             ResponseEntity.ok(ResponseBodyBuilder.create()
