diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java index 394dd254..5e6b60fc 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/AppInfoController.java @@ -22,6 +22,7 @@ import tech.powerjob.server.auth.Permission; import tech.powerjob.server.auth.Role; import tech.powerjob.server.auth.RoleScope; import tech.powerjob.server.auth.common.AuthConstants; +import tech.powerjob.server.auth.common.utils.HttpHeaderUtils; import tech.powerjob.server.auth.interceptor.ApiPermission; import tech.powerjob.server.auth.plugin.ModifyOrCreateDynamicPermission; import tech.powerjob.server.auth.plugin.SaveAppGrantPermissionPlugin; @@ -43,6 +44,7 @@ import tech.powerjob.server.web.service.AppWebService; import tech.powerjob.server.web.service.NamespaceWebService; import tech.powerjob.server.web.service.UserWebService; +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.Map; import java.util.Optional; @@ -81,9 +83,11 @@ public class AppInfoController { @PostMapping("/delete") @ApiPermission(name = "App-Delete", roleScope = RoleScope.APP, requiredPermission = Permission.SU) - public ResultDTO deleteApp(Long appId) { + public ResultDTO deleteApp(HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); appWebService.delete(appId); + return ResultDTO.success(null); } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ContainerController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ContainerController.java index 98f1ef6f..4f70b821 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ContainerController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/ContainerController.java @@ -7,12 +7,13 @@ import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; import org.springframework.web.multipart.MultipartFile; import tech.powerjob.common.OmsConstant; +import tech.powerjob.common.enums.SwitchableStatus; import tech.powerjob.common.response.ResultDTO; import tech.powerjob.server.auth.Permission; import tech.powerjob.server.auth.RoleScope; +import tech.powerjob.server.auth.common.utils.HttpHeaderUtils; import tech.powerjob.server.auth.interceptor.ApiPermission; import tech.powerjob.server.common.constants.ContainerSourceType; -import tech.powerjob.common.enums.SwitchableStatus; import tech.powerjob.server.common.utils.OmsFileUtils; import tech.powerjob.server.core.container.ContainerService; import tech.powerjob.server.core.container.ContainerTemplateGenerator; @@ -24,6 +25,7 @@ import tech.powerjob.server.web.request.GenerateContainerTemplateRequest; import tech.powerjob.server.web.request.SaveContainerInfoRequest; import tech.powerjob.server.web.response.ContainerInfoVO; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.io.IOException; @@ -71,7 +73,6 @@ public class ContainerController { } @PostMapping("/downloadContainerTemplate") - @ApiPermission(name = "Container-DownloadContainerTemplate", roleScope = RoleScope.APP, requiredPermission = Permission.READ) public void downloadContainerTemplate(@RequestBody GenerateContainerTemplateRequest req, HttpServletResponse response) throws IOException { File zipFile = ContainerTemplateGenerator.generate(req.getGroup(), req.getArtifact(), req.getName(), req.getPackageName(), req.getJavaVersion()); OmsFileUtils.file2HttpResponse(zipFile, response); @@ -88,7 +89,11 @@ public class ContainerController { @PostMapping("/save") @ApiPermission(name = "Container-Save", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO saveContainer(@RequestBody SaveContainerInfoRequest request) { + public ResultDTO saveContainer(@RequestBody SaveContainerInfoRequest request, HttpServletRequest hsr) { + + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + request.setAppId(appId); + request.valid(); ContainerInfoDO container = new ContainerInfoDO(); @@ -102,14 +107,16 @@ public class ContainerController { @GetMapping("/delete") @ApiPermission(name = "Container-Delete", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO deleteContainer(Long appId, Long containerId) { + public ResultDTO deleteContainer(Long containerId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); containerService.delete(appId, containerId); return ResultDTO.success(null); } @GetMapping("/list") @ApiPermission(name = "Container-List", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO> listContainers(Long appId) { + public ResultDTO> listContainers(HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); List res = containerInfoRepository.findByAppIdAndStatusNot(appId, SwitchableStatus.DELETED.getV()) .stream().map(ContainerController::convert).collect(Collectors.toList()); return ResultDTO.success(res); @@ -117,7 +124,9 @@ public class ContainerController { @GetMapping("/listDeployedWorker") @ApiPermission(name = "Container-ListDeployedWorker", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO listDeployedWorker(Long appId, Long containerId, HttpServletResponse response) { + public ResultDTO listDeployedWorker(Long containerId, HttpServletResponse response, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + AppInfoDO appInfoDO = appInfoRepository.findById(appId).orElseThrow(() -> new IllegalArgumentException("can't find app by id:" + appId)); String targetServer = appInfoDO.getCurrentServer(); diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/InstanceController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/InstanceController.java index fb1cfa00..f597f906 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/InstanceController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/InstanceController.java @@ -1,35 +1,39 @@ package tech.powerjob.server.web.controller; -import tech.powerjob.common.OmsConstant; -import tech.powerjob.common.enums.InstanceStatus; -import tech.powerjob.common.response.ResultDTO; -import tech.powerjob.server.auth.Permission; -import tech.powerjob.server.auth.RoleScope; -import tech.powerjob.server.auth.interceptor.ApiPermission; -import tech.powerjob.server.common.utils.OmsFileUtils; -import tech.powerjob.server.persistence.PageResult; -import tech.powerjob.server.persistence.StringPage; -import tech.powerjob.server.persistence.remote.model.InstanceInfoDO; -import tech.powerjob.server.persistence.remote.repository.InstanceInfoRepository; -import tech.powerjob.server.core.service.CacheService; -import tech.powerjob.server.core.instance.InstanceLogService; -import tech.powerjob.server.core.instance.InstanceService; -import tech.powerjob.server.web.request.QueryInstanceDetailRequest; -import tech.powerjob.server.web.request.QueryInstanceRequest; -import tech.powerjob.server.web.response.InstanceDetailVO; -import tech.powerjob.server.web.response.InstanceInfoVO; import lombok.SneakyThrows; import lombok.extern.slf4j.Slf4j; import org.apache.commons.io.FileUtils; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; -import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; +import tech.powerjob.common.OmsConstant; +import tech.powerjob.common.enums.ErrorCodes; +import tech.powerjob.common.enums.InstanceStatus; +import tech.powerjob.common.exception.PowerJobException; +import tech.powerjob.common.response.ResultDTO; +import tech.powerjob.server.auth.Permission; +import tech.powerjob.server.auth.RoleScope; +import tech.powerjob.server.auth.common.utils.HttpHeaderUtils; +import tech.powerjob.server.auth.interceptor.ApiPermission; +import tech.powerjob.server.common.utils.OmsFileUtils; +import tech.powerjob.server.core.instance.InstanceLogService; +import tech.powerjob.server.core.instance.InstanceService; +import tech.powerjob.server.core.service.CacheService; +import tech.powerjob.server.persistence.PageResult; +import tech.powerjob.server.persistence.StringPage; +import tech.powerjob.server.persistence.remote.model.InstanceInfoDO; +import tech.powerjob.server.persistence.remote.repository.InstanceInfoRepository; +import tech.powerjob.server.web.request.QueryInstanceDetailRequest; +import tech.powerjob.server.web.request.QueryInstanceRequest; +import tech.powerjob.server.web.response.InstanceDetailVO; +import tech.powerjob.server.web.response.InstanceInfoVO; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import java.io.File; import java.net.URL; @@ -61,29 +65,38 @@ public class InstanceController { @GetMapping("/stop") @ApiPermission(name = "Instance-Stop", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO stopInstance(Long appId,Long instanceId) { - instanceService.stopInstance(appId,instanceId); + public ResultDTO stopInstance(Long instanceId, HttpServletRequest hsr) { + preCheck(instanceId, hsr); + + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + instanceService.stopInstance(appId, instanceId); + return ResultDTO.success(null); } @GetMapping("/retry") @ApiPermission(name = "Instance-Retry", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO retryInstance(String appId, Long instanceId) { - instanceService.retryInstance(Long.valueOf(appId), instanceId); + public ResultDTO retryInstance(Long instanceId, HttpServletRequest hsr) { + + preCheck(instanceId, hsr); + + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + instanceService.retryInstance(appId, instanceId); return ResultDTO.success(null); } @GetMapping("/detail") @ApiPermission(name = "Instance-Detail", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO getInstanceDetail(Long appId, Long instanceId) { + public ResultDTO getInstanceDetail(Long instanceId, HttpServletRequest hsr) { QueryInstanceDetailRequest queryInstanceDetailRequest = new QueryInstanceDetailRequest(); - queryInstanceDetailRequest.setAppId(appId); + queryInstanceDetailRequest.setAppId(Long.valueOf(HttpHeaderUtils.fetchAppId(hsr))); queryInstanceDetailRequest.setInstanceId(instanceId); - return getInstanceDetailPlus(queryInstanceDetailRequest); + return getInstanceDetailPlus(queryInstanceDetailRequest, hsr); } @PostMapping("/detailPlus") - public ResultDTO getInstanceDetailPlus(@RequestBody QueryInstanceDetailRequest req) { + @ApiPermission(name = "Instance-DetailPlus", roleScope = RoleScope.APP, requiredPermission = Permission.READ) + public ResultDTO getInstanceDetailPlus(@RequestBody QueryInstanceDetailRequest req, HttpServletRequest hsr) { // 非法请求参数校验 String customQuery = req.getCustomQuery(); @@ -95,6 +108,8 @@ public class InstanceController { // 兼容老版本前端不存在 appId 的场景 if (req.getAppId() == null) { req.setAppId(instanceService.getInstanceInfo(req.getInstanceId()).getAppId()); + } else { + req.setAppId(Long.valueOf(HttpHeaderUtils.fetchAppId(hsr))); } return ResultDTO.success(InstanceDetailVO.from(instanceService.getInstanceDetail(req.getAppId(), req.getInstanceId(), customQuery))); @@ -102,13 +117,20 @@ public class InstanceController { @GetMapping("/log") @ApiPermission(name = "Instance-Log", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO getInstanceLog(Long appId, Long instanceId, Long index) { + public ResultDTO getInstanceLog(Long instanceId, Long index, HttpServletRequest hsr) { + + preCheck(instanceId, hsr); + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); return ResultDTO.success(instanceLogService.fetchInstanceLog(appId, instanceId, index)); } @GetMapping("/downloadLogUrl") @ApiPermission(name = "Instance-FetchDownloadLogUrl", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO getDownloadUrl(Long appId, Long instanceId) { + public ResultDTO getDownloadUrl(Long instanceId, HttpServletRequest hsr) { + + preCheck(instanceId, hsr); + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + return ResultDTO.success(instanceLogService.fetchDownloadUrl(appId, instanceId)); } @@ -140,7 +162,10 @@ public class InstanceController { @PostMapping("/list") @ApiPermission(name = "Instance-List", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO> list(@RequestBody QueryInstanceRequest request) { + public ResultDTO> list(@RequestBody QueryInstanceRequest request, HttpServletRequest hsr) { + + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + request.setAppId(appId); Sort sort = Sort.by(Sort.Direction.DESC, "gmtModified"); PageRequest pageable = PageRequest.of(request.getIndex(), request.getPageSize(), sort); @@ -166,4 +191,16 @@ public class InstanceController { return pageResult; } + private void preCheck(Long instanceId, HttpServletRequest hsr) { + Optional instanceInfoOpt = instanceInfoRepository.findById(instanceId); + if (!instanceInfoOpt.isPresent()) { + throw new PowerJobException(ErrorCodes.ILLEGAL_ARGS_ERROR, "Can'tFindInstanceInfoById:" + instanceId); + } + Long appId = instanceInfoOpt.get().getAppId(); + String targetId = HttpHeaderUtils.fetchAppId(hsr); + if (!targetId.equalsIgnoreCase(String.valueOf(appId))) { + throw new PowerJobException(ErrorCodes.INVALID_REQUEST, String.format("AppIdNotMatch(%d!=%d)", targetId, appId)); + } + } + } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java index 11cbcd9e..6d047b36 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/NamespaceController.java @@ -8,6 +8,7 @@ import tech.powerjob.common.response.ResultDTO; import tech.powerjob.server.auth.Permission; import tech.powerjob.server.auth.RoleScope; import tech.powerjob.server.auth.common.AuthConstants; +import tech.powerjob.server.auth.common.utils.HttpHeaderUtils; import tech.powerjob.server.auth.interceptor.ApiPermission; import tech.powerjob.server.auth.plugin.ModifyOrCreateDynamicPermission; import tech.powerjob.server.auth.plugin.SaveNamespaceGrantPermissionPlugin; @@ -25,6 +26,7 @@ import tech.powerjob.server.web.service.NamespaceWebService; import tech.powerjob.server.web.service.UserWebService; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.stream.Collectors; @@ -57,8 +59,9 @@ public class NamespaceController { @DeleteMapping("/delete") @ApiPermission(name = "Namespace-Delete", roleScope = RoleScope.NAMESPACE, requiredPermission = Permission.SU) - public ResultDTO deleteNamespace(Long id) { - namespaceWebService.delete(id); + public ResultDTO deleteNamespace(HttpServletRequest hsr) { + Long namespaceId = Long.valueOf(HttpHeaderUtils.fetchNamespaceId(hsr)); + namespaceWebService.delete(namespaceId); return ResultDTO.success(null); } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowController.java index 09e735e4..d85db312 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowController.java @@ -5,13 +5,14 @@ import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; import org.springframework.web.bind.annotation.*; +import tech.powerjob.common.enums.SwitchableStatus; import tech.powerjob.common.request.http.SaveWorkflowNodeRequest; import tech.powerjob.common.request.http.SaveWorkflowRequest; import tech.powerjob.common.response.ResultDTO; import tech.powerjob.server.auth.Permission; import tech.powerjob.server.auth.RoleScope; +import tech.powerjob.server.auth.common.utils.HttpHeaderUtils; import tech.powerjob.server.auth.interceptor.ApiPermission; -import tech.powerjob.common.enums.SwitchableStatus; import tech.powerjob.server.core.workflow.WorkflowService; import tech.powerjob.server.persistence.PageResult; import tech.powerjob.server.persistence.remote.model.WorkflowInfoDO; @@ -21,6 +22,7 @@ import tech.powerjob.server.web.request.QueryWorkflowInfoRequest; import tech.powerjob.server.web.response.WorkflowInfoVO; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.text.ParseException; import java.util.List; import java.util.stream.Collectors; @@ -43,40 +45,51 @@ public class WorkflowController { @PostMapping("/save") @ApiPermission(name = "Workflow-Save", roleScope = RoleScope.APP, requiredPermission = Permission.WRITE) - public ResultDTO save(@RequestBody SaveWorkflowRequest req) throws ParseException { + public ResultDTO save(@RequestBody SaveWorkflowRequest req, HttpServletRequest hsr) throws ParseException { + + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + req.setAppId(appId); + return ResultDTO.success(workflowService.saveWorkflow(req)); } @PostMapping("/copy") @ApiPermission(name = "Workflow-Copy", roleScope = RoleScope.APP, requiredPermission = Permission.WRITE) - public ResultDTO copy(Long workflowId, Long appId) { - return ResultDTO.success(workflowService.copyWorkflow(workflowId,appId)); + public ResultDTO copy(Long workflowId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + return ResultDTO.success(workflowService.copyWorkflow(workflowId, appId)); } @GetMapping("/disable") @ApiPermission(name = "Workflow-Disable", roleScope = RoleScope.APP, requiredPermission = Permission.WRITE) - public ResultDTO disableWorkflow(Long workflowId, Long appId) { + public ResultDTO disableWorkflow(Long workflowId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); workflowService.disableWorkflow(workflowId, appId); return ResultDTO.success(null); } @GetMapping("/enable") @ApiPermission(name = "Workflow-Enable", roleScope = RoleScope.APP, requiredPermission = Permission.WRITE) - public ResultDTO enableWorkflow(Long workflowId, Long appId) { + public ResultDTO enableWorkflow(Long workflowId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); workflowService.enableWorkflow(workflowId, appId); return ResultDTO.success(null); } @GetMapping("/delete") @ApiPermission(name = "Workflow-Delete", roleScope = RoleScope.APP, requiredPermission = Permission.WRITE) - public ResultDTO deleteWorkflow(Long workflowId, Long appId) { + public ResultDTO deleteWorkflow(Long workflowId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); workflowService.deleteWorkflow(workflowId, appId); return ResultDTO.success(null); } @PostMapping("/list") @ApiPermission(name = "Workflow-List", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO> list(@RequestBody QueryWorkflowInfoRequest req) { + public ResultDTO> list(@RequestBody QueryWorkflowInfoRequest req, HttpServletRequest hsr) { + + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + req.setAppId(appId); Sort sort = Sort.by(Sort.Direction.DESC, "gmtCreate"); PageRequest pageRequest = PageRequest.of(req.getIndex(), req.getPageSize(), sort); @@ -98,23 +111,28 @@ public class WorkflowController { @GetMapping("/run") @ApiPermission(name = "Workflow-Run", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO runWorkflow(Long workflowId, Long appId, + public ResultDTO runWorkflow(Long workflowId, @RequestParam(required = false,defaultValue = "0") Long delay, - @RequestParam(required = false) String initParams + @RequestParam(required = false) String initParams, + HttpServletRequest hsr ) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); return ResultDTO.success(workflowService.runWorkflow(workflowId, appId, initParams, delay)); } @GetMapping("/fetch") @ApiPermission(name = "Workflow-Fetch", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO fetchWorkflow(Long workflowId, Long appId) { + public ResultDTO fetchWorkflow(Long workflowId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); WorkflowInfoDO workflowInfoDO = workflowService.fetchWorkflow(workflowId, appId); return ResultDTO.success(WorkflowInfoVO.from(workflowInfoDO)); } @PostMapping("/saveNode") @ApiPermission(name = "Workflow-SaveNode", roleScope = RoleScope.APP, requiredPermission = Permission.WRITE) - public ResultDTO> addWorkflowNode(@RequestBody List request) { + public ResultDTO> addWorkflowNode(@RequestBody List request, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); + request.forEach(r -> r.setAppId(appId)); return ResultDTO.success(workflowService.saveWorkflowNode(request)); } diff --git a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowInstanceController.java b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowInstanceController.java index 0f80016d..6499e42f 100644 --- a/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowInstanceController.java +++ b/powerjob-server/powerjob-server-starter/src/main/java/tech/powerjob/server/web/controller/WorkflowInstanceController.java @@ -1,26 +1,28 @@ package tech.powerjob.server.web.controller; -import tech.powerjob.common.enums.WorkflowInstanceStatus; -import tech.powerjob.common.response.ResultDTO; -import tech.powerjob.server.auth.Permission; -import tech.powerjob.server.auth.RoleScope; -import tech.powerjob.server.auth.interceptor.ApiPermission; -import tech.powerjob.server.persistence.PageResult; -import tech.powerjob.server.persistence.remote.model.WorkflowInstanceInfoDO; -import tech.powerjob.server.persistence.remote.repository.WorkflowInstanceInfoRepository; -import tech.powerjob.server.core.service.CacheService; -import tech.powerjob.server.core.workflow.WorkflowInstanceService; -import tech.powerjob.server.web.request.QueryWorkflowInstanceRequest; -import tech.powerjob.server.web.response.WorkflowInstanceInfoVO; +import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; import org.springframework.data.domain.Example; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.Sort; -import org.apache.commons.lang3.StringUtils; import org.springframework.web.bind.annotation.*; +import tech.powerjob.common.enums.WorkflowInstanceStatus; +import tech.powerjob.common.response.ResultDTO; +import tech.powerjob.server.auth.Permission; +import tech.powerjob.server.auth.RoleScope; +import tech.powerjob.server.auth.common.utils.HttpHeaderUtils; +import tech.powerjob.server.auth.interceptor.ApiPermission; +import tech.powerjob.server.core.service.CacheService; +import tech.powerjob.server.core.workflow.WorkflowInstanceService; +import tech.powerjob.server.persistence.PageResult; +import tech.powerjob.server.persistence.remote.model.WorkflowInstanceInfoDO; +import tech.powerjob.server.persistence.remote.repository.WorkflowInstanceInfoRepository; +import tech.powerjob.server.web.request.QueryWorkflowInstanceRequest; +import tech.powerjob.server.web.response.WorkflowInstanceInfoVO; import javax.annotation.Resource; +import javax.servlet.http.HttpServletRequest; import java.util.stream.Collectors; /** @@ -42,21 +44,24 @@ public class WorkflowInstanceController { @GetMapping("/stop") @ApiPermission(name = "WorkflowInstance-Stop", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO stopWfInstance(Long wfInstanceId, Long appId) { + public ResultDTO stopWfInstance(Long wfInstanceId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); workflowInstanceService.stopWorkflowInstanceEntrance(wfInstanceId, appId); return ResultDTO.success(null); } @RequestMapping("/retry") @ApiPermission(name = "WorkflowInstance-Retry", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO retryWfInstance(Long wfInstanceId, Long appId) { + public ResultDTO retryWfInstance(Long wfInstanceId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); workflowInstanceService.retryWorkflowInstance(wfInstanceId, appId); return ResultDTO.success(null); } @RequestMapping("/markNodeAsSuccess") @ApiPermission(name = "WorkflowInstance-MarkNodeAsSuccess", roleScope = RoleScope.APP, requiredPermission = Permission.OPS) - public ResultDTO markNodeAsSuccess(Long wfInstanceId, Long appId, Long nodeId) { + public ResultDTO markNodeAsSuccess(Long wfInstanceId, Long nodeId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); workflowInstanceService.markNodeAsSuccess(appId, wfInstanceId, nodeId); return ResultDTO.success(null); } @@ -64,14 +69,15 @@ public class WorkflowInstanceController { @GetMapping("/info") @ApiPermission(name = "WorkflowInstance-Info", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO getInfo(Long wfInstanceId, Long appId) { + public ResultDTO getInfo(Long wfInstanceId, HttpServletRequest hsr) { + Long appId = Long.valueOf(HttpHeaderUtils.fetchAppId(hsr)); WorkflowInstanceInfoDO wfInstanceDO = workflowInstanceService.fetchWfInstance(wfInstanceId, appId); return ResultDTO.success(WorkflowInstanceInfoVO.from(wfInstanceDO, cacheService.getWorkflowName(wfInstanceDO.getWorkflowId()))); } @PostMapping("/list") @ApiPermission(name = "WorkflowInstance-List", roleScope = RoleScope.APP, requiredPermission = Permission.READ) - public ResultDTO> listWfInstance(@RequestBody QueryWorkflowInstanceRequest req) { + public ResultDTO> listWfInstance(@RequestBody QueryWorkflowInstanceRequest req, HttpServletRequest hsr) { Sort sort = Sort.by(Sort.Direction.DESC, "gmtModified"); PageRequest pageable = PageRequest.of(req.getIndex(), req.getPageSize(), sort);