Skip to content

Commit a69591e

Browse files
ZhuXueLiangZhuXueLiang
authored andcommitted
Merge branch 'dev'
# Conflicts: # .github/workflows/gradle-publish.yml
2 parents 3e07793 + 3c56fec commit a69591e

31 files changed

Lines changed: 887 additions & 453 deletions

.github/workflows/gradle-publish.yml

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,13 @@
88
name: Gradle Package
99

1010
on:
11+
push:
12+
branches:
13+
- main
14+
- dev
1115
release:
12-
types: [created]
16+
types:
17+
- created
1318

1419
jobs:
1520
build:
@@ -33,13 +38,16 @@ jobs:
3338
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
3439
with:
3540
arguments: build
36-
37-
# The USERNAME and TOKEN need to correspond to the credentials environment variables used in
38-
# the publishing section of your build.gradle
39-
- name: Publish to GitHub Packages
40-
uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
41-
with:
42-
arguments: publish
4341
env:
4442
USERNAME: ${{ secrets.MAVEN_USERNAME }}
4543
TOKEN: ${{ secrets.MAVEN_TOKEN }}
44+
45+
# The USERNAME and TOKEN need to correspond to the credentials environment variables used in
46+
# the publishing section of your build.gradle
47+
# - name: Publish to GitHub Packages
48+
# uses: gradle/gradle-build-action@bd5760595778326ba7f1441bcf7e88b49de61a25 # v2.6.0
49+
# with:
50+
# arguments: publish
51+
# env:
52+
# USERNAME: ${{ github.actor }}
53+
# TOKEN: ${{ secrets.MAVEN_TOKEN }}

build.gradle.kts

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,19 @@ repositories {
2727
setUrl("https://maven.aliyun.com/nexus/content/groups/public/")
2828
setUrl("https://oss.sonatype.org/content/repositories/snapshots/")
2929
}
30+
maven {
31+
setUrl("https://maven.pkg.github.com/visual-ddd/ddd-code-generator")
32+
credentials {
33+
username = System.getenv("USERNAME")
34+
password = System.getenv("TOKEN")
35+
}
36+
}
3037
mavenCentral()
3138
gradlePluginPortal()
3239
}
3340

