Browse Source

add theme update

main
wangshaoping 1 year ago
parent
commit
7327c725c8
  1. 2
      app.platform/build-common.gradle
  2. 1
      app.platform/src/main/java/app/platform/Application.java
  3. 14
      app.platform/src/main/resources/public/configure.js
  4. 2
      build.gradle
  5. 19
      com.xxl.job.admin/build-common.gradle
  6. 15
      com.xxl.job.admin/build-jetty.gradle
  7. 7
      com.xxl.job.admin/build-tomcat.gradle
  8. 15
      com.xxl.job.admin/build-undertow.gradle
  9. 19
      com.xxl.job.executor/build-common.gradle
  10. 15
      com.xxl.job.executor/build-jetty.gradle
  11. 7
      com.xxl.job.executor/build-tomcat.gradle
  12. 15
      com.xxl.job.executor/build-undertow.gradle
  13. 2
      io.sc.platform.core/src/main/java/io/sc/platform/core/bean/RestControllerReturnValueAdviceBean.java
  14. 2
      io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt
  15. 2
      io.sc.platform.gradle/templates/pgp/setup/gradle.properties
  16. 8
      io.sc.platform.lcdp.frontend/src/i18n/messages.json
  17. 11
      io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json
  18. 8
      io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json
  19. 158
      io.sc.platform.lcdp.frontend/src/views/Theme.vue
  20. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Brand.java
  21. 5
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Configure.java
  22. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Footer.java
  23. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Grid.java
  24. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/I18n.java
  25. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/LoadingBar.java
  26. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Login.java
  27. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Main.java
  28. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Notifier.java
  29. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Scroller.java
  30. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Setting.java
  31. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Sider.java
  32. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/TagViewBar.java
  33. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Theme.java
  34. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Topper.java
  35. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/TopperAction.java
  36. 14
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/controller/ConfigureController.java
  37. 16
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/controller/ConfigureJsController.java
  38. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/converter/ConfigureEntityVoConverter.java
  39. 42
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/initializer/ConfigureInitializer.java
  40. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/converter/SettingStringConverter.java
  41. 2
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/converter/ThemeStringConverter.java
  42. 4
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/entity/ConfigureEntity.java
  43. 5
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/service/ConfigureService.java
  44. 28
      io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/service/impl/ConfigureServiceImpl.java
  45. 2
      io.sc.platform.lcdp/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer
  46. 11
      io.sc.platform.lcdp/src/main/resources/templates/configure.js
  47. 1
      io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/service/impl/FrontEndServiceImpl.java
  48. 2
      settings.gradle

2
app.platform/build-common.gradle

@ -6,7 +6,7 @@
* 2. gradle bootwar -Dtarget=undertow # undertow, target=undertow
* 3. gradle bootwar -Dtarget=jetty # jetty, target=jetty
*/
def target =System.getProperty("target") ?: "tomcat";
def target =System.getProperty("target") ?: "undertow";
System.setProperty('target',target);
// targetRuntime build.gradle

1
app.platform/src/main/java/app/platform/Application.java

@ -10,7 +10,6 @@ import org.springframework.web.WebApplicationInitializer;
* 应用程序入口
*/
@SpringBootApplication(proxyBeanMethods = false)
@MapperScan("com.xxl.job.admin.dao")
public class Application extends PlatformSpringBootServletInitializer implements WebApplicationInitializer {
public static void main(String[] args) throws Exception {
ApplicationLauncher.run(Application.class,args);

14
app.platform/src/main/resources/public/configure.js

@ -1,7 +1,11 @@
window.APP = {}; // 在浏览器 window 对象中新建名为 APP 的变量, 用于存放应用对象的容器
window.APP.configure ={ // 全局配置存储容器
webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]', // 应用上下文路径
// 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量
window.APP = {};
// 全局配置
window.APP.configure ={
// 应用上下文路径
webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]',
// 默认后端 API 请求的服务地址前缀
apiContextPaths: {
DEFAULT: '[(@{/})]'.startsWith('[') ? 'http://localhost:8080/' : '[(@{/})]', // 后端 API 请求的服务地址前缀
DEFAULT: '[(@{/})]'.startsWith('[') ? 'http://localhost:8080/' : '[(@{/})]'
}
}
};

2
build.gradle

