diff --git a/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiTask.java b/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiTask.java index 619dbbd..5e58411 100644 --- a/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiTask.java +++ b/src/src/main/java/com/my/graphiteDigesterBg/diframe/api/DiApiTask.java @@ -2,6 +2,7 @@ package com.my.graphiteDigesterBg.diframe.api; import com.my.graphiteDigesterBg.diframe.*; import com.my.graphiteDigesterBg.diframe.model.DiMdbTaskExecution; import com.my.graphiteDigesterBg.diframe.model.DiMdbUser; +import com.my.graphiteDigesterBg.model.MdbOperationLog; import jakarta.annotation.Resource; import jakarta.servlet.http.HttpServletRequest; import org.springframework.stereotype.Controller; @@ -11,6 +12,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; +import java.util.ArrayList; import java.util.Map; @Controller public class DiApiTask extends DiApiControllerBase { @@ -106,4 +108,30 @@ public class DiApiTask extends DiApiControllerBase { } return this.success(exec); } + + @ResponseBody + @PostMapping("/api/task/list") + public DiApiResponse list(@RequestBody Map params) { + Integer offset = (Integer)params.get("offset"); + Integer limit = (Integer)params.get("limit"); + + var criteria = new DiActiveRecordCriteria(); + criteria.limit = limit == null ? 10 : limit; + criteria.offset = offset == null ? 0 : offset; + var tasks = DiActiveRecord.find(DiMdbTaskExecution.class, criteria); + + var list = new ArrayList>(); + for ( var task : tasks ) { + var map = task.toMap(); + map.put("user", null); + if ( 0 != task.userId ) { + var user = DiActiveRecord.findOne(DiMdbUser.class, task.userId); + map.put("user", user.toMap()); + } + list.add(map); + } + + var total = DiActiveRecord.count(DiMdbTaskExecution.class, criteria); + return this.success(Map.of("list",list, "total", total)); + } }