From 1412a1b963b72d68c64f6fec278a59466e38b382 Mon Sep 17 00:00:00 2001 From: educoder Date: Thu, 21 Jul 2022 11:41:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=8F=82=E6=95=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../game/controller/VscodeController.java | 65 +++++++++---------- .../imitate/web/params/GetVsCodeParam.java | 5 +- .../imitate/web/params/VsCodeDeleteParam.java | 9 ++- 3 files changed, 38 insertions(+), 41 deletions(-) diff --git a/web/src/main/java/com/imitate/web/module/game/controller/VscodeController.java b/web/src/main/java/com/imitate/web/module/game/controller/VscodeController.java index 4ddb7bb..adf9f1d 100644 --- a/web/src/main/java/com/imitate/web/module/game/controller/VscodeController.java +++ b/web/src/main/java/com/imitate/web/module/game/controller/VscodeController.java @@ -7,16 +7,14 @@ import com.imitate.common.annotation.PublicUrl; import com.imitate.common.bean.ApiResult; import com.imitate.common.constant.ApiResultCsts; import com.imitate.common.constant.TpCsts; +import com.imitate.common.enums.ErrorCodeEnum; import com.imitate.common.k8s.mgr.ClusterManager; import com.imitate.common.k8s.pojo.RunPod; import com.imitate.common.k8s.service.DiskService; import com.imitate.common.k8s.service.RunPodService; import com.imitate.common.k8s.util.ContainerUtil; import com.imitate.common.sys.settings.AppConfig; -import com.imitate.common.util.Base64Util; -import com.imitate.common.util.R; -import com.imitate.common.util.ThreadUtils; -import com.imitate.common.util.TpUtils; +import com.imitate.common.util.*; import com.imitate.web.module.game.service.GameService; import com.imitate.web.module.game.service.GitService; import com.imitate.web.module.game.service.ProxyService; @@ -32,6 +30,7 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; +import org.springframework.validation.BindingResult; import org.springframework.web.bind.annotation.*; import javax.validation.Valid; @@ -45,11 +44,9 @@ import java.util.Map; */ @RestController @RequestMapping("/vscode") -public class VscodeController { +public class VscodeController extends BasicController { private final Logger logger = LoggerFactory.getLogger(getClass()); - - @Autowired - private AppConfig appConfig; + @Autowired private VscodeService vscodeService; @@ -80,8 +77,11 @@ public class VscodeController { @PublicUrl(signValidate = true) @RequestMapping(path = "/getVscode",method = RequestMethod.POST) - public R getVscode(@Valid @RequestBody GetVsCodeParam vsCodeParam) throws Exception { - + public R getVscode(@Valid @RequestBody GetVsCodeParam vsCodeParam, BindingResult bindingResult) throws Exception { + if(bindingResult.hasErrors()){ + return actionResultWithBindingResult(ErrorCodeEnum.BIND_EXCEPTION,bindingResult); + } + vsCodeParam.setTpiID(vsCodeParam.getProjectId() + "_" + vsCodeParam.getUserId()); logger.info("[start]获取vscode连接信息 {}", JSONObject.toJSONString(vsCodeParam)); JSONObject resp = new JSONObject(); @@ -153,48 +153,42 @@ public class VscodeController { @PublicUrl(signValidate = true) @PostMapping(path = "/delete") - public R delete(@Valid @RequestBody VsCodeDeleteParam vsCodeDeleteParam) { - - String tpiID = vsCodeDeleteParam.getTpiID(); + public R delete(@Valid @RequestBody VsCodeDeleteParam vsCodeDeleteParam,BindingResult bindingResult) { + if(bindingResult.hasErrors()){ + return actionResultWithBindingResult(ErrorCodeEnum.BIND_EXCEPTION,bindingResult); + } + String tpiID = vsCodeDeleteParam.getProjectId() + "_" + vsCodeDeleteParam.getUserID(); logger.info("[start]前端主动调用vscode删除命令,tpiID: {}", tpiID); String tpiRepoName = TpCsts.TP_UNIFY_REPO_NAME; String tpiWorkspace = diskService.getTpiWorkspaceHostPath(tpiID); String tpiRepoPath = diskService.buildTpiRepoPath(tpiWorkspace, tpiRepoName); - // 用identifier与私钥拼接与digestKey比较,相等响应,不想等拒绝 - String serverDigestKey = DigestUtils.sha1Hex(vsCodeDeleteParam.getIdentifier() + appConfig.getSecretKey()); - if (vsCodeDeleteParam.getDigestKey().equals(serverDigestKey)) { - try { - vscodeService.deleteNow(tpiID); - // 删除本地版本库 - FileUtils.deleteDirectory(new File(tpiWorkspace)); - ThreadUtils.sleep(2000); + try { + vscodeService.deleteNow(tpiID); + // 删除本地版本库 + FileUtils.deleteDirectory(new File(tpiWorkspace)); + ThreadUtils.sleep(2000); - } catch (Exception e) { - logger.error("主动删除vscode pod {} 失败 {}", tpiID, e); - return R.error("-1", "删除pod失败"); - } - - } else { - logger.error("主动删除vscode pod{}失败,认证不通过", tpiID); - return R.error("-1", "认证不通过"); + } catch (Exception e) { + logger.error("主动删除vscode pod {} 失败 {}", tpiID, e); + return R.error("-1", "删除pod失败"); } + logger.info("[end]前端主动调用vscode删除命令,tpiID: {}", tpiID); return R.ok(); } @PublicUrl(signValidate = true) - @RequestMapping(path = "/active/{tpiID}", method = RequestMethod.POST) - public R active(@PathVariable("tpiID") String tpiID) { - logger.info("[start]激活vscode pod {},延长到期时间", tpiID); - + @RequestMapping(path = "/active", method = RequestMethod.POST) + public R active(@RequestParam String projectId, @RequestParam String userId) { + logger.info("[start]激活vscode pod projectId:{},延长到期时间 userId:{}", projectId,userId); + String tpiID = projectId + "_" + userId; vscodeService.active(tpiID); - logger.info("[end]激活vscode pod {},延长到期时间", tpiID); return R.ok(); } @@ -202,7 +196,8 @@ public class VscodeController { @RequestMapping(path = "/getPort",method = RequestMethod.POST) - public R getPort(@RequestParam String tpiID, @RequestParam Integer type, @RequestParam Integer port) { + public R getPort(@RequestParam String projectId, @RequestParam String userId, @RequestParam Integer type, @RequestParam Integer port) { + String tpiID = projectId + "_" + userId; int proxyPort = proxyService.getContainerExternalMappingPort(tpiID, type, port); return R.ok().setData(MapUtil.builder("port", proxyPort).build()); } diff --git a/web/src/main/java/com/imitate/web/params/GetVsCodeParam.java b/web/src/main/java/com/imitate/web/params/GetVsCodeParam.java index d66d562..74f597b 100644 --- a/web/src/main/java/com/imitate/web/params/GetVsCodeParam.java +++ b/web/src/main/java/com/imitate/web/params/GetVsCodeParam.java @@ -13,7 +13,6 @@ import javax.validation.constraints.NotNull; @Data public class GetVsCodeParam { - @NotBlank(message = "tpiID不能为空") private String tpiID; @NotNull(message = "podType不能为空") private Integer podType = 5; @@ -24,4 +23,8 @@ public class GetVsCodeParam { private String bigDataFile; private Boolean createImage; private Integer survivalSecond; + @NotBlank(message = "项目ID不能为空") + private String projectId; + @NotBlank(message = "用户ID不能为空") + private String userId; } diff --git a/web/src/main/java/com/imitate/web/params/VsCodeDeleteParam.java b/web/src/main/java/com/imitate/web/params/VsCodeDeleteParam.java index ed0169e..6a67945 100644 --- a/web/src/main/java/com/imitate/web/params/VsCodeDeleteParam.java +++ b/web/src/main/java/com/imitate/web/params/VsCodeDeleteParam.java @@ -12,13 +12,12 @@ import javax.validation.constraints.NotBlank; @Data public class VsCodeDeleteParam { - @NotBlank(message = "tpiID不能为空") private String tpiID; - @NotBlank(message = "identifier不能为空") - private String digestKey; + @NotBlank(message = "项目ID不能为空") + private String projectId; - @NotBlank(message = "identifier不能为空") - private String identifier; + @NotBlank(message = "用户ID不能为空") + private String userID; }