From ce1b53a657518529b31bd79eb851058bd4aae7c3 Mon Sep 17 00:00:00 2001 From: zhangshuai Date: Fri, 6 Sep 2024 15:52:17 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20env=20session=20=E6=8E=A5=E5=8F=A3=20?= =?UTF-8?q?=E5=BC=80=E5=8F=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../net/geedge/asw/common/util/RCode.java | 2 ++ .../controller/EnvironmentController.java | 33 +++++++++++++++++++ .../entity/EnvironmentSessionEntity.java | 12 +++++++ .../service/IEnvironmentSessionService.java | 1 + .../impl/EnvironmentSessionServiceImpl.java | 29 ++++++++++++++++ .../resources/db/migration/R__AZ_sys_i18n.sql | 3 ++ 6 files changed, 80 insertions(+) diff --git a/src/main/java/net/geedge/asw/common/util/RCode.java b/src/main/java/net/geedge/asw/common/util/RCode.java index 6a9404e..2182b40 100644 --- a/src/main/java/net/geedge/asw/common/util/RCode.java +++ b/src/main/java/net/geedge/asw/common/util/RCode.java @@ -84,6 +84,8 @@ public enum RCode { //environment ENVIRONMENT_SESSION_NOT_EXIST(601001, "environment session does not exist"), ENVIRONMENT_NOT_EXIST(601002, "environment does not exist"), + ENVIRONMENT_USED(601003, "The environment is already in use"), + diff --git a/src/main/java/net/geedge/asw/module/environment/controller/EnvironmentController.java b/src/main/java/net/geedge/asw/module/environment/controller/EnvironmentController.java index 930909b..51306c9 100644 --- a/src/main/java/net/geedge/asw/module/environment/controller/EnvironmentController.java +++ b/src/main/java/net/geedge/asw/module/environment/controller/EnvironmentController.java @@ -15,6 +15,8 @@ import net.geedge.asw.module.environment.entity.EnvironmentSessionEntity; import net.geedge.asw.module.environment.service.IEnvironmentService; import net.geedge.asw.module.environment.service.IEnvironmentSessionService; import net.geedge.asw.module.environment.util.EnvironmentUtil; +import net.geedge.asw.module.sys.service.ISysUserService; +import net.geedge.asw.module.workspace.service.IWorkspaceService; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.*; @@ -34,6 +36,12 @@ public class EnvironmentController { @Autowired private IEnvironmentSessionService environmentSessionService; + @Autowired + private ISysUserService userService; + + @Autowired + private IWorkspaceService workspaceService; + @GetMapping("/{id}") public R detail(@PathVariable("id") String id) { EnvironmentEntity entity = environmentService.queryInfo(id); @@ -115,4 +123,29 @@ public class EnvironmentController { Page page = environmentService.mySession(params); return R.ok(page); } + + @PostMapping("/{envId}/session") + public R saveSession(@PathVariable("envId") String envId, @RequestParam String workspaceId){ + EnvironmentSessionEntity session = environmentSessionService.saveSession(envId, workspaceId); + return R.ok().putData("record", session.getId()); + } + + @GetMapping("/{envId}/session/{sessionId}") + public R querySession(@PathVariable("envId") String envId, @PathVariable("sessionId") String sessionId, @RequestParam String workspaceId){ + EnvironmentSessionEntity session = environmentSessionService.getOne(new LambdaQueryWrapper().eq(EnvironmentSessionEntity::getId, sessionId).eq(EnvironmentSessionEntity::getWorkspaceId, workspaceId)); + session.setEnv(environmentService.getById(envId)); + session.setWorkspace(workspaceService.getById(workspaceId)); + session.setUser(userService.getById(session.getUserId())); + return R.ok().putData("record", session); + } + + + @DeleteMapping("/{envId}/session/{sessionId}") + public R removeSession(@PathVariable("envId") String envId, @PathVariable("sessionId") String sessionId, @RequestParam String workspaceId){ + EnvironmentSessionEntity session = environmentSessionService.getById(sessionId); + session.setEndTimestamp(System.currentTimeMillis()); + session.setStatus(2); + environmentSessionService.updateById(session); + return R.ok(); + } } \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/module/environment/entity/EnvironmentSessionEntity.java b/src/main/java/net/geedge/asw/module/environment/entity/EnvironmentSessionEntity.java index 442918a..72e9c41 100644 --- a/src/main/java/net/geedge/asw/module/environment/entity/EnvironmentSessionEntity.java +++ b/src/main/java/net/geedge/asw/module/environment/entity/EnvironmentSessionEntity.java @@ -1,9 +1,12 @@ package net.geedge.asw.module.environment.entity; import com.baomidou.mybatisplus.annotation.IdType; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import lombok.Data; +import net.geedge.asw.module.sys.entity.SysUserEntity; +import net.geedge.asw.module.workspace.entity.WorkspaceEntity; @Data @TableName("environment_session") @@ -21,4 +24,13 @@ public class EnvironmentSessionEntity { private String workspaceId; + @TableField(exist = false) + private EnvironmentEntity env; + + @TableField(exist = false) + private WorkspaceEntity workspace; + + @TableField(exist = false) + private SysUserEntity user; + } \ No newline at end of file diff --git a/src/main/java/net/geedge/asw/module/environment/service/IEnvironmentSessionService.java b/src/main/java/net/geedge/asw/module/environment/service/IEnvironmentSessionService.java index 105af84..6a07f5c 100644 --- a/src/main/java/net/geedge/asw/module/environment/service/IEnvironmentSessionService.java +++ b/src/main/java/net/geedge/asw/module/environment/service/IEnvironmentSessionService.java @@ -5,4 +5,5 @@ import net.geedge.asw.module.environment.entity.EnvironmentSessionEntity; public interface IEnvironmentSessionService extends IService{ + EnvironmentSessionEntity saveSession(String envId, String workspaceId); } diff --git a/src/main/java/net/geedge/asw/module/environment/service/impl/EnvironmentSessionServiceImpl.java b/src/main/java/net/geedge/asw/module/environment/service/impl/EnvironmentSessionServiceImpl.java index 651370f..07a4f5f 100644 --- a/src/main/java/net/geedge/asw/module/environment/service/impl/EnvironmentSessionServiceImpl.java +++ b/src/main/java/net/geedge/asw/module/environment/service/impl/EnvironmentSessionServiceImpl.java @@ -1,15 +1,44 @@ package net.geedge.asw.module.environment.service.impl; +import cn.dev33.satoken.stp.StpUtil; import cn.hutool.log.Log; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import net.geedge.asw.common.util.ASWException; +import net.geedge.asw.common.util.RCode; +import net.geedge.asw.common.util.T; import net.geedge.asw.module.environment.dao.EnvironmentSessionDao; import net.geedge.asw.module.environment.entity.EnvironmentSessionEntity; import net.geedge.asw.module.environment.service.IEnvironmentSessionService; import org.springframework.stereotype.Service; +import java.util.List; + @Service public class EnvironmentSessionServiceImpl extends ServiceImpl implements IEnvironmentSessionService { private static final Log log = Log.get(); + @Override + public EnvironmentSessionEntity saveSession(String envId, String workspaceId) { + + List sessionEntityList = this.list(new LambdaQueryWrapper() + .eq(EnvironmentSessionEntity::getEnvId, envId) + .eq(EnvironmentSessionEntity::getWorkspaceId, workspaceId) + .eq(EnvironmentSessionEntity::getStatus, 1)); + + if (T.CollectionUtil.isNotEmpty(sessionEntityList)) { + throw new ASWException(RCode.ENVIRONMENT_USED); + } + + EnvironmentSessionEntity session = new EnvironmentSessionEntity(); + session.setEnvId(envId); + session.setWorkspaceId(workspaceId); + session.setStatus(1); + session.setStartTimestamp(System.currentTimeMillis()); + session.setUserId(StpUtil.getLoginIdAsString()); + + this.save(session); + return session; + } } diff --git a/src/main/resources/db/migration/R__AZ_sys_i18n.sql b/src/main/resources/db/migration/R__AZ_sys_i18n.sql index b77ed6d..f034215 100644 --- a/src/main/resources/db/migration/R__AZ_sys_i18n.sql +++ b/src/main/resources/db/migration/R__AZ_sys_i18n.sql @@ -129,5 +129,8 @@ INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_ INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (215, '201017', 'APP_IMPORT_FILE_FORMAT_ERROR', '导入文件格式错误', 'zh', '', 'admin', 1724030366000); INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (217, '401011', 'WORKSPACE_MEMBER_USER_ID_REPEAT', 'Workspace member user repeat', 'en', '', 'admin', 1724030366000); INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (219, '401011', 'WORKSPACE_MEMBER_USER_ID_REPEAT', '工作空间用户重复', 'zh', '', 'admin', 1724030366000); +INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (221, '601003', 'ENVIRONMENT_USED', 'The environment is already in use', 'en', '', 'admin', 1724030366000); +INSERT INTO `sys_i18n`(`id`, `name`, `code`, `value`, `lang`, `remark`, `update_user_id`, `update_timestamp`) VALUES (223, '601003', 'ENVIRONMENT_USED', '环境已在使用中', 'zh', '', 'admin', 1724030366000); + SET FOREIGN_KEY_CHECKS = 1;