This is an automated email from the ASF dual-hosted git repository.

dijiekstra pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel-web.git


The following commit(s) were added to refs/heads/dev by this push:
     new 2b31d451 [Improve][seatunnel-server] Update api style follow front-end 
& product-design (#12)
2b31d451 is described below

commit 2b31d451ca94217fc312b7fe6cf985dd02027adb
Author: dijie <[email protected]>
AuthorDate: Wed Feb 8 21:16:39 2023 +0800

    [Improve][seatunnel-server] Update api style follow front-end & 
product-design (#12)
    
    * [Improve][seatunnel-server] Update api style follow front-end & 
product-design
    
    * [Improve][seatunnel-server] Update api style follow front-end & 
product-design
    
    * [Improve][seatunnel-server] Bug fix
    
    ---------
    
    Co-authored-by: dijie <[email protected]>
---
 seatunnel-server/pom.xml                           |   1 +
 seatunnel-server/seatunnel-app/pom.xml             |   7 ++
 .../apache/seatunnel/app/aspect/LoginAspect.java   |   2 +
 .../ObjectTypeEnum.java}                           |  32 +++---
 .../seatunnel/app/controller/ScriptController.java |   5 -
 .../seatunnel/app/controller/TaskController.java   |  14 +--
 .../seatunnel/app/controller/UserController.java   |   2 +-
 .../seatunnel/app/dal/dao/IScriptJobApplyDao.java  |   7 ++
 .../app/dal/dao/impl/ScriptJobApplyDaoImpl.java    |  12 +++
 .../seatunnel/app/dal/entity/JobDefine.java}       |  29 +++--
 .../app/dal/mapper/ScriptJobApplyMapper.java       |   7 ++
 .../app/domain/request/task/ExecuteReq.java        |   4 +-
 .../app/domain/request/task/RecycleScriptReq.java  |   2 +-
 .../app/domain/request/user/BaseUserReq.java       |   4 +-
 .../seatunnel/app/domain/response/PageInfo.java    |   3 +-
 .../response/task/InstanceSimpleInfoRes.java       |   4 +
 .../app/domain/response/task/JobSimpleInfoRes.java |  12 ++-
 .../domain/response/user/UserSimpleInfoRes.java    |   7 +-
 .../app/service/impl/TaskServiceImpl.java          | 117 ++++++++++++++++++---
 .../app/utils/GlobalExceptionHandler.java          |   9 +-
 .../app/dal/mapper/ScriptJobApplyMapper.xml        |  49 +++++++++
 .../apache/seatunnel/app/dal/mapper/UserMapper.xml |   2 +-
 .../dolphinscheduler/dto/ProcessDefinitionDto.java |   2 +-
 .../dolphinscheduler/enums/ReleaseStateEnum.java}  |  37 ++++---
 .../dolphinscheduler/enums/RunFrequencyEnum.java}  |  18 ++--
 .../impl/DolphinschedulerServiceImpl.java          |   5 +
 .../dolphinscheduler/impl/InstanceServiceImpl.java |   2 +
 .../dolphinscheduler/impl/JobServiceImpl.java      |   9 +-
 .../server/common/SeatunnelErrorEnum.java          |   1 +
 .../seatunnel/spi/scheduler/dto/InstanceDto.java   |   1 +
 .../spi/scheduler/dto/JobSimpleInfoDto.java        |   2 +
 31 files changed, 325 insertions(+), 83 deletions(-)

diff --git a/seatunnel-server/pom.xml b/seatunnel-server/pom.xml
index ed507338..17f65461 100644
--- a/seatunnel-server/pom.xml
+++ b/seatunnel-server/pom.xml
@@ -43,6 +43,7 @@
         <javax.annotation-api.version>1.3.2</javax.annotation-api.version>
         <jsoup.version>1.14.3</jsoup.version>
         <jwt.version>0.10.7</jwt.version>
+        <cron-utils.version>9.1.6</cron-utils.version>
     </properties>
 
     <dependencyManagement>
diff --git a/seatunnel-server/seatunnel-app/pom.xml 
b/seatunnel-server/seatunnel-app/pom.xml
index 9fc02f38..a268091c 100644
--- a/seatunnel-server/seatunnel-app/pom.xml
+++ b/seatunnel-server/seatunnel-app/pom.xml
@@ -176,6 +176,13 @@
             <groupId>org.springframework.boot</groupId>
             <artifactId>spring-boot-starter-aop</artifactId>
         </dependency>
