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 6befaec..575d011 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
@@ -32,7 +32,10 @@
   ApiResponse userTask(@RequestBody UserTaskParam param);
 
   @PostMapping("/api/user/getTask")
-  Map<String, Object> getTPointsTaskNoPage();
+  Map<String, Object> getTPointsTaskNoPage(@RequestParam("userid") String userid);
+
+  @PostMapping("/api/user/getTaskStatus")
+  Map<String, Object> getTaskStatus(@RequestParam("userid") String userid,@RequestParam("taskid")Integer taskid);
 
   @PostMapping("/api/user/getUserPoints")
   Map<String, Object> getUserPoints(@RequestBody UserPointsParam param);
@@ -69,4 +72,7 @@
 
   @PostMapping("/api/user/qrcode")
   Map<String, Object> qrcode(@RequestBody QrcodeParam param);
+
+  @PostMapping("/api/user/consumetask")
+  ApiResponse consumeTask(@RequestParam("userid") String userid);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java
index 0f39c37..3be4457 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/api/dao/PersondtlDao.java
@@ -25,4 +25,6 @@
     List<TPersondtl> findAllByUseridAndTransdateStartingWithAndReverseFlagAndStatusAndTradeflag(String userid, String transdate,String reverseFlag,String status,String tradeflag);
 
     List<TPersondtl> findAllByTransdateAndReverseFlagAndStatusAndTradeflag(String transdate,String reverseFlag,String status,String tradeflag);
+
+    TPersondtl findTopByUseridAndStatusAndTradeflag(String userid, String status, String tradeFlag);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java
index 0bbf7a3..5e3d58e 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/dao/PointsDtlDao.java
@@ -33,4 +33,5 @@
 
   TPointsdtl findAllByUseridAndRefnoAndTransdate(String userid,Integer refno,String transdate);
 
+  TPointsdtl findTopByUseridAndTypeAndRefnoOrderByIdDesc(String userid, String type, Integer refno);
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsTask.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsTask.java
index 3bfb71b..c56be1e 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsTask.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsTask.java
@@ -37,6 +37,9 @@
   @Column(name = "ORDERNUM")
   private Integer ordernum;
 
+  @Transient
+  private String lasttime;
+
   public Integer getTaskid() {
     return taskid;
   }
@@ -108,4 +111,12 @@
   public void setOrdernum(Integer ordernum) {
     this.ordernum = ordernum;
   }
+
+  public String getLasttime() {
+    return lasttime;
+  }
+
+  public void setLasttime(String lasttime) {
+    this.lasttime = lasttime;
+  }
 }
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java
index 34c2f98..a5fe945 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/framework/domain/TPointsdtl.java
@@ -5,7 +5,7 @@
 import javax.persistence.*;
 
 @Entity
