From 7f8fd6d174a76a8e9f2205979d1413593d57534b Mon Sep 17 00:00:00 2001 From: liyongde <1419499670@qq.com> Date: Tue, 30 Sep 2025 14:05:28 +0800 Subject: [PATCH] =?UTF-8?q?init:=20cdk=E5=88=9D=E6=AD=A5+=E8=AF=AD?= =?UTF-8?q?=E8=A8=80=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 23 +++ .../vip/storm/common/pojo/CommonSelect.java | 14 ++ .../common/util/CommonCollectionUtil.java | 22 +++ storm-plugin-api/pom.xml | 2 + storm-plugin-api/storm-plugin-cdk-api/pom.xml | 24 +++ .../src/main/java/vip/storm/Main.java | 11 ++ .../storm-plugin-inter-api/pom.xml | 24 +++ .../storm/inter/api/InterProjectLangApi.java | 15 ++ .../vip/storm/inter/core/ProjectLangDto.java | 34 ++++ .../java/vip/storm/inter/package-info.java | 6 + storm-plugin/pom.xml | 2 + storm-plugin/storm-plugin-cdk/pom.xml | 46 +++++ .../storm/cdk/core/KeyGeneratedManager.java | 36 ++++ .../controller/CdkCodeInfoController.java | 123 ++++++++++++++ .../cdkcodeinfo/entity/CdkCodeInfo.java | 79 +++++++++ .../cdkcodeinfo/enums/CdkCodeInfoEnum.java | 34 ++++ .../cdkcodeinfo/mapper/CdkCodeInfoMapper.java | 25 +++ .../mapper/mapping/CdkCodeInfoMapper.xml | 5 + .../param/CdkCodeInfoAddParam.java | 46 +++++ .../param/CdkCodeInfoEditParam.java | 51 ++++++ .../cdkcodeinfo/param/CdkCodeInfoIdParam.java | 35 ++++ .../param/CdkCodeInfoPageParam.java | 51 ++++++ .../service/CdkCodeInfoService.java | 80 +++++++++ .../service/impl/CdkCodeInfoServiceImpl.java | 94 +++++++++++ .../controller/CdkEncryInfoController.java | 129 ++++++++++++++ .../cdkencryinfo/entity/CdkEncryInfo.java | 79 +++++++++ .../cdkencryinfo/enums/CdkEncryInfoEnum.java | 34 ++++ .../mapper/CdkEncryInfoMapper.java | 25 +++ .../mapper/mapping/CdkEncryInfoMapper.xml | 5 + .../param/CdkEncryGeneratedParam.java | 14 ++ .../param/CdkEncryInfoAddParam.java | 50 ++++++ .../param/CdkEncryInfoEditParam.java | 55 ++++++ .../param/CdkEncryInfoIdParam.java | 35 ++++ .../param/CdkEncryInfoPageParam.java | 55 ++++++ .../service/CdkEncryInfoService.java | 79 +++++++++ .../service/impl/CdkEncryInfoServiceImpl.java | 116 +++++++++++++ .../controller/CdkProjectController.java | 133 +++++++++++++++ .../modular/cdkproject/entity/CdkProject.java | 71 ++++++++ .../cdkproject/enums/CdkProjectEnum.java | 34 ++++ .../cdkproject/mapper/CdkProjectMapper.java | 25 +++ .../mapper/mapping/CdkProjectMapper.xml | 5 + .../cdkproject/param/CdkProjectAddParam.java | 37 +++++ .../cdkproject/param/CdkProjectEditParam.java | 44 +++++ .../cdkproject/param/CdkProjectIdParam.java | 35 ++++ .../cdkproject/param/CdkProjectPageParam.java | 57 +++++++ .../cdkproject/service/CdkProjectService.java | 83 +++++++++ .../service/impl/CdkProjectServiceImpl.java | 116 +++++++++++++ .../main/java/vip/storm/cdk/package-info.java | 6 + storm-plugin/storm-plugin-inter/pom.xml | 40 +++++ .../inter/core/EnhancedJsonFlattener.java | 46 +++++ .../vip/storm/inter/core/LangConverter.java | 36 ++++ .../InterProjectLangController.java | 126 ++++++++++++++ .../projectlang/entity/InterProjectLang.java | 75 +++++++++ .../projectlang/entity/LangEditVo.java | 27 +++ .../enums/InterProjectLangEnum.java | 34 ++++ .../mapper/InterProjectLangMapper.java | 25 +++ .../mapper/mapping/InterProjectLangMapper.xml | 5 + .../param/InterProjectLangAddParam.java | 48 ++++++ .../param/InterProjectLangEditParam.java | 51 ++++++ .../param/InterProjectLangIdParam.java | 35 ++++ .../param/InterProjectLangPageParam.java | 51 ++++++ .../projectlang/param/InterProjectParam.java | 12 ++ .../provider/ProjectLangProvider.java | 35 ++++ .../service/InterProjectLangService.java | 80 +++++++++ .../impl/InterProjectLangServiceImpl.java | 120 +++++++++++++ .../java/vip/storm/inter/package-info.java | 6 + storm-vue/src/api/cdk/cdkCodeInfoApi.js | 28 ++++ storm-vue/src/api/cdk/cdkEncryInfoApi.js | 32 ++++ storm-vue/src/api/cdk/cdkProjectApi.js | 31 ++++ .../src/api/inter/interProjectLangApi.js | 28 ++++ storm-vue/src/utils/tool.js | 9 + storm-vue/src/views/cdk/code/form.vue | 87 ++++++++++ storm-vue/src/views/cdk/code/index.vue | 117 +++++++++++++ storm-vue/src/views/cdk/encryption/form.vue | 95 +++++++++++ storm-vue/src/views/cdk/encryption/index.vue | 145 ++++++++++++++++ storm-vue/src/views/cdk/project/form.vue | 82 +++++++++ storm-vue/src/views/cdk/project/index.vue | 157 ++++++++++++++++++ storm-vue/src/views/inter/editLang/index.vue | 45 +++++ .../src/views/inter/projectlang/form.vue | 99 +++++++++++ .../src/views/inter/projectlang/index.vue | 134 +++++++++++++++ storm-web-app/pom.xml | 9 + .../src/main/resources/application.properties | 2 +- .../src/test/java/vip/storm/MainTest.java | 10 +- 83 files changed, 4164 insertions(+), 2 deletions(-) create mode 100644 storm-common/src/main/java/vip/storm/common/pojo/CommonSelect.java create mode 100644 storm-common/src/main/java/vip/storm/common/util/CommonCollectionUtil.java create mode 100644 storm-plugin-api/storm-plugin-cdk-api/pom.xml create mode 100644 storm-plugin-api/storm-plugin-cdk-api/src/main/java/vip/storm/Main.java create mode 100644 storm-plugin-api/storm-plugin-inter-api/pom.xml create mode 100644 storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/api/InterProjectLangApi.java create mode 100644 storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/core/ProjectLangDto.java create mode 100644 storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/package-info.java create mode 100644 storm-plugin/storm-plugin-cdk/pom.xml create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/core/KeyGeneratedManager.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/controller/CdkCodeInfoController.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/entity/CdkCodeInfo.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/enums/CdkCodeInfoEnum.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/CdkCodeInfoMapper.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/mapping/CdkCodeInfoMapper.xml create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoAddParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoEditParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoIdParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoPageParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/CdkCodeInfoService.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/impl/CdkCodeInfoServiceImpl.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/controller/CdkEncryInfoController.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/entity/CdkEncryInfo.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/enums/CdkEncryInfoEnum.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/CdkEncryInfoMapper.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/mapping/CdkEncryInfoMapper.xml create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryGeneratedParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoAddParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoEditParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoIdParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoPageParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/CdkEncryInfoService.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/impl/CdkEncryInfoServiceImpl.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/controller/CdkProjectController.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/entity/CdkProject.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/enums/CdkProjectEnum.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/CdkProjectMapper.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/mapping/CdkProjectMapper.xml create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectAddParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectEditParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectIdParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectPageParam.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/CdkProjectService.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/impl/CdkProjectServiceImpl.java create mode 100644 storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/package-info.java create mode 100644 storm-plugin/storm-plugin-inter/pom.xml create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/EnhancedJsonFlattener.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/LangConverter.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/controller/InterProjectLangController.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/InterProjectLang.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/LangEditVo.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/enums/InterProjectLangEnum.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/InterProjectLangMapper.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/mapping/InterProjectLangMapper.xml create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangAddParam.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangEditParam.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangIdParam.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangPageParam.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectParam.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/provider/ProjectLangProvider.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/InterProjectLangService.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/impl/InterProjectLangServiceImpl.java create mode 100644 storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/package-info.java create mode 100644 storm-vue/src/api/cdk/cdkCodeInfoApi.js create mode 100644 storm-vue/src/api/cdk/cdkEncryInfoApi.js create mode 100644 storm-vue/src/api/cdk/cdkProjectApi.js create mode 100644 storm-vue/src/api/inter/interProjectLangApi.js create mode 100644 storm-vue/src/views/cdk/code/form.vue create mode 100644 storm-vue/src/views/cdk/code/index.vue create mode 100644 storm-vue/src/views/cdk/encryption/form.vue create mode 100644 storm-vue/src/views/cdk/encryption/index.vue create mode 100644 storm-vue/src/views/cdk/project/form.vue create mode 100644 storm-vue/src/views/cdk/project/index.vue create mode 100644 storm-vue/src/views/inter/editLang/index.vue create mode 100644 storm-vue/src/views/inter/projectlang/form.vue create mode 100644 storm-vue/src/views/inter/projectlang/index.vue diff --git a/pom.xml b/pom.xml index ef1508f..da0a3e1 100644 --- a/pom.xml +++ b/pom.xml @@ -49,6 +49,29 @@ ${snowy.version} + + vip.storm + storm-plugin-cdk + ${snowy.version} + + + + vip.storm + storm-plugin-cdk-api + ${snowy.version} + + + + vip.storm + storm-plugin-inter + ${snowy.version} + + + vip.storm + storm-plugin-inter-api + ${snowy.version} + + vip.storm diff --git a/storm-common/src/main/java/vip/storm/common/pojo/CommonSelect.java b/storm-common/src/main/java/vip/storm/common/pojo/CommonSelect.java new file mode 100644 index 0000000..1f056d1 --- /dev/null +++ b/storm-common/src/main/java/vip/storm/common/pojo/CommonSelect.java @@ -0,0 +1,14 @@ +package vip.storm.common.pojo; + +import lombok.Data; + +/** + * 通用下拉框对象 + * @Author: lyd + * @Date: 2025/9/29 + */ +@Data +public class CommonSelect { + private String value; + private String label; +} diff --git a/storm-common/src/main/java/vip/storm/common/util/CommonCollectionUtil.java b/storm-common/src/main/java/vip/storm/common/util/CommonCollectionUtil.java new file mode 100644 index 0000000..aea6490 --- /dev/null +++ b/storm-common/src/main/java/vip/storm/common/util/CommonCollectionUtil.java @@ -0,0 +1,22 @@ +package vip.storm.common.util; + +import cn.hutool.core.collection.CollUtil; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; +import java.util.function.Function; +import java.util.stream.Collectors; + +/** + * @Author: lyd + * @Date: 2025/9/29 + */ +public class CommonCollectionUtil { + public static List mapList(Collection from, Function func) { + if (CollUtil.isEmpty(from)) { + return new ArrayList<>(); + } + return from.stream().map(func).collect(Collectors.toList()); + } +} diff --git a/storm-plugin-api/pom.xml b/storm-plugin-api/pom.xml index c32bc22..c2b0134 100644 --- a/storm-plugin-api/pom.xml +++ b/storm-plugin-api/pom.xml @@ -35,5 +35,7 @@ storm-plugin-sys-api + storm-plugin-cdk-api + storm-plugin-inter-api diff --git a/storm-plugin-api/storm-plugin-cdk-api/pom.xml b/storm-plugin-api/storm-plugin-cdk-api/pom.xml new file mode 100644 index 0000000..cd40b27 --- /dev/null +++ b/storm-plugin-api/storm-plugin-cdk-api/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + vip.storm + storm-plugin-api + 3.0.0 + + + storm-plugin-cdk-api + jar + cdk功能插件api接口 + + + + + vip.storm + storm-common + + + + diff --git a/storm-plugin-api/storm-plugin-cdk-api/src/main/java/vip/storm/Main.java b/storm-plugin-api/storm-plugin-cdk-api/src/main/java/vip/storm/Main.java new file mode 100644 index 0000000..54d9aa5 --- /dev/null +++ b/storm-plugin-api/storm-plugin-cdk-api/src/main/java/vip/storm/Main.java @@ -0,0 +1,11 @@ +package vip.storm; + +/** + * @Author: lyd + * @Date: ${DATE} + */ +public class Main { + public static void main(String[] args) { + System.out.println("Hello world!"); + } +} diff --git a/storm-plugin-api/storm-plugin-inter-api/pom.xml b/storm-plugin-api/storm-plugin-inter-api/pom.xml new file mode 100644 index 0000000..da1e2e2 --- /dev/null +++ b/storm-plugin-api/storm-plugin-inter-api/pom.xml @@ -0,0 +1,24 @@ + + + 4.0.0 + + vip.storm + storm-plugin-api + 3.0.0 + + + storm-plugin-inter-api + jar + 语言包api接口 + + + + + vip.storm + storm-common + + + + diff --git a/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/api/InterProjectLangApi.java b/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/api/InterProjectLangApi.java new file mode 100644 index 0000000..d9a1339 --- /dev/null +++ b/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/api/InterProjectLangApi.java @@ -0,0 +1,15 @@ +package vip.storm.inter.api; + +import com.alibaba.fastjson.JSONObject; +import vip.storm.inter.core.ProjectLangDto; + +import java.util.List; + +/** + * 项目接口 + * @Author: lyd + * @Date: 2025/9/29 + */ +public interface InterProjectLangApi { + List getProjectLangDatas(String projectId); +} diff --git a/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/core/ProjectLangDto.java b/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/core/ProjectLangDto.java new file mode 100644 index 0000000..08450cd --- /dev/null +++ b/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/core/ProjectLangDto.java @@ -0,0 +1,34 @@ +package vip.storm.inter.core; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.io.Serializable; + +/** + * 项目-语言实体 + * @Author: lyd + * @Date: 2025/9/29 + */ +@Data +public class ProjectLangDto implements Serializable { + /** 项目-语言id */ + @Schema(description = "项目-语言id") + private String plId; + + /** 项目id */ + @Schema(description = "项目id") + private String projectId; + + /** 语言 */ + @Schema(description = "语言") + private String langId; + + /** 语言json */ + @Schema(description = "语言json") + private String langData; + + /** 删除标志 */ + @Schema(description = "删除标志") + private String deleteFlag; +} diff --git a/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/package-info.java b/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/package-info.java new file mode 100644 index 0000000..ae37670 --- /dev/null +++ b/storm-plugin-api/storm-plugin-inter-api/src/main/java/vip/storm/inter/package-info.java @@ -0,0 +1,6 @@ +/** + * 对外暴露的API + * @Author: lyd + * @Date: 2025/9/29 + */ +package vip.storm.inter; diff --git a/storm-plugin/pom.xml b/storm-plugin/pom.xml index c89e4d4..009ae4d 100644 --- a/storm-plugin/pom.xml +++ b/storm-plugin/pom.xml @@ -35,5 +35,7 @@ storm-plugin-sys + storm-plugin-cdk + storm-plugin-inter diff --git a/storm-plugin/storm-plugin-cdk/pom.xml b/storm-plugin/storm-plugin-cdk/pom.xml new file mode 100644 index 0000000..bd4c2a5 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/pom.xml @@ -0,0 +1,46 @@ + + + 4.0.0 + + vip.storm + storm-plugin + 3.0.0 + + + storm-plugin-cdk + jar + cdk模块 + + + + vip.storm + storm-plugin-cdk-api + + + + vip.storm + storm-plugin-inter-api + + + + + vip.storm + storm-plugin-auth-api + + + + + vip.storm + storm-plugin-sys-api + + + + + vip.storm + storm-plugin-dev-api + + + + diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/core/KeyGeneratedManager.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/core/KeyGeneratedManager.java new file mode 100644 index 0000000..235d7e0 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/core/KeyGeneratedManager.java @@ -0,0 +1,36 @@ +package vip.storm.cdk.core; + +import lombok.SneakyThrows; + +import java.security.KeyPair; +import java.security.KeyPairGenerator; +import java.security.PrivateKey; +import java.security.PublicKey; +import java.util.Base64; + +/** + * 密钥生成 + * @Author: lyd + * @Date: 2025/9/26 + */ +public class KeyGeneratedManager { + KeyPairGenerator keyGen; + KeyPair pair; + + @SneakyThrows + public KeyGeneratedManager(String algorithm) { + this.keyGen = KeyPairGenerator.getInstance(algorithm); + this.keyGen.initialize(2048); + this.pair = keyGen.generateKeyPair(); + } + + public String getPublicKey() { + PublicKey publicKey = pair.getPublic(); + return Base64.getEncoder().encodeToString(publicKey.getEncoded()); + } + + public String getPrivateKey() { + PrivateKey privateKey = pair.getPrivate(); + return Base64.getEncoder().encodeToString(privateKey.getEncoded()); + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/controller/CdkCodeInfoController.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/controller/CdkCodeInfoController.java new file mode 100644 index 0000000..01c25a9 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/controller/CdkCodeInfoController.java @@ -0,0 +1,123 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import vip.storm.common.annotation.CommonLog; +import vip.storm.common.pojo.CommonResult; +import vip.storm.cdk.modular.cdkcodeinfo.entity.CdkCodeInfo; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoAddParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoEditParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoIdParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoPageParam; +import vip.storm.cdk.modular.cdkcodeinfo.service.CdkCodeInfoService; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 授权码控制器 + * + * @author lyd + * @date 2025/09/26 17:28 + */ +@Tag(name = "授权码控制器") +@RestController +@Validated +public class CdkCodeInfoController { + + @Resource + private CdkCodeInfoService cdkCodeInfoService; + + /** + * 获取授权码分页 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + @Operation(summary = "获取授权码分页") + @SaCheckPermission("/cdk/cdkcodeinfo/page") + @GetMapping("/cdk/cdkcodeinfo/page") + public CommonResult> page(CdkCodeInfoPageParam cdkCodeInfoPageParam) { + return CommonResult.data(cdkCodeInfoService.page(cdkCodeInfoPageParam)); + } + + /** + * 添加授权码 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + @Operation(summary = "添加授权码") + @CommonLog("添加授权码") + @SaCheckPermission("/cdk/cdkcodeinfo/add") + @PostMapping("/cdk/cdkcodeinfo/add") + public CommonResult add(@RequestBody @Valid CdkCodeInfoAddParam cdkCodeInfoAddParam) { + cdkCodeInfoService.add(cdkCodeInfoAddParam); + return CommonResult.ok(); + } + + /** + * 编辑授权码 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + @Operation(summary = "编辑授权码") + @CommonLog("编辑授权码") + @SaCheckPermission("/cdk/cdkcodeinfo/edit") + @PostMapping("/cdk/cdkcodeinfo/edit") + public CommonResult edit(@RequestBody @Valid CdkCodeInfoEditParam cdkCodeInfoEditParam) { + cdkCodeInfoService.edit(cdkCodeInfoEditParam); + return CommonResult.ok(); + } + + /** + * 删除授权码 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + @Operation(summary = "删除授权码") + @CommonLog("删除授权码") + @SaCheckPermission("/cdk/cdkcodeinfo/delete") + @PostMapping("/cdk/cdkcodeinfo/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List cdkCodeInfoIdParamList) { + cdkCodeInfoService.delete(cdkCodeInfoIdParamList); + return CommonResult.ok(); + } + + /** + * 获取授权码详情 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + @Operation(summary = "获取授权码详情") + @SaCheckPermission("/cdk/cdkcodeinfo/detail") + @GetMapping("/cdk/cdkcodeinfo/detail") + public CommonResult detail(@Valid CdkCodeInfoIdParam cdkCodeInfoIdParam) { + return CommonResult.data(cdkCodeInfoService.detail(cdkCodeInfoIdParam)); + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/entity/CdkCodeInfo.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/entity/CdkCodeInfo.java new file mode 100644 index 0000000..5f154e5 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/entity/CdkCodeInfo.java @@ -0,0 +1,79 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 授权码实体 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Getter +@Setter +@TableName("cdk_code_info") +public class CdkCodeInfo { + + /** 授权码id */ + @TableId + @Schema(description = "授权码id") + private String cdkId; + + /** 授权码 */ + @Schema(description = "授权码") + private String cdkCode; + + /** 公钥 */ + @Schema(description = "公钥") + private String publicKey; + + /** 到期时间 */ + @Schema(description = "到期时间") + private String expirationTime; + + /** 项目id */ + @Schema(description = "项目id") + private String projectId; + + /** 创建时间 */ + @Schema(description = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 创建用户 */ + @Schema(description = "创建用户") + @TableField(fill = FieldFill.INSERT) + private String createUser; + + /** 修改时间 */ + @Schema(description = "修改时间") + @TableField(fill = FieldFill.UPDATE) + private Date updateTime; + + /** 修改用户 */ + @Schema(description = "修改用户") + @TableField(fill = FieldFill.UPDATE) + private String updateUser; + + /** 删除标志 */ + @Schema(description = "删除标志") + @TableLogic + @TableField(fill = FieldFill.INSERT) + private String deleteFlag; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/enums/CdkCodeInfoEnum.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/enums/CdkCodeInfoEnum.java new file mode 100644 index 0000000..3fe384a --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/enums/CdkCodeInfoEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.enums; + +import lombok.Getter; + +/** + * 授权码枚举 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Getter +public enum CdkCodeInfoEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + CdkCodeInfoEnum(String value) { + this.value = value; + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/CdkCodeInfoMapper.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/CdkCodeInfoMapper.java new file mode 100644 index 0000000..fe4dd0f --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/CdkCodeInfoMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.storm.cdk.modular.cdkcodeinfo.entity.CdkCodeInfo; + +/** + * 授权码Mapper接口 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +public interface CdkCodeInfoMapper extends BaseMapper { +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/mapping/CdkCodeInfoMapper.xml b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/mapping/CdkCodeInfoMapper.xml new file mode 100644 index 0000000..1a45c48 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/mapper/mapping/CdkCodeInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoAddParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoAddParam.java new file mode 100644 index 0000000..bf8cba5 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoAddParam.java @@ -0,0 +1,46 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 授权码添加参数 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Getter +@Setter +public class CdkCodeInfoAddParam { + + /** 授权码 */ + @Schema(description = "授权码") + private String cdkCode; + + /** 公钥 */ + @Schema(description = "公钥") + private String publicKey; + + /** 到期时间 */ + @Schema(description = "到期时间") + private String expirationTime; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoEditParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoEditParam.java new file mode 100644 index 0000000..182fb1f --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoEditParam.java @@ -0,0 +1,51 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 授权码编辑参数 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Getter +@Setter +public class CdkCodeInfoEditParam { + + /** 授权码id */ + @Schema(description = "授权码id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "cdkId不能为空") + private String cdkId; + + /** 授权码 */ + @Schema(description = "授权码") + private String cdkCode; + + /** 公钥 */ + @Schema(description = "公钥") + private String publicKey; + + /** 到期时间 */ + @Schema(description = "到期时间") + private String expirationTime; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoIdParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoIdParam.java new file mode 100644 index 0000000..6d0eba6 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoIdParam.java @@ -0,0 +1,35 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * 授权码Id参数 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Getter +@Setter +public class CdkCodeInfoIdParam { + + /** 授权码id */ + @Schema(description = "授权码id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "cdkId不能为空") + private String cdkId; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoPageParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoPageParam.java new file mode 100644 index 0000000..8c7012d --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/param/CdkCodeInfoPageParam.java @@ -0,0 +1,51 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 授权码查询参数 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Getter +@Setter +public class CdkCodeInfoPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/CdkCodeInfoService.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/CdkCodeInfoService.java new file mode 100644 index 0000000..b9339ad --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/CdkCodeInfoService.java @@ -0,0 +1,80 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import vip.storm.cdk.modular.cdkcodeinfo.entity.CdkCodeInfo; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoAddParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoEditParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoIdParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoPageParam; + +import java.util.List; + +/** + * 授权码Service接口 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +public interface CdkCodeInfoService extends IService { + + /** + * 获取授权码分页 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + Page page(CdkCodeInfoPageParam cdkCodeInfoPageParam); + + /** + * 添加授权码 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + void add(CdkCodeInfoAddParam cdkCodeInfoAddParam); + + /** + * 编辑授权码 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + void edit(CdkCodeInfoEditParam cdkCodeInfoEditParam); + + /** + * 删除授权码 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + void delete(List cdkCodeInfoIdParamList); + + /** + * 获取授权码详情 + * + * @author lyd + * @date 2025/09/26 17:28 + */ + CdkCodeInfo detail(CdkCodeInfoIdParam cdkCodeInfoIdParam); + + /** + * 获取授权码详情 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ + CdkCodeInfo queryEntity(String id); +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/impl/CdkCodeInfoServiceImpl.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/impl/CdkCodeInfoServiceImpl.java new file mode 100644 index 0000000..3249e35 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkcodeinfo/service/impl/CdkCodeInfoServiceImpl.java @@ -0,0 +1,94 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkcodeinfo.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.storm.common.enums.CommonSortOrderEnum; +import vip.storm.common.exception.CommonException; +import vip.storm.common.page.CommonPageRequest; +import vip.storm.cdk.modular.cdkcodeinfo.entity.CdkCodeInfo; +import vip.storm.cdk.modular.cdkcodeinfo.mapper.CdkCodeInfoMapper; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoAddParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoEditParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoIdParam; +import vip.storm.cdk.modular.cdkcodeinfo.param.CdkCodeInfoPageParam; +import vip.storm.cdk.modular.cdkcodeinfo.service.CdkCodeInfoService; + +import java.util.List; + +/** + * 授权码Service接口实现类 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +@Service +public class CdkCodeInfoServiceImpl extends ServiceImpl implements CdkCodeInfoService { + + @Override + public Page page(CdkCodeInfoPageParam cdkCodeInfoPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isAllNotEmpty(cdkCodeInfoPageParam.getSortField(), cdkCodeInfoPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(cdkCodeInfoPageParam.getSortOrder()); + queryWrapper.orderBy(true, cdkCodeInfoPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(cdkCodeInfoPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(CdkCodeInfo::getCdkId); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(CdkCodeInfoAddParam cdkCodeInfoAddParam) { + CdkCodeInfo cdkCodeInfo = BeanUtil.toBean(cdkCodeInfoAddParam, CdkCodeInfo.class); + this.save(cdkCodeInfo); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(CdkCodeInfoEditParam cdkCodeInfoEditParam) { + CdkCodeInfo cdkCodeInfo = this.queryEntity(cdkCodeInfoEditParam.getCdkId()); + BeanUtil.copyProperties(cdkCodeInfoEditParam, cdkCodeInfo); + this.updateById(cdkCodeInfo); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List cdkCodeInfoIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(cdkCodeInfoIdParamList, CdkCodeInfoIdParam::getCdkId)); + } + + @Override + public CdkCodeInfo detail(CdkCodeInfoIdParam cdkCodeInfoIdParam) { + return this.queryEntity(cdkCodeInfoIdParam.getCdkId()); + } + + @Override + public CdkCodeInfo queryEntity(String id) { + CdkCodeInfo cdkCodeInfo = this.getById(id); + if(ObjectUtil.isEmpty(cdkCodeInfo)) { + throw new CommonException("授权码不存在,id值为:{}", id); + } + return cdkCodeInfo; + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/controller/CdkEncryInfoController.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/controller/CdkEncryInfoController.java new file mode 100644 index 0000000..5a75efe --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/controller/CdkEncryInfoController.java @@ -0,0 +1,129 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import vip.storm.cdk.modular.cdkencryinfo.param.*; +import vip.storm.common.annotation.CommonLog; +import vip.storm.common.pojo.CommonResult; +import vip.storm.cdk.modular.cdkencryinfo.entity.CdkEncryInfo; +import vip.storm.cdk.modular.cdkencryinfo.service.CdkEncryInfoService; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 密钥信息控制器 + * + * @author lyd + * @date 2025/09/26 17:06 + */ +@Tag(name = "密钥信息控制器") +@RestController +@Validated +public class CdkEncryInfoController { + + @Resource + private CdkEncryInfoService cdkEncryInfoService; + + /** + * 获取密钥信息分页 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + @Operation(summary = "获取密钥信息分页") + @SaCheckPermission("/cdk/cdkencryinfo/page") + @GetMapping("/cdk/cdkencryinfo/page") + public CommonResult> page(CdkEncryInfoPageParam cdkEncryInfoPageParam) { + return CommonResult.data(cdkEncryInfoService.page(cdkEncryInfoPageParam)); + } + + /** + * 添加密钥信息 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + @Operation(summary = "添加密钥信息") + @CommonLog("添加密钥信息") + @SaCheckPermission("/cdk/cdkencryinfo/add") + @PostMapping("/cdk/cdkencryinfo/add") + public CommonResult add(@RequestBody @Valid CdkEncryInfoAddParam cdkEncryInfoAddParam) { + cdkEncryInfoService.add(cdkEncryInfoAddParam); + return CommonResult.ok(); + } + + /** + * 编辑密钥信息 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + @Operation(summary = "编辑密钥信息") + @CommonLog("编辑密钥信息") + @SaCheckPermission("/cdk/cdkencryinfo/edit") + @PostMapping("/cdk/cdkencryinfo/edit") + public CommonResult edit(@RequestBody @Valid CdkEncryInfoEditParam cdkEncryInfoEditParam) { + cdkEncryInfoService.edit(cdkEncryInfoEditParam); + return CommonResult.ok(); + } + + /** + * 删除密钥信息 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + @Operation(summary = "删除密钥信息") + @CommonLog("删除密钥信息") + @SaCheckPermission("/cdk/cdkencryinfo/delete") + @PostMapping("/cdk/cdkencryinfo/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List cdkEncryInfoIdParamList) { + cdkEncryInfoService.delete(cdkEncryInfoIdParamList); + return CommonResult.ok(); + } + + /** + * 获取密钥信息详情 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + @Operation(summary = "获取密钥信息详情") + @SaCheckPermission("/cdk/cdkencryinfo/detail") + @GetMapping("/cdk/cdkencryinfo/detail") + public CommonResult detail(@Valid CdkEncryInfoIdParam cdkEncryInfoIdParam) { + return CommonResult.data(cdkEncryInfoService.detail(cdkEncryInfoIdParam)); + } + + @Operation(summary = "生成密钥信息") + @CommonLog("生成密钥信息") + @SaCheckPermission("/cdk/cdkencryinfo/generated") + @PostMapping("/cdk/cdkencryinfo/generated") + public CommonResult generated(@RequestBody CdkEncryGeneratedParam param) { + cdkEncryInfoService.generated(param); + return CommonResult.ok(); + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/entity/CdkEncryInfo.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/entity/CdkEncryInfo.java new file mode 100644 index 0000000..ebe50c6 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/entity/CdkEncryInfo.java @@ -0,0 +1,79 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 密钥信息实体 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Getter +@Setter +@TableName("cdk_encry_info") +public class CdkEncryInfo { + + /** ENCRY_ID */ + @TableId + @Schema(description = "ENCRY_ID") + private String encryId; + + /** 私钥 */ + @Schema(description = "私钥") + private String privateKey; + + /** 公钥 */ + @Schema(description = "公钥") + private String publicKey; + + /** 项目 */ + @Schema(description = "项目") + private String projectId; + + /** 加密算法名 */ + @Schema(description = "加密算法名") + private String encryName; + + /** 创建时间 */ + @Schema(description = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 创建用户 */ + @Schema(description = "创建用户") + @TableField(fill = FieldFill.INSERT) + private String createUser; + + /** 修改时间 */ + @Schema(description = "修改时间") + @TableField(fill = FieldFill.UPDATE) + private Date updateTime; + + /** 修改用户 */ + @Schema(description = "修改用户") + @TableField(fill = FieldFill.UPDATE) + private String updateUser; + + /** 删除标志 */ + @Schema(description = "删除标志") + @TableLogic + @TableField(fill = FieldFill.INSERT) + private String deleteFlag; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/enums/CdkEncryInfoEnum.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/enums/CdkEncryInfoEnum.java new file mode 100644 index 0000000..ea2c426 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/enums/CdkEncryInfoEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.enums; + +import lombok.Getter; + +/** + * 密钥信息枚举 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Getter +public enum CdkEncryInfoEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + CdkEncryInfoEnum(String value) { + this.value = value; + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/CdkEncryInfoMapper.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/CdkEncryInfoMapper.java new file mode 100644 index 0000000..6797a51 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/CdkEncryInfoMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.storm.cdk.modular.cdkencryinfo.entity.CdkEncryInfo; + +/** + * 密钥信息Mapper接口 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +public interface CdkEncryInfoMapper extends BaseMapper { +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/mapping/CdkEncryInfoMapper.xml b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/mapping/CdkEncryInfoMapper.xml new file mode 100644 index 0000000..4bcf5af --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/mapper/mapping/CdkEncryInfoMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryGeneratedParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryGeneratedParam.java new file mode 100644 index 0000000..0f30377 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryGeneratedParam.java @@ -0,0 +1,14 @@ +package vip.storm.cdk.modular.cdkencryinfo.param; + +import lombok.Data; + +import java.io.Serializable; + +/** + * @Author: lyd + * @Date: 2025/9/26 + */ +@Data +public class CdkEncryGeneratedParam implements Serializable { + private String projectId; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoAddParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoAddParam.java new file mode 100644 index 0000000..93d2dea --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoAddParam.java @@ -0,0 +1,50 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 密钥信息添加参数 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Getter +@Setter +public class CdkEncryInfoAddParam { + + /** 私钥 */ + @Schema(description = "私钥") + private String privateKey; + + /** 公钥 */ + @Schema(description = "公钥") + private String publicKey; + + /** 项目 */ + @Schema(description = "项目") + private String projectId; + + /** 加密算法名 */ + @Schema(description = "加密算法名") + private String encryName; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoEditParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoEditParam.java new file mode 100644 index 0000000..b632632 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoEditParam.java @@ -0,0 +1,55 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 密钥信息编辑参数 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Getter +@Setter +public class CdkEncryInfoEditParam { + + /** ENCRY_ID */ + @Schema(description = "ENCRY_ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "encryId不能为空") + private String encryId; + + /** 私钥 */ + @Schema(description = "私钥") + private String privateKey; + + /** 公钥 */ + @Schema(description = "公钥") + private String publicKey; + + /** 项目 */ + @Schema(description = "项目") + private String projectId; + + /** 加密算法名 */ + @Schema(description = "加密算法名") + private String encryName; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoIdParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoIdParam.java new file mode 100644 index 0000000..65a2910 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoIdParam.java @@ -0,0 +1,35 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * 密钥信息Id参数 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Getter +@Setter +public class CdkEncryInfoIdParam { + + /** ENCRY_ID */ + @Schema(description = "ENCRY_ID", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "encryId不能为空") + private String encryId; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoPageParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoPageParam.java new file mode 100644 index 0000000..c1048fe --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/param/CdkEncryInfoPageParam.java @@ -0,0 +1,55 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 密钥信息查询参数 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Getter +@Setter +public class CdkEncryInfoPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + + /** 项目 */ + @Schema(description = "项目") + private String projectId; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/CdkEncryInfoService.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/CdkEncryInfoService.java new file mode 100644 index 0000000..7130aed --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/CdkEncryInfoService.java @@ -0,0 +1,79 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import vip.storm.cdk.modular.cdkencryinfo.entity.CdkEncryInfo; +import vip.storm.cdk.modular.cdkencryinfo.param.*; + +import java.util.List; + +/** + * 密钥信息Service接口 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +public interface CdkEncryInfoService extends IService { + + /** + * 获取密钥信息分页 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + Page page(CdkEncryInfoPageParam cdkEncryInfoPageParam); + + /** + * 添加密钥信息 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + void add(CdkEncryInfoAddParam cdkEncryInfoAddParam); + + /** + * 编辑密钥信息 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + void edit(CdkEncryInfoEditParam cdkEncryInfoEditParam); + + /** + * 删除密钥信息 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + void delete(List cdkEncryInfoIdParamList); + + /** + * 获取密钥信息详情 + * + * @author lyd + * @date 2025/09/26 17:06 + */ + CdkEncryInfo detail(CdkEncryInfoIdParam cdkEncryInfoIdParam); + + /** + * 获取密钥信息详情 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ + CdkEncryInfo queryEntity(String id); + + void generated(CdkEncryGeneratedParam param); +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/impl/CdkEncryInfoServiceImpl.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/impl/CdkEncryInfoServiceImpl.java new file mode 100644 index 0000000..9d12c0a --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkencryinfo/service/impl/CdkEncryInfoServiceImpl.java @@ -0,0 +1,116 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkencryinfo.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.storm.cdk.core.KeyGeneratedManager; +import vip.storm.cdk.modular.cdkencryinfo.param.*; +import vip.storm.common.enums.CommonSortOrderEnum; +import vip.storm.common.exception.CommonException; +import vip.storm.common.page.CommonPageRequest; +import vip.storm.cdk.modular.cdkencryinfo.entity.CdkEncryInfo; +import vip.storm.cdk.modular.cdkencryinfo.mapper.CdkEncryInfoMapper; +import vip.storm.cdk.modular.cdkencryinfo.service.CdkEncryInfoService; + +import java.util.List; + +/** + * 密钥信息Service接口实现类 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +@Service +public class CdkEncryInfoServiceImpl extends ServiceImpl implements CdkEncryInfoService { + + @Override + public Page page(CdkEncryInfoPageParam cdkEncryInfoPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isNotEmpty(cdkEncryInfoPageParam.getProjectId())) { + queryWrapper.lambda().like(CdkEncryInfo::getProjectId, cdkEncryInfoPageParam.getProjectId()); + } + if(ObjectUtil.isAllNotEmpty(cdkEncryInfoPageParam.getSortField(), cdkEncryInfoPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(cdkEncryInfoPageParam.getSortOrder()); + queryWrapper.orderBy(true, cdkEncryInfoPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(cdkEncryInfoPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(CdkEncryInfo::getEncryId); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(CdkEncryInfoAddParam cdkEncryInfoAddParam) { + CdkEncryInfo cdkEncryInfo = BeanUtil.toBean(cdkEncryInfoAddParam, CdkEncryInfo.class); + this.save(cdkEncryInfo); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(CdkEncryInfoEditParam cdkEncryInfoEditParam) { + CdkEncryInfo cdkEncryInfo = this.queryEntity(cdkEncryInfoEditParam.getEncryId()); + BeanUtil.copyProperties(cdkEncryInfoEditParam, cdkEncryInfo); + this.updateById(cdkEncryInfo); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List cdkEncryInfoIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(cdkEncryInfoIdParamList, CdkEncryInfoIdParam::getEncryId)); + } + + @Override + public CdkEncryInfo detail(CdkEncryInfoIdParam cdkEncryInfoIdParam) { + return this.queryEntity(cdkEncryInfoIdParam.getEncryId()); + } + + @Override + public CdkEncryInfo queryEntity(String id) { + CdkEncryInfo cdkEncryInfo = this.getById(id); + if(ObjectUtil.isEmpty(cdkEncryInfo)) { + throw new CommonException("密钥信息不存在,id值为:{}", id); + } + return cdkEncryInfo; + } + + @Override + public void generated(CdkEncryGeneratedParam param) { + // 生成密钥 + // 判断是否有存在的密钥信息 + LambdaQueryWrapper lam = new QueryWrapper().lambda(); + lam.eq(CdkEncryInfo::getProjectId, param.getProjectId()); + List encryInfos = this.list(lam); + if (encryInfos.size() > 0) { + throw new CommonException("密钥已存在,请先删除后在创建!"); + } + // 生成密钥 + KeyGeneratedManager keyGeneratedManager = new KeyGeneratedManager("RSA"); + CdkEncryInfoAddParam encryParam = new CdkEncryInfoAddParam(); + encryParam.setProjectId(param.getProjectId()); + encryParam.setEncryName("RSA"); + encryParam.setPublicKey(keyGeneratedManager.getPublicKey()); + encryParam.setPrivateKey(keyGeneratedManager.getPrivateKey()); + this.add(encryParam); + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/controller/CdkProjectController.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/controller/CdkProjectController.java new file mode 100644 index 0000000..c146cb9 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/controller/CdkProjectController.java @@ -0,0 +1,133 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import vip.storm.common.annotation.CommonLog; +import vip.storm.common.pojo.CommonResult; +import vip.storm.cdk.modular.cdkproject.entity.CdkProject; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectAddParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectEditParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectIdParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectPageParam; +import vip.storm.cdk.modular.cdkproject.service.CdkProjectService; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import vip.storm.common.pojo.CommonSelect; + +import java.util.List; + +/** + * 项目表控制器 + * + * @author lyd + * @date 2025/09/26 15:38 + */ +@Tag(name = "项目表控制器") +@RestController +@Validated +public class CdkProjectController { + + @Resource + private CdkProjectService cdkProjectService; + + /** + * 获取项目表分页 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + @Operation(summary = "获取项目表分页") + @SaCheckPermission("/cdk/CdkProject/page") + @GetMapping("/cdk/CdkProject/page") + public CommonResult> page(CdkProjectPageParam cdkProjectPageParam) { + return CommonResult.data(cdkProjectService.page(cdkProjectPageParam)); + } + + /** + * 添加项目表 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + @Operation(summary = "添加项目表") + @CommonLog("添加项目表") + @SaCheckPermission("/cdk/CdkProject/add") + @PostMapping("/cdk/CdkProject/add") + public CommonResult add(@RequestBody @Valid CdkProjectAddParam cdkProjectAddParam) { + cdkProjectService.add(cdkProjectAddParam); + return CommonResult.ok(); + } + + /** + * 编辑项目表 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + @Operation(summary = "编辑项目表") + @CommonLog("编辑项目表") + @SaCheckPermission("/cdk/CdkProject/edit") + @PostMapping("/cdk/CdkProject/edit") + public CommonResult edit(@RequestBody @Valid CdkProjectEditParam cdkProjectEditParam) { + cdkProjectService.edit(cdkProjectEditParam); + return CommonResult.ok(); + } + + /** + * 删除项目表 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + @Operation(summary = "删除项目表") + @CommonLog("删除项目表") + @SaCheckPermission("/cdk/CdkProject/delete") + @PostMapping("/cdk/CdkProject/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List cdkProjectIdParamList) { + cdkProjectService.delete(cdkProjectIdParamList); + return CommonResult.ok(); + } + + /** + * 获取项目表详情 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + @Operation(summary = "获取项目表详情") + @SaCheckPermission("/cdk/CdkProject/detail") + @GetMapping("/cdk/CdkProject/detail") + public CommonResult detail(@Valid CdkProjectIdParam cdkProjectIdParam) { + return CommonResult.data(cdkProjectService.detail(cdkProjectIdParam)); + } + + + @Operation(summary = "获取项目表分页") +// @SaCheckPermission("/cdk/CdkProject/project-list") + @GetMapping("/cdk/CdkProject/project-list") + public CommonResult> projectList() { + return CommonResult.data(cdkProjectService.projectList()); + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/entity/CdkProject.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/entity/CdkProject.java new file mode 100644 index 0000000..1025d41 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/entity/CdkProject.java @@ -0,0 +1,71 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import java.util.Date; + +/** + * 项目表实体 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Getter +@Setter +@TableName("cdk_project") +public class CdkProject { + + /** 项目id */ + @TableId + @Schema(description = "项目id") + private String projectId; + + /** 项目编码 */ + @Schema(description = "项目编码") + private String projectCode; + + /** 项目名称 */ + @Schema(description = "项目名称") + private String projectName; + + /** 创建时间 */ + @Schema(description = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 创建用户 */ + @Schema(description = "创建用户") + @TableField(fill = FieldFill.INSERT) + private String createUser; + + /** 修改时间 */ + @Schema(description = "修改时间") + @TableField(fill = FieldFill.UPDATE) + private Date updateTime; + + /** 修改用户 */ + @Schema(description = "修改用户") + @TableField(fill = FieldFill.UPDATE) + private String updateUser; + + /** 删除标志 */ + @Schema(description = "删除标志") + @TableLogic + @TableField(fill = FieldFill.INSERT) + private String deleteFlag; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/enums/CdkProjectEnum.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/enums/CdkProjectEnum.java new file mode 100644 index 0000000..623a974 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/enums/CdkProjectEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.enums; + +import lombok.Getter; + +/** + * 项目表枚举 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Getter +public enum CdkProjectEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + CdkProjectEnum(String value) { + this.value = value; + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/CdkProjectMapper.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/CdkProjectMapper.java new file mode 100644 index 0000000..f7c81d6 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/CdkProjectMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.storm.cdk.modular.cdkproject.entity.CdkProject; + +/** + * 项目表Mapper接口 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +public interface CdkProjectMapper extends BaseMapper { +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/mapping/CdkProjectMapper.xml b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/mapping/CdkProjectMapper.xml new file mode 100644 index 0000000..fa8726c --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/mapper/mapping/CdkProjectMapper.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectAddParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectAddParam.java new file mode 100644 index 0000000..4ccdb7d --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectAddParam.java @@ -0,0 +1,37 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 项目表添加参数 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Getter +@Setter +public class CdkProjectAddParam { + + /** 项目编码 */ + @Schema(description = "项目编码") + private String projectCode; + + /** 项目名称 */ + @Schema(description = "项目名称") + private String projectName; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectEditParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectEditParam.java new file mode 100644 index 0000000..1e8c910 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectEditParam.java @@ -0,0 +1,44 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * 项目表编辑参数 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Getter +@Setter +public class CdkProjectEditParam { + + /** 项目id */ + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "projectId不能为空") + private String projectId; + + /** 项目编码 */ + @Schema(description = "项目编码") + private String projectCode; + + /** 项目名称 */ + @Schema(description = "项目名称") + private String projectName; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectIdParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectIdParam.java new file mode 100644 index 0000000..dba8445 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectIdParam.java @@ -0,0 +1,35 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * 项目表Id参数 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Getter +@Setter +public class CdkProjectIdParam { + + /** 项目id */ + @Schema(description = "项目id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "projectId不能为空") + private String projectId; +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectPageParam.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectPageParam.java new file mode 100644 index 0000000..42137f6 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/param/CdkProjectPageParam.java @@ -0,0 +1,57 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +/** + * 项目表查询参数 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Getter +@Setter +public class CdkProjectPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + + /** 项目编码 */ + @Schema(description = "项目编码") + private String projectCode; + + /** 项目名称 */ + @Schema(description = "项目名称") + private String projectName; + +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/CdkProjectService.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/CdkProjectService.java new file mode 100644 index 0000000..a756b70 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/CdkProjectService.java @@ -0,0 +1,83 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import vip.storm.cdk.modular.cdkproject.entity.CdkProject; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectAddParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectEditParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectIdParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectPageParam; +import vip.storm.common.pojo.CommonSelect; + +import java.util.List; + +/** + * 项目表Service接口 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +public interface CdkProjectService extends IService { + + /** + * 获取项目表分页 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + Page page(CdkProjectPageParam cdkProjectPageParam); + + /** + * 添加项目表 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + void add(CdkProjectAddParam cdkProjectAddParam); + + /** + * 编辑项目表 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + void edit(CdkProjectEditParam cdkProjectEditParam); + + /** + * 删除项目表 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + void delete(List cdkProjectIdParamList); + + /** + * 获取项目表详情 + * + * @author lyd + * @date 2025/09/26 15:38 + */ + CdkProject detail(CdkProjectIdParam cdkProjectIdParam); + + /** + * 获取项目表详情 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ + CdkProject queryEntity(String id); + + List projectList(); +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/impl/CdkProjectServiceImpl.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/impl/CdkProjectServiceImpl.java new file mode 100644 index 0000000..48170b8 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/modular/cdkproject/service/impl/CdkProjectServiceImpl.java @@ -0,0 +1,116 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.cdk.modular.cdkproject.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.storm.common.enums.CommonSortOrderEnum; +import vip.storm.common.exception.CommonException; +import vip.storm.common.page.CommonPageRequest; +import vip.storm.cdk.modular.cdkproject.entity.CdkProject; +import vip.storm.cdk.modular.cdkproject.mapper.CdkProjectMapper; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectAddParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectEditParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectIdParam; +import vip.storm.cdk.modular.cdkproject.param.CdkProjectPageParam; +import vip.storm.cdk.modular.cdkproject.service.CdkProjectService; +import vip.storm.common.pojo.CommonSelect; +import vip.storm.common.util.CommonCollectionUtil; + +import java.util.List; + +/** + * 项目表Service接口实现类 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +@Service +public class CdkProjectServiceImpl extends ServiceImpl implements CdkProjectService { + + @Override + public Page page(CdkProjectPageParam cdkProjectPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isNotEmpty(cdkProjectPageParam.getProjectCode())) { + queryWrapper.lambda().like(CdkProject::getProjectCode, cdkProjectPageParam.getProjectCode()); + } + if(ObjectUtil.isNotEmpty(cdkProjectPageParam.getProjectName())) { + queryWrapper.lambda().like(CdkProject::getProjectName, cdkProjectPageParam.getProjectName()); + } + if(ObjectUtil.isAllNotEmpty(cdkProjectPageParam.getSortField(), cdkProjectPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(cdkProjectPageParam.getSortOrder()); + queryWrapper.orderBy(true, cdkProjectPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(cdkProjectPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(CdkProject::getProjectId); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(CdkProjectAddParam cdkProjectAddParam) { + // 判断未删除的语言包是否存在 + + CdkProject cdkProject = BeanUtil.toBean(cdkProjectAddParam, CdkProject.class); + this.save(cdkProject); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(CdkProjectEditParam cdkProjectEditParam) { + CdkProject cdkProject = this.queryEntity(cdkProjectEditParam.getProjectId()); + BeanUtil.copyProperties(cdkProjectEditParam, cdkProject); + this.updateById(cdkProject); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List cdkProjectIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(cdkProjectIdParamList, CdkProjectIdParam::getProjectId)); + } + + @Override + public CdkProject detail(CdkProjectIdParam cdkProjectIdParam) { + return this.queryEntity(cdkProjectIdParam.getProjectId()); + } + + @Override + public CdkProject queryEntity(String id) { + CdkProject cdkProject = this.getById(id); + if(ObjectUtil.isEmpty(cdkProject)) { + throw new CommonException("项目表不存在,id值为:{}", id); + } + return cdkProject; + } + + @Override + public List projectList() { + List list = this.list(); + return CommonCollectionUtil.mapList(list, p -> { + CommonSelect commonSelect = new CommonSelect(); + commonSelect.setLabel(p.getProjectName()); + commonSelect.setValue(p.getProjectId()); + return commonSelect; + }); + } +} diff --git a/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/package-info.java b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/package-info.java new file mode 100644 index 0000000..756ebf8 --- /dev/null +++ b/storm-plugin/storm-plugin-cdk/src/main/java/vip/storm/cdk/package-info.java @@ -0,0 +1,6 @@ +/** + * cdk模块代码 + * @Author: lyd + * @Date: 2025/9/26 + */ +package vip.storm.cdk; diff --git a/storm-plugin/storm-plugin-inter/pom.xml b/storm-plugin/storm-plugin-inter/pom.xml new file mode 100644 index 0000000..cd657a9 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/pom.xml @@ -0,0 +1,40 @@ + + + 4.0.0 + + vip.storm + storm-plugin + 3.0.0 + + + storm-plugin-inter + jar + 语言包模块 + + + + vip.storm + storm-plugin-inter-api + + + + vip.storm + storm-plugin-auth-api + + + + + vip.storm + storm-plugin-sys-api + + + + + vip.storm + storm-plugin-dev-api + + + + diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/EnhancedJsonFlattener.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/EnhancedJsonFlattener.java new file mode 100644 index 0000000..7ca013b --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/EnhancedJsonFlattener.java @@ -0,0 +1,46 @@ +package vip.storm.inter.core; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @Author: lyd + * @Date: 2025/9/30 + */ +public class EnhancedJsonFlattener { + + public static List> flattenJsonObject(String jsonString) { + JSONObject jsonObject = JSON.parseObject(jsonString); + List> result = new ArrayList<>(); + flatten(jsonObject, "", result); + return result; + } + + private static void flatten(Object obj, String currentPath, List> result) { + if (obj instanceof JSONObject) { + JSONObject jsonObj = (JSONObject) obj; + for (String key : jsonObj.keySet()) { + String newPath = currentPath.isEmpty() ? key : currentPath + "." + key; + flatten(jsonObj.get(key), newPath, result); + } + } else if (obj instanceof JSONArray) { + // 处理数组:cite[2] + JSONArray array = (JSONArray) obj; + for (int i = 0; i < array.size(); i++) { + String newPath = currentPath + "[" + i + "]"; + flatten(array.get(i), newPath, result); + } + } else if (obj != null) { + // 处理所有基本类型,转换为字符串 + Map keyValue = new HashMap<>(); + keyValue.put(currentPath, obj.toString()); + result.add(keyValue); + } + } +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/LangConverter.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/LangConverter.java new file mode 100644 index 0000000..2ed84d6 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/core/LangConverter.java @@ -0,0 +1,36 @@ +package vip.storm.inter.core; + +import vip.storm.inter.modular.projectlang.entity.LangEditVo; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; +import java.util.stream.Collectors; + +/** + * @Author: lyd + * @Date: 2025/9/30 + */ +public class LangConverter { + public static List convertWithStream(String projectId, HashMap>> langMap) { + // 收集所有唯一的 langKey + Set allKeys = langMap.values().stream() + .flatMap(List::stream) + .flatMap(map -> map.keySet().stream()) + .collect(Collectors.toSet()); + + return allKeys.stream() + .map(key -> { + HashMap values = new HashMap<>(); + langMap.forEach((language, list) -> { + list.stream() + .filter(map -> map.containsKey(key)) + .findFirst() + .ifPresent(map -> values.put(language, map.get(key))); + }); + return LangEditVo.builder().projectId(projectId).langKey(key).values(values).build(); + }) + .collect(Collectors.toList()); + } +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/controller/InterProjectLangController.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/controller/InterProjectLangController.java new file mode 100644 index 0000000..904a7cd --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/controller/InterProjectLangController.java @@ -0,0 +1,126 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.controller; + +import cn.dev33.satoken.annotation.SaCheckPermission; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.swagger.v3.oas.annotations.tags.Tag; +import io.swagger.v3.oas.annotations.Operation; +import org.springframework.validation.annotation.Validated; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; +import vip.storm.common.annotation.CommonLog; +import vip.storm.common.pojo.CommonResult; +import vip.storm.inter.modular.projectlang.entity.InterProjectLang; +import vip.storm.inter.modular.projectlang.entity.LangEditVo; +import vip.storm.inter.modular.projectlang.param.*; +import vip.storm.inter.modular.projectlang.service.InterProjectLangService; + +import jakarta.annotation.Resource; +import jakarta.validation.Valid; +import jakarta.validation.constraints.NotEmpty; +import java.util.List; + +/** + * 项目-语言关系表控制器 + * + * @author lyd + * @date 2025/09/29 14:17 + */ +@Tag(name = "项目-语言关系表控制器") +@RestController +@Validated +public class InterProjectLangController { + + @Resource + private InterProjectLangService interProjectLangService; + + /** + * 获取项目-语言关系表分页 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + @Operation(summary = "获取项目-语言关系表分页") + @SaCheckPermission("/inter/projectlang/page") + @GetMapping("/inter/projectlang/page") + public CommonResult> page(InterProjectLangPageParam interProjectLangPageParam) { + return CommonResult.data(interProjectLangService.page(interProjectLangPageParam)); + } + + /** + * 添加项目-语言关系表 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + @Operation(summary = "添加项目-语言关系表") + @CommonLog("添加项目-语言关系表") + @SaCheckPermission("/inter/projectlang/add") + @PostMapping("/inter/projectlang/add") + public CommonResult add(@RequestBody @Valid InterProjectLangAddParam interProjectLangAddParam) { + interProjectLangService.add(interProjectLangAddParam); + return CommonResult.ok(); + } + + /** + * 编辑项目-语言关系表 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + @Operation(summary = "编辑项目-语言关系表") + @CommonLog("编辑项目-语言关系表") + @SaCheckPermission("/inter/projectlang/edit") + @PostMapping("/inter/projectlang/edit") + public CommonResult edit(@RequestBody @Valid InterProjectLangEditParam interProjectLangEditParam) { + interProjectLangService.edit(interProjectLangEditParam); + return CommonResult.ok(); + } + + /** + * 删除项目-语言关系表 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + @Operation(summary = "删除项目-语言关系表") + @CommonLog("删除项目-语言关系表") + @SaCheckPermission("/inter/projectlang/delete") + @PostMapping("/inter/projectlang/delete") + public CommonResult delete(@RequestBody @Valid @NotEmpty(message = "集合不能为空") + List interProjectLangIdParamList) { + interProjectLangService.delete(interProjectLangIdParamList); + return CommonResult.ok(); + } + + /** + * 获取项目-语言关系表详情 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + @Operation(summary = "获取项目-语言关系表详情") + @SaCheckPermission("/inter/projectlang/detail") + @GetMapping("/inter/projectlang/detail") + public CommonResult detail(@Valid InterProjectLangIdParam interProjectLangIdParam) { + return CommonResult.data(interProjectLangService.detail(interProjectLangIdParam)); + } + @Operation(summary = "获取编辑的数据") + @GetMapping("/inter/projectlang/edit-data") + public CommonResult> editData(@Valid InterProjectParam param) { + return CommonResult.data(interProjectLangService.editData(param)); + } +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/InterProjectLang.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/InterProjectLang.java new file mode 100644 index 0000000..0374f85 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/InterProjectLang.java @@ -0,0 +1,75 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.entity; + +import com.baomidou.mybatisplus.annotation.*; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 项目-语言关系表实体 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Getter +@Setter +@TableName("inter_project_lang") +public class InterProjectLang { + + /** 项目-语言id */ + @TableId + @Schema(description = "项目-语言id") + private String plId; + + /** 项目id */ + @Schema(description = "项目id") + private String projectId; + + /** 语言 */ + @Schema(description = "语言") + private String langId; + + /** 语言json */ + @Schema(description = "语言json") + private String langData; + + /** 创建时间 */ + @Schema(description = "创建时间") + @TableField(fill = FieldFill.INSERT) + private Date createTime; + + /** 创建用户 */ + @Schema(description = "创建用户") + @TableField(fill = FieldFill.INSERT) + private String createUser; + + /** 修改时间 */ + @Schema(description = "修改时间") + @TableField(fill = FieldFill.UPDATE) + private Date updateTime; + + /** 修改用户 */ + @Schema(description = "修改用户") + @TableField(fill = FieldFill.UPDATE) + private String updateUser; + + /** 删除标志 */ + @Schema(description = "删除标志") + @TableLogic + @TableField(fill = FieldFill.INSERT) + private String deleteFlag; +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/LangEditVo.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/LangEditVo.java new file mode 100644 index 0000000..d74ea27 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/entity/LangEditVo.java @@ -0,0 +1,27 @@ +package vip.storm.inter.modular.projectlang.entity; + +import lombok.Builder; +import lombok.Data; + +import java.util.HashMap; + +/** + * 语言编辑 + * @Author: lyd + * @Date: 2025/9/30 + */ +@Data +@Builder +public class LangEditVo { + private String projectId; + + private String langKey; + + /** + * "zh": "你好" + * "en": "hello" + * "in": "halo" + * "ja": "こんにちは" + */ + private HashMap values; +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/enums/InterProjectLangEnum.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/enums/InterProjectLangEnum.java new file mode 100644 index 0000000..073dcce --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/enums/InterProjectLangEnum.java @@ -0,0 +1,34 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.enums; + +import lombok.Getter; + +/** + * 项目-语言关系表枚举 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Getter +public enum InterProjectLangEnum { + + /** 测试 */ + TEST("TEST"); + + private final String value; + + InterProjectLangEnum(String value) { + this.value = value; + } +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/InterProjectLangMapper.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/InterProjectLangMapper.java new file mode 100644 index 0000000..bcf5c1e --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/InterProjectLangMapper.java @@ -0,0 +1,25 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import vip.storm.inter.modular.projectlang.entity.InterProjectLang; + +/** + * 项目-语言关系表Mapper接口 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +public interface InterProjectLangMapper extends BaseMapper { +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/mapping/InterProjectLangMapper.xml b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/mapping/InterProjectLangMapper.xml new file mode 100644 index 0000000..314c234 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/mapper/mapping/InterProjectLangMapper.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangAddParam.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangAddParam.java new file mode 100644 index 0000000..9a7aa97 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangAddParam.java @@ -0,0 +1,48 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 项目-语言关系表添加参数 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Getter +@Setter +public class InterProjectLangAddParam { + + /** 项目id */ + @Schema(description = "项目id") + @NotBlank(message = "项目不能为空") + private String projectId; + + /** 语言 */ + @Schema(description = "语言") + @NotBlank(message = "语言不能为空") + private String langId; + + /** 语言json */ + @Schema(description = "语言json") + private String langData; + +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangEditParam.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangEditParam.java new file mode 100644 index 0000000..3686699 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangEditParam.java @@ -0,0 +1,51 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; +import jakarta.validation.constraints.NotNull; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 项目-语言关系表编辑参数 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Getter +@Setter +public class InterProjectLangEditParam { + + /** 项目-语言id */ + @Schema(description = "项目-语言id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "plId不能为空") + private String plId; + + /** 项目id */ + @Schema(description = "项目id") + private String projectId; + + /** 语言 */ + @Schema(description = "语言") + private String langId; + + /** 语言json */ + @Schema(description = "语言json") + private String langData; + +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangIdParam.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangIdParam.java new file mode 100644 index 0000000..2fb8046 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangIdParam.java @@ -0,0 +1,35 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; + +import jakarta.validation.constraints.NotBlank; + +/** + * 项目-语言关系表Id参数 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Getter +@Setter +public class InterProjectLangIdParam { + + /** 项目-语言id */ + @Schema(description = "项目-语言id", requiredMode = Schema.RequiredMode.REQUIRED) + @NotBlank(message = "plId不能为空") + private String plId; +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangPageParam.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangPageParam.java new file mode 100644 index 0000000..bb3cf49 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectLangPageParam.java @@ -0,0 +1,51 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.param; + +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Getter; +import lombok.Setter; +import java.math.BigDecimal; +import java.util.Date; + +/** + * 项目-语言关系表查询参数 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Getter +@Setter +public class InterProjectLangPageParam { + + /** 当前页 */ + @Schema(description = "当前页码") + private Integer current; + + /** 每页条数 */ + @Schema(description = "每页条数") + private Integer size; + + /** 排序字段 */ + @Schema(description = "排序字段,字段驼峰名称,如:userName") + private String sortField; + + /** 排序方式 */ + @Schema(description = "排序方式,升序:ASCEND;降序:DESCEND") + private String sortOrder; + + /** 关键词 */ + @Schema(description = "关键词") + private String searchKey; + +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectParam.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectParam.java new file mode 100644 index 0000000..89eda23 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/param/InterProjectParam.java @@ -0,0 +1,12 @@ +package vip.storm.inter.modular.projectlang.param; + +import lombok.Data; + +/** + * @Author: lyd + * @Date: 2025/9/30 + */ +@Data +public class InterProjectParam { + private String projectId; +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/provider/ProjectLangProvider.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/provider/ProjectLangProvider.java new file mode 100644 index 0000000..ec163fd --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/provider/ProjectLangProvider.java @@ -0,0 +1,35 @@ +package vip.storm.inter.modular.projectlang.provider; + +import cn.hutool.core.bean.BeanUtil; +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import jakarta.annotation.Resource; +import org.springframework.stereotype.Service; +import vip.storm.common.util.CommonCollectionUtil; +import vip.storm.inter.api.InterProjectLangApi; +import vip.storm.inter.core.ProjectLangDto; +import vip.storm.inter.modular.projectlang.entity.InterProjectLang; +import vip.storm.inter.modular.projectlang.service.InterProjectLangService; + +import java.util.ArrayList; +import java.util.List; + +/** + * @Author: lyd + * @Date: 2025/9/29 + */ +@Service +public class ProjectLangProvider implements InterProjectLangApi { + @Resource + private InterProjectLangService projectLangService; + @Override + public List getProjectLangDatas(String projectId) { + List list = projectLangService.list(new LambdaQueryWrapper() + .eq(InterProjectLang::getProjectId, projectId)); + if (list.size() == 0) { + return new ArrayList<>(); + } + return CommonCollectionUtil.mapList(list, p -> JSONObject.parseObject(JSON.toJSONString(p))); + } +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/InterProjectLangService.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/InterProjectLangService.java new file mode 100644 index 0000000..65838b7 --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/InterProjectLangService.java @@ -0,0 +1,80 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.service; + +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.IService; +import vip.storm.inter.modular.projectlang.entity.InterProjectLang; +import vip.storm.inter.modular.projectlang.entity.LangEditVo; +import vip.storm.inter.modular.projectlang.param.*; + +import java.util.List; + +/** + * 项目-语言关系表Service接口 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +public interface InterProjectLangService extends IService { + + /** + * 获取项目-语言关系表分页 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + Page page(InterProjectLangPageParam interProjectLangPageParam); + + /** + * 添加项目-语言关系表 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + void add(InterProjectLangAddParam interProjectLangAddParam); + + /** + * 编辑项目-语言关系表 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + void edit(InterProjectLangEditParam interProjectLangEditParam); + + /** + * 删除项目-语言关系表 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + void delete(List interProjectLangIdParamList); + + /** + * 获取项目-语言关系表详情 + * + * @author lyd + * @date 2025/09/29 14:17 + */ + InterProjectLang detail(InterProjectLangIdParam interProjectLangIdParam); + + /** + * 获取项目-语言关系表详情 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ + InterProjectLang queryEntity(String id); + + List editData(InterProjectParam param); +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/impl/InterProjectLangServiceImpl.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/impl/InterProjectLangServiceImpl.java new file mode 100644 index 0000000..12b629c --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/modular/projectlang/service/impl/InterProjectLangServiceImpl.java @@ -0,0 +1,120 @@ +/* + * Copyright [2022] [https://www.xiaonuo.vip] + * + * Snowy采用APACHE LICENSE 2.0开源协议,您在使用过程中,需要注意以下几点: + * + * 1.请不要删除和修改根目录下的LICENSE文件。 + * 2.请不要删除和修改Snowy源码头部的版权声明。 + * 3.本项目代码可免费商业使用,商业使用请保留源码和相关描述文件的项目出处,作者声明等。 + * 4.分发源码时候,请注明软件出处 https://www.xiaonuo.vip + * 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。 + * 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip + */ +package vip.storm.inter.modular.projectlang.service.impl; + +import cn.hutool.core.bean.BeanUtil; +import cn.hutool.core.collection.CollStreamUtil; +import cn.hutool.core.util.ObjectUtil; +import cn.hutool.core.util.StrUtil; +import com.alibaba.fastjson.JSONObject; +import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; +import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; +import vip.storm.common.enums.CommonSortOrderEnum; +import vip.storm.common.exception.CommonException; +import vip.storm.common.page.CommonPageRequest; +import vip.storm.inter.core.EnhancedJsonFlattener; +import vip.storm.inter.core.LangConverter; +import vip.storm.inter.modular.projectlang.entity.InterProjectLang; +import vip.storm.inter.modular.projectlang.entity.LangEditVo; +import vip.storm.inter.modular.projectlang.mapper.InterProjectLangMapper; +import vip.storm.inter.modular.projectlang.param.*; +import vip.storm.inter.modular.projectlang.service.InterProjectLangService; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * 项目-语言关系表Service接口实现类 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +@Service +public class InterProjectLangServiceImpl extends ServiceImpl implements InterProjectLangService { + + @Override + public Page page(InterProjectLangPageParam interProjectLangPageParam) { + QueryWrapper queryWrapper = new QueryWrapper().checkSqlInjection(); + if(ObjectUtil.isAllNotEmpty(interProjectLangPageParam.getSortField(), interProjectLangPageParam.getSortOrder())) { + CommonSortOrderEnum.validate(interProjectLangPageParam.getSortOrder()); + queryWrapper.orderBy(true, interProjectLangPageParam.getSortOrder().equals(CommonSortOrderEnum.ASC.getValue()), + StrUtil.toUnderlineCase(interProjectLangPageParam.getSortField())); + } else { + queryWrapper.lambda().orderByAsc(InterProjectLang::getPlId); + } + return this.page(CommonPageRequest.defaultPage(), queryWrapper); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void add(InterProjectLangAddParam interProjectLangAddParam) { + List list = this.list(new LambdaQueryWrapper() + .eq(InterProjectLang::getProjectId, interProjectLangAddParam.getProjectId()) + .eq(InterProjectLang::getLangId, interProjectLangAddParam.getLangId())); + if (list.size() > 0) { + throw new CommonException("当前项目已经存在该语言!"); + } + InterProjectLang interProjectLang = BeanUtil.toBean(interProjectLangAddParam, InterProjectLang.class); + this.save(interProjectLang); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void edit(InterProjectLangEditParam interProjectLangEditParam) { + InterProjectLang interProjectLang = this.queryEntity(interProjectLangEditParam.getPlId()); + BeanUtil.copyProperties(interProjectLangEditParam, interProjectLang); + this.updateById(interProjectLang); + } + + @Transactional(rollbackFor = Exception.class) + @Override + public void delete(List interProjectLangIdParamList) { + // 执行删除 + this.removeByIds(CollStreamUtil.toList(interProjectLangIdParamList, InterProjectLangIdParam::getPlId)); + } + + @Override + public InterProjectLang detail(InterProjectLangIdParam interProjectLangIdParam) { + return this.queryEntity(interProjectLangIdParam.getPlId()); + } + + @Override + public InterProjectLang queryEntity(String id) { + InterProjectLang interProjectLang = this.getById(id); + if(ObjectUtil.isEmpty(interProjectLang)) { + throw new CommonException("项目绑定的语言不存在,id值为:{}", id); + } + return interProjectLang; + } + + @Override + public List editData(InterProjectParam param) { + List list = this.list(new LambdaQueryWrapper() + .eq(InterProjectLang::getProjectId, param.getProjectId())); + if (list.size() == 0) { + return null; + } + HashMap>> lang = new HashMap(); + for (InterProjectLang projectLang : list) { + List> result = EnhancedJsonFlattener.flattenJsonObject(projectLang.getLangData()); + lang.put(projectLang.getLangId(), result); + } + return LangConverter.convertWithStream(list.get(0).getProjectId(), lang); + } +} diff --git a/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/package-info.java b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/package-info.java new file mode 100644 index 0000000..cce33af --- /dev/null +++ b/storm-plugin/storm-plugin-inter/src/main/java/vip/storm/inter/package-info.java @@ -0,0 +1,6 @@ +/** + * 国际化语言包模块 + * @Author: lyd + * @Date: 2025/9/29 + */ +package vip.storm.inter; diff --git a/storm-vue/src/api/cdk/cdkCodeInfoApi.js b/storm-vue/src/api/cdk/cdkCodeInfoApi.js new file mode 100644 index 0000000..9a5659e --- /dev/null +++ b/storm-vue/src/api/cdk/cdkCodeInfoApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/cdk/cdkcodeinfo/` + url, ...arg) + +/** + * 授权码Api接口管理器 + * + * @author lyd + * @date 2025/09/26 17:28 + **/ +export default { + // 获取授权码分页 + cdkCodeInfoPage(data) { + return request('page', data, 'get') + }, + // 提交授权码表单 edit为true时为编辑,默认为新增 + cdkCodeInfoSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除授权码 + cdkCodeInfoDelete(data) { + return request('delete', data) + }, + // 获取授权码详情 + cdkCodeInfoDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/storm-vue/src/api/cdk/cdkEncryInfoApi.js b/storm-vue/src/api/cdk/cdkEncryInfoApi.js new file mode 100644 index 0000000..1537593 --- /dev/null +++ b/storm-vue/src/api/cdk/cdkEncryInfoApi.js @@ -0,0 +1,32 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/cdk/cdkencryinfo/` + url, ...arg) + +/** + * 密钥信息Api接口管理器 + * + * @author lyd + * @date 2025/09/26 17:06 + **/ +export default { + // 获取密钥信息分页 + cdkEncryInfoPage(data) { + return request('page', data, 'get') + }, + // 提交密钥信息表单 edit为true时为编辑,默认为新增 + cdkEncryInfoSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除密钥信息 + cdkEncryInfoDelete(data) { + return request('delete', data) + }, + // 获取密钥信息详情 + cdkEncryInfoDetail(data) { + return request('detail', data, 'get') + }, + // 获取密钥信息详情 + generated(data) { + return request('generated', data, 'post') + } +} diff --git a/storm-vue/src/api/cdk/cdkProjectApi.js b/storm-vue/src/api/cdk/cdkProjectApi.js new file mode 100644 index 0000000..8385fe4 --- /dev/null +++ b/storm-vue/src/api/cdk/cdkProjectApi.js @@ -0,0 +1,31 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/cdk/CdkProject/` + url, ...arg) + +/** + * 项目表Api接口管理器 + * + * @author lyd + * @date 2025/09/26 15:38 + **/ +export default { + // 获取项目表分页 + cdkProjectPage(data) { + return request('page', data, 'get') + }, + // 提交项目表表单 edit为true时为编辑,默认为新增 + cdkProjectSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除项目表 + cdkProjectDelete(data) { + return request('delete', data) + }, + // 获取项目表详情 + cdkProjectDetail(data) { + return request('detail', data, 'get') + }, + cdkProjectList(data) { + return request('project-list', data, 'get') + } +} diff --git a/storm-vue/src/api/inter/interProjectLangApi.js b/storm-vue/src/api/inter/interProjectLangApi.js new file mode 100644 index 0000000..bbfe273 --- /dev/null +++ b/storm-vue/src/api/inter/interProjectLangApi.js @@ -0,0 +1,28 @@ +import { baseRequest } from '@/utils/request' + +const request = (url, ...arg) => baseRequest(`/inter/projectlang/` + url, ...arg) + +/** + * 项目-语言关系表Api接口管理器 + * + * @author lyd + * @date 2025/09/29 14:17 + **/ +export default { + // 获取项目-语言关系表分页 + interProjectLangPage(data) { + return request('page', data, 'get') + }, + // 提交项目-语言关系表表单 edit为true时为编辑,默认为新增 + interProjectLangSubmitForm(data, edit = false) { + return request(edit ? 'edit' : 'add', data) + }, + // 删除项目-语言关系表 + interProjectLangDelete(data) { + return request('delete', data) + }, + // 获取项目-语言关系表详情 + interProjectLangDetail(data) { + return request('detail', data, 'get') + } +} diff --git a/storm-vue/src/utils/tool.js b/storm-vue/src/utils/tool.js index 8784f80..a8698df 100644 --- a/storm-vue/src/utils/tool.js +++ b/storm-vue/src/utils/tool.js @@ -216,4 +216,13 @@ tool.parseTime = (time, cFormat) => { return time_str } +// options一定要是label-value +tool.getOptionLabel = (options, value) => { + if (!options || options.length === 0) { + return '' + } + const option = options.find((item) => item.value === value) + return option ? option.label : '' +} + export default tool diff --git a/storm-vue/src/views/cdk/code/form.vue b/storm-vue/src/views/cdk/code/form.vue new file mode 100644 index 0000000..ae2042e --- /dev/null +++ b/storm-vue/src/views/cdk/code/form.vue @@ -0,0 +1,87 @@ + + + diff --git a/storm-vue/src/views/cdk/code/index.vue b/storm-vue/src/views/cdk/code/index.vue new file mode 100644 index 0000000..05db434 --- /dev/null +++ b/storm-vue/src/views/cdk/code/index.vue @@ -0,0 +1,117 @@ + + + diff --git a/storm-vue/src/views/cdk/encryption/form.vue b/storm-vue/src/views/cdk/encryption/form.vue new file mode 100644 index 0000000..fa76c9d --- /dev/null +++ b/storm-vue/src/views/cdk/encryption/form.vue @@ -0,0 +1,95 @@ + + + diff --git a/storm-vue/src/views/cdk/encryption/index.vue b/storm-vue/src/views/cdk/encryption/index.vue new file mode 100644 index 0000000..9baf09b --- /dev/null +++ b/storm-vue/src/views/cdk/encryption/index.vue @@ -0,0 +1,145 @@ + + + diff --git a/storm-vue/src/views/cdk/project/form.vue b/storm-vue/src/views/cdk/project/form.vue new file mode 100644 index 0000000..73fac4e --- /dev/null +++ b/storm-vue/src/views/cdk/project/form.vue @@ -0,0 +1,82 @@ + + + diff --git a/storm-vue/src/views/cdk/project/index.vue b/storm-vue/src/views/cdk/project/index.vue new file mode 100644 index 0000000..8bb8c35 --- /dev/null +++ b/storm-vue/src/views/cdk/project/index.vue @@ -0,0 +1,157 @@ + + + diff --git a/storm-vue/src/views/inter/editLang/index.vue b/storm-vue/src/views/inter/editLang/index.vue new file mode 100644 index 0000000..bf3ad72 --- /dev/null +++ b/storm-vue/src/views/inter/editLang/index.vue @@ -0,0 +1,45 @@ + + + + + diff --git a/storm-vue/src/views/inter/projectlang/form.vue b/storm-vue/src/views/inter/projectlang/form.vue new file mode 100644 index 0000000..84675a0 --- /dev/null +++ b/storm-vue/src/views/inter/projectlang/form.vue @@ -0,0 +1,99 @@ + + + diff --git a/storm-vue/src/views/inter/projectlang/index.vue b/storm-vue/src/views/inter/projectlang/index.vue new file mode 100644 index 0000000..9a04ee9 --- /dev/null +++ b/storm-vue/src/views/inter/projectlang/index.vue @@ -0,0 +1,134 @@ + + + diff --git a/storm-web-app/pom.xml b/storm-web-app/pom.xml index 34fee51..de9f1fe 100644 --- a/storm-web-app/pom.xml +++ b/storm-web-app/pom.xml @@ -117,6 +117,15 @@ vip.storm storm-plugin-sys + + + vip.storm + storm-plugin-cdk + + + vip.storm + storm-plugin-inter + diff --git a/storm-web-app/src/main/resources/application.properties b/storm-web-app/src/main/resources/application.properties index 1238898..1994625 100644 --- a/storm-web-app/src/main/resources/application.properties +++ b/storm-web-app/src/main/resources/application.properties @@ -27,7 +27,7 @@ spring.servlet.multipart.max-file-size=100MB # mysql spring.datasource.dynamic.datasource.master.driver-class-name=com.mysql.cj.jdbc.Driver -spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/snowys?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true&rewriteBatchedStatements=true +spring.datasource.dynamic.datasource.master.url=jdbc:mysql://localhost:3306/authcode?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&nullCatalogMeansCurrent=true&useInformationSchema=true&rewriteBatchedStatements=true spring.datasource.dynamic.datasource.master.username=root spring.datasource.dynamic.datasource.master.password=12356 spring.datasource.dynamic.strict=true diff --git a/storm-web-app/src/test/java/vip/storm/MainTest.java b/storm-web-app/src/test/java/vip/storm/MainTest.java index b9bdb22..d62d329 100644 --- a/storm-web-app/src/test/java/vip/storm/MainTest.java +++ b/storm-web-app/src/test/java/vip/storm/MainTest.java @@ -12,10 +12,13 @@ */ package vip.storm; +import jakarta.annotation.Resource; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; +import vip.storm.inter.modular.projectlang.param.InterProjectParam; +import vip.storm.inter.modular.projectlang.service.InterProjectLangService; /** * 主测试类 @@ -27,8 +30,13 @@ import org.springframework.test.context.junit4.SpringRunner; @SpringBootTest(classes = Application.class) public class MainTest { + @Resource + private InterProjectLangService interProjectLangService; + @Test public void test() { - + InterProjectParam interProjectParam = new InterProjectParam(); + interProjectParam.setProjectId("1971495116232785921"); + interProjectLangService.editData(interProjectParam); } }