增加查询用户任务积分流水接口
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