@ -302,7 +302,7 @@ subprojects {
publications{
publication(MavenPublication){
from components.java
artifact sourcesJar
//artifact sourcesJar
//artifact javadocJar
versionMapping {
usage('java-api') {

19
com.xxl.job.admin/build-common.gradle

@ -0,0 +1,19 @@
/**
* (target)
* : -D
* :
* 1. gradle bootwar # , target=tomcat
* 2. gradle bootwar -Dtarget=undertow # undertow, target=undertow
* 3. gradle bootwar -Dtarget=jetty # jetty, target=jetty
*/
def target =System.getProperty("target") ?: "undertow";
System.setProperty('target',target);
// targetRuntime build.gradle
apply from: "build-${target}.gradle"
//
publishPublicationPublicationToMavenRepository.enabled=false
// docker
jibBuildTar.enabled =true

15
com.xxl.job.admin/build-jetty.gradle

@ -0,0 +1,15 @@
println "[Jetty] 环境 ......"
configurations {
all*.exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-core"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-websocket"
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-jetty")
providedRuntime(
"org.springframework.boot:spring-boot-starter-jetty",
)
}

7
com.xxl.job.admin/build-tomcat.gradle

@ -0,0 +1,7 @@
println "[Tomcat] 环境 ......"
dependencies {
providedRuntime(
"org.springframework.boot:spring-boot-starter-tomcat",
)
}

15
com.xxl.job.admin/build-undertow.gradle

@ -0,0 +1,15 @@
println "[Undertow] 环境 ......"
configurations {
all*.exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-core"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-websocket"
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-undertow")
providedRuntime(
"org.springframework.boot:spring-boot-starter-undertow",
)
}

19
com.xxl.job.executor/build-common.gradle

@ -0,0 +1,19 @@
/**
* (target)
* : -D
* :
* 1. gradle bootwar # , target=tomcat
* 2. gradle bootwar -Dtarget=undertow # undertow, target=undertow
* 3. gradle bootwar -Dtarget=jetty # jetty, target=jetty
*/
def target =System.getProperty("target") ?: "undertow";
System.setProperty('target',target);
// targetRuntime build.gradle
apply from: "build-${target}.gradle"
//
publishPublicationPublicationToMavenRepository.enabled=false
// docker
jibBuildTar.enabled =true

15
com.xxl.job.executor/build-jetty.gradle

@ -0,0 +1,15 @@
println "[Jetty] 环境 ......"
configurations {
all*.exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-core"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-websocket"
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-jetty")
providedRuntime(
"org.springframework.boot:spring-boot-starter-jetty",
)
}

7
com.xxl.job.executor/build-tomcat.gradle

@ -0,0 +1,7 @@
println "[Tomcat] 环境 ......"
dependencies {
providedRuntime(
"org.springframework.boot:spring-boot-starter-tomcat",
)
}

15
com.xxl.job.executor/build-undertow.gradle

@ -0,0 +1,15 @@
println "[Undertow] 环境 ......"
configurations {
all*.exclude group: "org.springframework.boot", module: "spring-boot-starter-tomcat"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-core"
all*.exclude group: "org.apache.tomcat.embed", module: "tomcat-embed-websocket"
}
dependencies {
implementation("org.springframework.boot:spring-boot-starter-undertow")
providedRuntime(
"org.springframework.boot:spring-boot-starter-undertow",
)
}

2
io.sc.platform.core/src/main/java/io/sc/platform/core/bean/RestControllerReturnValueAdviceBean.java

@ -54,7 +54,7 @@ public class RestControllerReturnValueAdviceBean implements ResponseBodyAdvice<O
if(clazz.isAnnotationPresent(RestController.class)){
return !clazz.isAnnotationPresent(IgnoreResponseBodyAdvice.class) && !method.isAnnotationPresent(IgnoreResponseBodyAdvice.class);
}else if(clazz.isAnnotationPresent(Controller.class)){
return method.isAnnotationPresent(ResponseBody.class);
return method.isAnnotationPresent(ResponseBody.class) && !method.isAnnotationPresent(IgnoreResponseBodyAdvice.class);
}
return false;
}

2
io.sc.platform.gradle/templates/pgp/setup/build.gradle.txt

@ -302,7 +302,7 @@ subprojects {
publications{
publication(MavenPublication){
from components.java
artifact sourcesJar
//artifact sourcesJar
//artifact javadocJar
versionMapping {
usage('java-api') {

2
io.sc.platform.gradle/templates/pgp/setup/gradle.properties

@ -37,7 +37,7 @@ application_version=1.0.0
###########################################################
platform_group=io.sc
platform_version=8.1.13
platform_plugin_version=8.1.11
platform_plugin_version=8.1.13
platform_core_frontend_version=8.1.42
###########################################################

8
io.sc.platform.lcdp.frontend/src/i18n/messages.json

@ -4,6 +4,11 @@
"menu.lcdp.theme": "Theme",
"menu.lcdp.bpm": "Bussiness Process Manager",
"theme.action.setDefaultTheme":"Set As Default",
"theme.action.setDefaultTheme.confirm":"Would you like to set \"{themeName}\" as default theme?",
"theme.action.delete.confirm":"Would you like to delete \"{themeName}\" ?",
"theme.action.save.confirm":"Would you like to save \"{themeName}\" ?",
"theme.dark":"Dark Mode",
"theme.minWidth":"Page min width",
"theme.favicon":"favicon",
@ -106,6 +111,9 @@
"theme.login.encodePassword":"Is encode password",
"theme.login.encodePassword.yes":"Encode password",
"theme.login.encodePassword.no":"Not encode password",
"theme.login.logoutConfirm":"Logout Confirm",
"theme.login.logoutConfirm.yes":"Logout Need Confirm",
"theme.login.logoutConfirm.no":"Logout NOT Need Confirm",
"theme.scroller":"Up To Top",
"theme.scroller.tip":"Please scroll to bottom of page and setting",

11
io.sc.platform.lcdp.frontend/src/i18n/messages_tw_CN.json

@ -4,6 +4,11 @@
"menu.lcdp.theme": "主題",
"menu.lcdp.bpm": "流程管理",
"theme.action.setDefaultTheme":"設置為默認主題",
"theme.action.setDefaultTheme.confirm":"您確定要將 \"{themeName}\" 設置為默認主題嗎?",
"theme.action.delete.confirm":"您確定要刪除 \"{themeName}\" 主題嗎?",
"theme.action.save.confirm":"您確定要保存 \"{themeName}\" 主題嗎?",
"theme.dark":"是否黑暗模式",
"theme.minWidth":"整個頁面最小寬度",
"theme.favicon":"favicon",
@ -106,6 +111,9 @@
"theme.login.encodePassword":"是否加密登錄密碼",
"theme.login.encodePassword.yes":"加密登錄密碼",
"theme.login.encodePassword.no":"不加密登錄密碼",
"theme.login.logoutConfirm":"退出確認",
"theme.login.logoutConfirm.yes":"退出時需要確認",
"theme.login.logoutConfirm.no":"退出時無需確認",
"theme.scroller":"回到頂部",
"theme.scroller.tip":"請滑動到頁面底部進行配置",
@ -136,7 +144,8 @@
"lcdp.bpm.canClaimTask":"領取任務",
"lcdp.frontend.export":"一鍵導出前端包",
"lcdp.frontend.export.webContextPath":"應用上下文路徑",
"lcdp.frontend.export.frontendWebContextPath":"前端應用上下文路徑",
"lcdp.frontend.export.backendApiWebContextPath":"後端應用上下文路徑",
"":"",
"":"",
"":"",

8
io.sc.platform.lcdp.frontend/src/i18n/messages_zh_CN.json

@ -4,6 +4,11 @@
"menu.lcdp.theme": "主题",
"menu.lcdp.bpm": "流程管理",
"theme.action.setDefaultTheme":"设置为默认主题",
"theme.action.setDefaultTheme.confirm":"您确定要将 \"{themeName}\" 设置为默认主题吗?",
"theme.action.delete.confirm":"您确定要删除 \"{themeName}\" 主题吗?",
"theme.action.save.confirm":"您确定要保存 \"{themeName}\" 主题吗?",
"theme.dark":"是否黑暗模式",
"theme.minWidth":"整个页面最小宽度",
"theme.favicon":"favicon",
@ -106,6 +111,9 @@
"theme.login.encodePassword":"是否加密录密码",
"theme.login.encodePassword.yes":"加密登录密码",
"theme.login.encodePassword.no":"不加密登录密码",
"theme.login.logoutConfirm":"退出确认",
"theme.login.logoutConfirm.yes":"退出时需要确认",
"theme.login.logoutConfirm.no":"退出时无需确认",
"theme.scroller":"回到顶部",
"theme.scroller.tip":"请滑动到页面底部进行配置",

158
io.sc.platform.lcdp.frontend/src/views/Theme.vue

@ -1,13 +1,37 @@
<template>
<w-h-screen-div>
<div class="flex justify-end">
<q-select v-model="selectedTheme" label="主题" :options="['top', 'right', 'bottom', 'left']" dense outlined style="width: 100px" />
<div class="px-2"></div>
<div class="q-gutter-md">
<q-btn label="新增" outline />
<q-btn label="删除" outline />
<q-btn label="保存" outline />
</div>
<div class="row justify-end q-gutter-md q-py-md">
<q-select
v-model="selectedTheme"
:label="$t('theme')"
:options="themeOptions"
option-label="name"
option-value="id"
emit-value
map-options
dense
outlined
style="min-width: 200px"
@update:model-value="themeChanged"
>
<template #option="scope">
<q-item v-bind="scope.itemProps">
<q-item-section>
<q-item-label>{{ scope.opt.name }}</q-item-label>
</q-item-section>
<q-item-section v-if="scope.opt.active" avatar>
<q-icon name="bi-check" />
</q-item-section>
<q-item-section v-else avatar>
<w-icon-empty></w-icon-empty>
</q-item-section>
</q-item>
</template>
</q-select>
<q-btn :label="$t('theme.action.setDefaultTheme')" no-caps outline @click="defaultTheme" />
<q-btn :label="$t('add')" no-caps outline @click="prompt = true" />
<q-btn :label="$t('delete')" no-caps outline @click="removeTheme" />
<q-btn :label="$t('save')" no-caps outline @click="saveTheme" />
</div>
<div class="w-full flex flex-row flex-nowrap items-start pl-5">
@ -65,10 +89,25 @@
</q-tab-panels>
</div>
</div>
<q-dialog v-model="prompt" persistent>
<q-card style="min-width: 350px">
<q-card-section class="q-pt-md">
<q-input v-model="configureName" :label="$t('name')" outlined autofocus @keyup.enter="prompt = false" />
</q-card-section>
<q-card-actions align="right" class="text-primary">
<q-btn v-close-popup flat :label="$t('cancel')" />
<q-btn v-close-popup flat :label="$t('confirm')" @click="newTheme" />
</q-card-actions>
</q-card>
</q-dialog>
</w-h-screen-div>
</template>
<script setup lang="ts">
import { ref } from 'vue';
import { ref, toRaw } from 'vue';
import { useI18n } from 'vue-i18n';
import { useQuasar } from 'quasar';
import { Environment, axios, Tools, NotifyManager } from 'platform-core';
import Brand from './theme/Brand.vue';
import LoadingBar from './theme/LoadingBar.vue';
import Topper from './theme/Topper.vue';
@ -81,6 +120,105 @@ import Scroller from './theme/Scroller.vue';
import Notifier from './theme/Notifier.vue';
import Grid from './theme/Grid.vue';
const { t } = useI18n();
const quasar = useQuasar();
const selectedTab = ref('brand');
const selectedTheme = ref('default');
const selectedTheme = ref('');
const themeOptions = ref([]);
const prompt = ref(false);
const configureName = ref('');
let configureMap = new Map<string, object>();
const newTheme = () => {
axios.post(Environment.apiContextPath('/api/lcdp/configure'), { name: configureName.value }).then((response) => {
NotifyManager.info(t('success'));
refresh(() => {
selectedTheme.value = response.data.id;
configureName.value = '';
});
});
};
const themeChanged = (value) => {
const option = configureMap.get(value);
if (option) {
Tools.mergeObject(Environment.getConfigure(), option);
}
};
const defaultTheme = () => {
quasar
.dialog({
title: t('confirm'),
message: t('theme.action.setDefaultTheme.confirm', { themeName: configureMap.get(selectedTheme.value).name }),
cancel: true,
persistent: true,
})
.onOk(() => {
axios.post(Environment.apiContextPath('/api/lcdp/configure/activeConfigure/') + selectedTheme.value).then((response) => {
NotifyManager.info(t('success'));
refresh();
});
});
};
const removeTheme = () => {
quasar
.dialog({
title: t('confirm'),
message: t('theme.action.delete.confirm', { themeName: configureMap.get(selectedTheme.value).name }),
cancel: true,
persistent: true,
})
.onOk(() => {
axios.delete(Environment.apiContextPath('/api/lcdp/configure/') + selectedTheme.value).then((response) => {
NotifyManager.info(t('success'));
refresh();
selectedTheme.value = '';
});
});
};
const saveTheme = () => {
quasar
.dialog({
title: t('confirm'),
message: t('theme.action.save.confirm', { themeName: configureMap.get(selectedTheme.value).name }),
cancel: true,
persistent: true,
})
.onOk(() => {
const data = {};
Tools.mergeObject(data, configureMap.get(selectedTheme.value));
data.theme = Environment.getConfigure().theme;
axios.put(Environment.apiContextPath('/api/lcdp/configure/') + selectedTheme.value, data).then((response) => {
NotifyManager.info(t('success'));
});
});
};
const refresh = (callback?: any) => {
axios.get(Environment.apiContextPath('/api/lcdp/configure')).then((response) => {
const items = response.data.content;
if (items && items.length > 0) {
const options = [];
for (const item of items) {
options.push(item);
configureMap.set(item.id, item);
if (item.active) {
selectedTheme.value = item.id;
}
}
themeOptions.value = options;
if (callback) {
callback();
}
}
});
};
refresh();
</script>

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Brand.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Brand.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
import com.fasterxml.jackson.annotation.JsonProperty;

5
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Configure.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Configure.java

@ -1,7 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
import java.util.HashMap;
import java.util.Map;
package io.sc.platform.lcdp.configure.api;
public class Configure {
private Setting setting =new Setting();

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Footer.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Footer.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Footer {
private boolean show =false; // 是否显示

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Grid.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Grid.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Grid {
private String headBgColor ="#f5f7fa"; // 表头背景颜色

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/I18n.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/I18n.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class I18n {
private String[] availableLocales =new String[]{ "en", "zh_CN", "tw_CN" };// 支持的国际化多语言数组

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/LoadingBar.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/LoadingBar.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class LoadingBar {
private String color ="positive"; // 颜色

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Login.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Login.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Login {
private String bgImage= "login-bg.jpg"; // 背景图片

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Main.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Main.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Main {
private String bgColor = "#FFFFFF"; // 背景颜色

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Notifier.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Notifier.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Notifier {
private String position ="top"; // 位置(可选值:top-left,top-right,bottom-left,bottom-right,top,bottom,left,right,center

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Scroller.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Scroller.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Scroller {
private boolean enable =true; // 是否可用

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Setting.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Setting.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Setting {
private String routerHistoryMode="hash"; // vue-router 历史模式(hash,web)

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Sider.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Sider.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Sider {
private String position ="left"; // 位置(可选值:left;right)

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/TagViewBar.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/TagViewBar.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class TagViewBar {
private int height =50; // 高度(单位:像素)

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Theme.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Theme.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class Theme {
private boolean dark =false; // 是否黑暗模式

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/Topper.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/Topper.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
import java.util.HashMap;
import java.util.Map;

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/vo/TopperAction.java → io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/api/TopperAction.java

@ -1,4 +1,4 @@
package io.sc.platform.lcdp.configure.vo;
package io.sc.platform.lcdp.configure.api;
public class TopperAction {
private boolean enable =true; // 是否可用

14
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/controller/ConfigureController.java

@ -1,15 +1,11 @@
package io.sc.platform.lcdp.configure.controller;
import io.sc.platform.lcdp.configure.vo.Configure;
import io.sc.platform.lcdp.configure.api.Configure;
import io.sc.platform.lcdp.configure.jpa.entity.ConfigureEntity;
import io.sc.platform.lcdp.configure.jpa.repository.ConfigureRepository;
import io.sc.platform.lcdp.configure.service.ConfigureService;
import io.sc.platform.mvc.controller.support.RestCrudController;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/api/lcdp/configure")
@ -19,8 +15,8 @@ public class ConfigureController extends RestCrudController<ConfigureEntity,Stri
return service.getActiveConfigure();
}
@PostMapping("setActiveConfigure")
public Configure setActiveConfigure(){
return service.getActiveConfigure();
@PostMapping("activeConfigure/{id}")
public void setActiveConfigure(@PathVariable(name="id")String id){
service.activeConfigure(id);
}
}

16
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/controller/ConfigureJsController.java

@ -0,0 +1,16 @@
package io.sc.platform.lcdp.configure.controller;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
@Controller
public class ConfigureJsController {
private boolean isExists =new DefaultResourceLoader().getResource("classpath:/public/configure.js").exists();
@RequestMapping("/configure.js")
public String configureJs(){
System.out.println(">>>>>");
return "configure.js";
}
}

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/converter/ConfigureEntityVoConverter.java

@ -1,7 +1,7 @@
package io.sc.platform.lcdp.configure.converter;
import io.sc.platform.lcdp.configure.jpa.entity.ConfigureEntity;
import io.sc.platform.lcdp.configure.vo.Configure;
import io.sc.platform.lcdp.configure.api.Configure;
import io.sc.platform.orm.EntityVoConverter;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

42
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/initializer/ConfigureInitializer.java

@ -0,0 +1,42 @@
package io.sc.platform.lcdp.configure.initializer;
import io.sc.platform.core.initializer.ApplicationInitializer;
import io.sc.platform.core.initializer.ApplicationInitializerExecuteException;
import io.sc.platform.lcdp.configure.api.Setting;
import io.sc.platform.lcdp.configure.api.Theme;
import io.sc.platform.lcdp.configure.jpa.entity.ConfigureEntity;
import io.sc.platform.lcdp.configure.service.ConfigureService;
import org.springframework.context.ApplicationContext;
public class ConfigureInitializer implements ApplicationInitializer {
private Boolean isInitialized =null;
private ConfigureService configureService;
@Override
public void init(ApplicationContext applicationContext) {
this.configureService =applicationContext.getBean(ConfigureService.class);
}
@Override
public synchronized boolean isInitialized() {
if(isInitialized!=null) {
return isInitialized;
}
if(configureService.getRepository().count()<=0){
isInitialized =false;
}else {
isInitialized = true;
}
return isInitialized;
}
@Override
public void execute() throws ApplicationInitializerExecuteException {
ConfigureEntity entity =new ConfigureEntity();
entity.setName("Default");
entity.setActive(true);
entity.setSetting(new Setting());
entity.setTheme(new Theme());
configureService.getRepository().save(entity);
}
}

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/converter/SettingStringConverter.java

@ -3,7 +3,7 @@ package io.sc.platform.lcdp.configure.jpa.converter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.sc.platform.core.util.ObjectMapper4Json;
import io.sc.platform.lcdp.configure.vo.Setting;
import io.sc.platform.lcdp.configure.api.Setting;
import javax.persistence.AttributeConverter;

2
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/converter/ThemeStringConverter.java

@ -3,7 +3,7 @@ package io.sc.platform.lcdp.configure.jpa.converter;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.type.TypeReference;
import io.sc.platform.core.util.ObjectMapper4Json;
import io.sc.platform.lcdp.configure.vo.Theme;
import io.sc.platform.lcdp.configure.api.Theme;
import javax.persistence.AttributeConverter;

4
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/jpa/entity/ConfigureEntity.java

@ -1,7 +1,7 @@
package io.sc.platform.lcdp.configure.jpa.entity;
import io.sc.platform.lcdp.configure.vo.Setting;
import io.sc.platform.lcdp.configure.vo.Theme;
import io.sc.platform.lcdp.configure.api.Setting;
import io.sc.platform.lcdp.configure.api.Theme;
import io.sc.platform.lcdp.configure.jpa.converter.SettingStringConverter;
import io.sc.platform.lcdp.configure.jpa.converter.ThemeStringConverter;
import io.sc.platform.orm.converter.NumericBooleanConverter;

5
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/service/ConfigureService.java

@ -1,12 +1,11 @@
package io.sc.platform.lcdp.configure.service;
import io.sc.platform.lcdp.configure.vo.Configure;
import io.sc.platform.lcdp.configure.api.Configure;
import io.sc.platform.lcdp.configure.jpa.entity.ConfigureEntity;
import io.sc.platform.lcdp.configure.jpa.repository.ConfigureRepository;
import io.sc.platform.orm.service.DaoService;
public interface ConfigureService extends DaoService<ConfigureEntity, String, ConfigureRepository> {
public Configure getActiveConfigure();
public Configure getConfigure(String name);
public void setActiveConfigure(String name);
public void activeConfigure(String id);
}

28
io.sc.platform.lcdp/src/main/java/io/sc/platform/lcdp/configure/service/impl/ConfigureServiceImpl.java

@ -1,10 +1,12 @@
package io.sc.platform.lcdp.configure.service.impl;
import io.sc.platform.lcdp.configure.api.Setting;
import io.sc.platform.lcdp.configure.api.Theme;
import io.sc.platform.lcdp.configure.converter.ConfigureEntityVoConverter;
import io.sc.platform.lcdp.configure.jpa.entity.ConfigureEntity;
import io.sc.platform.lcdp.configure.jpa.repository.ConfigureRepository;
import io.sc.platform.lcdp.configure.service.ConfigureService;
import io.sc.platform.lcdp.configure.vo.Configure;
import io.sc.platform.lcdp.configure.api.Configure;
import io.sc.platform.mvc.service.SystemParameterService;
import io.sc.platform.orm.service.impl.DaoServiceImpl;
import org.springframework.beans.factory.annotation.Autowired;
@ -16,15 +18,15 @@ import javax.transaction.Transactional;
@Service
public class ConfigureServiceImpl extends DaoServiceImpl<ConfigureEntity, String, ConfigureRepository> implements ConfigureService {
private ConfigureEntityVoConverter converter =new ConfigureEntityVoConverter();
@Autowired private JdbcTemplate jdbcTemplate;
@Autowired private SystemParameterService systemParameterService;
@Override
public Configure getActiveConfigure() {
ConfigureEntityVoConverter converter =new ConfigureEntityVoConverter();
ConfigureEntity entity =repository.findActiveConfigure();
if(entity!=null) {
return converter.toVo(repository.findActiveConfigure());
return converter.toVo(entity);
}else{
Configure configure = new Configure();
String homePage =systemParameterService.getParameter("parameter.system.homePage");
@ -35,20 +37,22 @@ public class ConfigureServiceImpl extends DaoServiceImpl<ConfigureEntity, String
}
}
@Override
public Configure getConfigure(String name) {
ConfigureEntityVoConverter converter =new ConfigureEntityVoConverter();
return converter.toVo(repository.findByName(name));
}
@Override
@Transactional
public void setActiveConfigure(String name) {
ConfigureEntity entity =repository.findByName(name);
public void activeConfigure(String id) {
ConfigureEntity entity =this.findById(id);
if(entity!=null){
entity.setActive(true);
}
jdbcTemplate.execute("update LCDP_CONFIGURE set _IS_ACTIVE=0");
jdbcTemplate.execute("update LCDP_CONFIGURE set IS_ACTIVE_=0");
repository.save(entity);
}
@Override
public ConfigureEntity add(ConfigureEntity entity) throws Exception {
if(entity==null){ throw exceptionProvider.getCreateNullObjectException(); }
entity.setTheme(new Theme());
entity.setSetting(new Setting());
return super.add(entity);
}
}

2
io.sc.platform.lcdp/src/main/resources/META-INF/services/io.sc.platform.core.initializer.ApplicationInitializer

@ -1 +1 @@
io.sc.platform.system.initializer.MenuInitializer
io.sc.platform.lcdp.configure.initializer.ConfigureInitializer

11
io.sc.platform.lcdp/src/main/resources/templates/configure.js

@ -0,0 +1,11 @@
// 在浏览器 window 对象中新建名为 APP 的容器变量, 用于存放平台的全局变量
window.APP = {};
// 全局配置
window.APP.configure ={
// 应用上下文路径
webContextPath: '[(@{/})]'.startsWith('[')? '/' : '[(@{/})]',
// 默认后端 API 请求的服务地址前缀
apiContextPaths: {
DEFAULT: '[(@{/})]'.startsWith('[') ? 'http://localhost:8080/' : '[(@{/})]'
}
};

1
io.sc.platform.mvc/src/main/java/io/sc/platform/mvc/service/impl/FrontEndServiceImpl.java

@ -55,6 +55,7 @@ public class FrontEndServiceImpl implements FrontEndService {
Map<String,String> result =new HashMap<>();
for (Map.Entry<String,FrontEndModule> entry : localFrontEndModuleMap.entrySet()) {
if(entry.getValue().getComponents().size()>0) {
result.put(entry.getKey(), getRemoteEntry(entry.getValue(), request));
}
}

2
settings.gradle

@ -1,6 +1,4 @@
include ':app.platform'
//include ':com.xuxueli.xxl-job-admin'
//include ':com.xuxueli.xxl-job-core'
include ':com.xxl.job.admin'
include ':com.xxl.job.core'
include ':com.xxl.job.executor'

Loading…
Cancel
Save