修改模块化加载,可以通过配置文件控制加载哪些模块,同时前端有对应显示
This commit is contained in:
@@ -22,11 +22,16 @@ import java.util.Optional;
|
||||
* 程序启动器
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @author Sh1yu 2023年6月15日
|
||||
* @since 2018-11-27
|
||||
*/
|
||||
@EnableScheduling
|
||||
@SpringBootApplication
|
||||
@ComponentScan(basePackages = {"com.zyplayer.doc"})
|
||||
@ComponentScan(basePackages = {
|
||||
"com.zyplayer.doc.manage",
|
||||
"com.zyplayer.doc.data",
|
||||
"com.zyplayer.doc.core"
|
||||
})
|
||||
public class Application extends SpringBootServletInitializer {
|
||||
|
||||
private static Logger logger = LoggerFactory.getLogger(Application.class);
|
||||
|
||||
@@ -3,6 +3,7 @@ package com.zyplayer.doc.manage.framework.config;
|
||||
import com.alibaba.fastjson.serializer.SerializerFeature;
|
||||
import com.alibaba.fastjson.support.config.FastJsonConfig;
|
||||
import com.alibaba.fastjson.support.spring.FastJsonHttpMessageConverter;
|
||||
import com.zyplayer.doc.manage.framework.interceptor.MoudleMissingInterceptor;
|
||||
import com.zyplayer.doc.manage.framework.interceptor.UserLoginInterceptor;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
@@ -24,6 +25,7 @@ import java.util.List;
|
||||
* WEB控制相关配置
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @author Sh1yu 2023年6月15日
|
||||
* @since 2018年11月27日
|
||||
*/
|
||||
@Component
|
||||
@@ -32,6 +34,8 @@ public class WebMvcConfig implements WebMvcConfigurer {
|
||||
|
||||
@Resource
|
||||
UserLoginInterceptor userLoginInterceptor;
|
||||
@Resource
|
||||
MoudleMissingInterceptor moudleMissingInterceptor;
|
||||
|
||||
@Override
|
||||
public void addFormatters(FormatterRegistry registry) {
|
||||
@@ -65,6 +69,9 @@ public class WebMvcConfig implements WebMvcConfigurer {
|
||||
registry.addInterceptor(userLoginInterceptor)
|
||||
.excludePathPatterns("/", "/doc-wiki", "/doc-db", "/doc-swagger-plus")
|
||||
.excludePathPatterns("/**/*.js", "/**/*.css", "/**/*.png", "/**/*.gif", "/**/*.jpg", "/**/*.jpeg", "/**/fonts/*");
|
||||
registry.addInterceptor(moudleMissingInterceptor)
|
||||
.excludePathPatterns("/", "/doc-wiki", "/doc-db", "/doc-swagger-plus")
|
||||
.excludePathPatterns("/**/*.js", "/**/*.css", "/**/*.png", "/**/*.gif", "/**/*.jpg", "/**/*.jpeg", "/**/fonts/*");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -3,26 +3,81 @@ package com.zyplayer.doc.manage.framework.config;
|
||||
import com.zyplayer.doc.api.framework.config.EnableDocApi;
|
||||
import com.zyplayer.doc.db.framework.configuration.EnableDocDb;
|
||||
import com.zyplayer.doc.wiki.framework.config.EnableDocWiki;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
/**
|
||||
* 按需开启zyplayer-doc所有的服务
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @author Sh1yu 2023年6月15日
|
||||
* @since 2019年3月31日
|
||||
*/
|
||||
@Configuration
|
||||
public class ZyplayerDocConfig {
|
||||
//wiki模块的开启配置
|
||||
@Value("${zyplayer.doc.manage.enable.wiki:true}")
|
||||
private boolean enableWiki;
|
||||
|
||||
@EnableDocWiki
|
||||
public class enableDocWiki {
|
||||
}
|
||||
//db模块的开启配置
|
||||
@Value("${zyplayer.doc.manage.enable.db:true}")
|
||||
private boolean enableDb;
|
||||
|
||||
@EnableDocDb
|
||||
public class enableDocDb {
|
||||
}
|
||||
//api模块的开启配置
|
||||
@Value("${zyplayer.doc.manage.enable.api:true}")
|
||||
private boolean enableApi;
|
||||
|
||||
@EnableDocApi
|
||||
public class enableDocApi {
|
||||
}
|
||||
@EnableDocWiki
|
||||
//wiki模块加载注解条件化,配合配置文件决定是否加载
|
||||
@ConditionalOnProperty(prefix = "zyplayer.doc.manage.enable", name = "wiki", matchIfMissing = true)
|
||||
public class enableDocWiki {
|
||||
}
|
||||
|
||||
@EnableDocDb
|
||||
//db模块加载注解条件化,配合配置文件决定是否加载
|
||||
@ConditionalOnProperty(prefix = "zyplayer.doc.manage.enable", name = "db", matchIfMissing = true)
|
||||
public class enableDocDb {
|
||||
}
|
||||
|
||||
@EnableDocApi
|
||||
//api模块加载注解条件化,配合配置文件决定是否加载
|
||||
@ConditionalOnProperty(prefix = "zyplayer.doc.manage.enable", name = "api", matchIfMissing = true)
|
||||
public class enableDocApi {
|
||||
}
|
||||
|
||||
public boolean isEnableWiki() {
|
||||
return enableWiki;
|
||||
}
|
||||
|
||||
public void setEnableWiki(boolean enableWiki) {
|
||||
this.enableWiki = enableWiki;
|
||||
}
|
||||
|
||||
public boolean isEnableDb() {
|
||||
return enableDb;
|
||||
}
|
||||
|
||||
public void setEnableDb(boolean enableDb) {
|
||||
this.enableDb = enableDb;
|
||||
}
|
||||
|
||||
public boolean isEnableApi() {
|
||||
return enableApi;
|
||||
}
|
||||
|
||||
public void setEnableApi(boolean enableApi) {
|
||||
this.enableApi = enableApi;
|
||||
}
|
||||
|
||||
//提供模块开启状态数组,给前端控制页面展示
|
||||
public HashMap<String,Boolean> getMoudleInfo(){
|
||||
HashMap<String,Boolean> moudleInfo = new HashMap<>();
|
||||
moudleInfo.put("enableWiki",this.enableWiki);
|
||||
moudleInfo.put("enableDb",this.enableDb);
|
||||
moudleInfo.put("enableApi",this.enableApi);
|
||||
return moudleInfo;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
package com.zyplayer.doc.manage.framework.interceptor;
|
||||
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.manage.framework.config.ZyplayerDocConfig;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.web.servlet.HandlerInterceptor;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
|
||||
/**
|
||||
* 模块未开启时判定失败响应拦截器
|
||||
*
|
||||
* @author Sh1yu
|
||||
* @since 2023年6月15日
|
||||
*/
|
||||
@Component
|
||||
public class MoudleMissingInterceptor implements HandlerInterceptor {
|
||||
private static final Logger logger = LoggerFactory.getLogger(MoudleMissingInterceptor.class);
|
||||
|
||||
@Resource
|
||||
ZyplayerDocConfig zyplayerDocConfig;
|
||||
|
||||
@Override
|
||||
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) {
|
||||
String requestURI = request.getRequestURI();
|
||||
String simpleMoudleUri = requestURI.replace("/zyplayer-doc/", "");
|
||||
if (simpleMoudleUri.startsWith("zyplayer-doc-wiki") && !zyplayerDocConfig.isEnableWiki()) {
|
||||
doFailResponse(response, "wiki模块未启动,无法提供相应功能");
|
||||
return false;
|
||||
}
|
||||
if (simpleMoudleUri.startsWith("zyplayer-doc-db") && !zyplayerDocConfig.isEnableDb()) {
|
||||
doFailResponse(response, "db模块未启动,无法提供相应功能");
|
||||
return false;
|
||||
}
|
||||
if (simpleMoudleUri.startsWith("zyplayer-doc-api") && !zyplayerDocConfig.isEnableApi()) {
|
||||
doFailResponse(response, "api模块未启动,无法提供相应功能");
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
public void doFailResponse(HttpServletResponse response, String msg) {
|
||||
DocResponseJson.warn(msg).send(response);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -2,24 +2,37 @@ package com.zyplayer.doc.manage.web;
|
||||
|
||||
import com.zyplayer.doc.core.json.DocResponseJson;
|
||||
import com.zyplayer.doc.core.json.ResponseJson;
|
||||
import com.zyplayer.doc.manage.framework.config.ZyplayerDocConfig;
|
||||
import com.zyplayer.doc.manage.task.UpgradeUtil;
|
||||
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 javax.annotation.Resource;
|
||||
|
||||
/**
|
||||
* 系统信息控制器
|
||||
*
|
||||
* @author 暮光:城中城
|
||||
* @author Sh1yu 2023年6月15日
|
||||
* @since 2019-04-21
|
||||
*/
|
||||
@RestController
|
||||
@RequestMapping("/system/info")
|
||||
public class SystemInfoController {
|
||||
|
||||
@PostMapping("/upgrade")
|
||||
public ResponseJson<Object> upgradeInfo() {
|
||||
return DocResponseJson.ok(UpgradeUtil.upgradeInfo);
|
||||
}
|
||||
@Resource
|
||||
ZyplayerDocConfig zyplayerDocConfig;
|
||||
|
||||
@PostMapping("/upgrade")
|
||||
public ResponseJson<Object> upgradeInfo() {
|
||||
return DocResponseJson.ok(UpgradeUtil.upgradeInfo);
|
||||
}
|
||||
|
||||
@GetMapping("/moudle")
|
||||
public ResponseJson<Object> moudleInfo() {
|
||||
return DocResponseJson.ok(zyplayerDocConfig.getMoudleInfo());
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -10,6 +10,13 @@ zyplayer:
|
||||
doc:
|
||||
# ------zyplayer_doc_manage相关配置------
|
||||
manage:
|
||||
enable:
|
||||
#wiki模块的是否加载,没有此配置也为true,只有填写false才是不加载
|
||||
wiki: true
|
||||
#db模块的是否加载,没有此配置也为true,只有填写false才是不加载
|
||||
db: true
|
||||
#api模块的是否加载,没有此配置也为true,只有填写false才是不加载
|
||||
api: true
|
||||
# 版本和升级信息获取地址
|
||||
upgradePropertiesUrl: https://gitee.com/zyplayer/zyplayer-doc/raw/master/upgrade.properties
|
||||
# 系统根域名,调试UI时需要使用,同时需要在host文件里配置:127.0.0.1 local.zyplayer.com
|
||||
|
||||
@@ -1 +1 @@
|
||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon-console.png><title>文档管理系统</title><link href=css/chunk-vendors.8924efc6.css rel=preload as=style><link href=css/index.d05463e0.css rel=preload as=style><link href=js/chunk-vendors.cdec70f7.js rel=preload as=script><link href=js/index.38f10493.js rel=preload as=script><link href=css/chunk-vendors.8924efc6.css rel=stylesheet><link href=css/index.d05463e0.css rel=stylesheet></head><body><noscript><strong>We're sorry but zyplayer-console-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.cdec70f7.js></script><script src=js/index.38f10493.js></script></body></html>
|
||||
<!DOCTYPE html><html lang=en><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge"><meta name=viewport content="width=device-width,initial-scale=1"><link rel=icon href=favicon-console.png><title>文档管理系统</title><link href=css/chunk-vendors.8924efc6.css rel=preload as=style><link href=css/index.d05463e0.css rel=preload as=style><link href=js/chunk-vendors.cdec70f7.js rel=preload as=script><link href=js/index.8c8d6867.js rel=preload as=script><link href=css/chunk-vendors.8924efc6.css rel=stylesheet><link href=css/index.d05463e0.css rel=stylesheet></head><body><noscript><strong>We're sorry but zyplayer-console-ui doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script src=js/chunk-vendors.cdec70f7.js></script><script src=js/index.8c8d6867.js></script></body></html>
|
||||
File diff suppressed because one or more lines are too long
1
zyplayer-doc-manage/src/main/resources/dist/js/index.8c8d6867.js
vendored
Normal file
1
zyplayer-doc-manage/src/main/resources/dist/js/index.8c8d6867.js
vendored
Normal file
File diff suppressed because one or more lines are too long
@@ -5,4 +5,7 @@ export default {
|
||||
systemUpgradeInfo: data => {
|
||||
return request({url: '/system/info/upgrade', method: 'post', data: Qs.stringify(data)});
|
||||
},
|
||||
fetchMoudleData: data => {
|
||||
return request({url: '/system/info/moudle', method: 'get', data: Qs.stringify(data)});
|
||||
}
|
||||
};
|
||||
|
||||
@@ -7,15 +7,15 @@
|
||||
<span>所有产品</span>
|
||||
</div>
|
||||
<div class="product-list">
|
||||
<div class="item" v-on:click="jumpToDocPage('doc-api')">
|
||||
<div class="item" v-on:click="jumpToDocPage('doc-api')" v-if="this.moudleInfo.enableWiki">
|
||||
<div class="logo-text text1">API</div>
|
||||
<div>API接口文档</div>
|
||||
</div>
|
||||
<div class="item" v-on:click="jumpToDocPage('doc-db')">
|
||||
<div class="item" v-on:click="jumpToDocPage('doc-db')" v-if="this.moudleInfo.enableDb">
|
||||
<div class="logo-text text2">DB</div>
|
||||
<div>数据库文档</div>
|
||||
</div>
|
||||
<div class="item" v-on:click="jumpToDocPage('doc-wiki')">
|
||||
<div class="item" v-on:click="jumpToDocPage('doc-wiki')" v-if="this.moudleInfo.enableApi">
|
||||
<div class="logo-text text3">WIKI</div>
|
||||
<div>WIKI文档</div>
|
||||
</div>
|
||||
@@ -27,14 +27,35 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import systemApi from "../../common/api/system";
|
||||
export default {
|
||||
data() {
|
||||
return {
|
||||
moudleInfo:{
|
||||
enableWiki:true,
|
||||
enableDb:true,
|
||||
enableApi:true,
|
||||
}
|
||||
};
|
||||
},
|
||||
mounted: function () {
|
||||
},
|
||||
created(){
|
||||
this.fetchMoudle()
|
||||
},
|
||||
methods: {
|
||||
fetchMoudle(){
|
||||
systemApi.fetchMoudleData().then(json => {
|
||||
if(!!json.data){
|
||||
this.moudleInfo = json.data;
|
||||
console.log(
|
||||
"wiki模块启动状态" +this.moudleInfo.enableWiki+
|
||||
"db模块启动状态" +this.moudleInfo.enableDb+
|
||||
"api模块启动状态" +this.moudleInfo.enableApi
|
||||
)
|
||||
}
|
||||
})
|
||||
},
|
||||
jumpToDocPage(val) {
|
||||
window.open(val);
|
||||
},
|
||||
|
||||
Reference in New Issue
Block a user