+
+        <!-- https://mvnrepository.com/artifact/com.cronutils/cron-utils -->
+        <dependency>
+            <groupId>com.cronutils</groupId>
+            <artifactId>cron-utils</artifactId>
+            <version>${cron-utils.version}</version>
+        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/aspect/LoginAspect.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/aspect/LoginAspect.java
index 1bba7f74..5788c52c 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/aspect/LoginAspect.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/aspect/LoginAspect.java
@@ -65,6 +65,8 @@ public class LoginAspect {
         final String token = jwtUtils.genToken(data.toMap());
         response.setHeader(TOKEN, token);
 
+        data.setToken(token);
+
         final UserLoginLogDto logDto = UserLoginLogDto.builder()
                 .token(token)
                 .tokenStatus(UserTokenStatusEnum.ENABLE.enable())
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/ObjectTypeEnum.java
similarity index 56%
copy from 
seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
copy to 
seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/ObjectTypeEnum.java
index b1c6af20..9bfdf720 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/ObjectTypeEnum.java
@@ -15,23 +15,27 @@
  * limitations under the License.
  */
 
-package org.apache.seatunnel.app.domain.response.user;
+package org.apache.seatunnel.app.common;
 
-import com.google.common.collect.Maps;
-import io.swagger.annotations.ApiModel;
+import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
+import org.apache.seatunnel.server.common.SeatunnelException;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.Objects;
 
-@ApiModel(value = "userSimpleInfoRes", description = "user simple information")
-public class UserSimpleInfoRes extends BaseUserInfoRes {
+public enum ObjectTypeEnum {
+    SCRIPT,
+    JOB,
+    INSTANCE,
+    ;
 
-    public Map<String, Object> toMap() {
-        final HashMap<String, Object> userMap = Maps.newHashMap();
-        userMap.put("id", getId());
-        userMap.put("name", getName());
-        userMap.put("status", getStatus());
-        userMap.put("type", getType());
-        return userMap;
+    public static ObjectTypeEnum parse(Integer type) {
+        if (Objects.nonNull(type)) {
+            for (ObjectTypeEnum value : ObjectTypeEnum.values()) {
+                if (value.ordinal() == type) {
+                    return value;
+                }
+            }
+        }
+        throw new SeatunnelException(SeatunnelErrorEnum.NO_SUCH_ELEMENT);
     }
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
index f983cbdb..16574f07 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/ScriptController.java
@@ -30,8 +30,6 @@ import 
org.apache.seatunnel.app.domain.response.script.ScriptParamRes;
 import org.apache.seatunnel.app.domain.response.script.ScriptSimpleInfoRes;
 import org.apache.seatunnel.app.service.IScriptService;
 
-import io.swagger.annotations.ApiImplicitParam;
-import io.swagger.annotations.ApiImplicitParams;
 import io.swagger.annotations.ApiOperation;
 import io.swagger.annotations.ApiParam;
 import org.springframework.web.bind.annotation.DeleteMapping;
@@ -119,9 +117,6 @@ public class ScriptController {
 
     @GetMapping("/{scriptId}/param")
     @ApiOperation(value = "fetch script param", httpMethod = "GET")
-    @ApiImplicitParams({
-            @ApiImplicitParam(name = "id", value = "script id", dataType = 
"Integer"),
-    })
     public Result<List<ScriptParamRes>> fetchScriptParam(@ApiParam(value = 
"script id", required = true) @PathVariable(value = "scriptId") Integer 
scriptId) {
         return Result.success(iScriptService.fetchScriptParam(scriptId));
     }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
index 5ca3ace8..8657a045 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/TaskController.java
@@ -51,12 +51,12 @@ public class TaskController {
     @Resource
     private ITaskService iTaskService;
 
-    @PatchMapping("/{scriptId}/recycle")
-    @ApiOperation(value = "recycle script", httpMethod = "PATCH")
-    Result<Void> recycle(@ApiParam(value = "script id", required = true) 
@PathVariable(value = "scriptId") Integer scriptId,
+    @PatchMapping("/{jobId}/recycle")
+    @ApiOperation(value = "recycle job", httpMethod = "PATCH")
+    Result<Void> recycle(@ApiParam(value = "job id", required = true) 
@PathVariable(value = "jobId") Long jobId,
                          @ApiIgnore @UserId Integer operatorId) {
         final RecycleScriptReq req = new RecycleScriptReq();
-        req.setScriptId(scriptId);
+        req.setJobId(jobId);
         req.setOperatorId(operatorId);
 
         iTaskService.recycleScriptFromScheduler(req);
@@ -89,12 +89,12 @@ public class TaskController {
         return Result.success(iTaskService.listInstance(req));
     }
 
-    @PostMapping("/{scriptId}/execute")
+    @PostMapping("/{objectId}/execute")
     @ApiOperation(value = "execute script temporary", httpMethod = "POST")
-    Result<InstanceSimpleInfoRes> tmpExecute(@ApiParam(value = "script id", 
required = true) @PathVariable(value = "scriptId") Integer scriptId,
+    Result<InstanceSimpleInfoRes> tmpExecute(@ApiParam(value = "object id", 
required = true) @PathVariable(value = "objectId") Long objectId,
                                              @RequestBody @NotNull ExecuteReq 
req,
                                              @ApiIgnore @UserId Integer 
operatorId) {
-        req.setScriptId(scriptId);
+        req.setObjectId(objectId);
         req.setOperatorId(operatorId);
 
         return Result.success(iTaskService.tmpExecute(req));
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
index 59a59ee8..08cd9072 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/UserController.java
@@ -75,7 +75,7 @@ public class UserController {
 
     @GetMapping
     @ApiOperation(value = "user list", httpMethod = "GET")
-    public Result<PageInfo<UserSimpleInfoRes>> list(@ApiParam(value = "job 
name") @RequestParam(required = false) String name,
+    public Result<PageInfo<UserSimpleInfoRes>> list(@ApiParam(value = "user 
name") @RequestParam(required = false) String name,
                                                     @ApiParam(value = "page 
num", required = true) @RequestParam Integer pageNo,
                                                     @ApiParam(value = "page 
size", required = true) @RequestParam Integer pageSize) {
         final UserListReq req = new UserListReq();
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
index 0efdae26..7d571b71 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
@@ -17,11 +17,18 @@
 
 package org.apache.seatunnel.app.dal.dao;
 
+import org.apache.seatunnel.app.dal.entity.JobDefine;
 import org.apache.seatunnel.app.dal.entity.ScriptJobApply;
 import org.apache.seatunnel.app.domain.dto.job.ScriptJobApplyDto;
 
+import java.util.List;
+
 public interface IScriptJobApplyDao {
     void insertOrUpdate(ScriptJobApplyDto dto);
 
     ScriptJobApply getByScriptId(Integer id);
+
+    List<JobDefine> selectJobDefineByJobIds(List<Long> jobIds);
+
+    ScriptJobApply getByJobId(long jobId);
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptJobApplyDaoImpl.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptJobApplyDaoImpl.java
index 1b5b1d50..0aab6d50 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptJobApplyDaoImpl.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/ScriptJobApplyDaoImpl.java
@@ -18,6 +18,7 @@
 package org.apache.seatunnel.app.dal.dao.impl;
 
 import org.apache.seatunnel.app.dal.dao.IScriptJobApplyDao;
+import org.apache.seatunnel.app.dal.entity.JobDefine;
 import org.apache.seatunnel.app.dal.entity.ScriptJobApply;
 import org.apache.seatunnel.app.dal.mapper.ScriptJobApplyMapper;
 import org.apache.seatunnel.app.domain.dto.job.ScriptJobApplyDto;
@@ -26,6 +27,7 @@ import org.springframework.stereotype.Repository;
 
 import javax.annotation.Resource;
 
+import java.util.List;
 import java.util.Objects;
 
 @Repository
@@ -56,4 +58,14 @@ public class ScriptJobApplyDaoImpl implements 
IScriptJobApplyDao {
     public ScriptJobApply getByScriptId(Integer id) {
         return scriptJobApplyMapper.selectByScriptId(id);
     }
+
+    @Override
+    public List<JobDefine> selectJobDefineByJobIds(List<Long> jobIds) {
+        return scriptJobApplyMapper.selectJobDefineByJobIds(jobIds);
+    }
+
+    @Override
+    public ScriptJobApply getByJobId(long jobId) {
+        return scriptJobApplyMapper.selectByJobId(jobId);
+    }
 }
diff --git 
a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/JobDefine.java
similarity index 70%
copy from 
seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
copy to 
seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/JobDefine.java
index 28e88e9c..9befbe97 100644
--- 
a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/JobDefine.java
@@ -15,20 +15,33 @@
  * limitations under the License.
  */
 
-package org.apache.seatunnel.spi.scheduler.dto;
+package org.apache.seatunnel.app.dal.entity;
 
-import lombok.Builder;
 import lombok.Data;
 
 import java.util.Date;
 
-@Builder
 @Data
-public class JobSimpleInfoDto {
-    private long jobId;
-    private String jobStatus;
-    private String creatorName;
-    private String menderName;
+public class JobDefine {
+    private Integer scriptId;
+
+    private Integer schedulerConfigId;
+
+    private Long jobId;
+
+    private Integer operatorId;
+
     private Date createTime;
+
     private Date updateTime;
+
+    private String triggerExpression;
+
+    private Integer retryTimes;
+
+    private Integer retryInterval;
+
+    private Date activeStartTime;
+
+    private Date activeEndTime;
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.java
index 4115fd9c..5dddcfc6 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.java
@@ -17,10 +17,13 @@
 
 package org.apache.seatunnel.app.dal.mapper;
 
+import org.apache.seatunnel.app.dal.entity.JobDefine;
 import org.apache.seatunnel.app.dal.entity.ScriptJobApply;
 
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 public interface ScriptJobApplyMapper {
     int deleteByPrimaryKey(Integer id);
 
@@ -31,4 +34,8 @@ public interface ScriptJobApplyMapper {
     void update(ScriptJobApply record);
 
     ScriptJobApply selectByScriptId(@Param("scriptId") int scriptId);
+
+    List<JobDefine> selectJobDefineByJobIds(@Param("jobIds") List<Long> 
jobIds);
+
+    ScriptJobApply selectByJobId(@Param("jobId") long jobId);
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/ExecuteReq.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/ExecuteReq.java
index fd853d43..4f77ca79 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/ExecuteReq.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/ExecuteReq.java
@@ -28,7 +28,9 @@ import java.util.Map;
 @Data
 public class ExecuteReq {
     @ApiModelProperty(value = "script id", required = true, dataType = 
"Integer", hidden = true)
-    private Integer scriptId;
+    private Long objectId;
+    @ApiModelProperty(value = "object type", required = true, dataType = 
"Integer")
+    private Integer objectType;
     @ApiModelProperty(value = "execute content", required = true, dataType = 
"String")
     private String content;
     @ApiModelProperty(value = "operator id", required = true, dataType = 
"Integer", hidden = true)
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/RecycleScriptReq.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/RecycleScriptReq.java
index 5ee65d63..754949da 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/RecycleScriptReq.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/task/RecycleScriptReq.java
@@ -28,7 +28,7 @@ import javax.validation.constraints.NotNull;
 public class RecycleScriptReq {
     @ApiModelProperty(value = "script id", required = true, dataType = 
"Integer")
     @NotNull
-    private int scriptId;
+    private long jobId;
     @ApiModelProperty(value = "operator id", required = true, dataType = 
"Integer")
     @NotNull
     private int operatorId;
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/BaseUserReq.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/BaseUserReq.java
index 8ee3b671..87e44887 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/BaseUserReq.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/request/user/BaseUserReq.java
@@ -28,10 +28,10 @@ public class BaseUserReq {
     private String username;
     @ApiModelProperty(value = "user password", required = true, dataType = 
"String")
     private String password;
-    @ApiModelProperty(value = "user status", required = true, dataType = 
"Byte")
+    @ApiModelProperty(value = "user status", required = true, dataType = 
"Integer")
     @NotNull
     private Byte status;
-    @ApiModelProperty(value = "user type", required = true, dataType = "Byte")
+    @ApiModelProperty(value = "user type", required = true, dataType = 
"Integer")
     @NotNull
     private Byte type;
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java
index f4ced6e8..fb757c1e 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/PageInfo.java
@@ -19,12 +19,13 @@ package org.apache.seatunnel.app.domain.response;
 
 import io.swagger.annotations.ApiModel;
 
+import java.util.Collections;
 import java.util.List;
 
 @ApiModel(value = "pageInfo", description = "page info")
 @SuppressWarnings("MagicNumber")
 public class PageInfo<T> {
-    private List<T> data;
+    private List<T> data = Collections.emptyList();
     private Integer totalCount = 0;
     private Integer totalPage = 0;
     private Integer pageNo = 1;
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/InstanceSimpleInfoRes.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/InstanceSimpleInfoRes.java
index 2a681574..1bf4038a 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/InstanceSimpleInfoRes.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/InstanceSimpleInfoRes.java
@@ -40,10 +40,14 @@ public class InstanceSimpleInfoRes {
     private Date startTime;
     @ApiModelProperty(value = "end time", dataType = "Date")
     private Date endTime;
+    @ApiModelProperty(value = "next execution time", dataType = "Date")
+    private Date nextExecutionTime;
     @ApiModelProperty(value = "task status", dataType = "String")
     private String status;
     @ApiModelProperty(value = "execution duration", dataType = "String")
     private String executionDuration;
     @ApiModelProperty(value = "retry times", dataType = "Long")
     private long retryTimes;
+    @ApiModelProperty(value = "run frequency", dataType = "String")
+    private String runFrequency;
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/JobSimpleInfoRes.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/JobSimpleInfoRes.java
index 40b003be..90e8a4f5 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/JobSimpleInfoRes.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/task/JobSimpleInfoRes.java
@@ -17,6 +17,7 @@
 
 package org.apache.seatunnel.app.domain.response.task;
 
+import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Builder;
@@ -29,9 +30,18 @@ import java.util.Date;
 @Builder
 public class JobSimpleInfoRes {
     @ApiModelProperty(value = "job id", dataType = "Long")
-    private long jobId;
+    private Long jobId;
+    @ApiModelProperty(value = "script id", dataType = "Long")
+    private Integer scriptId;
+    @ApiModelProperty(value = "job name", dataType = "String")
+    @JsonProperty("datapipeName")
+    private String jobName;
     @ApiModelProperty(value = "job status", dataType = "String")
     private String jobStatus;
+    @ApiModelProperty(value = "job plan", dataType = "String")
+    private String jobPlan;
+    @ApiModelProperty(value = "job is publish", dataType = "Boolean")
+    private Boolean publish;
     @ApiModelProperty(value = "job creator", dataType = "String")
     private String creatorName;
     @ApiModelProperty(value = "job mender", dataType = "String")
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
index b1c6af20..19f05221 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
@@ -19,15 +19,18 @@ package org.apache.seatunnel.app.domain.response.user;
 
 import com.google.common.collect.Maps;
 import io.swagger.annotations.ApiModel;
+import lombok.Data;
 
-import java.util.HashMap;
 import java.util.Map;
 
 @ApiModel(value = "userSimpleInfoRes", description = "user simple information")
+@Data
 public class UserSimpleInfoRes extends BaseUserInfoRes {
 
+    private String token;
+
     public Map<String, Object> toMap() {
-        final HashMap<String, Object> userMap = Maps.newHashMap();
+        final Map<String, Object> userMap = Maps.newHashMap();
         userMap.put("id", getId());
         userMap.put("name", getName());
         userMap.put("status", getStatus());
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
index c687c93d..3c87a8af 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/TaskServiceImpl.java
@@ -17,17 +17,28 @@
 
 package org.apache.seatunnel.app.service.impl;
 
+import static org.apache.seatunnel.app.common.ObjectTypeEnum.INSTANCE;
+import static org.apache.seatunnel.app.common.ObjectTypeEnum.JOB;
+import static org.apache.seatunnel.app.common.ObjectTypeEnum.SCRIPT;
 import static org.apache.seatunnel.server.common.Constants.UNDERLINE;
+import static 
org.apache.seatunnel.server.common.SeatunnelErrorEnum.NO_SUCH_ELEMENT;
+import static 
org.apache.seatunnel.server.common.SeatunnelErrorEnum.NO_SUCH_JOB;
 import static 
org.apache.seatunnel.server.common.SeatunnelErrorEnum.NO_SUCH_SCRIPT;
 import static 
org.apache.seatunnel.server.common.SeatunnelErrorEnum.SCHEDULER_CONFIG_NOT_EXIST;
 import static 
org.apache.seatunnel.spi.scheduler.constants.SchedulerConstant.NEVER_TRIGGER_EXPRESSION;
 import static 
org.apache.seatunnel.spi.scheduler.constants.SchedulerConstant.RETRY_INTERVAL_DEFAULT;
 import static 
org.apache.seatunnel.spi.scheduler.constants.SchedulerConstant.RETRY_TIMES_DEFAULT;
+import static com.cronutils.model.CronType.QUARTZ;
+import static java.util.Objects.isNull;
+import static java.util.Objects.nonNull;
+import static java.util.Objects.requireNonNull;
 
+import org.apache.seatunnel.app.common.ObjectTypeEnum;
 import org.apache.seatunnel.app.dal.dao.ISchedulerConfigDao;
 import org.apache.seatunnel.app.dal.dao.IScriptDao;
 import org.apache.seatunnel.app.dal.dao.IScriptJobApplyDao;
 import org.apache.seatunnel.app.dal.dao.IScriptParamDao;
+import org.apache.seatunnel.app.dal.entity.JobDefine;
 import org.apache.seatunnel.app.dal.entity.SchedulerConfig;
 import org.apache.seatunnel.app.dal.entity.Script;
 import org.apache.seatunnel.app.dal.entity.ScriptJobApply;
@@ -57,18 +68,25 @@ import 
org.apache.seatunnel.spi.scheduler.dto.JobSimpleInfoDto;
 import org.apache.seatunnel.spi.scheduler.dto.SchedulerConfigDto;
 import org.apache.seatunnel.spi.scheduler.enums.ExecuteTypeEnum;
 
+import com.cronutils.model.definition.CronDefinition;
+import com.cronutils.model.definition.CronDefinitionBuilder;
+import com.cronutils.model.time.ExecutionTime;
+import com.cronutils.parser.CronParser;
 import com.google.common.collect.Maps;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.stereotype.Component;
 import org.springframework.util.CollectionUtils;
 
+import javax.annotation.PostConstruct;
 import javax.annotation.Resource;
 
+import java.time.ZonedDateTime;
 import java.util.Date;
 import java.util.List;
 import java.util.Map;
-import java.util.Objects;
+import java.util.Optional;
 import java.util.concurrent.CompletableFuture;
+import java.util.function.Function;
 import java.util.stream.Collectors;
 
 @Component
@@ -93,6 +111,17 @@ public class TaskServiceImpl implements ITaskService {
     @Resource
     private IScriptJobApplyDao scriptJobApplyDaoImpl;
 
+    private Map<ObjectTypeEnum, Function<ExecuteReq, ExecuteDto>> 
executeFuncMap = 
Maps.newHashMapWithExpectedSize(ObjectTypeEnum.values().length);
+
+    private static final CronDefinition CRON_DEFINITION = 
CronDefinitionBuilder.instanceDefinitionFor(QUARTZ);
+
+    @PostConstruct
+    public void initFuncMap(){
+        executeFuncMap.put(SCRIPT, this::getExecuteDtoByScriptId);
+        executeFuncMap.put(JOB, this::getExecuteDtoByJobId);
+        executeFuncMap.put(INSTANCE, null);
+    }
+
     @Override
     public Long pushScriptToScheduler(PushScriptDto pushScriptDto) {
         final int scriptId = pushScriptDto.getScriptId();
@@ -100,7 +129,7 @@ public class TaskServiceImpl implements ITaskService {
 
         // check scheduler param
         SchedulerConfig config = 
schedulerConfigDaoImpl.getSchedulerConfig(scriptId);
-        if (Objects.isNull(config)) {
+        if (isNull(config)) {
             throw new SeatunnelException(SCHEDULER_CONFIG_NOT_EXIST);
         }
 
@@ -128,7 +157,7 @@ public class TaskServiceImpl implements ITaskService {
                 .build();
 
         ScriptJobApply apply = 
scriptJobApplyDaoImpl.getByScriptId(script.getId());
-        if (Objects.nonNull(apply)) {
+        if (nonNull(apply)) {
             jobDto.setJobId(apply.getJobId());
         }
 
@@ -142,8 +171,9 @@ public class TaskServiceImpl implements ITaskService {
 
     @Override
     public void recycleScriptFromScheduler(RecycleScriptReq req) {
-        final Script script = checkAndGetScript(req.getScriptId());
-        ScriptJobApply apply = 
scriptJobApplyDaoImpl.getByScriptId(script.getId());
+        ScriptJobApply apply = 
requireNonNull(scriptJobApplyDaoImpl.getByJobId(req.getJobId()), 
NO_SUCH_JOB::getTemplate);
+
+        final Script script = 
requireNonNull(scriptDaoImpl.getScript(apply.getScriptId()), 
NO_SUCH_JOB::getTemplate);
 
         final JobDto jobDto = JobDto.builder()
                 .jobId(apply.getJobId())
@@ -166,11 +196,24 @@ public class TaskServiceImpl implements ITaskService {
                 .build();
         final PageData<JobSimpleInfoDto> jobPageData = iJobService.list(dto);
         final List<JobSimpleInfoRes> data = 
jobPageData.getData().stream().map(this::translate).collect(Collectors.toList());
+
         final PageInfo<JobSimpleInfoRes> pageInfo = new PageInfo<>();
-        pageInfo.setData(data);
-        pageInfo.setTotalCount(jobPageData.getTotalCount());
-        pageInfo.setPageNo(req.getPageNo());
-        pageInfo.setPageSize(req.getPageSize());
+
+        if (!CollectionUtils.isEmpty(data)) {
+            final List<JobDefine> jobDefines = 
scriptJobApplyDaoImpl.selectJobDefineByJobIds(data.stream().map(JobSimpleInfoRes::getJobId).collect(Collectors.toList()));
+            final Map<Long, JobDefine> mapping = 
jobDefines.stream().collect(Collectors.toMap(JobDefine::getJobId, 
Function.identity()));
+
+            data.forEach(d -> {
+                final JobDefine jf = mapping.getOrDefault(d.getJobId(), new 
JobDefine());
+                d.setJobPlan(jf.getTriggerExpression());
+                d.setScriptId(jf.getScriptId());
+            });
+
+            pageInfo.setData(data);
+            pageInfo.setTotalCount(jobPageData.getTotalCount());
+            pageInfo.setPageNo(req.getPageNo());
+            pageInfo.setPageSize(req.getPageSize());
+        }
 
         return pageInfo;
     }
@@ -185,6 +228,25 @@ public class TaskServiceImpl implements ITaskService {
                 .build();
         final PageData<InstanceDto> instancePageData = 
iInstanceService.list(dto);
         final List<InstanceSimpleInfoRes> data = 
instancePageData.getData().stream().map(this::translate).collect(Collectors.toList());
+
+        final List<JobDefine> jobDefines = 
scriptJobApplyDaoImpl.selectJobDefineByJobIds(data.stream().map(InstanceSimpleInfoRes::getJobId).collect(Collectors.toList()));
+        final Map<Long, JobDefine> mapping = 
jobDefines.stream().collect(Collectors.toMap(JobDefine::getJobId, 
Function.identity()));
+
+        data.forEach(d -> {
+            final JobDefine jobDefine = mapping.get(d.getJobId());
+            CronParser parser = new CronParser(CRON_DEFINITION);
+
+            if (nonNull(jobDefine)) {
+                ExecutionTime executionTime = 
ExecutionTime.forCron(parser.parse(jobDefine.getTriggerExpression()));
+                Optional<ZonedDateTime> nextExecution = 
executionTime.nextExecution(ZonedDateTime.now());
+
+                if (nextExecution.isPresent()) {
+                    final ZonedDateTime next = nextExecution.get();
+                    d.setNextExecutionTime(Date.from(next.toInstant()));
+                }
+            }
+        });
+
         final PageInfo<InstanceSimpleInfoRes> pageInfo = new PageInfo<>();
         pageInfo.setData(data);
         pageInfo.setTotalCount(instancePageData.getTotalCount());
@@ -196,7 +258,29 @@ public class TaskServiceImpl implements ITaskService {
 
     @Override
     public InstanceSimpleInfoRes tmpExecute(ExecuteReq req) {
-        final Script script = checkAndGetScript(req.getScriptId());
+
+        final Integer objectType = req.getObjectType();
+
+        final ObjectTypeEnum parse = ObjectTypeEnum.parse(objectType);
+
+        final Function<ExecuteReq, ExecuteDto> executeFunc =
+                Optional.ofNullable(executeFuncMap.get(parse)).orElseThrow(() 
-> new SeatunnelException(NO_SUCH_ELEMENT));
+
+        final ExecuteDto dto = executeFunc.apply(req);
+
+        return this.translate(iJobService.execute(dto));
+    }
+
+    private ExecuteDto getExecuteDtoByJobId(ExecuteReq req) {
+        return ExecuteDto.builder()
+                .jobDto(JobDto.builder()
+                        .jobId(req.getObjectId())
+                        .build())
+                .build();
+    }
+
+    private ExecuteDto getExecuteDtoByScriptId(ExecuteReq req) {
+        final Script script = 
checkAndGetScript(Math.toIntExact(req.getObjectId()));
 
         final SchedulerConfigDto schedulerConfigDto = 
SchedulerConfigDto.builder()
                 .retryInterval(RETRY_INTERVAL_DEFAULT)
@@ -222,8 +306,7 @@ public class TaskServiceImpl implements ITaskService {
                 .executeTypeEnum(ExecuteTypeEnum.parse(req.getExecuteType()))
                 .complementDataDto(null)
                 .build();
-
-        return this.translate(iJobService.execute(dto));
+        return dto;
     }
 
     @Override
@@ -244,7 +327,9 @@ public class TaskServiceImpl implements ITaskService {
     private JobSimpleInfoRes translate(JobSimpleInfoDto dto) {
         return JobSimpleInfoRes.builder()
                 .jobId(dto.getJobId())
+                .jobName(dto.getJobName())
                 .jobStatus(dto.getJobStatus())
+                .publish(dto.getPublish())
                 .creatorName(dto.getCreatorName())
                 .menderName(dto.getMenderName())
                 .createTime(dto.getCreateTime())
@@ -253,6 +338,9 @@ public class TaskServiceImpl implements ITaskService {
     }
 
     private InstanceSimpleInfoRes translate(InstanceDto dto) {
+        if (isNull(dto)) {
+            return null;
+        }
         return InstanceSimpleInfoRes.builder()
                 .instanceId(dto.getInstanceId())
                 .jobId(dto.getJobId())
@@ -263,12 +351,13 @@ public class TaskServiceImpl implements ITaskService {
                 .status(dto.getStatus())
                 .executionDuration(dto.getExecutionDuration())
                 .retryTimes(dto.getRetryTimes())
+                .runFrequency(dto.getRunFrequency())
                 .build();
     }
 
     private Script checkAndGetScript(int scriptId) {
         final Script script = scriptDaoImpl.getScript(scriptId);
-        if (Objects.isNull(script)) {
+        if (isNull(script)) {
             throw new SeatunnelException(NO_SUCH_SCRIPT);
         }
         return script;
@@ -285,7 +374,7 @@ public class TaskServiceImpl implements ITaskService {
                     .build();
             scriptJobApplyDaoImpl.insertOrUpdate(dto);
         }).whenComplete((_return, e) -> {
-            if (Objects.nonNull(e)) {
+            if (nonNull(e)) {
                 log.error("Store script and job mapping failed, please 
maintain this mapping manually. \n" +
                         "scriptId [{}], schedulerConfigId [{}], jobId [{}], 
userId [{}]", scriptId, schedulerConfigId, jobId, userId, e);
             }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/GlobalExceptionHandler.java
 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/GlobalExceptionHandler.java
index 307ea957..8fcd6a1d 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/GlobalExceptionHandler.java
+++ 
b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/utils/GlobalExceptionHandler.java
@@ -21,6 +21,7 @@ import org.apache.seatunnel.app.common.Result;
 import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
 import org.apache.seatunnel.server.common.SeatunnelException;
 
+import io.jsonwebtoken.ExpiredJwtException;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
@@ -44,11 +45,17 @@ public class GlobalExceptionHandler {
     }
 
     @ExceptionHandler(value = IllegalStateException.class)
-    private Result<String> exceptionHandler(IllegalStateException e) {
+    private Result<String> illegalStateExceptionHandler(IllegalStateException 
e) {
         logError(e);
         return Result.failure(SeatunnelErrorEnum.ILLEGAL_STATE, 
e.getMessage());
     }
 
+    @ExceptionHandler(value = ExpiredJwtException.class)
+    private Result<String> expiredJwtException(ExpiredJwtException e) {
+        logError(e);
+        return Result.failure(SeatunnelErrorEnum.TOKEN_ILLEGAL, 
e.getMessage());
+    }
+
     @ExceptionHandler(value = Exception.class)
     private Result<String> exceptionHandler(Exception e) {
         logError(e);
diff --git 
a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.xml
 
b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.xml
index c5e28ed6..31090156 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.xml
+++ 
b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/ScriptJobApplyMapper.xml
@@ -24,6 +24,19 @@
         <result column="create_time" jdbcType="TIMESTAMP" 
property="createTime"/>
         <result column="update_time" jdbcType="TIMESTAMP" 
property="updateTime"/>
     </resultMap>
+    <resultMap id="JobDefineMap" 
type="org.apache.seatunnel.app.dal.entity.JobDefine">
+        <result column="script_id" jdbcType="INTEGER" property="scriptId"/>
+        <result column="scheduler_config_id" jdbcType="INTEGER" 
property="schedulerConfigId"/>
+        <result column="job_id" jdbcType="BIGINT" property="jobId"/>
+        <result column="operator_id" jdbcType="INTEGER" property="operatorId"/>
+        <result column="create_time" jdbcType="TIMESTAMP" 
property="createTime"/>
+        <result column="update_time" jdbcType="TIMESTAMP" 
property="updateTime"/>
+        <result column="trigger_expression" jdbcType="VARCHAR" 
property="triggerExpression"/>
+        <result column="retry_times" jdbcType="INTEGER" property="retryTimes"/>
+        <result column="retry_interval" jdbcType="INTEGER" 
property="retryInterval"/>
+        <result column="active_start_time" jdbcType="TIMESTAMP" 
property="activeStartTime"/>
+        <result column="active_end_time" jdbcType="TIMESTAMP" 
property="activeEndTime"/>
+    </resultMap>
     <sql id="Base_Column_List">
         id,
         script_id,
@@ -33,6 +46,19 @@
         create_time,
         update_time
     </sql>
+    <sql id="Job_Define_Column_List">
+        a.script_id,
+        a.scheduler_config_id,
+        a.job_id,
+        a.operator_id,
+        a.create_time,
+        a.update_time,
+        b.trigger_expression,
+        b.retry_times,
+        b.retry_interval,
+        b.active_start_time,
+        b.active_end_time
+    </sql>
     <select id="selectByPrimaryKey" parameterType="java.lang.Integer" 
resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"/>
@@ -63,4 +89,27 @@
         from script_job_apply
         where script_id = #{scriptId,jdbcType=INTEGER}
     </select>
+    <select id="selectJobDefineByJobIds" resultMap="JobDefineMap">
+        select
+        <include refid="Job_Define_Column_List"/>
+        from
+            (select
+                <include refid="Base_Column_List"/>
+                from script_job_apply
+                where job_id in
+                <foreach collection="jobIds" item="item" separator="," 
open="(" close=")">
+                    #{item,jdbcType=BIGINT}
+                </foreach>
+            ) a
+        left join
+        scheduler_config b on
+        a.script_id = b.script_id
+    </select>
+
+    <select id="selectByJobId" resultMap="BaseResultMap">
+        select
+        <include refid="Base_Column_List"/>
+        from script_job_apply
+        where job_id = #{jobId,jdbcType=BIGINT}
+    </select>
 </mapper>
diff --git 
a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
 
b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
index 1c22238b..dea9f6ae 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
+++ 
b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/UserMapper.xml
@@ -63,7 +63,7 @@
         from `user`
         where id = #{id,jdbcType=INTEGER}
     </select>
-    <select id="selectBySelectiveAndPage" 
resultType="org.apache.seatunnel.app.dal.entity.User">
+    <select id="selectBySelectiveAndPage" resultMap="BaseResultMap">
         select
         <include refid="Base_Column_List"/>
         from `user`
diff --git 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
index 58be7eb0..68504d43 100644
--- 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
+++ 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
@@ -38,7 +38,7 @@ public class ProcessDefinitionDto {
     private Date createTime;
     @JsonFormat(pattern = DEFAULT_DATETIME_FORMAT)
     private Date updateTime;
-    private String username;
+    private String userName;
     private String projectName;
     private String locations;
     private String scheduleReleaseState;
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/enums/ReleaseStateEnum.java
similarity index 52%
copy from 
seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
copy to 
seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/enums/ReleaseStateEnum.java
index b1c6af20..03e53c28 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/domain/response/user/UserSimpleInfoRes.java
+++ 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/enums/ReleaseStateEnum.java
@@ -15,23 +15,32 @@
  * limitations under the License.
  */
 
-package org.apache.seatunnel.app.domain.response.user;
+package org.apache.seatunnel.scheduler.dolphinscheduler.enums;
 
-import com.google.common.collect.Maps;
-import io.swagger.annotations.ApiModel;
+import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
+import org.apache.seatunnel.server.common.SeatunnelException;
 
-import java.util.HashMap;
-import java.util.Map;
+public enum ReleaseStateEnum {
+    ONLINE(true),
+    OFFLINE(false),
+    ;
 
-@ApiModel(value = "userSimpleInfoRes", description = "user simple information")
-public class UserSimpleInfoRes extends BaseUserInfoRes {
+    private final boolean publish;
 
-    public Map<String, Object> toMap() {
-        final HashMap<String, Object> userMap = Maps.newHashMap();
-        userMap.put("id", getId());
-        userMap.put("name", getName());
-        userMap.put("status", getStatus());
-        userMap.put("type", getType());
-        return userMap;
+    ReleaseStateEnum(boolean publish) {
+        this.publish = publish;
+    }
+
+    public static ReleaseStateEnum parse(String name) {
+        for (ReleaseStateEnum value : values()) {
+            if (value.name().equalsIgnoreCase(name)){
+                return value;
+            }
+        }
+        throw new SeatunnelException(SeatunnelErrorEnum.NO_SUCH_ELEMENT);
+    }
+
+    public boolean isPublish() {
+        return publish;
     }
 }
diff --git 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/enums/RunFrequencyEnum.java
similarity index 69%
copy from 
seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
copy to 
seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/enums/RunFrequencyEnum.java
index 0efdae26..f0bf5822 100644
--- 
a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IScriptJobApplyDao.java
+++ 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/enums/RunFrequencyEnum.java
@@ -15,13 +15,19 @@
  * limitations under the License.
  */
 
-package org.apache.seatunnel.app.dal.dao;
+package org.apache.seatunnel.scheduler.dolphinscheduler.enums;
 
-import org.apache.seatunnel.app.dal.entity.ScriptJobApply;
-import org.apache.seatunnel.app.domain.dto.job.ScriptJobApplyDto;
+public enum RunFrequencyEnum {
+    SCHEDULER,
+    ONCE,
+    ;
 
-public interface IScriptJobApplyDao {
-    void insertOrUpdate(ScriptJobApplyDto dto);
+    public static final String SCHEDULER_TYPE = "SCHEDULER";
 
-    ScriptJobApply getByScriptId(Integer id);
+    public static RunFrequencyEnum parse(String name) {
+        if (SCHEDULER_TYPE.equalsIgnoreCase(name)) {
+            return SCHEDULER;
+        }
+        return ONCE;
+    }
 }
diff --git 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
index 3cca66fe..52c99b38 100644
--- 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
+++ 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/DolphinschedulerServiceImpl.java
@@ -153,6 +153,7 @@ import 
org.apache.seatunnel.spi.scheduler.dto.InstanceLogDto;
 import org.apache.seatunnel.spi.scheduler.dto.JobDto;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.DeserializationFeature;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
@@ -190,6 +191,10 @@ public class DolphinschedulerServiceImpl implements 
IDolphinschedulerService, In
 
     private static final ObjectMapper MAPPER = new ObjectMapper();
 
+    static {
+        MAPPER.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES);
+    }
+
     @Override
     public void afterPropertiesSet() throws Exception {
         final ProjectDto projectDto = 
queryProjectCodeByName(defaultProjectName);
diff --git 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
index 42a27efb..d4ce1a72 100644
--- 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
+++ 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/InstanceServiceImpl.java
@@ -20,6 +20,7 @@ package org.apache.seatunnel.scheduler.dolphinscheduler.impl;
 import 
org.apache.seatunnel.scheduler.dolphinscheduler.IDolphinschedulerService;
 import 
org.apache.seatunnel.scheduler.dolphinscheduler.dto.ListProcessInstanceDto;
 import org.apache.seatunnel.scheduler.dolphinscheduler.dto.ProcessInstanceDto;
+import org.apache.seatunnel.scheduler.dolphinscheduler.enums.RunFrequencyEnum;
 import org.apache.seatunnel.server.common.PageData;
 import org.apache.seatunnel.spi.scheduler.IInstanceService;
 import org.apache.seatunnel.spi.scheduler.dto.InstanceDto;
@@ -62,6 +63,7 @@ public class InstanceServiceImpl implements IInstanceService {
                 .submitTime(t.getScheduleTime())
                 .executionDuration(t.getDuration())
                 .retryTimes(t.getRunTimes())
+                
.runFrequency(RunFrequencyEnum.parse(t.getCommandType()).name())
                 .build()).collect(Collectors.toList());
         return new PageData<>(instancePageData.getTotalCount(), data);
     }
diff --git 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
index 5cdab9b0..22cc91d5 100644
--- 
a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
+++ 
b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
@@ -43,6 +43,7 @@ import 
org.apache.seatunnel.scheduler.dolphinscheduler.dto.SchedulerDto;
 import 
org.apache.seatunnel.scheduler.dolphinscheduler.dto.StartProcessDefinitionDto;
 import org.apache.seatunnel.scheduler.dolphinscheduler.dto.TaskDescriptionDto;
 import 
org.apache.seatunnel.scheduler.dolphinscheduler.dto.UpdateProcessDefinitionDto;
+import org.apache.seatunnel.scheduler.dolphinscheduler.enums.ReleaseStateEnum;
 import org.apache.seatunnel.server.common.DateUtils;
 import org.apache.seatunnel.server.common.PageData;
 import org.apache.seatunnel.server.common.SeatunnelErrorEnum;
@@ -113,11 +114,13 @@ public class JobServiceImpl implements IJobService {
         final PageData<ProcessDefinitionDto> processPageData = 
iDolphinschedulerService.listProcessDefinition(listDto);
         final List<JobSimpleInfoDto> data = 
processPageData.getData().stream().map(p -> JobSimpleInfoDto.builder()
                 .jobId(p.getCode())
+                .jobName(p.getName())
                 .jobStatus(p.getReleaseState())
+                
.publish(ReleaseStateEnum.parse(p.getReleaseState()).isPublish())
                 .createTime(p.getCreateTime())
                 .updateTime(p.getUpdateTime())
-                .creatorName(p.getUsername())
-                .menderName(p.getUsername())
+                .creatorName(p.getUserName())
+                .menderName(p.getModifyBy())
                 .build())
                 .collect(Collectors.toList());
         return new PageData<>(processPageData.getTotalCount(), data);
@@ -199,7 +202,7 @@ public class JobServiceImpl implements IJobService {
             }
 
             CompletableFuture.runAsync(() -> {
-                // clear temporary process definition
+                // offline temporary process definition
                 iDolphinschedulerService.updateProcessDefinitionState(code, 
name, RELEASE_STATE_OFFLINE);
             }).whenComplete((_return, e) -> {
                 if (Objects.nonNull(e)) {
diff --git 
a/seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/SeatunnelErrorEnum.java
 
b/seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/SeatunnelErrorEnum.java
index 9e9f494e..e8973764 100644
--- 
a/seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/SeatunnelErrorEnum.java
+++ 
b/seatunnel-server/seatunnel-server-common/src/main/java/org/apache/seatunnel/server/common/SeatunnelErrorEnum.java
@@ -29,6 +29,7 @@ public enum SeatunnelErrorEnum {
     USERNAME_PASSWORD_NO_MATCHED(10007, "username and password no matched", 
"The user name and password do not match, please check your input"),
 
     TOKEN_ILLEGAL(10008, "token illegal", "The token is expired or invalid, 
please login again."),
+    NO_SUCH_JOB(10009, "no such job", "No such job. Maybe deleted by others."),
 
     /**
      * request dolphinscheduler failed
diff --git 
a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceDto.java
 
b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceDto.java
index 2b71dcf7..56deb9de 100644
--- 
a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceDto.java
+++ 
b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/InstanceDto.java
@@ -34,4 +34,5 @@ public class InstanceDto {
     private String status;
     private String executionDuration;
     private long retryTimes;
+    private String runFrequency;
 }
diff --git 
a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
 
b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
index 28e88e9c..85e0bccd 100644
--- 
a/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
+++ 
b/seatunnel-server/seatunnel-spi/src/main/java/org/apache/seatunnel/spi/scheduler/dto/JobSimpleInfoDto.java
@@ -26,7 +26,9 @@ import java.util.Date;
 @Data
 public class JobSimpleInfoDto {
     private long jobId;
+    private String jobName;
     private String jobStatus;
+    private Boolean publish;
     private String creatorName;
     private String menderName;
     private Date createTime;

Reply via email to