summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorzhangshuai <[email protected]>2024-09-06 15:52:17 +0800
committerzhangshuai <[email protected]>2024-09-06 15:52:17 +0800
commitce1b53a657518529b31bd79eb851058bd4aae7c3 (patch)
tree5f7f8dab274580f13818dff3b5d35ac06c20a14b
parent6f9a738a370f25d5fad645a08d6984554b481346 (diff)
feat: env session 接口 开发
-rw-r--r--src/main/java/net/geedge/asw/common/util/RCode.java2
-rw-r--r--src/main/java/net/geedge/asw/module/environment/controller/EnvironmentController.java33
-rw-r--r--src/main/java/net/geedge/asw/module/environment/entity/EnvironmentSessionEntity.java12
-rw-r--r--src/main/java/net/geedge/asw/module/environment/service/IEnvironmentSessionService.java1
-rw-r--r--src/main/java/net/geedge/asw/module/environment/service/impl/EnvironmentSessionServiceImpl.java29
-rw-r--r--src/main/resources/db/migration/R__AZ_sys_i18n.sql3
6 files changed, 80 insertions, 0 deletions
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<EnvironmentSessionEntity>().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>{
+ 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<EnvironmentSessionDao, EnvironmentSessionEntity> implements IEnvironmentSessionService {
private static final Log log = Log.get();
+ @Override
+ public EnvironmentSessionEntity saveSession(String envId, String workspaceId) {
+
+ List<EnvironmentSessionEntity> sessionEntityList = this.list(new LambdaQueryWrapper<EnvironmentSessionEntity>()
+ .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;