3441
dependencies {
35-
implementation("com.wd.paas:wd-generator-core:3.0.0-SNAPSHOT") {
42+
implementation("com.wd.paas:wd-generator-core:4.0.1-RC02") {
3643
exclude(group = "org.apache.velocity", module = "velocity")
3744
exclude(group = "org.apache.velocity", module = "velocity-engine-core")
3845
}

gradle.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,13 @@
22

33
pluginGroup = com.wk.paas.visualDDD
44
pluginName = visual-ddd
5-
pluginRepositoryUrl = https://github.com/Shimmernight/idea-plugin-dev
5+
pluginRepositoryUrl = https://github.com/visual-ddd/idea-plugin-codegen
66
# SemVer format -> https://semver.org
7-
pluginVersion = 1.0.0
7+
pluginVersion = 1.2.2-RC01
88

99
# Supported build number ranges and IntelliJ Platform versions -> https://plugins.jetbrains.com/docs/intellij/build-number-ranges.html
1010
pluginSinceBuild = 193
11-
pluginUntilBuild = 232.*
11+
pluginUntilBuild =
1212

1313
# IntelliJ Platform Properties -> https://plugins.jetbrains.com/docs/intellij/tools-gradle-intellij-plugin.html#configuration-intellij-extension
1414
platformType = IC
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.wk.paas.action;
2+
3+
import com.intellij.openapi.actionSystem.AnAction;
4+
import com.intellij.openapi.actionSystem.AnActionEvent;
5+
import com.intellij.openapi.project.Project;
6+
import com.wk.paas.service.GenerateCodeService;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
/**
10+
* 一键生成代码
11+
*
12+
* @author shimmer
13+
*/
14+
public class GenerateCodeAction extends AnAction {
15+
@Override
16+
public void actionPerformed(@NotNull AnActionEvent e) {
17+
Project project = e.getProject();
18+
new GenerateCodeService(project).execute();
19+
}
20+
}

src/main/java/com/wk/paas/action/LoginAction.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,16 @@
55
import com.wk.paas.window.LoginDialog;
66
import org.jetbrains.annotations.NotNull;
77

8+
import javax.swing.*;
9+
810
/**
911
* @author shimmer
1012
*/
1113
public class LoginAction extends AnAction {
1214

1315
@Override
1416
public void actionPerformed(@NotNull AnActionEvent event) {
15-
new LoginDialog();
17+
SwingUtilities.invokeLater(LoginDialog::new);
1618
}
1719

1820
}

src/main/java/com/wk/paas/action/OpenCodeGenToolAction.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@
66
import com.wk.paas.window.SelectElementDialog;
77
import org.jetbrains.annotations.NotNull;
88

9+
import javax.swing.*;
10+
911
public class OpenCodeGenToolAction extends AnAction {
1012

1113
@Override
1214
public void actionPerformed(@NotNull AnActionEvent e) {
1315
Project project = e.getProject();
1416
assert project != null;
15-
SelectElementDialog dialog = new SelectElementDialog(project);
16-
dialog.setTitle("代码生成器");
17-
dialog.setSize(700, 600);
18-
dialog.setLocationRelativeTo(null);
19-
dialog.setVisible(true);
17+
SwingUtilities.invokeLater(() -> new SelectElementDialog(project));
2018
}
2119
}

src/main/java/com/wk/paas/action/OpenPlatformRelatedSettingAction.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,13 +6,15 @@
66
import com.wk.paas.window.BindAppVersion;
77
import org.jetbrains.annotations.NotNull;
88

9+
import javax.swing.*;
10+
911
/**
1012
* @author shimmer
1113
*/
1214
public class OpenPlatformRelatedSettingAction extends AnAction {
1315
@Override
1416
public void actionPerformed(@NotNull AnActionEvent e) {
1517
Project project = e.getProject();
16-
new BindAppVersion(project);
18+
SwingUtilities.invokeLater(() -> new BindAppVersion(project));
1719
}
1820
}
Lines changed: 15 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,19 @@
11
package com.wk.paas.config;
22

3+
import com.wk.paas.window.setting.LoginAccountInfoSettings;
4+
import org.apache.commons.lang3.StringUtils;
5+
36
public class PlatformServiceConfig {
4-
5-
public static final String HOST = "https://ddd.wakedt.cn";
67

7-
}
8+
public static final String DefaultHost = "https://ddd.wakedata.com";
9+
10+
public static final String SPRING_CONTEXT = "/wd/visual";
11+
12+
13+
public static String getUrlPrefix() {
14+
LoginAccountInfoSettings instance = LoginAccountInfoSettings.getInstance();
15+
String userHost = instance.getHost();
16+
return (StringUtils.isBlank(userHost) ? DefaultHost : userHost) + SPRING_CONTEXT;
17+
}
18+
19+
}
Lines changed: 157 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,157 @@
1+
package com.wk.paas.service;
2+
3+
import cn.hutool.json.JSONArray;
4+
import cn.hutool.json.JSONObject;
5+
import cn.hutool.json.JSONUtil;
6+
import com.intellij.openapi.project.Project;
7+
import com.intellij.openapi.ui.Messages;
8+
import com.intellij.openapi.vfs.VirtualFileManager;
9+
import com.wd.paas.generator.CodeGenerateService;
10+
import com.wd.paas.generator.common.enums.GenerateOperationTypeEnum;
11+
import com.wd.paas.generator.common.enums.ProjectTemplateType;
12+
import com.wd.paas.generator.generate.visitor.velocitytemplate.TemplateContext;
13+
import com.wd.paas.generator.generate.visitor.velocitytemplate.TemplateVisitor;
14+
import com.wk.paas.service.dto.*;
15+
import com.wk.paas.window.BindAppVersion;
16+
import com.wk.paas.window.SelectElementDialog;
17+
import com.wk.paas.window.setting.AppDSLBuilder;
18+
import com.wk.paas.window.setting.BindAppInfoSettings;
19+
import com.wk.paas.window.setting.CodeGenerateConfiguration;
20+
import com.wk.paas.window.setting.LoginAccountInfoSettings;
21+
import org.apache.commons.collections.CollectionUtils;
22+
import org.apache.commons.lang3.StringUtils;
23+
24+
import javax.swing.*;
25+
import java.util.*;
26+
27+
public class GenerateCodeService {
28+
29+
private final Project project;
30+
31+
public GenerateCodeService(Project project) {
32+
this.project = project;
33+
}
34+
35+
public void execute() {
36+
// 获取应用信息
37+
BindAppInfoSettings projectConfig = BindAppInfoSettings.getInstance(project);
38+
ApplicationDTO applicationDTO = projectConfig.getApplicationDTO();
39+
ApplicationVersionDTO applicationVersionDTO = projectConfig.getApplicationVersionDTO();
40+
if (applicationDTO == null || applicationVersionDTO == null) {
41+
Messages.showMessageDialog("请先关联一个平台应用", "系统警告", Messages.getWarningIcon());
42+
SwingUtilities.invokeLater(() -> new BindAppVersion(project));
43+
return;
44+
}
45+
46+
// 获取生成配置信息
47+
CodeGenerateConfiguration config = CodeGenerateConfiguration.getInstance(project);
48+
if (config == null) {
49+
Messages.showMessageDialog("请先配置生成信息", "系统警告", Messages.getWarningIcon());
50+
SwingUtilities.invokeLater(() -> new SelectElementDialog(project));
51+
return;
52+
}
53+
54+
List<DomainDesignVersionDTO> domainSelectedList = config.getDomainSelectedList();
55+
List<BusinessSceneVersionDTO> sceneSelectedList = config.getSceneSelectedList();
56+
if (CollectionUtils.isEmpty(domainSelectedList) && CollectionUtils.isEmpty(sceneSelectedList)) {
57+
Messages.showMessageDialog("至少选择一个生成的模块", "系统警告", Messages.getWarningIcon());
58+
SwingUtilities.invokeLater(() -> new SelectElementDialog(project));
59+
return;
60+
}
61+
62+
String outputPathText = config.getOutPath();
63+
boolean isInitCode = config.isInitCodeRadioButton();
64+
boolean isColaSingle = config.isColaSingleRadioButton();
65+
boolean isInitProjectStruct = config.isInitProjectStructCheckBox();
66+
67+
// 重写应用信息
68+
applicationDTO.setIdentity(config.getOverrideProjectIdentity());
69+
applicationDTO.setPackageName(config.getOverrideProjectPackage());
70+
applicationVersionDTO.setCurrentVersion(config.getOverrideProjectVersion());
71+
72+
// 操作类型
73+
GenerateOperationTypeEnum executeType = isInitCode ? GenerateOperationTypeEnum.INIT_CODE : GenerateOperationTypeEnum.UPDATE_CODE;
74+
75+
// 项目架构
76+
ProjectTemplateType projectType = isColaSingle ? ProjectTemplateType.COLA_SINGLE : ProjectTemplateType.COLA;
77+
78+
// 实时解析DSL
79+
AppDSLBuilder appDSLBuilder = new AppDSLBuilder();
80+
appDSLBuilder.buildAppInfo(applicationDTO);
81+
appDSLBuilder.buildAppVersionInfo(applicationVersionDTO);
82+
String applicationDSL = buildAppDSLJson(appDSLBuilder.getApplicationJson(), config);
83+
84+
CodeGenerateService codeGenerateService = new CodeGenerateService(applicationDSL);
85+
TemplateContext templateContext = new TemplateContext(outputPathText);
86+
templateContext.setIsGenerateProjectFrame(isInitProjectStruct ? Boolean.TRUE : Boolean.FALSE);
87+
templateContext.setProjectTemplateType(projectType);
88+
templateContext.setOperationTypeEnum(executeType);
89+
90+
TemplateVisitor templateVisitor = new TemplateVisitor(templateContext);
91+
try {
92+
codeGenerateService.run(templateVisitor);
93+
Messages.showMessageDialog("代码生成完成!", "执行成功", Messages.getInformationIcon());
94+
} catch (Exception e) {
95+
Messages.showMessageDialog(e.getMessage(), "代码生成服务异常", Messages.getErrorIcon());
96+
} finally {
97+
VirtualFileManager.getInstance().syncRefresh();
98+
}
99+
}
100+
101+
private String buildAppDSLJson(JSONObject applicationJson, CodeGenerateConfiguration config) {
102+
103+
LoginAccountInfoSettings instance = LoginAccountInfoSettings.getInstance();
104+
String mail = instance.getAccount();
105+
String password = instance.catchPassword();
106+
if (StringUtils.isBlank(mail) || StringUtils.isBlank(password)) {
107+
Messages.showMessageDialog(project, "请先登录", "系统警告", Messages.getWarningIcon());
108+
}
109+
new LoginService().login(mail, password);
110+
111+
List<DomainDesignVersionDTO> domainSelectedList = Optional.ofNullable(config.getDomainSelectedList()).orElse(new ArrayList<>());
112+
List<BusinessSceneVersionDTO> sceneSelectedList = Optional.ofNullable(config.getSceneSelectedList()).orElse(new ArrayList<>());
113+
114+
// 实时加载DSL
115+
JSONArray domainDesignArray = JSONUtil.createArray();
116+
for (DomainDesignVersionDTO domainDesignVersionDTO : domainSelectedList) {
117+
DomainDesignVersionDTO designVersionDTO = new QueryDomainVersionService().queryById(domainDesignVersionDTO.getId());
118+
JSONObject domainDesignJson = JSONUtil.parseObj(designVersionDTO.getDomainDesignDsl());
119+
domainDesignJson.putAll(getDomainDesignInfoMap(domainDesignVersionDTO, domainDesignVersionDTO.getDomainDesignDTO()));
120+
domainDesignArray.add(domainDesignJson);
121+
}
122+
123+
JSONArray businessSceneArray = JSONUtil.createArray();
124+
for (BusinessSceneVersionDTO businessSceneVersionDTO : sceneSelectedList) {
125+
BusinessSceneVersionDTO sceneVersionDTO = new QueryBusinessVersionService().queryById(businessSceneVersionDTO.getId());
126+
JSONObject businessSceneJson = JSONUtil.parseObj(sceneVersionDTO.getDsl());
127+
businessSceneJson.putAll(getBusinessSceneInfoMap(businessSceneVersionDTO, businessSceneVersionDTO.getBusinessSceneDTO()));
128+
businessSceneArray.add(businessSceneJson);
129+
}
130+
131+
// 更新为用户勾选的模块
132+
applicationJson.remove("businessDomains");
133+
applicationJson.remove("businessScenarios");
134+
applicationJson.putOnce("businessDomains", domainDesignArray);
135+
applicationJson.putOnce("businessScenarios", businessSceneArray);
136+
137+
return applicationJson.toString();
138+
}
139+
140+
private static Map<String, Object> getDomainDesignInfoMap(DomainDesignVersionDTO domainDesignVersionDO, DomainDesignDTO domainDesignDO) {
141+
Map<String, Object> map = new HashMap<>();
142+
map.put("name", domainDesignDO.getIdentity());
143+
map.put("title", domainDesignDO.getName());
144+
map.put("description", domainDesignDO.getDescription());
145+
map.put("version", domainDesignVersionDO.getCurrentVersion());
146+
return map;
147+
}
148+
149+
private static Map<String, Object> getBusinessSceneInfoMap(BusinessSceneVersionDTO businessSceneVersionDO, BusinessSceneDTO businessSceneDO) {
150+
Map<String, Object> map = new HashMap<>();
151+
map.put("name", businessSceneDO.getIdentity());
152+
map.put("title", businessSceneDO.getName());
153+
map.put("description", businessSceneDO.getDescription());
154+
map.put("version", businessSceneVersionDO.getCurrentVersion());
155+
return map;
156+
}
157+
}

src/main/java/com/wk/paas/service/LoginService.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,18 +12,17 @@
1212

1313
public class LoginService {
1414

15-
public static final String API_LOGIN = PlatformServiceConfig.HOST + "/api/login";
15+
public static final String API_LOGIN = "/web/account/login/login";
1616

1717
public Boolean login(String mailText, String passwordText) {
1818

1919
JSONObject jsonObject = JSONUtil.createObj();
2020
jsonObject.set("accountNo", mailText);
2121
jsonObject.set("password", passwordText);
22-
System.out.println(jsonObject);
2322

2423
Map<String, String> heads = new HashMap<>();
2524
heads.put("Content-Type", "application/json;charset=UTF-8");
26-
HttpRequest httpRequest = HttpRequest.post(API_LOGIN)
25+
HttpRequest httpRequest = HttpRequest.post(PlatformServiceConfig.getUrlPrefix() + API_LOGIN)
2726
.headerMap(heads, false)
2827
.body(String.valueOf(jsonObject))
2928
.timeout(3 * 1000);

0 commit comments

Comments
 (0)