-@Table(name = "TB_POINTSDTL")
+@Table(name = "TB_POINTSDTL",indexes = {@Index(name = "points_dtl_idx",columnList = "userid")})
 public class TPointsdtl {
   @Id
   @GenericGenerator(name = "idGeneratorDtl", strategy = "sequence")
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java
index 61f6fd6..7efce69 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/PointsService.java
@@ -141,7 +141,10 @@
   JsonResult finishTask (String userid,String taskid);
 
   @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
-  JsonResult getTPointsTaskNoPage();
+  JsonResult getTPointsTaskNoPage(String userid);
+
+  @Transactional(propagation = Propagation.REQUIRED, rollbackFor = Exception.class, readOnly = true)
+  TPointsdtl getTaskStatus(String userid,Integer taskid);
 
 
   /*
diff --git a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java
index 27d45b2..2d638b6 100644
--- a/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java
+++ b/payapi/src/main/java/com/supwisdom/dlpay/system/service/impl/PointsServiceImpl.java
@@ -933,11 +933,25 @@
   }
 
   @Override
-  public JsonResult getTPointsTaskNoPage() {
+  public JsonResult getTPointsTaskNoPage(String userid) {
+    List<TPointsTask> list = pointsTaskDao.findAll(Sort.by(Sort.Direction.ASC, "ordernum"));
+    if (!StringUtil.isEmpty(userid)) {
+      list.forEach(task ->{
+        TPointsdtl dtl = pointsDtlDao.findTopByUseridAndTypeAndRefnoOrderByIdDesc(userid, TradeDict.TASK_FLAG_FINISH, task.getTaskid());
+        if (dtl != null) {
+          task.setLasttime(dtl.getTransdate() + dtl.getTranstime());
+        }
+      });
+    }
     return JsonResult.ok().put("dataList",pointsTaskDao.findAll(Sort.by(Sort.Direction.ASC,"ordernum")));
   }
 
   @Override
+  public TPointsdtl getTaskStatus(String userid, Integer taskid) {
+    return pointsDtlDao.findTopByUseridAndTypeAndRefnoOrderByIdDesc(userid, TradeDict.TASK_FLAG_FINISH, taskid);
+  }
+
+  @Override
   public JsonResult pointsOutdate(){
     String yesterday = DateUtil.getYesterdayDay();
     List<TPointsDetail> pointsDetails = pointsDetailDao.findAllByOutDateAndStatus("20200821","normal");
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 de8dd4a..755d619 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
@@ -188,8 +188,8 @@
         }
     }
     @PostMapping("/getTask")
-    fun getTPointsTaskNoPage(): ResponseEntity<Any> {
-        val ret = pointsService.getTPointsTaskNoPage()
+    fun getTPointsTaskNoPage(userid:String?): ResponseEntity<Any> {
+        val ret = pointsService.getTPointsTaskNoPage(userid)
         return if(ret.get("code")==200){
             ResponseEntity.ok(ResponseBodyBuilder.create().data("data", ret.get("dataList")!!)
                     .success("ok"))
@@ -198,6 +198,16 @@
                     .fail(500, ret.get("msg") as String))
         }
     }
+    @PostMapping("/getTaskStatus")
+    fun getTaskStatus(userid:String,taskid:Int): ResponseEntity<Any> {
+        val dtl = pointsService.getTaskStatus(userid,taskid)
+        var time = ""
+        if (dtl != null) {
+            time = dtl.transdate + dtl.transtime
+        }
+        return ResponseEntity.ok(ResponseBodyBuilder.create().data("data",time)
+                .success("ok"))
+    }
     @PostMapping("/getUserPoints")
     fun getUserPoints(@RequestBody param: UserPointsParam): ResponseEntity<Any> {
         var lev = LevelBean()
@@ -403,4 +413,19 @@
                     .fail(500, resp.retmsg))
         }
     }
+
+    /**
+     * 查询用户是否完成了首次消费任务
+     */
+    @PostMapping("/consumetask")
+    fun consumeTask(userid:String): ResponseEntity<Any> {
+        val flag = userService.findPersonIsConsume(userid)
+        return if (flag) {
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .success("ok"))
+        } else {
+            ResponseEntity.ok(ResponseBodyBuilder.create()
+                    .fail(400,"未完成首次消费任务"))
+        }
+    }
 }
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
index ce708b1..b98129a 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/impl/user_service_impl.kt
@@ -230,4 +230,8 @@
             return null
         }
     }
+
+    override fun findPersonIsConsume(userid: String): Boolean {
+        return persondtlDao.findTopByUseridAndStatusAndTradeflag(userid, TradeDict.DTL_STATUS_SUCCESS, TradeDict.TRADE_FLAG_OUT) != null
+    }
 }
\ No newline at end of file
diff --git a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
index 26fc2ff..a439f44 100644
--- a/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
+++ b/payapi/src/main/kotlin/com/supwisdom/dlpay/api/service/user_service.kt
@@ -54,4 +54,7 @@
     @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
     fun findPersondtlDetailByUserid(userid:String, billno :String) : TPersondtl?
 
+    @Transactional(propagation = Propagation.REQUIRED, rollbackFor = arrayOf(Exception::class), readOnly = true)
+    fun findPersonIsConsume(userid:String): Boolean
+
 }
\ No newline at end of file
