From 1850d6d567f2c53605c8bcaece8e61a061190a44 Mon Sep 17 00:00:00 2001 From: tanghc Date: Wed, 14 Oct 2020 16:29:52 +0800 Subject: [PATCH 01/35] 4.0.3 --- .../param/ApiArgumentResolver.java | 23 ++++++------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/param/ApiArgumentResolver.java b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/param/ApiArgumentResolver.java index bfc4e264..da92232e 100644 --- a/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/param/ApiArgumentResolver.java +++ b/sop-common/sop-service-common/src/main/java/com/gitee/sop/servercommon/param/ApiArgumentResolver.java @@ -7,7 +7,6 @@ import com.gitee.sop.servercommon.annotation.Open; import com.gitee.sop.servercommon.bean.OpenContext; import com.gitee.sop.servercommon.bean.OpenContextImpl; import com.gitee.sop.servercommon.bean.ParamNames; -import com.gitee.sop.servercommon.bean.ServiceConfig; import com.gitee.sop.servercommon.bean.ServiceContext; import com.gitee.sop.servercommon.util.OpenUtil; import lombok.extern.slf4j.Slf4j; @@ -61,8 +60,6 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver { private RequestMappingHandlerAdapter requestMappingHandlerAdapter; - private static final List openApiParams = new ArrayList<>(64); - static { try { pushBuilder = ClassUtils.forName("javax.servlet.http.PushBuilder", @@ -86,8 +83,8 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver { @Override public boolean supportsParameter(MethodParameter methodParameter) { // 是否有注解 - if (hasApiAnnotation(methodParameter)) { - openApiParams.add(methodParameter); + if (!methodParameter.hasMethodAnnotation(Open.class)) { + return false; } Class paramType = methodParameter.getParameterType(); // 排除的 @@ -112,10 +109,6 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver { return !exclude; } - private boolean hasApiAnnotation(MethodParameter methodParameter) { - return methodParameter.hasMethodAnnotation(Open.class); - } - @Override public Object resolveArgument( MethodParameter methodParameter @@ -127,13 +120,11 @@ public class ApiArgumentResolver implements SopHandlerMethodArgumentResolver { (HttpServletRequest) nativeWebRequest.getNativeRequest(), (HttpServletResponse) nativeWebRequest.getNativeResponse() ); - if (openApiParams.contains(methodParameter)) { - Object paramObj = this.getParamObject(methodParameter, nativeWebRequest); - if (paramObj != null) { - // JSR-303验证 - paramValidator.validateBizParam(paramObj); - return paramObj; - } + Object paramObj = this.getParamObject(methodParameter, nativeWebRequest); + if (paramObj != null) { + // JSR-303验证 + paramValidator.validateBizParam(paramObj); + return paramObj; } HandlerMethodArgumentResolver resolver = getOtherArgumentResolver(methodParameter); if (resolver != null) { From 0c4dd04bc7b4f89d43b780043cffa54c9c1740b8 Mon Sep 17 00:00:00 2001 From: tanghc Date: Wed, 14 Oct 2020 21:02:41 +0800 Subject: [PATCH 02/35] 4.0.3 --- doc/docs/files/10089_自定义校验token.md | 5 +- .../sop/adminserver/api/service/RouteApi.java | 21 + .../adminserver/api/service/ServiceApi.java | 1 + .../service/param/RouteStatusUpdateParam.java | 32 ++ .../src/main/resources/public/index.html | 2 +- .../{app.c6dfb7ee.css => app.6095bfbf.css} | 2 +- ...12267b.css => chunk-30c6c34f.3b12267b.css} | 0 ...3e7407.css => chunk-9b31c83a.c4612b4a.css} | 2 +- .../js/{app.2e027154.js => app.f323bdd7.js} | 2 +- .../static/js/chunk-25908fca.02b977ea.js | 1 + .../static/js/chunk-25908fca.66819987.js | 1 - .../static/js/chunk-2d0d32e7.213708f2.js | 1 - .../static/js/chunk-2d0d32e7.e7c489be.js | 1 + .../static/js/chunk-30c6c34f.b288bbf5.js | 1 + .../static/js/chunk-4bdcb5ea.cf292569.js | 1 - .../static/js/chunk-9b31c83a.494fc338.js | 1 + .../static/js/chunk-9b31c83a.52bc6b2c.js | 1 - .../static/js/chunk-9f479afe.2093f9d0.js | 1 + .../static/js/chunk-9f479afe.3e73ea9f.js | 1 - sop-admin/sop-admin-vue/src/styles/index.scss | 3 + sop-admin/sop-admin-vue/src/utils/global.js | 12 + .../sop-admin-vue/src/views/isv/index.vue | 35 +- .../sop-admin-vue/src/views/service/limit.vue | 454 +++++++++--------- .../src/views/service/monitor.vue | 16 +- .../sop-admin-vue/src/views/service/route.vue | 335 +++++++------ .../src/views/service/serviceList.vue | 14 +- .../Example1007_TokenController.java | 6 +- .../gitee/sop/gateway/config/MyConfig.java | 23 + .../java/com/gitee/sop/test/AllInOneTest.java | 2 +- 29 files changed, 536 insertions(+), 441 deletions(-) create mode 100644 sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/param/RouteStatusUpdateParam.java rename sop-admin/sop-admin-server/src/main/resources/public/static/css/{app.c6dfb7ee.css => app.6095bfbf.css} (58%) rename sop-admin/sop-admin-server/src/main/resources/public/static/css/{chunk-9b31c83a.3b12267b.css => chunk-30c6c34f.3b12267b.css} (100%) rename sop-admin/sop-admin-server/src/main/resources/public/static/css/{chunk-4bdcb5ea.b23e7407.css => chunk-9b31c83a.c4612b4a.css} (85%) rename sop-admin/sop-admin-server/src/main/resources/public/static/js/{app.2e027154.js => app.f323bdd7.js} (60%) create mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.02b977ea.js delete mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.66819987.js delete mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-2d0d32e7.213708f2.js create mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-2d0d32e7.e7c489be.js create mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-30c6c34f.b288bbf5.js delete mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-4bdcb5ea.cf292569.js create mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.494fc338.js delete mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.52bc6b2c.js create mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9f479afe.2093f9d0.js delete mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9f479afe.3e73ea9f.js create mode 100644 sop-gateway/src/main/java/com/gitee/sop/gateway/config/MyConfig.java diff --git a/doc/docs/files/10089_自定义校验token.md b/doc/docs/files/10089_自定义校验token.md index 50aba542..c4840eba 100644 --- a/doc/docs/files/10089_自定义校验token.md +++ b/doc/docs/files/10089_自定义校验token.md @@ -15,11 +15,10 @@ boolean needToken() default false; @ApiOperation(value="传递token", notes = "传递token") @Open(value = "story.get.token", needToken = true/* 设置true,网关会校验token是否存在 */) @RequestMapping("token") -public StoryResult token(StoryParam story) { +public StoryResult token(StoryParam story, HttpServletRequest request) { OpenContext openContext = ServiceContext.getCurrentContext().getOpenContext(); - String appAuthToken = openContext.getAppAuthToken(); StoryResult result = new StoryResult(); - result.setName("appAuthToken:" + appAuthToken); + result.setName("appAuthToken:" + openContext.getAppAuthToken()); return result; } ``` diff --git a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/RouteApi.java b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/RouteApi.java index e155f6d0..60e603ed 100644 --- a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/RouteApi.java +++ b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/RouteApi.java @@ -13,6 +13,7 @@ import com.gitee.sop.adminserver.api.service.param.RouteAddParam; import com.gitee.sop.adminserver.api.service.param.RouteDeleteParam; import com.gitee.sop.adminserver.api.service.param.RoutePermissionParam; import com.gitee.sop.adminserver.api.service.param.RouteSearchParam; +import com.gitee.sop.adminserver.api.service.param.RouteStatusUpdateParam; import com.gitee.sop.adminserver.api.service.param.RouteUpdateParam; import com.gitee.sop.adminserver.api.service.result.RouteVO; import com.gitee.sop.adminserver.bean.RouteConfigDto; @@ -123,6 +124,26 @@ public class RouteApi { this.updateRouteConfig(param); } + @Api(name = "route.status.update") + @ApiDocMethod(description = "修改路由状态") + void updateRouteStatus(RouteStatusUpdateParam param) { + String routeId = param.getId(); + ConfigRouteBase configRouteBase = configRouteBaseMapper.getByColumn("route_id", routeId); + boolean doSave = configRouteBase == null; + if (doSave) { + configRouteBase = new ConfigRouteBase(); + configRouteBase.setRouteId(routeId); + } + configRouteBase.setStatus(param.getStatus()); + + int i = doSave ? configRouteBaseMapper.save(configRouteBase) + : configRouteBaseMapper.update(configRouteBase); + + if (i > 0) { + this.sendMsg(configRouteBase); + } + } + @Api(name = "route.del") @ApiDocMethod(description = "删除路由") void delRoute(RouteDeleteParam param) { diff --git a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/ServiceApi.java b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/ServiceApi.java index fd99efe9..b3cd8f4f 100644 --- a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/ServiceApi.java +++ b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/ServiceApi.java @@ -75,6 +75,7 @@ public class ServiceApi { return serviceId.contains(param.getServiceId()); } }) + .sorted() .collect(Collectors.toList()); } diff --git a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/param/RouteStatusUpdateParam.java b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/param/RouteStatusUpdateParam.java new file mode 100644 index 00000000..ffcc3639 --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/service/param/RouteStatusUpdateParam.java @@ -0,0 +1,32 @@ +package com.gitee.sop.adminserver.api.service.param; + +import com.gitee.easyopen.doc.annotation.ApiDocField; +import lombok.Getter; +import lombok.Setter; +import org.hibernate.validator.constraints.Length; + +import javax.validation.constraints.NotBlank; +import javax.validation.constraints.NotNull; + +/** + * @author tanghc + */ +@Getter +@Setter +public class RouteStatusUpdateParam { + + /** + * 路由的Id + */ + @NotBlank(message = "id不能为空") + @ApiDocField(description = "路由id") + private String id; + + /** + * 状态 + */ + @NotNull + @ApiDocField(description = "状态,0:审核,1:启用,2:禁用") + private Byte status; + +} diff --git a/sop-admin/sop-admin-server/src/main/resources/public/index.html b/sop-admin/sop-admin-server/src/main/resources/public/index.html index 56027016..0f0c52e7 100644 --- a/sop-admin/sop-admin-server/src/main/resources/public/index.html +++ b/sop-admin/sop-admin-server/src/main/resources/public/index.html @@ -1 +1 @@ -SOP Admin
\ No newline at end of file +SOP Admin
\ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/css/app.c6dfb7ee.css b/sop-admin/sop-admin-server/src/main/resources/public/static/css/app.6095bfbf.css similarity index 58% rename from sop-admin/sop-admin-server/src/main/resources/public/static/css/app.c6dfb7ee.css rename to sop-admin/sop-admin-server/src/main/resources/public/static/css/app.6095bfbf.css index 980f7dc7..5e1b692d 100644 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/css/app.c6dfb7ee.css +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/css/app.6095bfbf.css @@ -1 +1 @@ -.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400!important}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:210px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:210px!important;background-color:#304156;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:1001;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .el-scrollbar{height:100%}#app .sidebar-container.has-logo .el-scrollbar{height:calc(100% - 50px)}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .el-submenu__title:hover,#app .sidebar-container .submenu-title-noDropdown:hover{background-color:#263445!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:210px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .hideSidebar .sidebar-container{width:54px!important}#app .hideSidebar .main-container{margin-left:54px}#app .hideSidebar .svg-icon{margin-right:0}#app .hideSidebar .submenu-title-noDropdown{padding:0!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0!important}#app .hideSidebar .submenu-title-noDropdown .el-tooltip .svg-icon{margin-left:20px}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding:0!important}#app .hideSidebar .el-submenu>.el-submenu__title .svg-icon{margin-left:20px}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .el-menu--collapse .el-menu .el-submenu{min-width:210px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:210px!important}#app .mobile.hideSidebar .sidebar-container{pointer-events:none;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-210px,0,0);transform:translate3d(-210px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}.el-menu--vertical .el-menu-item:hover,.el-menu--vertical .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#263445!important}.el-menu--vertical>.el-menu--popup{max-height:100vh;overflow-y:auto}.el-menu--vertical>.el-menu--popup::-webkit-scrollbar-track-piece{background:#d3dce6}.el-menu--vertical>.el-menu--popup::-webkit-scrollbar{width:6px}.el-menu--vertical>.el-menu--popup::-webkit-scrollbar-thumb{background:#99a9bf;border-radius:20px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.app-container{padding:20px}.app-breadcrumb.el-breadcrumb[data-v-62cc9144]{display:inline-block;font-size:14px;line-height:50px;margin-left:8px}.app-breadcrumb.el-breadcrumb .no-redirect[data-v-62cc9144]{color:#97a8be;cursor:text}.hamburger[data-v-49e15297]{display:inline-block;vertical-align:middle;width:20px;height:20px}.hamburger.is-active[data-v-49e15297]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.navbar[data-v-1eff5c58]{height:50px;overflow:hidden;position:relative;background:#fff;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08)}.navbar .hamburger-container[data-v-1eff5c58]{line-height:46px;height:100%;float:left;cursor:pointer;-webkit-transition:background .3s;transition:background .3s;-webkit-tap-highlight-color:transparent}.navbar .hamburger-container[data-v-1eff5c58]:hover{background:rgba(0,0,0,.025)}.navbar .breadcrumb-container[data-v-1eff5c58]{float:left}.navbar .right-menu[data-v-1eff5c58]{float:right;height:100%;line-height:50px}.navbar .right-menu[data-v-1eff5c58]:focus{outline:none}.navbar .right-menu .right-menu-item[data-v-1eff5c58]{display:inline-block;padding:0 8px;height:100%;font-size:18px;color:#5a5e66;vertical-align:text-bottom}.navbar .right-menu .right-menu-item.hover-effect[data-v-1eff5c58]{cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .right-menu .right-menu-item.hover-effect[data-v-1eff5c58]:hover{background:rgba(0,0,0,.025)}.navbar .right-menu .avatar-container[data-v-1eff5c58]{margin-right:30px}.navbar .right-menu .avatar-container .avatar-wrapper[data-v-1eff5c58]{margin-top:5px;position:relative}.navbar .right-menu .avatar-container .avatar-wrapper .user-avatar[data-v-1eff5c58]{cursor:pointer;width:40px;height:40px;border-radius:10px}.navbar .right-menu .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-1eff5c58]{cursor:pointer;position:absolute;right:-20px;top:25px;font-size:12px}.sidebarLogoFade-enter-active[data-v-b905289c]{-webkit-transition:opacity 1.5s;transition:opacity 1.5s}.sidebarLogoFade-enter[data-v-b905289c],.sidebarLogoFade-leave-to[data-v-b905289c]{opacity:0}.sidebar-logo-container[data-v-b905289c]{position:relative;width:100%;height:50px;line-height:50px;background:#2b2f3a;padding-left:10px;overflow:hidden}.sidebar-logo-container .sidebar-logo-link[data-v-b905289c]{height:100%;width:100%}.sidebar-logo-container .sidebar-logo-link .sidebar-logo[data-v-b905289c]{width:32px;height:32px;vertical-align:middle;margin-right:12px}.sidebar-logo-container .sidebar-logo-link .sidebar-title[data-v-b905289c]{display:inline-block;margin:0;color:#fff;font-weight:600;line-height:50px;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}.sidebar-logo-container.collapse .sidebar-logo[data-v-b905289c]{margin-right:0}.app-main[data-v-43c24f68]{min-height:calc(100vh - 50px);width:100%;position:relative;overflow:hidden}.fixed-header+.app-main[data-v-43c24f68]{padding-top:50px}[data-v-4f739cf0]:export{menuText:#bfcbd9;menuActiveText:#409eff;subMenuActiveText:#f4f4f5;menuBg:#304156;menuHover:#263445;subMenuBg:#1f2d3d;subMenuHover:#001528;sideBarWidth:210px}.app-wrapper[data-v-4f739cf0]{position:relative;height:100%;width:100%}.app-wrapper[data-v-4f739cf0]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-4f739cf0]{position:fixed;top:0}.drawer-bg[data-v-4f739cf0]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.fixed-header[data-v-4f739cf0]{position:fixed;top:0;right:0;z-index:9;width:calc(100% - 210px);-webkit-transition:width .28s;transition:width .28s}.hideSidebar .fixed-header[data-v-4f739cf0]{width:calc(100% - 54px)}.mobile .fixed-header[data-v-4f739cf0]{width:100%}.svg-icon[data-v-53ff2da0]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} \ No newline at end of file +.fade-enter-active,.fade-leave-active{-webkit-transition:opacity .28s;transition:opacity .28s}.fade-enter,.fade-leave-active{opacity:0}.fade-transform-enter-active,.fade-transform-leave-active{-webkit-transition:all .5s;transition:all .5s}.fade-transform-enter{opacity:0;-webkit-transform:translateX(-30px);transform:translateX(-30px)}.fade-transform-leave-to{opacity:0;-webkit-transform:translateX(30px);transform:translateX(30px)}.breadcrumb-enter-active,.breadcrumb-leave-active{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-enter,.breadcrumb-leave-active{opacity:0;-webkit-transform:translateX(20px);transform:translateX(20px)}.breadcrumb-move{-webkit-transition:all .5s;transition:all .5s}.breadcrumb-leave-active{position:absolute}.el-breadcrumb__inner,.el-breadcrumb__inner a{font-weight:400!important}.el-upload input[type=file]{display:none!important}.el-upload__input{display:none}.el-dialog{-webkit-transform:none;transform:none;left:0;position:relative;margin:0 auto}.upload-container .el-upload{width:100%}.upload-container .el-upload .el-upload-dragger{width:100%;height:200px}.el-dropdown-menu a{display:block}#app .main-container{min-height:100%;-webkit-transition:margin-left .28s;transition:margin-left .28s;margin-left:210px;position:relative}#app .sidebar-container{-webkit-transition:width .28s;transition:width .28s;width:210px!important;background-color:#304156;height:100%;position:fixed;font-size:0;top:0;bottom:0;left:0;z-index:1001;overflow:hidden}#app .sidebar-container .horizontal-collapse-transition{-webkit-transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out;transition:width 0s ease-in-out,padding-left 0s ease-in-out,padding-right 0s ease-in-out}#app .sidebar-container .scrollbar-wrapper{overflow-x:hidden!important}#app .sidebar-container .el-scrollbar__bar.is-vertical{right:0}#app .sidebar-container .el-scrollbar{height:100%}#app .sidebar-container.has-logo .el-scrollbar{height:calc(100% - 50px)}#app .sidebar-container .is-horizontal{display:none}#app .sidebar-container a{display:inline-block;width:100%;overflow:hidden}#app .sidebar-container .svg-icon{margin-right:16px}#app .sidebar-container .el-menu{border:none;height:100%;width:100%!important}#app .sidebar-container .el-submenu__title:hover,#app .sidebar-container .submenu-title-noDropdown:hover{background-color:#263445!important}#app .sidebar-container .is-active>.el-submenu__title{color:#f4f4f5!important}#app .sidebar-container .el-submenu .el-menu-item,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title{min-width:210px!important;background-color:#1f2d3d!important}#app .sidebar-container .el-submenu .el-menu-item:hover,#app .sidebar-container .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#001528!important}#app .hideSidebar .sidebar-container{width:54px!important}#app .hideSidebar .main-container{margin-left:54px}#app .hideSidebar .svg-icon{margin-right:0}#app .hideSidebar .submenu-title-noDropdown{padding:0!important;position:relative}#app .hideSidebar .submenu-title-noDropdown .el-tooltip{padding:0!important}#app .hideSidebar .submenu-title-noDropdown .el-tooltip .svg-icon{margin-left:20px}#app .hideSidebar .el-submenu{overflow:hidden}#app .hideSidebar .el-submenu>.el-submenu__title{padding:0!important}#app .hideSidebar .el-submenu>.el-submenu__title .svg-icon{margin-left:20px}#app .hideSidebar .el-submenu>.el-submenu__title .el-submenu__icon-arrow{display:none}#app .hideSidebar .el-menu--collapse .el-submenu>.el-submenu__title>span{height:0;width:0;overflow:hidden;visibility:hidden;display:inline-block}#app .el-menu--collapse .el-menu .el-submenu{min-width:210px!important}#app .mobile .main-container{margin-left:0}#app .mobile .sidebar-container{-webkit-transition:-webkit-transform .28s;transition:-webkit-transform .28s;transition:transform .28s;transition:transform .28s,-webkit-transform .28s;width:210px!important}#app .mobile.hideSidebar .sidebar-container{pointer-events:none;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transform:translate3d(-210px,0,0);transform:translate3d(-210px,0,0)}#app .withoutAnimation .main-container,#app .withoutAnimation .sidebar-container{-webkit-transition:none;transition:none}.el-menu--vertical>.el-menu .svg-icon{margin-right:16px}.el-menu--vertical .el-menu-item:hover,.el-menu--vertical .nest-menu .el-submenu>.el-submenu__title:hover{background-color:#263445!important}.el-menu--vertical>.el-menu--popup{max-height:100vh;overflow-y:auto}.el-menu--vertical>.el-menu--popup::-webkit-scrollbar-track-piece{background:#d3dce6}.el-menu--vertical>.el-menu--popup::-webkit-scrollbar{width:6px}.el-menu--vertical>.el-menu--popup::-webkit-scrollbar-thumb{background:#99a9bf;border-radius:20px}body{height:100%;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-family:Helvetica Neue,Helvetica,PingFang SC,Hiragino Sans GB,Microsoft YaHei,Arial,sans-serif}label{font-weight:700}html{-webkit-box-sizing:border-box;box-sizing:border-box}#app,html{height:100%}*,:after,:before{-webkit-box-sizing:inherit;box-sizing:inherit}a:active,a:focus{outline:none}a,a:focus,a:hover{cursor:pointer;color:inherit;text-decoration:none}div:focus{outline:none}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.app-container{padding:20px}.cell .el-button{padding:0}span.tip{color:#909399;font-size:12px}.app-breadcrumb.el-breadcrumb[data-v-62cc9144]{display:inline-block;font-size:14px;line-height:50px;margin-left:8px}.app-breadcrumb.el-breadcrumb .no-redirect[data-v-62cc9144]{color:#97a8be;cursor:text}.hamburger[data-v-49e15297]{display:inline-block;vertical-align:middle;width:20px;height:20px}.hamburger.is-active[data-v-49e15297]{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.navbar[data-v-1eff5c58]{height:50px;overflow:hidden;position:relative;background:#fff;-webkit-box-shadow:0 1px 4px rgba(0,21,41,.08);box-shadow:0 1px 4px rgba(0,21,41,.08)}.navbar .hamburger-container[data-v-1eff5c58]{line-height:46px;height:100%;float:left;cursor:pointer;-webkit-transition:background .3s;transition:background .3s;-webkit-tap-highlight-color:transparent}.navbar .hamburger-container[data-v-1eff5c58]:hover{background:rgba(0,0,0,.025)}.navbar .breadcrumb-container[data-v-1eff5c58]{float:left}.navbar .right-menu[data-v-1eff5c58]{float:right;height:100%;line-height:50px}.navbar .right-menu[data-v-1eff5c58]:focus{outline:none}.navbar .right-menu .right-menu-item[data-v-1eff5c58]{display:inline-block;padding:0 8px;height:100%;font-size:18px;color:#5a5e66;vertical-align:text-bottom}.navbar .right-menu .right-menu-item.hover-effect[data-v-1eff5c58]{cursor:pointer;-webkit-transition:background .3s;transition:background .3s}.navbar .right-menu .right-menu-item.hover-effect[data-v-1eff5c58]:hover{background:rgba(0,0,0,.025)}.navbar .right-menu .avatar-container[data-v-1eff5c58]{margin-right:30px}.navbar .right-menu .avatar-container .avatar-wrapper[data-v-1eff5c58]{margin-top:5px;position:relative}.navbar .right-menu .avatar-container .avatar-wrapper .user-avatar[data-v-1eff5c58]{cursor:pointer;width:40px;height:40px;border-radius:10px}.navbar .right-menu .avatar-container .avatar-wrapper .el-icon-caret-bottom[data-v-1eff5c58]{cursor:pointer;position:absolute;right:-20px;top:25px;font-size:12px}.sidebarLogoFade-enter-active[data-v-b905289c]{-webkit-transition:opacity 1.5s;transition:opacity 1.5s}.sidebarLogoFade-enter[data-v-b905289c],.sidebarLogoFade-leave-to[data-v-b905289c]{opacity:0}.sidebar-logo-container[data-v-b905289c]{position:relative;width:100%;height:50px;line-height:50px;background:#2b2f3a;padding-left:10px;overflow:hidden}.sidebar-logo-container .sidebar-logo-link[data-v-b905289c]{height:100%;width:100%}.sidebar-logo-container .sidebar-logo-link .sidebar-logo[data-v-b905289c]{width:32px;height:32px;vertical-align:middle;margin-right:12px}.sidebar-logo-container .sidebar-logo-link .sidebar-title[data-v-b905289c]{display:inline-block;margin:0;color:#fff;font-weight:600;line-height:50px;font-size:14px;font-family:Avenir,Helvetica Neue,Arial,Helvetica,sans-serif;vertical-align:middle}.sidebar-logo-container.collapse .sidebar-logo[data-v-b905289c]{margin-right:0}.app-main[data-v-43c24f68]{min-height:calc(100vh - 50px);width:100%;position:relative;overflow:hidden}.fixed-header+.app-main[data-v-43c24f68]{padding-top:50px}[data-v-4f739cf0]:export{menuText:#bfcbd9;menuActiveText:#409eff;subMenuActiveText:#f4f4f5;menuBg:#304156;menuHover:#263445;subMenuBg:#1f2d3d;subMenuHover:#001528;sideBarWidth:210px}.app-wrapper[data-v-4f739cf0]{position:relative;height:100%;width:100%}.app-wrapper[data-v-4f739cf0]:after{content:"";display:table;clear:both}.app-wrapper.mobile.openSidebar[data-v-4f739cf0]{position:fixed;top:0}.drawer-bg[data-v-4f739cf0]{background:#000;opacity:.3;width:100%;top:0;height:100%;position:absolute;z-index:999}.fixed-header[data-v-4f739cf0]{position:fixed;top:0;right:0;z-index:9;width:calc(100% - 210px);-webkit-transition:width .28s;transition:width .28s}.hideSidebar .fixed-header[data-v-4f739cf0]{width:calc(100% - 54px)}.mobile .fixed-header[data-v-4f739cf0]{width:100%}.svg-icon[data-v-53ff2da0]{width:1em;height:1em;vertical-align:-.15em;fill:currentColor;overflow:hidden} \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-9b31c83a.3b12267b.css b/sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-30c6c34f.3b12267b.css similarity index 100% rename from sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-9b31c83a.3b12267b.css rename to sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-30c6c34f.3b12267b.css diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-4bdcb5ea.b23e7407.css b/sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-9b31c83a.c4612b4a.css similarity index 85% rename from sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-4bdcb5ea.b23e7407.css rename to sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-9b31c83a.c4612b4a.css index 354bd0b0..334e42c1 100644 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-4bdcb5ea.b23e7407.css +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-9b31c83a.c4612b4a.css @@ -1 +1 @@ -.custom-tree-node{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:14px;padding-right:8px}.el-input.is-disabled .el-input__inner,.el-radio__input.is-disabled+span.el-radio__label{color:#909399}.limit-tip[data-v-08125a7c]{cursor:pointer;margin-left:10px} \ No newline at end of file +.custom-tree-node{-webkit-box-flex:1;-ms-flex:1;flex:1;display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;font-size:14px;padding-right:8px}.el-input.is-disabled .el-input__inner,.el-radio__input.is-disabled+span.el-radio__label{color:#909399}.roles-content{cursor:pointer;color:#20a0ff} \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/app.2e027154.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/app.f323bdd7.js similarity index 60% rename from sop-admin/sop-admin-server/src/main/resources/public/static/js/app.2e027154.js rename to sop-admin/sop-admin-server/src/main/resources/public/static/js/app.f323bdd7.js index 6555074b..0ef6965e 100644 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/js/app.2e027154.js +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/app.f323bdd7.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["app"],{0:function(e,t,n){e.exports=n("56d7")},"0a7b":function(e,t,n){},"0cb8":function(e,t,n){},"186a":function(e,t,n){"use strict";var a=n("dc52"),i=n.n(a);i.a},"18f0":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},2536:function(e,t,n){},"2a3d":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},"30c3":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},"34c8":function(e,t,n){"use strict";var a=n("88a1"),i=n.n(a);i.a},"405a":function(e,t,n){"use strict";var a=n("4a83"),i=n.n(a);i.a},"47f1":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},"4a83":function(e,t,n){},"4df5":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});r.a.add(c);t["default"]=c},"50be":function(e,t,n){"use strict";var a=n("2536"),i=n.n(a);i.a},"51ff":function(e,t,n){var a={"./dashboard.svg":"f782","./example.svg":"30c3","./eye-open.svg":"d7ec","./eye.svg":"4df5","./form.svg":"eb1b","./link.svg":"18f0","./nested.svg":"dcf8","./password.svg":"2a3d","./table.svg":"47f1","./tree.svg":"93cd","./user.svg":"b3b5"};function i(e){var t=o(e);return n(t)}function o(e){var t=a[e];if(!(t+1)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return t}i.keys=function(){return Object.keys(a)},i.resolve=o,e.exports=i,i.id="51ff"},"56d7":function(e,t,n){"use strict";n.r(t);n("cadf"),n("551c"),n("f751"),n("097d");var a=n("2b0e"),i=(n("f5df"),n("5c96")),o=n.n(i),r=(n("0fae"),n("f0d9")),c=n.n(r),s=(n("b20f"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("router-view")],1)}),u=[],l={name:"App"},d=l,m=n("2877"),h=Object(m["a"])(d,s,u,!1,null,null,null),f=h.exports,p=n("2f62"),v=(n("7f7f"),{sidebar:function(e){return e.app.sidebar},device:function(e){return e.app.device},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name}}),b=v,g=n("a78e"),w=n.n(g),x={sidebar:{opened:!w.a.get("sidebarStatus")||!!+w.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop"},y={TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?w.a.set("sidebarStatus",1):w.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){w.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t}},k={toggleSideBar:function(e){var t=e.commit;t("TOGGLE_SIDEBAR")},closeSideBar:function(e,t){var n=e.commit,a=t.withoutAnimation;n("CLOSE_SIDEBAR",a)},toggleDevice:function(e,t){var n=e.commit;n("TOGGLE_DEVICE",t)}},_={namespaced:!0,state:x,mutations:y,actions:k},C=n("83d6"),O=n.n(C),S=O.a.showSettings,z=O.a.fixedHeader,B=O.a.sidebarLogo,M={showSettings:S,fixedHeader:z,sidebarLogo:B},H={CHANGE_SETTING:function(e,t){var n=t.key,a=t.value;e.hasOwnProperty(n)&&(e[n]=a)}},T={changeSetting:function(e,t){var n=e.commit;n("CHANGE_SETTING",t)}},E={namespaced:!0,state:M,mutations:H,actions:T},L=n("bc3a"),$=n.n(L),V=n("5f87"),A=$.a.create({baseURL:"/api",withCredentials:!0,timeout:5e3});A.interceptors.request.use(function(e){return bt.getters.token&&(e.headers["X-Token"]=Object(V["a"])()),e},function(e){return console.log(e),Promise.reject(e)}),A.interceptors.response.use(function(e){var t=e.data;return 2e4!==t.code?(Object(i["Message"])({message:t.message||"error",type:"error",duration:5e3}),50008!==t.code&&50012!==t.code&&50014!==t.code||i["MessageBox"].confirm("You have been logged out, you can cancel to stay on this page, or log in again","Confirm logout",{confirmButtonText:"Re-Login",cancelButtonText:"Cancel",type:"warning"}).then(function(){bt.dispatch("user/resetToken").then(function(){location.reload()})}),Promise.reject(t.message||"error")):t},function(e){return console.log("err"+e),Object(i["Message"])({message:e.message,type:"error",duration:5e3}),Promise.reject(e)});var j=A;function I(e){return j({url:"/user/login",method:"post",data:e})}function P(e){return j({url:"/user/info",method:"get",params:{token:e}})}function N(){return j({url:"/user/logout",method:"post"})}var D=n("8c4f"),R=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("div",{class:{"fixed-header":e.fixedHeader}},[n("navbar")],1),e._v(" "),n("app-main")],1)],1)},q=[],G=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"is-active":e.sidebar.opened},on:{toggleClick:e.toggleSideBar}}),e._v(" "),n("breadcrumb",{staticClass:"breadcrumb-container"}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-button",{staticStyle:{"margin-right":"10px"},attrs:{type:"text"},on:{click:e.doLogout}},[e._v("退出")])],1)],1)},F=[],U=n("db72"),K=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-breadcrumb",{staticClass:"app-breadcrumb",attrs:{separator:"/"}},[n("transition-group",{attrs:{name:"breadcrumb"}},e._l(e.levelList,function(t,a){return n("el-breadcrumb-item",{key:t.path},["noRedirect"===t.redirect||a==e.levelList.length-1?n("span",{staticClass:"no-redirect"},[e._v(e._s(t.meta.title))]):n("a",{on:{click:function(n){return n.preventDefault(),e.handleLink(t)}}},[e._v(e._s(t.meta.title))])])}),1)],1)},W=[],J=n("bd11"),X=n.n(J),Y={data:function(){return{levelList:null}},watch:{$route:function(){this.getBreadcrumb()}},created:function(){this.getBreadcrumb()},methods:{getBreadcrumb:function(){var e=this.$route.matched.filter(function(e){return e.meta&&e.meta.title}),t=e[0];this.isDashboard(t)||(e=[{path:"/dashboard",meta:{title:"Dashboard"}}].concat(e)),this.levelList=e.filter(function(e){return e.meta&&e.meta.title&&!1!==e.meta.breadcrumb})},isDashboard:function(e){var t=e&&e.name;return!!t&&t.trim().toLocaleLowerCase()==="Dashboard".toLocaleLowerCase()},pathCompile:function(e){var t=this.$route.params,n=X.a.compile(e);return n(t)},handleLink:function(e){var t=e.redirect,n=e.path;t?this.$router.push(t):this.$router.push(this.pathCompile(n))}}},Q=Y,Z=(n("34c8"),Object(m["a"])(Q,K,W,!1,null,"62cc9144",null)),ee=Z.exports,te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticStyle:{padding:"0 15px"},on:{click:e.toggleClick}},[n("svg",{staticClass:"hamburger",class:{"is-active":e.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[n("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},ne=[],ae={name:"Hamburger",props:{isActive:{type:Boolean,default:!1}},methods:{toggleClick:function(){this.$emit("toggleClick")}}},ie=ae,oe=(n("186a"),Object(m["a"])(ie,te,ne,!1,null,"49e15297",null)),re=oe.exports,ce={components:{Breadcrumb:ee,Hamburger:re},computed:Object(U["a"])({},Object(p["b"])(["sidebar","avatar"])),methods:{toggleSideBar:function(){this.$store.dispatch("app/toggleSideBar")},doLogout:function(){this.logout()}}},se=ce,ue=(n("405a"),Object(m["a"])(se,G,F,!1,null,"1eff5c58",null)),le=ue.exports,de=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:{"has-logo":e.showLogo}},[e.showLogo?n("logo",{attrs:{collapse:e.isCollapse}}):e._e(),e._v(" "),n("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[n("el-menu",{attrs:{"default-active":e.activeMenu,collapse:e.isCollapse,"background-color":e.variables.menuBg,"text-color":e.variables.menuText,"unique-opened":!1,"active-text-color":e.variables.menuActiveText,"collapse-transition":!1,mode:"vertical"}},e._l(e.routes,function(e){return n("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)],1)},me=[],he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"sidebar-logo-container",class:{collapse:e.collapse}},[n("transition",{attrs:{name:"sidebarLogoFade"}},[e.collapse?n("router-link",{key:"collapse",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[e.logo?n("img",{staticClass:"sidebar-logo",attrs:{src:e.logo}}):n("h1",{staticClass:"sidebar-title"},[e._v(e._s(e.title)+" ")])]):n("router-link",{key:"expand",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[e.logo?n("img",{staticClass:"sidebar-logo",attrs:{src:e.logo}}):e._e(),e._v(" "),n("h1",{staticClass:"sidebar-title"},[e._v(e._s(e.title)+" ")])])],1)],1)},fe=[],pe={name:"SidebarLogo",props:{collapse:{type:Boolean,required:!0}},data:function(){return{title:"SOP Admin",logo:"https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png"}}},ve=pe,be=(n("7c27"),Object(m["a"])(ve,he,fe,!1,null,"b905289c",null)),ge=be.exports,we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.item.hidden?e._e():n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path),"popper-append-to-body":""}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{icon:e.item.meta&&e.item.meta.icon,title:e.item.meta.title}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}})})],2):[e.onlyOneChild.meta?n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[n("item",{attrs:{icon:e.onlyOneChild.meta.icon||e.item.meta&&e.item.meta.icon,title:e.onlyOneChild.meta.title}})],1)],1):e._e()]],2)},xe=[],ye=n("df7c"),ke=n.n(ye);function _e(e){return/^(https?:|mailto:|tel:)/.test(e)}var Ce,Oe,Se={name:"MenuItem",functional:!0,props:{icon:{type:String,default:""},title:{type:String,default:""}},render:function(e,t){var n=t.props,a=n.icon,i=n.title,o=[];return a&&o.push(e("svg-icon",{attrs:{"icon-class":a}})),i&&o.push(e("span",{slot:"title"},[i])),o}},ze=Se,Be=Object(m["a"])(ze,Ce,Oe,!1,null,null,null),Me=Be.exports,He=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("component",e._b({},"component",e.linkProps(e.to),!1),[e._t("default")],2)},Te=[],Ee={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return _e(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},Le=Ee,$e=Object(m["a"])(Le,He,Te,!1,null,null,null),Ve=$e.exports,Ae={computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}},je={name:"SidebarItem",components:{Item:Me,AppLink:Ve},mixins:[Ae],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return this.onlyOneChild=null,{}},methods:{hasOneShowingChild:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0,a=t.filter(function(t){return!t.hidden&&(e.onlyOneChild=t,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=Object(U["a"])({},n,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return _e(e)?e:_e(this.basePath)?this.basePath:ke.a.resolve(this.basePath,e)}}},Ie=je,Pe=Object(m["a"])(Ie,we,xe,!1,null,null,null),Ne=Pe.exports,De=n("cf1e"),Re=n.n(De),qe={components:{SidebarItem:Ne,Logo:ge},computed:Object(U["a"])({},Object(p["b"])(["sidebar"]),{routes:function(){return this.$router.options.routes},activeMenu:function(){var e=this.$route,t=e.meta,n=e.path;return t.activeMenu?t.activeMenu:n},showLogo:function(){return this.$store.state.settings.sidebarLogo},variables:function(){return Re.a},isCollapse:function(){return!this.sidebar.opened}})},Ge=qe,Fe=Object(m["a"])(Ge,de,me,!1,null,null,null),Ue=Fe.exports,Ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("section",{staticClass:"app-main"},[n("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[n("router-view",{key:e.key})],1)],1)},We=[],Je={name:"AppMain",computed:{key:function(){return this.$route.fullPath}}},Xe=Je,Ye=(n("50be"),Object(m["a"])(Xe,Ke,We,!1,null,"43c24f68",null)),Qe=Ye.exports,Ze=document,et=Ze.body,tt=992,nt={watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&bt.dispatch("app/closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.$_resizeHandler)},beforeDestroy:function(){window.removeEventListener("resize",this.$_resizeHandler)},mounted:function(){var e=this.$_isMobile();e&&(bt.dispatch("app/toggleDevice","mobile"),bt.dispatch("app/closeSideBar",{withoutAnimation:!0}))},methods:{$_isMobile:function(){var e=et.getBoundingClientRect();return e.width-1'});r.a.add(c);t["default"]=c},"9f2b":function(e,t,n){"use strict";var a=n("bf90"),i=n.n(a);i.a},b20f:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"210px"}},b3b5:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});r.a.add(c);t["default"]=c},bf90:function(e,t,n){},cf1e:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"210px"}},d7ec:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});r.a.add(c);t["default"]=c},dc52:function(e,t,n){},dcf8:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},eb1b:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},f782:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});r.a.add(c);t["default"]=c}},[[0,"runtime","chunk-elementUI","chunk-libs"]]]); \ No newline at end of file +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["app"],{0:function(e,t,n){e.exports=n("56d7")},"0a7b":function(e,t,n){},"0cb8":function(e,t,n){},"186a":function(e,t,n){"use strict";var a=n("dc52"),i=n.n(a);i.a},"18f0":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-link",use:"icon-link-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},2536:function(e,t,n){},"2a3d":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-password",use:"icon-password-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},"30c3":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-example",use:"icon-example-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},"34c8":function(e,t,n){"use strict";var a=n("88a1"),i=n.n(a);i.a},"405a":function(e,t,n){"use strict";var a=n("4a83"),i=n.n(a);i.a},"47f1":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-table",use:"icon-table-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},"4a83":function(e,t,n){},"4df5":function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-eye",use:"icon-eye-usage",viewBox:"0 0 128 64",content:''});r.a.add(c);t["default"]=c},"50be":function(e,t,n){"use strict";var a=n("2536"),i=n.n(a);i.a},"51ff":function(e,t,n){var a={"./dashboard.svg":"f782","./example.svg":"30c3","./eye-open.svg":"d7ec","./eye.svg":"4df5","./form.svg":"eb1b","./link.svg":"18f0","./nested.svg":"dcf8","./password.svg":"2a3d","./table.svg":"47f1","./tree.svg":"93cd","./user.svg":"b3b5"};function i(e){var t=o(e);return n(t)}function o(e){var t=a[e];if(!(t+1)){var n=new Error("Cannot find module '"+e+"'");throw n.code="MODULE_NOT_FOUND",n}return t}i.keys=function(){return Object.keys(a)},i.resolve=o,e.exports=i,i.id="51ff"},"56d7":function(e,t,n){"use strict";n.r(t);n("cadf"),n("551c"),n("f751"),n("097d");var a=n("2b0e"),i=(n("f5df"),n("5c96")),o=n.n(i),r=(n("0fae"),n("f0d9")),c=n.n(r),s=(n("b20f"),function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{attrs:{id:"app"}},[n("router-view")],1)}),u=[],l={name:"App"},d=l,m=n("2877"),h=Object(m["a"])(d,s,u,!1,null,null,null),f=h.exports,p=n("2f62"),v=(n("7f7f"),{sidebar:function(e){return e.app.sidebar},device:function(e){return e.app.device},token:function(e){return e.user.token},avatar:function(e){return e.user.avatar},name:function(e){return e.user.name}}),b=v,g=n("a78e"),w=n.n(g),x={sidebar:{opened:!w.a.get("sidebarStatus")||!!+w.a.get("sidebarStatus"),withoutAnimation:!1},device:"desktop"},y={TOGGLE_SIDEBAR:function(e){e.sidebar.opened=!e.sidebar.opened,e.sidebar.withoutAnimation=!1,e.sidebar.opened?w.a.set("sidebarStatus",1):w.a.set("sidebarStatus",0)},CLOSE_SIDEBAR:function(e,t){w.a.set("sidebarStatus",0),e.sidebar.opened=!1,e.sidebar.withoutAnimation=t},TOGGLE_DEVICE:function(e,t){e.device=t}},k={toggleSideBar:function(e){var t=e.commit;t("TOGGLE_SIDEBAR")},closeSideBar:function(e,t){var n=e.commit,a=t.withoutAnimation;n("CLOSE_SIDEBAR",a)},toggleDevice:function(e,t){var n=e.commit;n("TOGGLE_DEVICE",t)}},C={namespaced:!0,state:x,mutations:y,actions:k},_=n("83d6"),O=n.n(_),S=O.a.showSettings,z=O.a.fixedHeader,B=O.a.sidebarLogo,M={showSettings:S,fixedHeader:z,sidebarLogo:B},H={CHANGE_SETTING:function(e,t){var n=t.key,a=t.value;e.hasOwnProperty(n)&&(e[n]=a)}},T={changeSetting:function(e,t){var n=e.commit;n("CHANGE_SETTING",t)}},E={namespaced:!0,state:M,mutations:H,actions:T},L=n("bc3a"),$=n.n(L),A=n("5f87"),V=$.a.create({baseURL:"/api",withCredentials:!0,timeout:5e3});V.interceptors.request.use(function(e){return bt.getters.token&&(e.headers["X-Token"]=Object(A["a"])()),e},function(e){return console.log(e),Promise.reject(e)}),V.interceptors.response.use(function(e){var t=e.data;return 2e4!==t.code?(Object(i["Message"])({message:t.message||"error",type:"error",duration:5e3}),50008!==t.code&&50012!==t.code&&50014!==t.code||i["MessageBox"].confirm("You have been logged out, you can cancel to stay on this page, or log in again","Confirm logout",{confirmButtonText:"Re-Login",cancelButtonText:"Cancel",type:"warning"}).then(function(){bt.dispatch("user/resetToken").then(function(){location.reload()})}),Promise.reject(t.message||"error")):t},function(e){return console.log("err"+e),Object(i["Message"])({message:e.message,type:"error",duration:5e3}),Promise.reject(e)});var j=V;function I(e){return j({url:"/user/login",method:"post",data:e})}function P(e){return j({url:"/user/info",method:"get",params:{token:e}})}function N(){return j({url:"/user/logout",method:"post"})}var D=n("8c4f"),R=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"app-wrapper",class:e.classObj},["mobile"===e.device&&e.sidebar.opened?n("div",{staticClass:"drawer-bg",on:{click:e.handleClickOutside}}):e._e(),e._v(" "),n("sidebar",{staticClass:"sidebar-container"}),e._v(" "),n("div",{staticClass:"main-container"},[n("div",{class:{"fixed-header":e.fixedHeader}},[n("navbar")],1),e._v(" "),n("app-main")],1)],1)},q=[],G=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"navbar"},[n("hamburger",{staticClass:"hamburger-container",attrs:{"is-active":e.sidebar.opened},on:{toggleClick:e.toggleSideBar}}),e._v(" "),n("breadcrumb",{staticClass:"breadcrumb-container"}),e._v(" "),n("div",{staticClass:"right-menu"},[n("el-button",{staticStyle:{"margin-right":"10px"},attrs:{type:"text"},on:{click:e.doLogout}},[e._v("退出")])],1)],1)},F=[],U=n("db72"),K=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("el-breadcrumb",{staticClass:"app-breadcrumb",attrs:{separator:"/"}},[n("transition-group",{attrs:{name:"breadcrumb"}},e._l(e.levelList,function(t,a){return n("el-breadcrumb-item",{key:t.path},["noRedirect"===t.redirect||a==e.levelList.length-1?n("span",{staticClass:"no-redirect"},[e._v(e._s(t.meta.title))]):n("a",{on:{click:function(n){return n.preventDefault(),e.handleLink(t)}}},[e._v(e._s(t.meta.title))])])}),1)],1)},W=[],J=n("bd11"),X=n.n(J),Y={data:function(){return{levelList:null}},watch:{$route:function(){this.getBreadcrumb()}},created:function(){this.getBreadcrumb()},methods:{getBreadcrumb:function(){var e=this.$route.matched.filter(function(e){return e.meta&&e.meta.title}),t=e[0];this.isDashboard(t)||(e=[{path:"/dashboard",meta:{title:"Dashboard"}}].concat(e)),this.levelList=e.filter(function(e){return e.meta&&e.meta.title&&!1!==e.meta.breadcrumb})},isDashboard:function(e){var t=e&&e.name;return!!t&&t.trim().toLocaleLowerCase()==="Dashboard".toLocaleLowerCase()},pathCompile:function(e){var t=this.$route.params,n=X.a.compile(e);return n(t)},handleLink:function(e){var t=e.redirect,n=e.path;t?this.$router.push(t):this.$router.push(this.pathCompile(n))}}},Q=Y,Z=(n("34c8"),Object(m["a"])(Q,K,W,!1,null,"62cc9144",null)),ee=Z.exports,te=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticStyle:{padding:"0 15px"},on:{click:e.toggleClick}},[n("svg",{staticClass:"hamburger",class:{"is-active":e.isActive},attrs:{viewBox:"0 0 1024 1024",xmlns:"http://www.w3.org/2000/svg",width:"64",height:"64"}},[n("path",{attrs:{d:"M408 442h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8zm-8 204c0 4.4 3.6 8 8 8h480c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8H408c-4.4 0-8 3.6-8 8v56zm504-486H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zm0 632H120c-4.4 0-8 3.6-8 8v56c0 4.4 3.6 8 8 8h784c4.4 0 8-3.6 8-8v-56c0-4.4-3.6-8-8-8zM142.4 642.1L298.7 519a8.84 8.84 0 0 0 0-13.9L142.4 381.9c-5.8-4.6-14.4-.5-14.4 6.9v246.3a8.9 8.9 0 0 0 14.4 7z"}})])])},ne=[],ae={name:"Hamburger",props:{isActive:{type:Boolean,default:!1}},methods:{toggleClick:function(){this.$emit("toggleClick")}}},ie=ae,oe=(n("186a"),Object(m["a"])(ie,te,ne,!1,null,"49e15297",null)),re=oe.exports,ce={components:{Breadcrumb:ee,Hamburger:re},computed:Object(U["a"])({},Object(p["b"])(["sidebar","avatar"])),methods:{toggleSideBar:function(){this.$store.dispatch("app/toggleSideBar")},doLogout:function(){this.logout()}}},se=ce,ue=(n("405a"),Object(m["a"])(se,G,F,!1,null,"1eff5c58",null)),le=ue.exports,de=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{class:{"has-logo":e.showLogo}},[e.showLogo?n("logo",{attrs:{collapse:e.isCollapse}}):e._e(),e._v(" "),n("el-scrollbar",{attrs:{"wrap-class":"scrollbar-wrapper"}},[n("el-menu",{attrs:{"default-active":e.activeMenu,collapse:e.isCollapse,"background-color":e.variables.menuBg,"text-color":e.variables.menuText,"unique-opened":!1,"active-text-color":e.variables.menuActiveText,"collapse-transition":!1,mode:"vertical"}},e._l(e.routes,function(e){return n("sidebar-item",{key:e.path,attrs:{item:e,"base-path":e.path}})}),1)],1)],1)},me=[],he=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("div",{staticClass:"sidebar-logo-container",class:{collapse:e.collapse}},[n("transition",{attrs:{name:"sidebarLogoFade"}},[e.collapse?n("router-link",{key:"collapse",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[e.logo?n("img",{staticClass:"sidebar-logo",attrs:{src:e.logo}}):n("h1",{staticClass:"sidebar-title"},[e._v(e._s(e.title)+" ")])]):n("router-link",{key:"expand",staticClass:"sidebar-logo-link",attrs:{to:"/"}},[e.logo?n("img",{staticClass:"sidebar-logo",attrs:{src:e.logo}}):e._e(),e._v(" "),n("h1",{staticClass:"sidebar-title"},[e._v(e._s(e.title)+" ")])])],1)],1)},fe=[],pe={name:"SidebarLogo",props:{collapse:{type:Boolean,required:!0}},data:function(){return{title:"SOP Admin",logo:"https://wpimg.wallstcn.com/69a1c46c-eb1c-4b46-8bd4-e9e686ef5251.png"}}},ve=pe,be=(n("7c27"),Object(m["a"])(ve,he,fe,!1,null,"b905289c",null)),ge=be.exports,we=function(){var e=this,t=e.$createElement,n=e._self._c||t;return e.item.hidden?e._e():n("div",{staticClass:"menu-wrapper"},[!e.hasOneShowingChild(e.item.children,e.item)||e.onlyOneChild.children&&!e.onlyOneChild.noShowingChildren||e.item.alwaysShow?n("el-submenu",{ref:"subMenu",attrs:{index:e.resolvePath(e.item.path),"popper-append-to-body":""}},[n("template",{slot:"title"},[e.item.meta?n("item",{attrs:{icon:e.item.meta&&e.item.meta.icon,title:e.item.meta.title}}):e._e()],1),e._v(" "),e._l(e.item.children,function(t){return n("sidebar-item",{key:t.path,staticClass:"nest-menu",attrs:{"is-nest":!0,item:t,"base-path":e.resolvePath(t.path)}})})],2):[e.onlyOneChild.meta?n("app-link",{attrs:{to:e.resolvePath(e.onlyOneChild.path)}},[n("el-menu-item",{class:{"submenu-title-noDropdown":!e.isNest},attrs:{index:e.resolvePath(e.onlyOneChild.path)}},[n("item",{attrs:{icon:e.onlyOneChild.meta.icon||e.item.meta&&e.item.meta.icon,title:e.onlyOneChild.meta.title}})],1)],1):e._e()]],2)},xe=[],ye=n("df7c"),ke=n.n(ye);function Ce(e){return/^(https?:|mailto:|tel:)/.test(e)}var _e,Oe,Se={name:"MenuItem",functional:!0,props:{icon:{type:String,default:""},title:{type:String,default:""}},render:function(e,t){var n=t.props,a=n.icon,i=n.title,o=[];return a&&o.push(e("svg-icon",{attrs:{"icon-class":a}})),i&&o.push(e("span",{slot:"title"},[i])),o}},ze=Se,Be=Object(m["a"])(ze,_e,Oe,!1,null,null,null),Me=Be.exports,He=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("component",e._b({},"component",e.linkProps(e.to),!1),[e._t("default")],2)},Te=[],Ee={props:{to:{type:String,required:!0}},methods:{linkProps:function(e){return Ce(e)?{is:"a",href:e,target:"_blank",rel:"noopener"}:{is:"router-link",to:e}}}},Le=Ee,$e=Object(m["a"])(Le,He,Te,!1,null,null,null),Ae=$e.exports,Ve={computed:{device:function(){return this.$store.state.app.device}},mounted:function(){this.fixBugIniOS()},methods:{fixBugIniOS:function(){var e=this,t=this.$refs.subMenu;if(t){var n=t.handleMouseleave;t.handleMouseleave=function(t){"mobile"!==e.device&&n(t)}}}}},je={name:"SidebarItem",components:{Item:Me,AppLink:Ae},mixins:[Ve],props:{item:{type:Object,required:!0},isNest:{type:Boolean,default:!1},basePath:{type:String,default:""}},data:function(){return this.onlyOneChild=null,{}},methods:{hasOneShowingChild:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],n=arguments.length>1?arguments[1]:void 0,a=t.filter(function(t){return!t.hidden&&(e.onlyOneChild=t,!0)});return 1===a.length||0===a.length&&(this.onlyOneChild=Object(U["a"])({},n,{path:"",noShowingChildren:!0}),!0)},resolvePath:function(e){return Ce(e)?e:Ce(this.basePath)?this.basePath:ke.a.resolve(this.basePath,e)}}},Ie=je,Pe=Object(m["a"])(Ie,we,xe,!1,null,null,null),Ne=Pe.exports,De=n("cf1e"),Re=n.n(De),qe={components:{SidebarItem:Ne,Logo:ge},computed:Object(U["a"])({},Object(p["b"])(["sidebar"]),{routes:function(){return this.$router.options.routes},activeMenu:function(){var e=this.$route,t=e.meta,n=e.path;return t.activeMenu?t.activeMenu:n},showLogo:function(){return this.$store.state.settings.sidebarLogo},variables:function(){return Re.a},isCollapse:function(){return!this.sidebar.opened}})},Ge=qe,Fe=Object(m["a"])(Ge,de,me,!1,null,null,null),Ue=Fe.exports,Ke=function(){var e=this,t=e.$createElement,n=e._self._c||t;return n("section",{staticClass:"app-main"},[n("transition",{attrs:{name:"fade-transform",mode:"out-in"}},[n("router-view",{key:e.key})],1)],1)},We=[],Je={name:"AppMain",computed:{key:function(){return this.$route.fullPath}}},Xe=Je,Ye=(n("50be"),Object(m["a"])(Xe,Ke,We,!1,null,"43c24f68",null)),Qe=Ye.exports,Ze=document,et=Ze.body,tt=992,nt={watch:{$route:function(e){"mobile"===this.device&&this.sidebar.opened&&bt.dispatch("app/closeSideBar",{withoutAnimation:!1})}},beforeMount:function(){window.addEventListener("resize",this.$_resizeHandler)},beforeDestroy:function(){window.removeEventListener("resize",this.$_resizeHandler)},mounted:function(){var e=this.$_isMobile();e&&(bt.dispatch("app/toggleDevice","mobile"),bt.dispatch("app/closeSideBar",{withoutAnimation:!0}))},methods:{$_isMobile:function(){var e=et.getBoundingClientRect();return e.width-1'});r.a.add(c);t["default"]=c},"9f2b":function(e,t,n){"use strict";var a=n("bf90"),i=n.n(a);i.a},b20f:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"210px"}},b3b5:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-user",use:"icon-user-usage",viewBox:"0 0 130 130",content:''});r.a.add(c);t["default"]=c},bf90:function(e,t,n){},cf1e:function(e,t,n){e.exports={menuText:"#bfcbd9",menuActiveText:"#409EFF",subMenuActiveText:"#f4f4f5",menuBg:"#304156",menuHover:"#263445",subMenuBg:"#1f2d3d",subMenuHover:"#001528",sideBarWidth:"210px"}},d7ec:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-eye-open",use:"icon-eye-open-usage",viewBox:"0 0 1024 1024",content:''});r.a.add(c);t["default"]=c},dc52:function(e,t,n){},dcf8:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-nested",use:"icon-nested-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},eb1b:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-form",use:"icon-form-usage",viewBox:"0 0 128 128",content:''});r.a.add(c);t["default"]=c},f782:function(e,t,n){"use strict";n.r(t);var a=n("e017"),i=n.n(a),o=n("21a1"),r=n.n(o),c=new i.a({id:"icon-dashboard",use:"icon-dashboard-usage",viewBox:"0 0 128 100",content:''});r.a.add(c);t["default"]=c}},[[0,"runtime","chunk-elementUI","chunk-libs"]]]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.02b977ea.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.02b977ea.js new file mode 100644 index 00000000..5c4d89c0 --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.02b977ea.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-25908fca"],{"021d":function(e,t,a){},"0bac":function(e,t,a){"use strict";var s=a("021d"),i=a.n(s);i.a},cb56:function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-form",{staticClass:"demo-form-inline",attrs:{inline:!0,model:e.searchFormData,size:"mini"}},[a("el-form-item",{attrs:{label:"appId"}},[a("el-input",{staticStyle:{width:"250px"},attrs:{clearable:!0,placeholder:"appId"},model:{value:e.searchFormData.appKey,callback:function(t){e.$set(e.searchFormData,"appKey",t)},expression:"searchFormData.appKey"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary",icon:"el-icon-search"},on:{click:e.onSearchTable}},[e._v("查询")])],1)],1),e._v(" "),a("el-button",{staticStyle:{"margin-bottom":"10px"},attrs:{type:"primary",size:"mini",icon:"el-icon-plus"},on:{click:e.onAdd}},[e._v("新增ISV")]),e._v(" "),a("el-table",{attrs:{data:e.pageInfo.list,border:"",fit:"","highlight-current-row":""}},[a("el-table-column",{attrs:{prop:"appKey",label:"AppId",width:"250"}}),e._v(" "),a("el-table-column",{attrs:{prop:"",label:"秘钥",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onShowKeys(t.row)}}},[e._v("查看")])]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"roleList",label:"角色",width:"150","show-overflow-tooltip":!0},scopedSlots:e._u([{key:"default",fn:function(t){return[a("span",{domProps:{innerHTML:e._s(e.roleRender(t.row))}})]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"status",label:"状态",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.status?a("span",{staticStyle:{color:"#67C23A"}},[e._v("已启用")]):e._e(),e._v(" "),2===t.row.status?a("span",{staticStyle:{color:"#F56C6C"}},[e._v("已禁用")]):e._e()]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"gmtCreate",label:"添加时间",width:"160"}}),e._v(" "),a("el-table-column",{attrs:{prop:"remark",label:"备注",width:"200","show-overflow-tooltip":!0}}),e._v(" "),a("el-table-column",{attrs:{label:"操作",width:"200"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onTableUpdate(t.row)}}},[e._v("修改")]),e._v(" "),a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onKeysUpdate(t.row)}}},[e._v("秘钥管理")]),e._v(" "),a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onExportKeys(t.row)}}},[e._v("导出秘钥")])]}}])})],1),e._v(" "),a("el-pagination",{staticStyle:{"margin-top":"5px"},attrs:{background:"","current-page":e.searchFormData.pageIndex,"page-size":e.searchFormData.pageSize,"page-sizes":[5,10,20,40],total:e.pageInfo.total,layout:"total, sizes, prev, pager, next"},on:{"size-change":e.onSizeChange,"current-change":e.onPageIndexChange}}),e._v(" "),a("el-dialog",{attrs:{title:e.isvDialogTitle,visible:e.isvDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.isvDialogVisible=t},close:e.onIsvDialogClose}},[a("el-form",{ref:"isvForm",attrs:{rules:e.rulesIsvForm,model:e.isvDialogFormData,"label-width":"120px",size:"mini"}},[a("el-form-item",{attrs:{label:"appId"}},[0===e.isvDialogFormData.id?a("span",{staticStyle:{color:"gray"}},[e._v("(系统自动生成)")]):a("span",[e._v(e._s(e.isvDialogFormData.appKey))])]),e._v(" "),a("el-form-item",{attrs:{label:"角色"}},[a("el-checkbox-group",{model:{value:e.isvDialogFormData.roleCode,callback:function(t){e.$set(e.isvDialogFormData,"roleCode",t)},expression:"isvDialogFormData.roleCode"}},e._l(e.roles,function(t){return a("el-checkbox",{key:t.roleCode,attrs:{label:t.roleCode}},[e._v(e._s(t.description))])}),1)],1),e._v(" "),a("el-form-item",{attrs:{label:"备注",prop:"remark"}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.isvDialogFormData.remark,callback:function(t){e.$set(e.isvDialogFormData,"remark",t)},expression:"isvDialogFormData.remark"}})],1),e._v(" "),a("el-form-item",{attrs:{label:"状态"}},[a("el-radio-group",{model:{value:e.isvDialogFormData.status,callback:function(t){e.$set(e.isvDialogFormData,"status",t)},expression:"isvDialogFormData.status"}},[a("el-radio",{attrs:{label:1,name:"status"}},[e._v("启用")]),e._v(" "),a("el-radio",{attrs:{label:2,name:"status"}},[e._v("禁用")])],1)],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.isvDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary",disabled:e.isSaveButtonDisabled},on:{click:e.onIsvDialogSave}},[e._v("保 存")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"秘钥信息",visible:e.isvKeysDialogVisible},on:{"update:visible":function(t){e.isvKeysDialogVisible=t},close:function(t){return e.resetForm("isvKeysFrom")}}},[a("el-form",{ref:"isvKeysFrom",staticClass:"key-view",attrs:{model:e.isvKeysFormData,"label-width":"160px",size:"mini"}},[a("el-form-item",{attrs:{label:""}},[a("el-alert",{attrs:{title:"带 ★ 的分配给开发者",type:"warning",closable:!1}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("appId")}},[a("span",[e._v(e._s(e.isvKeysFormData.appKey))])]),e._v(" "),a("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}],attrs:{label:"秘钥格式"}},[1===e.isvKeysFormData.keyFormat?a("span",[e._v("PKCS8(JAVA适用)")]):e._e(),e._v(" "),2===e.isvKeysFormData.keyFormat?a("span",[e._v("PKCS1(非JAVA适用)")]):e._e()]),e._v(" "),a("el-form-item",{directives:[{name:"show",rawName:"v-show",value:2===e.isvKeysFormData.signType,expression:"isvKeysFormData.signType === 2"}],attrs:{label:e.selfLabel("secret")}},[a("span",[e._v(e._s(e.isvKeysFormData.secret))])]),e._v(" "),a("el-tabs",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}],staticClass:"keyTabs",attrs:{type:"card"},model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[a("el-tab-pane",{attrs:{label:"ISV公私钥",name:"first"}},[a("el-form-item",{attrs:{label:"ISV公钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.publicKeyIsv,callback:function(t){e.$set(e.isvKeysFormData,"publicKeyIsv",t)},expression:"isvKeysFormData.publicKeyIsv"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("ISV私钥")}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.privateKeyIsv,callback:function(t){e.$set(e.isvKeysFormData,"privateKeyIsv",t)},expression:"isvKeysFormData.privateKeyIsv"}})],1)],1),e._v(" "),a("el-tab-pane",{attrs:{label:"平台公私钥[可选]",name:"second"}},[a("el-form-item",{attrs:{label:"平台公钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.publicKeyPlatform,callback:function(t){e.$set(e.isvKeysFormData,"publicKeyPlatform",t)},expression:"isvKeysFormData.publicKeyPlatform"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"privateKeyPlatform",label:"平台私钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.privateKeyPlatform,callback:function(t){e.$set(e.isvKeysFormData,"privateKeyPlatform",t)},expression:"isvKeysFormData.privateKeyPlatform"}})],1)],1)],1)],1),e._v(" "),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.isvKeysDialogVisible=!1}}},[e._v("关 闭")])],1)],1)],1)},i=[],o={data:function(){return{searchFormData:{appKey:"",pageIndex:1,pageSize:10},pageInfo:{list:[],total:0},roles:[],isvDialogVisible:!1,isvDialogTitle:"新增ISV",isvDialogFormData:{id:0,status:1,remark:"",roleCode:[]},rulesIsvForm:{remark:[{min:0,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}]},activeName:"first",isSaveButtonDisabled:!1,isvKeysDialogVisible:!1,isvKeysFormData:{appKey:"",secret:"",publicKeyIsv:"",privateKeyIsv:"",publicKeyPlatform:"",privateKeyPlatform:"",signType:""}}},created:function(){this.loadTable(),this.loadRouteRole()},methods:{loadTable:function(){this.post("isv.info.page",this.searchFormData,function(e){this.pageInfo=e.data})},loadRouteRole:function(){0===this.roles.length&&this.post("role.listall",{},function(e){this.roles=e.data})},onShowKeys:function(e){this.post("isv.keys.get",{appKey:e.appKey},function(e){var t=this;this.isvKeysDialogVisible=!0,this.$nextTick(function(){Object.assign(t.isvKeysFormData,e.data)})})},onSearchTable:function(){this.loadTable()},onTableUpdate:function(e){var t=this;this.isvDialogTitle="修改ISV",this.isvDialogVisible=!0,this.$nextTick(function(){t.post("isv.info.get",{id:e.id},function(e){for(var t=e.data,a=t.roleList,s=[],i=0;i0?l("el-link",{staticStyle:{"text-decoration":"underline"},attrs:{underline:!1,type:"danger"},on:{click:function(l){return t.onShowErrorDetail(e.row)}}},[t._v("\n "+t._s(e.row.errorCount)+"\n ")]):t._e(),t._v(" "),0===e.row.errorCount?l("span",[t._v("0")]):t._e()]}}])},[l("template",{slot:"header"},[t._v("\n 失败次数\n "),l("i",{staticClass:"el-icon-question",staticStyle:{cursor:"pointer"},on:{click:function(e){return t.$alert("只统计微服务返回的未知错误,JSR-303验证错误算作成功")}}})])],2)],1),t._v(" "),l("el-dialog",{attrs:{title:"错误详情",visible:t.logDetailVisible,width:"60%"},on:{"update:visible":function(e){t.logDetailVisible=e}}},[l("div",{staticStyle:{"overflow-x":"auto"},domProps:{innerHTML:t._s(t.errorMsgDetail)}}),t._v(" "),l("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[l("el-button",{attrs:{type:"primary"},on:{click:function(e){t.logDetailVisible=!1}}},[t._v("关 闭")])],1)])],1)},o=[],r={data:function(){return{searchFormData:{routeId:""},tableData:[],logDetailVisible:!1,errorMsgDetail:""}},created:function(){this.loadTable()},methods:{loadTable:function(){this.post("monitor.data.list",this.searchFormData,function(t){var e=t.data;this.tableData=e.monitorInfoData})},onShowErrorDetail:function(t){var e=t.errorMsgList;this.errorMsgDetail=e.length>0?e.join("
"):"无内容",this.logDetailVisible=!0}}},i=r,n=l("2877"),s=Object(n["a"])(i,a,o,!1,null,null,null);e["default"]=s.exports}}]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-2d0d32e7.e7c489be.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-2d0d32e7.e7c489be.js new file mode 100644 index 00000000..713003f7 --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-2d0d32e7.e7c489be.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-2d0d32e7"],{"5c58":function(t,e,a){"use strict";a.r(e);var l=function(){var t=this,e=t.$createElement,a=t._self._c||e;return a("div",{staticClass:"app-container"},[a("el-form",{staticClass:"demo-form-inline",attrs:{inline:!0,model:t.searchFormData,size:"mini"}},[a("el-form-item",{attrs:{label:"接口名"}},[a("el-input",{staticStyle:{width:"250px"},attrs:{clearable:!0,placeholder:"输入接口名或版本号"},model:{value:t.searchFormData.routeId,callback:function(e){t.$set(t.searchFormData,"routeId",e)},expression:"searchFormData.routeId"}})],1),t._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary",icon:"el-icon-search"},on:{click:t.loadTable}},[t._v("搜索")])],1)],1),t._v(" "),a("el-alert",{staticStyle:{"margin-bottom":"10px"},attrs:{title:"监控数据保存在网关服务器,重启网关数据会清空。",type:"info",closable:!1}}),t._v(" "),a("el-table",{attrs:{data:t.tableData,border:"","default-expand-all":!1,"row-key":"id",height:"500","empty-text":"无数据"}},[a("el-table-column",{attrs:{fixed:"",prop:"instanceId",label:"网关实例",width:"200"},scopedSlots:t._u([{key:"default",fn:function(e){return[e.row.children?t._e():a("span",[t._v(t._s(e.row.instanceId))])]}}])}),t._v(" "),a("el-table-column",{attrs:{fixed:"",prop:"name",label:"接口名 (版本号)",width:"280"},scopedSlots:t._u([{key:"default",fn:function(e){return[t._v("\n "+t._s(e.row.name+(e.row.version?" ("+e.row.version+")":""))+"\n ")]}}])}),t._v(" "),a("el-table-column",{attrs:{prop:"serviceId",label:"serviceId",width:"170"}}),t._v(" "),a("el-table-column",{attrs:{prop:"maxTime",label:"最大耗时(ms)",width:"125"}},[a("template",{slot:"header"},[t._v("\n 最大耗时(ms)\n "),a("el-tooltip",{attrs:{effect:"dark",content:"耗时计算:签名验证成功后开始,微服务返回结果后结束",placement:"top"}},[a("i",{staticClass:"el-icon-question",staticStyle:{cursor:"pointer"}})])],1)],2),t._v(" "),a("el-table-column",{attrs:{prop:"minTime",label:"最小耗时(ms)",width:"120"}}),t._v(" "),a("el-table-column",{attrs:{prop:"avgTime",label:"平均耗时(ms)",width:"120"}}),t._v(" "),a("el-table-column",{attrs:{prop:"totalCount",label:"总调用次数",width:"100"}}),t._v(" "),a("el-table-column",{attrs:{prop:"successCount",label:"成功次数",width:"100"}}),t._v(" "),a("el-table-column",{attrs:{prop:"errorCount",label:"失败次数",width:"100"},scopedSlots:t._u([{key:"default",fn:function(e){return[e.row.errorCount>0?a("el-link",{staticStyle:{"text-decoration":"underline"},attrs:{underline:!1,type:"danger"},on:{click:function(a){return t.onShowErrorDetail(e.row)}}},[t._v("\n "+t._s(e.row.errorCount)+"\n ")]):t._e(),t._v(" "),0===e.row.errorCount?a("span",[t._v("0")]):t._e()]}}])},[a("template",{slot:"header"},[t._v("\n 失败次数\n "),a("el-tooltip",{attrs:{effect:"dark",content:"只统计微服务返回的未知错误,JSR-303验证错误算作成功",placement:"top-end"}},[a("i",{staticClass:"el-icon-question",staticStyle:{cursor:"pointer"}})])],1)],2)],1),t._v(" "),a("el-dialog",{attrs:{title:"错误详情",visible:t.logDetailVisible,width:"60%"},on:{"update:visible":function(e){t.logDetailVisible=e}}},[a("div",{staticStyle:{"overflow-x":"auto"},domProps:{innerHTML:t._s(t.errorMsgDetail)}}),t._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{attrs:{type:"primary"},on:{click:function(e){t.logDetailVisible=!1}}},[t._v("关 闭")])],1)])],1)},o=[],r={data:function(){return{searchFormData:{routeId:""},tableData:[],logDetailVisible:!1,errorMsgDetail:""}},created:function(){this.loadTable()},methods:{loadTable:function(){this.post("monitor.data.list",this.searchFormData,function(t){var e=t.data;this.tableData=e.monitorInfoData})},onShowErrorDetail:function(t){var e=t.errorMsgList;this.errorMsgDetail=e.length>0?e.join("
"):"无内容",this.logDetailVisible=!0}}},i=r,n=a("2877"),s=Object(n["a"])(i,l,o,!1,null,null,null);e["default"]=s.exports}}]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-30c6c34f.b288bbf5.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-30c6c34f.b288bbf5.js new file mode 100644 index 00000000..f385d3a5 --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-30c6c34f.b288bbf5.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-30c6c34f"],{"0a49":function(e,t,i){var a=i("9b43"),o=i("626a"),l=i("4bf8"),r=i("9def"),n=i("cd1c");e.exports=function(e,t){var i=1==e,s=2==e,c=3==e,m=4==e,p=6==e,u=5==e||p,d=t||n;return function(t,n,v){for(var h,g,D=l(t),f=o(D),y=a(n,v,3),b=r(f.length),k=0,F=i?d(t,b):s?d(t,0):void 0;b>k;k++)if((u||k in f)&&(h=f[k],g=y(h,k,D),e))if(i)F[k]=g;else if(g)switch(e){case 3:return!0;case 5:return h;case 6:return k;case 2:F.push(h)}else if(m)return!1;return p?-1:c||m?m:F}}},1169:function(e,t,i){var a=i("2d95");e.exports=Array.isArray||function(e){return"Array"==a(e)}},2735:function(e,t,i){"use strict";i.r(t);var a=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"app-container"},[0===e.tabsData.length?i("div",[e._v("\n 无服务\n ")]):i("div",[i("el-tabs",{attrs:{type:"card"},on:{"tab-click":e.selectTab},model:{value:e.tabsActive,callback:function(t){e.tabsActive=t},expression:"tabsActive"}},e._l(e.tabsData,function(e){return i("el-tab-pane",{key:e,attrs:{label:e,name:e}})}),1),e._v(" "),i("el-form",{staticClass:"demo-form-inline",attrs:{inline:!0,model:e.searchFormData,size:"mini"}},[i("el-form-item",{attrs:{label:"路由ID"}},[i("el-input",{attrs:{placeholder:"接口名,支持模糊查询",clearable:""},model:{value:e.searchFormData.routeId,callback:function(t){e.$set(e.searchFormData,"routeId",t)},expression:"searchFormData.routeId"}})],1),e._v(" "),i("el-form-item",{attrs:{label:"AppId"}},[i("el-input",{attrs:{placeholder:"AppId,支持模糊查询",clearable:""},model:{value:e.searchFormData.appKey,callback:function(t){e.$set(e.searchFormData,"appKey",t)},expression:"searchFormData.appKey"}})],1),e._v(" "),i("el-form-item",{attrs:{label:"IP"}},[i("el-input",{attrs:{placeholder:"ip,支持模糊查询",clearable:""},model:{value:e.searchFormData.limitIp,callback:function(t){e.$set(e.searchFormData,"limitIp",t)},expression:"searchFormData.limitIp"}})],1),e._v(" "),i("el-form-item",[i("el-button",{attrs:{type:"primary",icon:"el-icon-search",size:"mini"},on:{click:e.onSearchTable}},[e._v("查询")])],1)],1),e._v(" "),i("el-button",{staticStyle:{"margin-bottom":"10px"},attrs:{type:"primary",size:"mini",icon:"el-icon-plus"},on:{click:e.onAdd}},[e._v("新增限流")]),e._v(" "),i("el-table",{attrs:{data:e.pageInfo.list,border:""}},[i("el-table-column",{attrs:{prop:"limitKey",label:"限流维度",width:"400"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("div",{domProps:{innerHTML:e._s(e.limitRender(t.row))}})]}}])}),e._v(" "),i("el-table-column",{attrs:{prop:"limitType",label:"限流策略",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.limitType?i("span",[e._v("窗口策略")]):e._e(),e._v(" "),2===t.row.limitType?i("span",[e._v("令牌桶策略")]):e._e()]}}])},[i("template",{slot:"header"},[e._v("\n 限流策略\n "),i("el-popover",{ref:"popover",attrs:{placement:"top",title:"限流策略",width:"500",trigger:"hover"}},[i("div",[i("p",[e._v("窗口策略:每秒处理固定数量的请求,超出请求数量返回错误信息。")]),e._v(" "),i("p",[e._v("令牌桶策略:每秒放置固定数量的令牌数,每个请求进来后先去拿令牌,拿到了令牌才能继续,拿不到则等候令牌重新生成了再拿。")])])]),e._v(" "),i("i",{directives:[{name:"popover",rawName:"v-popover:popover",arg:"popover"}],staticClass:"el-icon-question",staticStyle:{cursor:"pointer"}})],1)],2),e._v(" "),i("el-table-column",{attrs:{prop:"info",label:"限流信息",width:"250"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("span",{domProps:{innerHTML:e._s(e.infoRender(t.row))}})]}}])}),e._v(" "),i("el-table-column",{attrs:{prop:"limitStatus",label:"状态",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.limitStatus?i("span",{staticStyle:{color:"#67C23A"}},[e._v("已开启")]):e._e(),e._v(" "),0===t.row.limitStatus?i("span",{staticStyle:{color:"#909399"}},[e._v("已关闭")]):e._e()]}}])}),e._v(" "),i("el-table-column",{attrs:{prop:"orderIndex",label:"排序",width:"80"}}),e._v(" "),i("el-table-column",{attrs:{prop:"remark",label:"备注",width:"150","show-overflow-tooltip":!0}}),e._v(" "),i("el-table-column",{attrs:{prop:"gmtCreate",label:"创建时间",width:"160"}}),e._v(" "),i("el-table-column",{attrs:{prop:"gmtModified",label:"修改时间",width:"160"}}),e._v(" "),i("el-table-column",{attrs:{label:"操作",fixed:"right",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[i("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(i){return e.onTableUpdate(t.row)}}},[e._v("修改")])]}}])})],1),e._v(" "),i("el-pagination",{staticStyle:{"margin-top":"5px"},attrs:{background:"","current-page":e.searchFormData.pageIndex,"page-size":e.searchFormData.pageSize,"page-sizes":[5,10,20,40],total:e.pageInfo.total,layout:"total, sizes, prev, pager, next"},on:{"size-change":e.onSizeChange,"current-change":e.onPageIndexChange}})],1),e._v(" "),i("el-dialog",{attrs:{title:e.dlgTitle,visible:e.limitDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.limitDialogVisible=t},close:e.onLimitDialogClose}},[i("el-form",{ref:"limitDialogForm",attrs:{model:e.limitDialogFormData,rules:e.rulesLimit,"label-width":"150px",size:"mini"}},[i("el-form-item",{attrs:{label:"限流维度",prop:"typeKey"}},[i("el-checkbox-group",{model:{value:e.limitDialogFormData.typeKey,callback:function(t){e.$set(e.limitDialogFormData,"typeKey",t)},expression:"limitDialogFormData.typeKey"}},[i("el-checkbox",{attrs:{label:1,name:"typeKey"},model:{value:e.limitDialogFormData.typeKey[0],callback:function(t){e.$set(e.limitDialogFormData.typeKey,0,t)},expression:"limitDialogFormData.typeKey[0]"}},[e._v("路由ID")]),e._v(" "),i("el-checkbox",{attrs:{label:2,name:"typeKey"},model:{value:e.limitDialogFormData.typeKey[1],callback:function(t){e.$set(e.limitDialogFormData.typeKey,1,t)},expression:"limitDialogFormData.typeKey[1]"}},[e._v("AppId")]),e._v(" "),i("el-checkbox",{attrs:{label:3,name:"typeKey"},model:{value:e.limitDialogFormData.typeKey[2],callback:function(t){e.$set(e.limitDialogFormData.typeKey,2,t)},expression:"limitDialogFormData.typeKey[2]"}},[e._v("IP")])],1)],1),e._v(" "),i("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.checkTypeKey(1),expression:"checkTypeKey(1)"}],attrs:{prop:"routeId",label:"路由ID",rules:e.checkTypeKey(1)?e.rulesLimit.routeId:[]}},[i("el-select",{staticStyle:{width:"300px"},attrs:{filterable:"",placeholder:"可筛选"},model:{value:e.limitDialogFormData.routeId,callback:function(t){e.$set(e.limitDialogFormData,"routeId",t)},expression:"limitDialogFormData.routeId"}},e._l(e.routeList,function(t){return i("el-option",{key:t.id,attrs:{label:t.id,value:t.id}},[i("span",{staticStyle:{float:"left"}},[e._v(e._s(t.name))]),e._v(" "),i("span",{staticStyle:{float:"right",color:"#8492a6","font-size":"13px"}},[e._v(e._s(t.version))])])}),1)],1),e._v(" "),i("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.checkTypeKey(2),expression:"checkTypeKey(2)"}],attrs:{prop:"appKey",label:"AppId",rules:e.checkTypeKey(2)?e.rulesLimit.appKey:[]}},[i("el-input",{attrs:{placeholder:"需要限流的AppId"},model:{value:e.limitDialogFormData.appKey,callback:function(t){e.$set(e.limitDialogFormData,"appKey",t)},expression:"limitDialogFormData.appKey"}})],1),e._v(" "),i("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.checkTypeKey(3),expression:"checkTypeKey(3)"}],attrs:{label:"限流IP",prop:"limitIp",rules:e.checkTypeKey(3)?e.rulesLimit.ip:[]}},[i("el-input",{attrs:{type:"textarea",rows:2,placeholder:"多个用英文逗号隔开"},model:{value:e.limitDialogFormData.limitIp,callback:function(t){e.$set(e.limitDialogFormData,"limitIp",t)},expression:"limitDialogFormData.limitIp"}})],1),e._v(" "),i("el-form-item",{attrs:{label:"限流策略"}},[i("el-radio-group",{model:{value:e.limitDialogFormData.limitType,callback:function(t){e.$set(e.limitDialogFormData,"limitType",t)},expression:"limitDialogFormData.limitType"}},[i("el-radio",{attrs:{label:1}},[e._v("窗口策略")]),e._v(" "),i("el-radio",{attrs:{label:2}},[e._v("令牌桶策略")])],1),e._v(" "),i("el-popover",{ref:"popover",attrs:{placement:"top",title:"限流策略",width:"500",trigger:"hover"}},[i("div",[i("p",[e._v("窗口策略:每秒处理固定数量的请求,超出请求数量返回错误信息。")]),e._v(" "),i("p",[e._v("令牌桶策略:每秒放置固定数量的令牌数,每个请求进来后先去拿令牌,拿到了令牌才能继续,拿不到则等候令牌重新生成了再拿。")])])]),e._v(" "),i("i",{directives:[{name:"popover",rawName:"v-popover:popover",arg:"popover"}],staticClass:"el-icon-question",staticStyle:{cursor:"pointer"}})],1),e._v(" "),i("el-form-item",{attrs:{label:"开启状态"}},[i("el-switch",{attrs:{"active-color":"#13ce66","inactive-color":"#ff4949","active-value":1,"inactive-value":0},model:{value:e.limitDialogFormData.limitStatus,callback:function(t){e.$set(e.limitDialogFormData,"limitStatus",t)},expression:"limitDialogFormData.limitStatus"}})],1),e._v(" "),i("el-form-item",{attrs:{label:"排序",prop:"orderIndex"}},[i("el-input-number",{attrs:{"controls-position":"right",min:0},model:{value:e.limitDialogFormData.orderIndex,callback:function(t){e.$set(e.limitDialogFormData,"orderIndex",t)},expression:"limitDialogFormData.orderIndex"}}),e._v(" "),i("span",{staticClass:"tip",staticStyle:{"margin-left":"10px"}},[e._v("值小优先执行")])],1),e._v(" "),i("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.isWindowType(),expression:"isWindowType()"}],attrs:{label:"请求数",prop:"execCountPerSecond",rules:e.isWindowType()?e.rulesLimit.execCountPerSecond:[]}},[e._v("\n 每 "),i("el-input-number",{attrs:{"controls-position":"right",min:1},model:{value:e.limitDialogFormData.durationSeconds,callback:function(t){e.$set(e.limitDialogFormData,"durationSeconds",t)},expression:"limitDialogFormData.durationSeconds"}}),e._v(" 秒可处理\n "),i("el-input-number",{attrs:{"controls-position":"right",min:1},model:{value:e.limitDialogFormData.execCountPerSecond,callback:function(t){e.$set(e.limitDialogFormData,"execCountPerSecond",t)},expression:"limitDialogFormData.execCountPerSecond"}}),e._v(" 个请求\n ")],1),e._v(" "),i("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.isTokenType(),expression:"isTokenType()"}],attrs:{label:"令牌桶容量",prop:"tokenBucketCount",rules:e.isTokenType()?e.rulesLimit.tokenBucketCount:[]}},[i("el-input-number",{attrs:{"controls-position":"right",min:1},model:{value:e.limitDialogFormData.tokenBucketCount,callback:function(t){e.$set(e.limitDialogFormData,"tokenBucketCount",t)},expression:"limitDialogFormData.tokenBucketCount"}})],1),e._v(" "),i("el-form-item",{attrs:{label:"备注",prop:"remark"}},[i("el-input",{attrs:{type:"textarea",rows:2},model:{value:e.limitDialogFormData.remark,callback:function(t){e.$set(e.limitDialogFormData,"remark",t)},expression:"limitDialogFormData.remark"}})],1)],1),e._v(" "),i("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[i("el-button",{on:{click:function(t){e.limitDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),i("el-button",{attrs:{type:"primary"},on:{click:e.onLimitDialogSave}},[e._v("保 存")])],1)],1)],1)},o=[],l=(i("7514"),{data:function(){return{tabsData:[],tabsActive:"",serviceTextLimitSize:20,filterText:"",treeData:[],tableData:[],serviceId:"",searchFormData:{pageIndex:1,pageSize:5},pageInfo:{list:[],total:0},routeList:[],defaultProps:{children:"children",label:"label"},dlgTitle:"设置限流",limitDialogVisible:!1,limitDialogFormData:{id:0,routeId:"",appKey:"",limitIp:"",limitKey:"",execCountPerSecond:5,durationSeconds:1,limitCode:"",limitMsg:"",tokenBucketCount:5,limitStatus:0,limitType:1,orderIndex:0,remark:"",typeKey:[]},rulesLimit:{typeKey:[{type:"array",required:!0,message:"请至少选择一个",trigger:"change"}],routeId:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}],appKey:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}],ip:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:500,message:"长度在 1 到 500 个字符",trigger:"blur"}],execCountPerSecond:[{required:!0,message:"不能为空",trigger:"blur"}],tokenBucketCount:[{required:!0,message:"不能为空",trigger:"blur"}],orderIndex:[{required:!0,message:"不能为空",trigger:"blur"}],remark:[{max:128,message:"长度不能超过128字符",trigger:"blur"}]}}},watch:{filterText:function(e){this.$refs.tree2.filter(e)}},created:function(){this.loadTabs()},methods:{loadTabs:function(){this.post("registry.service.list",{},function(e){var t=this;this.tabsData=e.data,this.$nextTick(function(){t.tabsData.length>0&&(t.tabsActive=t.tabsData[0],t.loadLimitData())})})},loadTree:function(){this.post("registry.service.list",{},function(e){var t=e.data;this.treeData=this.convertToTreeData(t,0)})},filterNode:function(e,t){return!e||-1!==t.label.indexOf(e)},onNodeClick:function(e,t,i){e.parentId&&(this.serviceId=e.label,this.searchFormData.serviceId=this.serviceId,this.loadTable(),this.loadRouteList(this.serviceId))},selectTab:function(){this.loadLimitData()},loadLimitData:function(){this.serviceId=this.tabsActive,this.searchFormData.serviceId=this.serviceId,this.loadTable(),this.loadRouteList(this.serviceId)},convertToTreeData:function(e,t){for(var i=[],a={label:0===e.length?"无服务":"服务列表",parentId:t},o=[],l=0;l"+t;this.$alert(i,"限流策略",{dangerouslyUseHTMLString:!0})},onSizeChange:function(e){this.searchFormData.pageSize=e,this.loadTable()},onPageIndexChange:function(e){this.searchFormData.pageIndex=e,this.loadTable()},checkTypeKey:function(e){return this.limitDialogFormData.typeKey.find(function(t,i,a){return t===e})},isWindowType:function(){return 1===this.limitDialogFormData.limitType},isTokenType:function(){return 2===this.limitDialogFormData.limitType},limitRender:function(e){var t=[],i=[];return e.routeId&&(i.push(e.routeId),t.push("路由ID")),e.appKey&&(i.push(e.appKey),t.push("AppId")),e.limitIp&&(i.push(e.limitIp),t.push("IP")),i.join(" + ")+"
("+t.join(" + ")+")"}}}),r=l,n=(i("fbea"),i("2877")),s=Object(n["a"])(r,a,o,!1,null,null,null);t["default"]=s.exports},6886:function(e,t,i){},7514:function(e,t,i){"use strict";var a=i("5ca1"),o=i("0a49")(5),l="find",r=!0;l in[]&&Array(1)[l](function(){r=!1}),a(a.P+a.F*r,"Array",{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),i("9c6c")(l)},cd1c:function(e,t,i){var a=i("e853");e.exports=function(e,t){return new(a(e))(t)}},e853:function(e,t,i){var a=i("d3f4"),o=i("1169"),l=i("2b4c")("species");e.exports=function(e){var t;return o(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!o(t.prototype)||(t=void 0),a(t)&&(t=t[l],null===t&&(t=void 0))),void 0===t?Array:t}},fbea:function(e,t,i){"use strict";var a=i("6886"),o=i.n(a);o.a}}]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-4bdcb5ea.cf292569.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-4bdcb5ea.cf292569.js deleted file mode 100644 index 032e04c2..00000000 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-4bdcb5ea.cf292569.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-4bdcb5ea"],{"0a49":function(e,t,i){var a=i("9b43"),o=i("626a"),l=i("4bf8"),r=i("9def"),n=i("cd1c");e.exports=function(e,t){var i=1==e,s=2==e,c=3==e,m=4==e,p=6==e,u=5==e||p,d=t||n;return function(t,n,f){for(var g,h,D=l(t),v=o(D),y=a(n,f,3),b=r(v.length),k=0,x=i?d(t,b):s?d(t,0):void 0;b>k;k++)if((u||k in v)&&(g=v[k],h=y(g,k,D),e))if(i)x[k]=h;else if(h)switch(e){case 3:return!0;case 5:return g;case 6:return k;case 2:x.push(g)}else if(m)return!1;return p?-1:c||m?m:x}}},1169:function(e,t,i){var a=i("2d95");e.exports=Array.isArray||function(e){return"Array"==a(e)}},2735:function(e,t,i){"use strict";i.r(t);var a=function(){var e=this,t=e.$createElement,i=e._self._c||t;return i("div",{staticClass:"app-container"},[i("el-container",[i("el-aside",{staticStyle:{"min-height":"300px",width:"250px"}},[i("el-input",{staticStyle:{"margin-bottom":"20px"},attrs:{"prefix-icon":"el-icon-search",placeholder:"搜索服务...",size:"mini",clearable:""},model:{value:e.filterText,callback:function(t){e.filterText=t},expression:"filterText"}}),e._v(" "),i("el-tree",{ref:"tree2",staticClass:"filter-tree",attrs:{data:e.treeData,props:e.defaultProps,"filter-node-method":e.filterNode,"highlight-current":!0,"expand-on-click-node":!1,"empty-text":"无数据","node-key":"id","default-expand-all":""},on:{"node-click":e.onNodeClick},scopedSlots:e._u([{key:"default",fn:function(t){t.node;var a=t.data;return i("span",{staticClass:"custom-tree-node"},[i("div",[i("el-tooltip",{directives:[{name:"show",rawName:"v-show",value:a.custom,expression:"data.custom"}],staticClass:"item",attrs:{content:"自定义服务",effect:"light",placement:"left"}},[i("i",{staticClass:"el-icon-warning-outline"})]),e._v(" "),a.label.length"+t;this.$alert(i,"限流策略",{dangerouslyUseHTMLString:!0})},onSizeChange:function(e){this.searchFormData.pageSize=e,this.loadTable()},onPageIndexChange:function(e){this.searchFormData.pageIndex=e,this.loadTable()},checkTypeKey:function(e){return this.limitDialogFormData.typeKey.find(function(t,i,a){return t===e})},isWindowType:function(){return 1===this.limitDialogFormData.limitType},isTokenType:function(){return 2===this.limitDialogFormData.limitType},limitRender:function(e){var t=[],i=[];return e.routeId&&(i.push(e.routeId),t.push("路由ID")),e.appKey&&(i.push(e.appKey),t.push("AppId")),e.limitIp&&(i.push(e.limitIp),t.push("IP")),i.join(" + ")+"
("+t.join(" + ")+")"}}}),r=l,n=(i("fbea"),i("8bb3"),i("2877")),s=Object(n["a"])(r,a,o,!1,null,"08125a7c",null);t["default"]=s.exports},"4b5b":function(e,t,i){},6886:function(e,t,i){},7514:function(e,t,i){"use strict";var a=i("5ca1"),o=i("0a49")(5),l="find",r=!0;l in[]&&Array(1)[l](function(){r=!1}),a(a.P+a.F*r,"Array",{find:function(e){return o(this,e,arguments.length>1?arguments[1]:void 0)}}),i("9c6c")(l)},"8bb3":function(e,t,i){"use strict";var a=i("4b5b"),o=i.n(a);o.a},cd1c:function(e,t,i){var a=i("e853");e.exports=function(e,t){return new(a(e))(t)}},e853:function(e,t,i){var a=i("d3f4"),o=i("1169"),l=i("2b4c")("species");e.exports=function(e){var t;return o(e)&&(t=e.constructor,"function"!=typeof t||t!==Array&&!o(t.prototype)||(t=void 0),a(t)&&(t=t[l],null===t&&(t=void 0))),void 0===t?Array:t}},fbea:function(e,t,i){"use strict";var a=i("6886"),o=i.n(a);o.a}}]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.494fc338.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.494fc338.js new file mode 100644 index 00000000..cbdee72d --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.494fc338.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9b31c83a"],{"048e":function(e,t,a){},"0ce7":function(e,t,a){"use strict";var o=a("048e"),i=a.n(o);i.a},"5f67":function(e,t,a){"use strict";a.r(t);var o=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[0===e.tabsData.length?a("div",[e._v("\n 无服务\n ")]):a("div",[a("el-tabs",{attrs:{type:"card"},on:{"tab-click":e.selectTab},model:{value:e.tabsActive,callback:function(t){e.tabsActive=t},expression:"tabsActive"}},e._l(e.tabsData,function(e){return a("el-tab-pane",{key:e,attrs:{label:e,name:e}})}),1),e._v(" "),a("el-form",{staticClass:"demo-form-inline",attrs:{inline:!0,model:e.searchFormData,size:"mini"},nativeOn:{submit:function(e){e.preventDefault()}}},[a("el-form-item",{attrs:{label:"路由名称"}},[a("el-input",{attrs:{clearable:!0,placeholder:"输入接口名或版本号"},model:{value:e.searchFormData.id,callback:function(t){e.$set(e.searchFormData,"id",t)},expression:"searchFormData.id"}})],1),e._v(" "),a("el-form-item",[a("el-checkbox",{model:{value:e.searchFormData.permission,callback:function(t){e.$set(e.searchFormData,"permission",t)},expression:"searchFormData.permission"}},[e._v("授权接口")])],1),e._v(" "),a("el-form-item",[a("el-checkbox",{model:{value:e.searchFormData.needToken,callback:function(t){e.$set(e.searchFormData,"needToken",t)},expression:"searchFormData.needToken"}},[e._v("需要token")])],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary",icon:"el-icon-search","native-type":"submit"},on:{click:e.onSearchTable}},[e._v("查询")])],1)],1),e._v(" "),a("el-button",{directives:[{name:"show",rawName:"v-show",value:e.isCustomService,expression:"isCustomService"}],attrs:{type:"primary",size:"mini",icon:"el-icon-plus"},on:{click:function(t){return t.stopPropagation(),e.addRoute(t)}}},[e._v("\n 新建路由\n ")]),e._v(" "),a("el-table",{staticStyle:{"margin-top":"10px"},attrs:{data:e.pageInfo.rows,border:"","highlight-current-row":""}},[a("el-table-column",{attrs:{prop:"name",label:"接口名 (版本号)"},scopedSlots:e._u([{key:"default",fn:function(t){return[e._v("\n "+e._s(e.getNameVersion(t.row))+"\n ")]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"roles",label:"访问权限",width:"150","show-overflow-tooltip":!0},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.permission?a("span",{staticClass:"roles-content",domProps:{innerHTML:e._s(e.roleRender(t.row))},on:{click:function(a){return e.onTableAuth(t.row)}}}):a("span",[e._v("\n (公开)\n ")])]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"ignoreValidate",label:"签名校验",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return[0===t.row.ignoreValidate?a("span",[e._v("校验")]):e._e(),e._v(" "),1===t.row.ignoreValidate?a("span",{staticStyle:{color:"#E6A23C"}},[e._v("不校验")]):e._e()]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"mergeResult",label:"统一格式输出",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.mergeResult?a("span",[e._v("是")]):e._e(),e._v(" "),0===t.row.mergeResult?a("span",{staticStyle:{color:"#E6A23C"}},[e._v("否")]):e._e()]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"needToken",label:"需要token",width:"120"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.needToken?a("span",{staticStyle:{"font-weight":"bold",color:"#303133"}},[e._v("是")]):e._e(),e._v(" "),0===t.row.needToken?a("span",[e._v("否")]):e._e()]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"status",label:"状态",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-switch",{attrs:{"active-color":"#13ce66","inactive-color":"#ff4949","active-value":1,"inactive-value":2},on:{change:function(a){return e.onChangeStatus(t.row)}},model:{value:t.row.status,callback:function(a){e.$set(t.row,"status",a)},expression:"scope.row.status"}})]}}])})],1),e._v(" "),a("el-pagination",{staticStyle:{"margin-top":"5px"},attrs:{background:"","current-page":e.searchFormData.pageIndex,"page-size":e.searchFormData.pageSize,"page-sizes":[10,20,40],total:e.pageInfo.total,layout:"total, sizes, prev, pager, next"},on:{"size-change":e.onSizeChange,"current-change":e.onPageIndexChange}})],1),e._v(" "),a("el-dialog",{attrs:{title:e.routeDialogTitle,visible:e.routeDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.routeDialogVisible=t},close:e.onCloseRouteDialog}},[a("el-form",{ref:"routeDialogFormRef",attrs:{model:e.routeDialogFormData,rules:e.routeDialogFormRules,"label-width":"180px",size:"mini"}},[a("el-input",{directives:[{name:"show",rawName:"v-show",value:!1,expression:"false"}],model:{value:e.routeDialogFormData.id,callback:function(t){e.$set(e.routeDialogFormData,"id",t)},expression:"routeDialogFormData.id"}}),e._v(" "),a("el-form-item",{attrs:{label:"接口名 (版本号)"}},[e._v("\n "+e._s(e.routeDialogFormData.name+(e.routeDialogFormData.version?" ("+e.routeDialogFormData.version+")":""))+"\n ")]),e._v(" "),a("el-form-item",{attrs:{label:"签名校验"}},[e._v("\n "+e._s(e.routeDialogFormData.ignoreValidate?"不校验":"校验")+"\n ")]),e._v(" "),a("el-form-item",{attrs:{label:"统一格式输出"}},[e._v("\n "+e._s(1===e.routeDialogFormData.mergeResult?"是":"否")+"\n ")]),e._v(" "),a("el-form-item",{attrs:{label:"需要token"}},[e._v("\n "+e._s(1===e.routeDialogFormData.needToken?"是":"否")+"\n ")]),e._v(" "),a("el-form-item",{attrs:{label:"状态"}},[a("el-radio-group",{model:{value:e.routeDialogFormData.status,callback:function(t){e.$set(e.routeDialogFormData,"status",t)},expression:"routeDialogFormData.status"}},[a("el-radio",{attrs:{label:1,name:"status"}},[e._v("启用")]),e._v(" "),a("el-radio",{staticStyle:{color:"#F56C6C"},attrs:{label:2,name:"status"}},[e._v("禁用")])],1)],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.routeDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.onRouteDialogSave}},[e._v("保 存")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"路由授权",visible:e.authDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.authDialogVisible=t}}},[a("el-form",{attrs:{model:e.authDialogFormData,"label-width":"120px",size:"mini"}},[a("el-form-item",{attrs:{label:"路由ID"}},[a("span",[e._v(e._s(e.authDialogFormData.routeId))])]),e._v(" "),a("el-form-item",{attrs:{label:"角色"}},[a("el-checkbox-group",{model:{value:e.authDialogFormData.roleCode,callback:function(t){e.$set(e.authDialogFormData,"roleCode",t)},expression:"authDialogFormData.roleCode"}},e._l(e.roles,function(t){return a("el-checkbox",{key:t.roleCode,attrs:{label:t.roleCode}},[e._v(e._s(t.description))])}),1)],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.authDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.onAuthDialogSave}},[e._v("保 存")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"添加服务",visible:e.addServiceDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.addServiceDialogVisible=t},close:e.closeAddServiceDlg}},[a("el-form",{ref:"addServiceForm",attrs:{model:e.addServiceForm,rules:e.addServiceFormRules,"label-width":"200px"}},[a("el-form-item",{attrs:{label:"服务名(serviceId)",prop:"serviceId"}},[a("el-input",{attrs:{placeholder:"服务名,如:order-service"},model:{value:e.addServiceForm.serviceId,callback:function(t){e.$set(e.addServiceForm,"serviceId",t)},expression:"addServiceForm.serviceId"}})],1)],1),e._v(" "),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.addServiceDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary"},on:{click:e.onAddService}},[e._v("确 定")])],1)],1)],1)},i=[],r=(a("7f7f"),{data:function(){return{tabsData:[],tabsActive:"",serviceTextLimitSize:20,filterText:"",treeData:[],tableData:[],serviceId:"",isCustomService:!1,searchFormData:{id:"",serviceId:"",permission:0,needToken:0,pageIndex:1,pageSize:10},pageInfo:{rows:[],total:0},defaultProps:{children:"children",label:"label"},routeDialogTitle:"修改路由",routeDialogFormData:{id:"",name:"",version:"1.0",uri:"",path:"",status:1,mergeResult:1,ignoreValidate:0},routeDialogFormRules:{name:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}],version:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}],uri:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}],path:[{min:0,max:100,message:"长度不能超过 100 个字符",trigger:"blur"}]},routeDialogVisible:!1,roles:[],authDialogFormData:{routeId:"",roleCode:[]},authDialogVisible:!1,addServiceDialogVisible:!1,addServiceForm:{serviceId:""},addServiceFormRules:{serviceId:[{required:!0,message:"请输入服务名称",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}]}}},watch:{filterText:function(e){this.$refs.serviceTree.filter(e)}},created:function(){this.loadTabs(),this.loadRouteRole()},methods:{loadTabs:function(){this.post("registry.service.list",{},function(e){var t=this;this.tabsData=e.data,this.$nextTick(function(){t.tabsData.length>0&&(t.tabsActive=t.tabsData[0],t.loadRouteData())})})},loadTree:function(){this.post("registry.service.list",{},function(e){var t=this,a=e.data;this.treeData=this.convertToTreeData(a,0),this.$nextTick(function(){t.serviceId&&t.$refs.serviceTree.setCurrentKey(t.serviceId)})})},filterNode:function(e,t){return!e||-1!==t.label.indexOf(e)},onNodeClick:function(e,t,a){e.parentId&&(this.serviceId=e.label,this.searchFormData.serviceId=this.serviceId,this.isCustomService=Boolean(e.custom),this.loadTable())},selectTab:function(){this.loadRouteData()},loadRouteData:function(){this.serviceId=this.tabsActive,this.searchFormData.serviceId=this.serviceId,this.loadTable()},convertToTreeData:function(e,t){for(var a=[],o={label:0===e.length?"无服务":"服务列表",parentId:t},i=[],r=0;r0?t.join(", "):"点击授权"},onRouteDialogSave:function(){var e=this;this.$refs.routeDialogFormRef.validate(function(t){if(t){var a=e.routeDialogFormData.id?"route.status.update":"route.add";e.routeDialogFormData.serviceId=e.serviceId,e.post(a,e.routeDialogFormData,function(){this.routeDialogVisible=!1,this.loadTable()})}})},onAuthDialogSave:function(){this.post("route.role.update",this.authDialogFormData,function(){this.authDialogVisible=!1,this.loadTable()})},addService:function(){this.addServiceDialogVisible=!0},closeAddServiceDlg:function(){this.$refs.addServiceForm.resetFields()},onAddService:function(){var e=this;this.$refs.addServiceForm.validate(function(t){t&&e.post("service.custom.add",e.addServiceForm,function(e){this.addServiceDialogVisible=!1,this.tip("添加成功"),this.loadTree()})})},onDelService:function(e){var t=e.serviceId;this.confirm("确认要删除服务"+t+"吗,【对应的路由配置会一起删除】",function(e){var a={serviceId:t};this.post("service.custom.del",a,function(){e(),this.tip("删除成功"),this.loadTree()})})},onSizeChange:function(e){this.searchFormData.pageSize=e,this.loadTable()},onPageIndexChange:function(e){this.searchFormData.pageIndex=e,this.loadTable()}}}),s=r,l=(a("0ce7"),a("2877")),n=Object(l["a"])(s,o,i,!1,null,null,null);t["default"]=n.exports}}]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.52bc6b2c.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.52bc6b2c.js deleted file mode 100644 index 7b966db8..00000000 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9b31c83a.52bc6b2c.js +++ /dev/null @@ -1 +0,0 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9b31c83a"],{"048e":function(e,t,o){},"0ce7":function(e,t,o){"use strict";var i=o("048e"),a=o.n(i);a.a},"5f67":function(e,t,o){"use strict";o.r(t);var i=function(){var e=this,t=e.$createElement,o=e._self._c||t;return o("div",{staticClass:"app-container"},[o("el-container",[o("el-aside",{staticStyle:{"min-height":"300px",width:"250px"}},[o("el-button",{staticStyle:{display:"none"},attrs:{type:"primary",plain:"",size:"mini",icon:"el-icon-plus"},on:{click:function(t){return t.stopPropagation(),e.addService(t)}}},[e._v("\n 新建服务\n ")]),e._v(" "),o("el-input",{staticStyle:{"margin-bottom":"10px","margin-top":"10px"},attrs:{"prefix-icon":"el-icon-search",placeholder:"搜索服务...",size:"mini",clearable:""},model:{value:e.filterText,callback:function(t){e.filterText=t},expression:"filterText"}}),e._v(" "),o("el-tree",{ref:"serviceTree",staticClass:"filter-tree",attrs:{data:e.treeData,props:e.defaultProps,"filter-node-method":e.filterNode,"highlight-current":!0,"expand-on-click-node":!1,"empty-text":"无数据","node-key":"serviceId","default-expand-all":""},on:{"node-click":e.onNodeClick},scopedSlots:e._u([{key:"default",fn:function(t){t.node;var i=t.data;return o("span",{staticClass:"custom-tree-node"},[o("div",[o("el-tooltip",{directives:[{name:"show",rawName:"v-show",value:i.custom,expression:"data.custom"}],staticClass:"item",attrs:{content:"自定义服务",effect:"light",placement:"left"}},[o("i",{staticClass:"el-icon-warning-outline"})]),e._v(" "),i.label.length0?t.join(", "):'未授权'},onRouteDialogSave:function(){var e=this;this.$refs.routeDialogFormRef.validate(function(t){if(t){var o=e.routeDialogFormData.id?"route.update":"route.add";e.routeDialogFormData.serviceId=e.serviceId,e.post(o,e.routeDialogFormData,function(){this.routeDialogVisible=!1,this.loadTable()})}})},onAuthDialogSave:function(){this.post("route.role.update",this.authDialogFormData,function(){this.authDialogVisible=!1,this.loadTable()})},addService:function(){this.addServiceDialogVisible=!0},closeAddServiceDlg:function(){this.$refs.addServiceForm.resetFields()},onAddService:function(){var e=this;this.$refs.addServiceForm.validate(function(t){t&&e.post("service.custom.add",e.addServiceForm,function(e){this.addServiceDialogVisible=!1,this.tip("添加成功"),this.loadTree()})})},onDelService:function(e){var t=e.serviceId;this.confirm("确认要删除服务"+t+"吗,【对应的路由配置会一起删除】",function(e){var o={serviceId:t};this.post("service.custom.del",o,function(){e(),this.tip("删除成功"),this.loadTree()})})},onSizeChange:function(e){this.searchFormData.pageSize=e,this.loadTable()},onPageIndexChange:function(e){this.searchFormData.pageIndex=e,this.loadTable()}}},l=r,s=(o("0ce7"),o("2877")),n=Object(s["a"])(l,i,a,!1,null,null,null);t["default"]=n.exports}}]); \ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9f479afe.2093f9d0.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9f479afe.2093f9d0.js new file mode 100644 index 00000000..48e7975c --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-9f479afe.2093f9d0.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-9f479afe"],{"02f4":function(e,t,n){var r=n("4588"),i=n("be13");e.exports=function(e){return function(t,n){var o,a,s=String(i(t)),l=r(n),c=s.length;return l<0||l>=c?e?"":void 0:(o=s.charCodeAt(l),o<55296||o>56319||l+1===c||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):o:e?s.slice(l,l+2):a-56320+(o-55296<<10)+65536)}}},"0390":function(e,t,n){"use strict";var r=n("02f4")(!0);e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},"0bfb":function(e,t,n){"use strict";var r=n("cb7c");e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"214f":function(e,t,n){"use strict";n("b0c5");var r=n("2aba"),i=n("32e9"),o=n("79e5"),a=n("be13"),s=n("2b4c"),l=n("520a"),c=s("species"),u=!o(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var d=s(e),v=!o(function(){var t={};return t[d]=function(){return 7},7!=""[e](t)}),p=v?!o(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[c]=function(){return n}),n[d](""),!t}):void 0;if(!v||!p||"replace"===e&&!u||"split"===e&&!f){var g=/./[d],y=n(a,d,""[e],function(e,t,n,r,i){return t.exec===l?v&&!i?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),h=y[0],m=y[1];r(String.prototype,e,h),i(RegExp.prototype,d,2==t?function(e,t){return m.call(e,this,t)}:function(e){return m.call(e,this)})}}},"28a5":function(e,t,n){"use strict";var r=n("aae3"),i=n("cb7c"),o=n("ebd6"),a=n("0390"),s=n("9def"),l=n("5f1b"),c=n("520a"),u=n("79e5"),f=Math.min,d=[].push,v="split",p="length",g="lastIndex",y=4294967295,h=!u(function(){RegExp(y,"y")});n("214f")("split",2,function(e,t,n,u){var m;return m="c"=="abbc"[v](/(b)*/)[1]||4!="test"[v](/(?:)/,-1)[p]||2!="ab"[v](/(?:ab)*/)[p]||4!="."[v](/(.?)(.?)/)[p]||"."[v](/()()/)[p]>1||""[v](/.?/)[p]?function(e,t){var i=String(this);if(void 0===e&&0===t)return[];if(!r(e))return n.call(i,e,t);var o,a,s,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,v=void 0===t?y:t>>>0,h=new RegExp(e.source,u+"g");while(o=c.call(h,i)){if(a=h[g],a>f&&(l.push(i.slice(f,o.index)),o[p]>1&&o.index=v))break;h[g]===o.index&&h[g]++}return f===i[p]?!s&&h.test("")||l.push(""):l.push(i.slice(f)),l[p]>v?l.slice(0,v):l}:"0"[v](void 0,0)[p]?function(e,t){return void 0===e&&0===t?[]:n.call(this,e,t)}:n,[function(n,r){var i=e(this),o=void 0==n?void 0:n[t];return void 0!==o?o.call(n,i,r):m.call(String(i),n,r)},function(e,t){var r=u(m,e,this,t,m!==n);if(r.done)return r.value;var c=i(e),d=String(this),v=o(c,RegExp),p=c.unicode,g=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(h?"y":"g"),b=new v(h?c:"^(?:"+c.source+")",g),_=void 0===t?y:t>>>0;if(0===_)return[];if(0===d.length)return null===l(b,d)?[d]:[];var w=0,x=0,I=[];while(x1&&o.call(a[0],n,function(){for(u=1;u0&&"pre"===t.row.metadata.env?n("el-tag",{attrs:{type:"warning"}},[e._v("预发布")]):e._e(),e._v(" "),t.row.parentId>0&&"gray"===t.row.metadata.env?n("el-tag",{attrs:{type:"info"}},[e._v("灰度")]):e._e(),e._v(" "),t.row.parentId>0&&!t.row.metadata.env?n("el-tag",{attrs:{type:"success"}},[e._v("线上")]):e._e()],1):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"metadata",label:"metadata",width:"250"},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.parentId>0?n("span",[e._v(e._s(JSON.stringify(t.row.metadata)))]):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"status",label:"服务状态",width:"100"},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.parentId>0&&"UP"===t.row.status?n("el-tag",{attrs:{type:"success"}},[e._v("正常")]):e._e(),e._v(" "),t.row.parentId>0&&"STARTING"===t.row.status?n("el-tag",{attrs:{type:"info"}},[e._v("正在启动")]):e._e(),e._v(" "),t.row.parentId>0&&"UNKNOWN"===t.row.status?n("el-tag",[e._v("未知")]):e._e(),e._v(" "),t.row.parentId>0&&("OUT_OF_SERVICE"===t.row.status||"DOWN"===t.row.status)?n("el-tag",{attrs:{type:"danger"}},[e._v("已禁用")]):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{label:"操作",width:"250"},scopedSlots:e._u([{key:"default",fn:function(t){return[e.blackList.indexOf(t.row.serviceId.toLowerCase())<0?n("div",[0===t.row.parentId?n("div",[n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onGrayConfigUpdate(t.row)}}},[e._v("设置灰度参数")])],1):e._e(),e._v(" "),t.row.parentId>0?n("div",["UP"===t.row.status?n("span",["pre"===t.row.metadata.env?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvPreClose(t.row)}}},[e._v("结束预发布")]):e._e(),e._v(" "),"gray"===t.row.metadata.env?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvGrayClose(t.row)}}},[e._v("结束灰度")]):e._e(),e._v(" "),t.row.metadata.env?e._e():n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvPreOpen(t.row)}}},[e._v("开启预发布")]),e._v(" "),t.row.metadata.env?e._e():n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvGrayOpen(t.row)}}},[e._v("开启灰度")])],1):e._e(),e._v(" "),n("span",{staticStyle:{"margin-left":"10px"}},["UP"===t.row.status?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onDisable(t.row)}}},[e._v("禁用")]):e._e(),e._v(" "),"OUT_OF_SERVICE"===t.row.status?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnable(t.row)}}},[e._v("启用")]):e._e()],1)]):e._e()]):e._e()]}}])})],1),e._v(" "),n("el-dialog",{attrs:{title:"灰度设置",visible:e.grayDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.grayDialogVisible=t},close:function(t){return e.resetForm("grayForm")}}},[n("el-form",{ref:"grayForm",attrs:{model:e.grayForm,rules:e.grayFormRules,size:"mini"}},[n("el-form-item",{attrs:{label:"serviceId"}},[e._v("\n "+e._s(e.grayForm.serviceId)+"\n ")]),e._v(" "),n("el-tabs",{attrs:{type:"card"},model:{value:e.tabsActiveName,callback:function(t){e.tabsActiveName=t},expression:"tabsActiveName"}},[n("el-tab-pane",{attrs:{label:"灰度用户",name:"first"}},[n("el-alert",{staticStyle:{"margin-bottom":"20px"},attrs:{title:"可以是AppId或IP地址,多个用英文逗号隔开",type:"info",closable:!1}}),e._v(" "),n("el-form-item",{attrs:{prop:"userKeyContent"}},[n("el-input",{attrs:{placeholder:"可以是AppId或IP地址,多个用英文逗号隔开",type:"textarea",rows:6},model:{value:e.grayForm.userKeyContent,callback:function(t){e.$set(e.grayForm,"userKeyContent",t)},expression:"grayForm.userKeyContent"}})],1)],1),e._v(" "),n("el-tab-pane",{attrs:{label:"接口配置",name:"second"}},[n("el-alert",{attrs:{title:"灰度接口:接口名相同,版本号不同",type:"info",closable:!1}}),e._v(" "),n("el-form-item",[n("el-button",{attrs:{type:"text"},on:{click:e.addNameVersion}},[e._v("新增灰度接口")])],1),e._v(" "),n("table",{attrs:{cellpadding:"0",cellspacing:"0"}},e._l(e.grayForm.grayRouteConfigList,function(t,r){return n("tr",{key:t.key},[n("td",[n("el-form-item",{key:t.key,attrs:{prop:"grayRouteConfigList."+r+".oldRouteId",rules:{required:!0,message:"不能为空",trigger:["blur","change"]}}},[e._v("\n 老接口:\n "),n("el-select",{staticStyle:{"margin-right":"10px",width:"250px"},attrs:{filterable:""},on:{change:function(n){return e.onChangeOldRoute(t)}},model:{value:t.oldRouteId,callback:function(n){e.$set(t,"oldRouteId",n)},expression:"grayRouteConfig.oldRouteId"}},e._l(e.routeList,function(e){return n("el-option",{key:e.id,attrs:{label:e.name+"("+e.version+")",value:e.id}})}),1)],1)],1),e._v(" "),n("td",[n("el-form-item",{key:t.key+1,attrs:{prop:"grayRouteConfigList."+r+".newVersion",rules:{required:!0,message:"不能为空",trigger:["blur","change"]}}},[e._v("\n 灰度接口:\n "),n("el-select",{staticStyle:{width:"250px"},attrs:{filterable:"","no-data-text":"无数据"},model:{value:t.newVersion,callback:function(n){e.$set(t,"newVersion",n)},expression:"grayRouteConfig.newVersion"}},e._l(e.getGraySelectData(t.oldRouteId),function(e){return n("el-option",{key:e.id,attrs:{label:e.name+"("+e.version+")",value:e.version}})}),1)],1)],1),e._v(" "),n("td",{staticStyle:{"vertical-align":"baseline"}},[n("el-button",{directives:[{name:"show",rawName:"v-show",value:e.grayForm.grayRouteConfigList.length>1,expression:"grayForm.grayRouteConfigList.length > 1"}],attrs:{type:"text"},on:{click:function(n){return n.preventDefault(),e.removeNameVersion(t)}}},[e._v("删除")])],1)])}),0)],1)],1)],1),e._v(" "),n("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{on:{click:function(t){e.grayDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),n("el-button",{attrs:{type:"primary"},on:{click:e.onGrayConfigSave}},[e._v("确 定")])],1)],1)],1)},i=[],o=(n("28a5"),n("ac6a"),n("7f7f"),{data:function(){var e=/^\S+(,\S+)*$/,t=function(t,n,r){""===n?r(new Error("不能为空")):(e.test(n)||r(new Error("格式不正确")),r())};return{searchFormData:{serviceId:""},blackList:["sop-gateway","sop-admin"],grayDialogVisible:!1,grayForm:{serviceId:"",userKeyContent:"",onlyUpdateGrayUserkey:!1,grayRouteConfigList:[]},tabsActiveName:"first",routeList:[],selectNameVersion:[],grayFormRules:{userKeyContent:[{required:!0,message:"不能为空",trigger:"blur"},{validator:t,trigger:"blur"}]},tableData:[]}},created:function(){this.loadTable()},methods:{loadTable:function(){this.post("service.instance.list",this.searchFormData,function(e){this.tableData=this.buildTreeData(e.data)})},loadRouteList:function(e){this.post("route.list/1.2",{serviceId:e.toLowerCase()},function(e){this.routeList=e.data})},getGraySelectData:function(e){return this.routeList.filter(function(t){return e!==t.id&&e.indexOf(t.name)>-1})},buildTreeData:function(e){return e.forEach(function(t){var n=t.parentId;0===n||e.forEach(function(e){if(e.id===n){var r=e.children;r||(r=[]),r.push(t),e.children=r}})}),e=e.filter(function(e){return 0===e.parentId}),e},onSearchTable:function(){this.loadTable()},onDisable:function(e){this.confirm("确定要禁用 ".concat(e.serviceId,"(").concat(e.ipPort,") 吗?"),function(t){this.post("service.instance.offline",e,function(){this.tip("禁用成功"),t(),this.loadTableDelay()})})},onEnable:function(e){this.confirm("确定要启用 ".concat(e.serviceId,"(").concat(e.ipPort,") 吗?"),function(t){this.post("service.instance.online",e,function(){this.tip("启用成功"),t(),this.loadTableDelay()})})},doEnvOnline:function(e,t){this.post("service.instance.env.online",e,function(){t&&t.call(this)})},onEnvPreOpen:function(e){this.confirm("确定要开启 ".concat(e.serviceId,"(").concat(e.ipPort,") 预发布吗?"),function(t){this.post("service.instance.env.pre.open",e,function(){this.tip("预发布成功"),t(),this.loadTableDelay()})})},onEnvPreClose:function(e){this.confirm("确定要结束 ".concat(e.serviceId,"(").concat(e.ipPort,") 预发布吗?"),function(t){this.doEnvOnline(e,function(){this.tip("操作成功"),t(),this.loadTableDelay()})})},onEnvGrayOpen:function(e){this.confirm("确定要开启 ".concat(e.serviceId,"(").concat(e.ipPort,") 灰度吗?"),function(t){this.post("service.instance.env.gray.open",e,function(){this.tip("开启成功"),t(),this.loadTableDelay()})})},onEnvGrayClose:function(e){this.confirm("确定要结束 ".concat(e.serviceId,"(").concat(e.ipPort,") 灰度吗?"),function(t){this.doEnvOnline(e,function(){this.tip("操作成功"),t(),this.loadTableDelay()})})},onGrayConfigUpdate:function(e){var t=e.serviceId;this.loadRouteList(t),this.post("service.gray.config.get",{serviceId:t},function(e){var n=this;this.grayDialogVisible=!0,this.$nextTick(function(){var r=e.data;Object.assign(n.grayForm,{serviceId:t,userKeyContent:r.userKeyContent||"",grayRouteConfigList:n.createGrayRouteConfigList(r.nameVersionContent)})})})},onGrayConfigSave:function(){var e=this;this.$refs.grayForm.validate(function(t){if(t){for(var n=[],r=e.grayForm.grayRouteConfigList,i=0;i=c?e?"":void 0:(i=s.charCodeAt(l),i<55296||i>56319||l+1===c||(a=s.charCodeAt(l+1))<56320||a>57343?e?s.charAt(l):i:e?s.slice(l,l+2):a-56320+(i-55296<<10)+65536)}}},"0390":function(e,t,n){"use strict";var r=n("02f4")(!0);e.exports=function(e,t,n){return t+(n?r(e,t).length:1)}},"0bfb":function(e,t,n){"use strict";var r=n("cb7c");e.exports=function(){var e=r(this),t="";return e.global&&(t+="g"),e.ignoreCase&&(t+="i"),e.multiline&&(t+="m"),e.unicode&&(t+="u"),e.sticky&&(t+="y"),t}},"214f":function(e,t,n){"use strict";n("b0c5");var r=n("2aba"),o=n("32e9"),i=n("79e5"),a=n("be13"),s=n("2b4c"),l=n("520a"),c=s("species"),u=!i(function(){var e=/./;return e.exec=function(){var e=[];return e.groups={a:"7"},e},"7"!=="".replace(e,"$")}),f=function(){var e=/(?:)/,t=e.exec;e.exec=function(){return t.apply(this,arguments)};var n="ab".split(e);return 2===n.length&&"a"===n[0]&&"b"===n[1]}();e.exports=function(e,t,n){var d=s(e),v=!i(function(){var t={};return t[d]=function(){return 7},7!=""[e](t)}),p=v?!i(function(){var t=!1,n=/a/;return n.exec=function(){return t=!0,null},"split"===e&&(n.constructor={},n.constructor[c]=function(){return n}),n[d](""),!t}):void 0;if(!v||!p||"replace"===e&&!u||"split"===e&&!f){var g=/./[d],y=n(a,d,""[e],function(e,t,n,r,o){return t.exec===l?v&&!o?{done:!0,value:g.call(t,n,r)}:{done:!0,value:e.call(n,t,r)}:{done:!1}}),h=y[0],m=y[1];r(String.prototype,e,h),o(RegExp.prototype,d,2==t?function(e,t){return m.call(e,this,t)}:function(e){return m.call(e,this)})}}},"28a5":function(e,t,n){"use strict";var r=n("aae3"),o=n("cb7c"),i=n("ebd6"),a=n("0390"),s=n("9def"),l=n("5f1b"),c=n("520a"),u=n("79e5"),f=Math.min,d=[].push,v="split",p="length",g="lastIndex",y=4294967295,h=!u(function(){RegExp(y,"y")});n("214f")("split",2,function(e,t,n,u){var m;return m="c"=="abbc"[v](/(b)*/)[1]||4!="test"[v](/(?:)/,-1)[p]||2!="ab"[v](/(?:ab)*/)[p]||4!="."[v](/(.?)(.?)/)[p]||"."[v](/()()/)[p]>1||""[v](/.?/)[p]?function(e,t){var o=String(this);if(void 0===e&&0===t)return[];if(!r(e))return n.call(o,e,t);var i,a,s,l=[],u=(e.ignoreCase?"i":"")+(e.multiline?"m":"")+(e.unicode?"u":"")+(e.sticky?"y":""),f=0,v=void 0===t?y:t>>>0,h=new RegExp(e.source,u+"g");while(i=c.call(h,o)){if(a=h[g],a>f&&(l.push(o.slice(f,i.index)),i[p]>1&&i.index=v))break;h[g]===i.index&&h[g]++}return f===o[p]?!s&&h.test("")||l.push(""):l.push(o.slice(f)),l[p]>v?l.slice(0,v):l}:"0"[v](void 0,0)[p]?function(e,t){return void 0===e&&0===t?[]:n.call(this,e,t)}:n,[function(n,r){var o=e(this),i=void 0==n?void 0:n[t];return void 0!==i?i.call(n,o,r):m.call(String(o),n,r)},function(e,t){var r=u(m,e,this,t,m!==n);if(r.done)return r.value;var c=o(e),d=String(this),v=i(c,RegExp),p=c.unicode,g=(c.ignoreCase?"i":"")+(c.multiline?"m":"")+(c.unicode?"u":"")+(h?"y":"g"),b=new v(h?c:"^(?:"+c.source+")",g),_=void 0===t?y:t>>>0;if(0===_)return[];if(0===d.length)return null===l(b,d)?[d]:[];var w=0,x=0,I=[];while(x1&&i.call(a[0],n,function(){for(u=1;u0&&"pre"===t.row.metadata.env?n("el-tag",{attrs:{type:"warning"}},[e._v("预发布")]):e._e(),e._v(" "),t.row.parentId>0&&"gray"===t.row.metadata.env?n("el-tag",{attrs:{type:"info"}},[e._v("灰度")]):e._e(),e._v(" "),t.row.parentId>0&&!t.row.metadata.env?n("el-tag",{attrs:{type:"success"}},[e._v("线上")]):e._e()],1):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"metadata",label:"metadata",width:"250"},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.parentId>0?n("span",[e._v(e._s(JSON.stringify(t.row.metadata)))]):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{prop:"status",label:"服务状态",width:"100"},scopedSlots:e._u([{key:"default",fn:function(t){return[t.row.parentId>0&&"UP"===t.row.status?n("el-tag",{attrs:{type:"success"}},[e._v("正常")]):e._e(),e._v(" "),t.row.parentId>0&&"STARTING"===t.row.status?n("el-tag",{attrs:{type:"info"}},[e._v("正在启动")]):e._e(),e._v(" "),t.row.parentId>0&&"UNKNOWN"===t.row.status?n("el-tag",[e._v("未知")]):e._e(),e._v(" "),t.row.parentId>0&&("OUT_OF_SERVICE"===t.row.status||"DOWN"===t.row.status)?n("el-tag",{attrs:{type:"danger"}},[e._v("已禁用")]):e._e()]}}])}),e._v(" "),n("el-table-column",{attrs:{label:"操作",width:"250"},scopedSlots:e._u([{key:"default",fn:function(t){return[e.blackList.indexOf(t.row.serviceId.toLowerCase())<0?n("div",[0===t.row.parentId?n("div",[n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onGrayConfigUpdate(t.row)}}},[e._v("设置灰度参数")])],1):e._e(),e._v(" "),t.row.parentId>0?n("div",["UP"===t.row.status?n("span",["pre"===t.row.metadata.env?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvPreClose(t.row)}}},[e._v("结束预发布")]):e._e(),e._v(" "),"gray"===t.row.metadata.env?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvGrayClose(t.row)}}},[e._v("结束灰度")]):e._e(),e._v(" "),t.row.metadata.env?e._e():n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvPreOpen(t.row)}}},[e._v("开启预发布")]),e._v(" "),t.row.metadata.env?e._e():n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnvGrayOpen(t.row)}}},[e._v("开启灰度")])],1):e._e(),e._v(" "),n("span",{staticStyle:{"margin-left":"10px"}},["UP"===t.row.status?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onDisable(t.row)}}},[e._v("禁用")]):e._e(),e._v(" "),"OUT_OF_SERVICE"===t.row.status?n("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(n){return e.onEnable(t.row)}}},[e._v("启用")]):e._e()],1)]):e._e()]):e._e()]}}])})],1),e._v(" "),n("el-dialog",{attrs:{title:"灰度设置",visible:e.grayDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.grayDialogVisible=t},close:function(t){return e.resetForm("grayForm")}}},[n("el-form",{ref:"grayForm",attrs:{model:e.grayForm,rules:e.grayFormRules,size:"mini"}},[n("el-form-item",{attrs:{label:"serviceId"}},[e._v("\n "+e._s(e.grayForm.serviceId)+"\n ")]),e._v(" "),n("el-tabs",{attrs:{type:"card"},model:{value:e.tabsActiveName,callback:function(t){e.tabsActiveName=t},expression:"tabsActiveName"}},[n("el-tab-pane",{attrs:{label:"灰度用户",name:"first"}},[n("el-alert",{staticStyle:{"margin-bottom":"20px"},attrs:{title:"可以是appId或IP地址,多个用英文逗号隔开",type:"info",closable:!1}}),e._v(" "),n("el-form-item",{attrs:{prop:"userKeyContent"}},[n("el-input",{attrs:{placeholder:"可以是appId或IP地址,多个用英文逗号隔开",type:"textarea",rows:6},model:{value:e.grayForm.userKeyContent,callback:function(t){e.$set(e.grayForm,"userKeyContent",t)},expression:"grayForm.userKeyContent"}})],1)],1),e._v(" "),n("el-tab-pane",{attrs:{label:"接口配置",name:"second"}},[n("el-form-item",[n("el-button",{attrs:{type:"text"},on:{click:e.addNameVersion}},[e._v("新增灰度接口")])],1),e._v(" "),n("table",{attrs:{cellpadding:"0",cellspacing:"0"}},e._l(e.grayForm.grayRouteConfigList,function(t,r){return n("tr",{key:t.key},[n("td",[n("el-form-item",{key:t.key,attrs:{prop:"grayRouteConfigList."+r+".oldRouteId",rules:{required:!0,message:"不能为空",trigger:["blur","change"]}}},[e._v("\n 老接口:\n "),n("el-select",{staticStyle:{"margin-right":"10px"},on:{change:function(n){return e.onChangeOldRoute(t)}},model:{value:t.oldRouteId,callback:function(n){e.$set(t,"oldRouteId",n)},expression:"grayRouteConfig.oldRouteId"}},e._l(e.routeList,function(e){return n("el-option",{key:e.id,attrs:{label:e.name+"("+e.version+")",value:e.id}})}),1)],1)],1),e._v(" "),n("td",[n("el-form-item",{key:t.key+1,attrs:{prop:"grayRouteConfigList."+r+".newVersion",rules:{required:!0,message:"不能为空",trigger:["blur","change"]}}},[e._v("\n 灰度接口:\n "),n("el-select",{attrs:{"no-data-text":"无数据"},model:{value:t.newVersion,callback:function(n){e.$set(t,"newVersion",n)},expression:"grayRouteConfig.newVersion"}},e._l(e.getGraySelectData(t.oldRouteId),function(e){return n("el-option",{key:e.id,attrs:{label:e.name+"("+e.version+")",value:e.version}})}),1)],1)],1),e._v(" "),n("td",{staticStyle:{"vertical-align":"baseline"}},[n("el-button",{directives:[{name:"show",rawName:"v-show",value:e.grayForm.grayRouteConfigList.length>1,expression:"grayForm.grayRouteConfigList.length > 1"}],attrs:{type:"text"},on:{click:function(n){return n.preventDefault(),e.removeNameVersion(t)}}},[e._v("删除")])],1)])}),0)],1)],1)],1),e._v(" "),n("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[n("el-button",{on:{click:function(t){e.grayDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),n("el-button",{attrs:{type:"primary"},on:{click:e.onGrayConfigSave}},[e._v("确 定")])],1)],1)],1)},o=[],i=(n("28a5"),n("ac6a"),n("7f7f"),{data:function(){var e=/^\S+(,\S+)*$/,t=function(t,n,r){""===n?r(new Error("不能为空")):(e.test(n)||r(new Error("格式不正确")),r())};return{searchFormData:{serviceId:""},blackList:["sop-gateway","sop-admin"],grayDialogVisible:!1,grayForm:{serviceId:"",userKeyContent:"",onlyUpdateGrayUserkey:!1,grayRouteConfigList:[]},tabsActiveName:"first",routeList:[],selectNameVersion:[],grayFormRules:{userKeyContent:[{required:!0,message:"不能为空",trigger:"blur"},{validator:t,trigger:"blur"}]},tableData:[]}},created:function(){this.loadTable()},methods:{loadTable:function(){this.post("service.instance.list",this.searchFormData,function(e){this.tableData=this.buildTreeData(e.data)})},loadRouteList:function(e){this.post("route.list/1.2",{serviceId:e.toLowerCase()},function(e){this.routeList=e.data})},getGraySelectData:function(e){return this.routeList.filter(function(t){return e!==t.id&&e.indexOf(t.name)>-1})},buildTreeData:function(e){return e.forEach(function(t){var n=t.parentId;0===n||e.forEach(function(e){if(e.id===n){var r=e.children;r||(r=[]),r.push(t),e.children=r}})}),e=e.filter(function(e){return 0===e.parentId}),e},onSearchTable:function(){this.loadTable()},onDisable:function(e){this.confirm("确定要禁用 ".concat(e.serviceId,"(").concat(e.ipPort,") 吗?"),function(t){this.post("service.instance.offline",e,function(){this.tip("禁用成功"),t(),this.loadTableDelay()})})},onEnable:function(e){this.confirm("确定要启用 ".concat(e.serviceId,"(").concat(e.ipPort,") 吗?"),function(t){this.post("service.instance.online",e,function(){this.tip("启用成功"),t(),this.loadTableDelay()})})},doEnvOnline:function(e,t){this.post("service.instance.env.online",e,function(){t&&t.call(this)})},onEnvPreOpen:function(e){this.confirm("确定要开启 ".concat(e.serviceId,"(").concat(e.ipPort,") 预发布吗?"),function(t){this.post("service.instance.env.pre.open",e,function(){this.tip("预发布成功"),t(),this.loadTableDelay()})})},onEnvPreClose:function(e){this.confirm("确定要结束 ".concat(e.serviceId,"(").concat(e.ipPort,") 预发布吗?"),function(t){this.doEnvOnline(e,function(){this.tip("操作成功"),t(),this.loadTableDelay()})})},onEnvGrayOpen:function(e){this.confirm("确定要开启 ".concat(e.serviceId,"(").concat(e.ipPort,") 灰度吗?"),function(t){this.post("service.instance.env.gray.open",e,function(){this.tip("开启成功"),t(),this.loadTableDelay()})})},onEnvGrayClose:function(e){this.confirm("确定要结束 ".concat(e.serviceId,"(").concat(e.ipPort,") 灰度吗?"),function(t){this.doEnvOnline(e,function(){this.tip("操作成功"),t(),this.loadTableDelay()})})},onGrayConfigUpdate:function(e){var t=e.serviceId;this.loadRouteList(t),this.post("service.gray.config.get",{serviceId:t},function(e){var n=this;this.grayDialogVisible=!0,this.$nextTick(function(){var r=e.data;Object.assign(n.grayForm,{serviceId:t,userKeyContent:r.userKeyContent||"",grayRouteConfigList:n.createGrayRouteConfigList(r.nameVersionContent)})})})},onGrayConfigSave:function(){var e=this;this.$refs.grayForm.validate(function(t){if(t){for(var n=[],r=e.grayForm.grayRouteConfigList,o=0;o - - @@ -281,6 +272,20 @@ export default { onKeysUpdate: function(row) { this.$router.push({ path: `keys?appKey=${row.appKey}` }) }, + onExportKeys: function(row) { + this.post('isv.keys.get', { appKey: row.appKey }, function(resp) { + const data = resp.data + const appId = data.appKey + const privateKeyIsv = data.privateKeyIsv + const publicKeyPlatform = data.publicKeyPlatform + let content = `AppId:${appId}\n\n开发者私钥:\n${privateKeyIsv}\n\n` + if (publicKeyPlatform) { + content = content + `平台公钥:\n${publicKeyPlatform}` + } + const filename = `${appId}.txt` + this.downloadText(filename, content) + }) + }, onSizeChange: function(size) { this.searchFormData.pageSize = size this.loadTable() diff --git a/sop-admin/sop-admin-vue/src/views/service/limit.vue b/sop-admin/sop-admin-vue/src/views/service/limit.vue index fb745dc9..ea8ea78c 100644 --- a/sop-admin/sop-admin-vue/src/views/service/limit.vue +++ b/sop-admin/sop-admin-vue/src/views/service/limit.vue @@ -1,229 +1,215 @@ + + - - - - - - - - - - - - - - - - - - - - - - + 限流策略 + +
+

窗口策略:每秒处理固定数量的请求,超出请求数量返回错误信息。

+

令牌桶策略:每秒放置固定数量的令牌数,每个请求进来后先去拿令牌,拿到了令牌才能继续,拿不到则等候令牌重新生成了再拿。

+
+
+ + + +
+ + + + + + + + + - - + - + 修改 + + + + + + + + + + + 路由ID + AppId + IP + + + + + + {{ item.name }} + {{ item.version }} + + + + + + + + + + + + 窗口策略 + 令牌桶策略 + + +
+

窗口策略:每秒处理固定数量的请求,超出请求数量返回错误信息。

+

令牌桶策略:每秒放置固定数量的令牌数,每个请求进来后先去拿令牌,拿到了令牌才能继续,拿不到则等候令牌重新生成了再拿。

+
+
+ +
+ + - - - 路由ID - AppId - IP - - - - - - {{ item.name }} - {{ item.version }} - - - - - - - - - - - - 窗口策略 - 令牌桶策略 - - - - - - - - - - - - - - - 每 秒可处理 - 个请求 - - - - - - - -
- -
- - + + + + + 值小优先执行 + + + 每 秒可处理 + 个请求 + + + + + + + + + +
diff --git a/sop-admin/sop-admin-vue/src/views/service/monitor.vue b/sop-admin/sop-admin-vue/src/views/service/monitor.vue index 363981fe..3d21271d 100644 --- a/sop-admin/sop-admin-vue/src/views/service/monitor.vue +++ b/sop-admin/sop-admin-vue/src/views/service/monitor.vue @@ -54,11 +54,9 @@ >
+ + - -
- - - - {{ data.label }} - - - {{ data.label.substring(0, serviceTextLimitSize) + '...' }} - - -
- - + +
+ + + + - 新建路由 - - + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + \ No newline at end of file +SOP Admin
\ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.00a89f91.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.00a89f91.js new file mode 100644 index 00000000..ec7da7fb --- /dev/null +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.00a89f91.js @@ -0,0 +1 @@ +(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-25908fca"],{"021d":function(e,t,a){},"0bac":function(e,t,a){"use strict";var s=a("021d"),i=a.n(s);i.a},cb56:function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-form",{staticClass:"demo-form-inline",attrs:{inline:!0,model:e.searchFormData,size:"mini"}},[a("el-form-item",{attrs:{label:"appId"}},[a("el-input",{staticStyle:{width:"250px"},attrs:{clearable:!0,placeholder:"appId"},model:{value:e.searchFormData.appKey,callback:function(t){e.$set(e.searchFormData,"appKey",t)},expression:"searchFormData.appKey"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary",icon:"el-icon-search"},on:{click:e.onSearchTable}},[e._v("查询")])],1)],1),e._v(" "),a("el-button",{staticStyle:{"margin-bottom":"10px"},attrs:{type:"primary",size:"mini",icon:"el-icon-plus"},on:{click:e.onAdd}},[e._v("新增ISV")]),e._v(" "),a("el-table",{attrs:{data:e.pageInfo.list,border:"",fit:"","highlight-current-row":""}},[a("el-table-column",{attrs:{prop:"appKey",label:"AppId",width:"250"}}),e._v(" "),a("el-table-column",{attrs:{prop:"",label:"秘钥",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onShowKeys(t.row)}}},[e._v("查看")])]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"roleList",label:"角色",width:"150","show-overflow-tooltip":!0},scopedSlots:e._u([{key:"default",fn:function(t){return[a("span",{domProps:{innerHTML:e._s(e.roleRender(t.row))}})]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"status",label:"状态",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.status?a("span",{staticStyle:{color:"#67C23A"}},[e._v("启用")]):e._e(),e._v(" "),2===t.row.status?a("span",{staticStyle:{color:"#F56C6C"}},[e._v("禁用")]):e._e()]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"gmtCreate",label:"添加时间",width:"160"}}),e._v(" "),a("el-table-column",{attrs:{prop:"remark",label:"备注",width:"200","show-overflow-tooltip":!0}}),e._v(" "),a("el-table-column",{attrs:{label:"操作",width:"200"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onTableUpdate(t.row)}}},[e._v("修改")]),e._v(" "),a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onKeysUpdate(t.row)}}},[e._v("秘钥管理")]),e._v(" "),a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onExportKeys(t.row)}}},[e._v("导出秘钥")])]}}])})],1),e._v(" "),a("el-pagination",{staticStyle:{"margin-top":"5px"},attrs:{background:"","current-page":e.searchFormData.pageIndex,"page-size":e.searchFormData.pageSize,"page-sizes":[5,10,20,40],total:e.pageInfo.total,layout:"total, sizes, prev, pager, next"},on:{"size-change":e.onSizeChange,"current-change":e.onPageIndexChange}}),e._v(" "),a("el-dialog",{attrs:{title:e.isvDialogTitle,visible:e.isvDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.isvDialogVisible=t},close:e.onIsvDialogClose}},[a("el-form",{ref:"isvForm",attrs:{rules:e.rulesIsvForm,model:e.isvDialogFormData,"label-width":"120px",size:"mini"}},[a("el-form-item",{attrs:{label:"appId"}},[0===e.isvDialogFormData.id?a("span",{staticStyle:{color:"gray"}},[e._v("(系统自动生成)")]):a("span",[e._v(e._s(e.isvDialogFormData.appKey))])]),e._v(" "),a("el-form-item",{attrs:{label:"角色"}},[a("el-checkbox-group",{model:{value:e.isvDialogFormData.roleCode,callback:function(t){e.$set(e.isvDialogFormData,"roleCode",t)},expression:"isvDialogFormData.roleCode"}},e._l(e.roles,function(t){return a("el-checkbox",{key:t.roleCode,attrs:{label:t.roleCode}},[e._v(e._s(t.description))])}),1)],1),e._v(" "),a("el-form-item",{attrs:{label:"备注",prop:"remark"}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.isvDialogFormData.remark,callback:function(t){e.$set(e.isvDialogFormData,"remark",t)},expression:"isvDialogFormData.remark"}})],1),e._v(" "),a("el-form-item",{attrs:{label:"状态"}},[a("el-radio-group",{model:{value:e.isvDialogFormData.status,callback:function(t){e.$set(e.isvDialogFormData,"status",t)},expression:"isvDialogFormData.status"}},[a("el-radio",{attrs:{label:1,name:"status"}},[e._v("启用")]),e._v(" "),a("el-radio",{attrs:{label:2,name:"status"}},[e._v("禁用")])],1)],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.isvDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary",disabled:e.isSaveButtonDisabled},on:{click:e.onIsvDialogSave}},[e._v("保 存")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"秘钥信息",visible:e.isvKeysDialogVisible},on:{"update:visible":function(t){e.isvKeysDialogVisible=t},close:function(t){return e.resetForm("isvKeysFrom")}}},[a("el-form",{ref:"isvKeysFrom",staticClass:"key-view",attrs:{model:e.isvKeysFormData,"label-width":"160px",size:"mini"}},[a("el-form-item",{attrs:{label:""}},[a("el-alert",{attrs:{title:"带 ★ 的分配给开发者",type:"warning",closable:!1}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("appId")}},[a("span",[e._v(e._s(e.isvKeysFormData.appKey))])]),e._v(" "),a("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}],attrs:{label:"秘钥格式"}},[1===e.isvKeysFormData.keyFormat?a("span",[e._v("PKCS8(JAVA适用)")]):e._e(),e._v(" "),2===e.isvKeysFormData.keyFormat?a("span",[e._v("PKCS1(非JAVA适用)")]):e._e()]),e._v(" "),a("el-form-item",{directives:[{name:"show",rawName:"v-show",value:2===e.isvKeysFormData.signType,expression:"isvKeysFormData.signType === 2"}],attrs:{label:e.selfLabel("secret")}},[a("span",[e._v(e._s(e.isvKeysFormData.secret))])]),e._v(" "),a("el-tabs",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}],staticClass:"keyTabs",attrs:{type:"card"},model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[a("el-tab-pane",{attrs:{label:"ISV公私钥",name:"first"}},[a("el-form-item",{attrs:{label:"ISV公钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.publicKeyIsv,callback:function(t){e.$set(e.isvKeysFormData,"publicKeyIsv",t)},expression:"isvKeysFormData.publicKeyIsv"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("ISV私钥")}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.privateKeyIsv,callback:function(t){e.$set(e.isvKeysFormData,"privateKeyIsv",t)},expression:"isvKeysFormData.privateKeyIsv"}})],1)],1),e._v(" "),a("el-tab-pane",{attrs:{label:"平台公私钥[可选]",name:"second"}},[a("el-form-item",{attrs:{label:"平台公钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.publicKeyPlatform,callback:function(t){e.$set(e.isvKeysFormData,"publicKeyPlatform",t)},expression:"isvKeysFormData.publicKeyPlatform"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"privateKeyPlatform",label:"平台私钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.privateKeyPlatform,callback:function(t){e.$set(e.isvKeysFormData,"privateKeyPlatform",t)},expression:"isvKeysFormData.privateKeyPlatform"}})],1)],1)],1)],1),e._v(" "),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.isvKeysDialogVisible=!1}}},[e._v("关 闭")])],1)],1)],1)},i=[],o={data:function(){return{searchFormData:{appKey:"",pageIndex:1,pageSize:10},pageInfo:{list:[],total:0},roles:[],isvDialogVisible:!1,isvDialogTitle:"新增ISV",isvDialogFormData:{id:0,status:1,remark:"",roleCode:[]},rulesIsvForm:{remark:[{min:0,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}]},activeName:"first",isSaveButtonDisabled:!1,isvKeysDialogVisible:!1,isvKeysFormData:{appKey:"",secret:"",publicKeyIsv:"",privateKeyIsv:"",publicKeyPlatform:"",privateKeyPlatform:"",signType:""}}},created:function(){this.loadTable(),this.loadRouteRole()},methods:{loadTable:function(){this.post("isv.info.page",this.searchFormData,function(e){this.pageInfo=e.data})},loadRouteRole:function(){0===this.roles.length&&this.post("role.listall",{},function(e){this.roles=e.data})},onShowKeys:function(e){this.post("isv.keys.get",{appKey:e.appKey},function(e){var t=this;this.isvKeysDialogVisible=!0,this.$nextTick(function(){Object.assign(t.isvKeysFormData,e.data)})})},onSearchTable:function(){this.loadTable()},onTableUpdate:function(e){var t=this;this.isvDialogTitle="修改ISV",this.isvDialogVisible=!0,this.$nextTick(function(){t.post("isv.info.get",{id:e.id},function(e){for(var t=e.data,a=t.roleList,s=[],i=0;i
Date: Thu, 15 Oct 2020 09:38:47 +0800 Subject: [PATCH 04/35] 4.0.3 --- sop-example/sop-story/.gitignore | 25 +++++++++++++++++++++++++ sop-test/.gitignore | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 sop-example/sop-story/.gitignore create mode 100644 sop-test/.gitignore diff --git a/sop-example/sop-story/.gitignore b/sop-example/sop-story/.gitignore new file mode 100644 index 00000000..18ccf36e --- /dev/null +++ b/sop-example/sop-story/.gitignore @@ -0,0 +1,25 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ +/local-config/ diff --git a/sop-test/.gitignore b/sop-test/.gitignore new file mode 100644 index 00000000..18ccf36e --- /dev/null +++ b/sop-test/.gitignore @@ -0,0 +1,25 @@ +target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +nbproject/private/ +build/ +nbbuild/ +dist/ +nbdist/ +.nb-gradle/ +/local-config/ From 65342b54ee05ce27b54af397f620ef888443d6de Mon Sep 17 00:00:00 2001 From: tanghc Date: Thu, 15 Oct 2020 15:24:57 +0800 Subject: [PATCH 05/35] 4.0.3 --- .../sop-admin-server/src/main/resources/public/index.html | 2 +- ...{chunk-25908fca.00a89f91.js => chunk-25908fca.eac43cde.js} | 2 +- sop-admin/sop-admin-vue/src/views/isv/index.vue | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) rename sop-admin/sop-admin-server/src/main/resources/public/static/js/{chunk-25908fca.00a89f91.js => chunk-25908fca.eac43cde.js} (98%) diff --git a/sop-admin/sop-admin-server/src/main/resources/public/index.html b/sop-admin/sop-admin-server/src/main/resources/public/index.html index 9fa8ddfb..661b755c 100644 --- a/sop-admin/sop-admin-server/src/main/resources/public/index.html +++ b/sop-admin/sop-admin-server/src/main/resources/public/index.html @@ -1 +1 @@ -SOP Admin
\ No newline at end of file +SOP Admin
\ No newline at end of file diff --git a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.00a89f91.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.eac43cde.js similarity index 98% rename from sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.00a89f91.js rename to sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.eac43cde.js index ec7da7fb..ae542f28 100644 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.00a89f91.js +++ b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.eac43cde.js @@ -1 +1 @@ -(window["webpackJsonp"]=window["webpackJsonp"]||[]).push([["chunk-25908fca"],{"021d":function(e,t,a){},"0bac":function(e,t,a){"use strict";var s=a("021d"),i=a.n(s);i.a},cb56:function(e,t,a){"use strict";a.r(t);var s=function(){var e=this,t=e.$createElement,a=e._self._c||t;return a("div",{staticClass:"app-container"},[a("el-form",{staticClass:"demo-form-inline",attrs:{inline:!0,model:e.searchFormData,size:"mini"}},[a("el-form-item",{attrs:{label:"appId"}},[a("el-input",{staticStyle:{width:"250px"},attrs:{clearable:!0,placeholder:"appId"},model:{value:e.searchFormData.appKey,callback:function(t){e.$set(e.searchFormData,"appKey",t)},expression:"searchFormData.appKey"}})],1),e._v(" "),a("el-form-item",[a("el-button",{attrs:{type:"primary",icon:"el-icon-search"},on:{click:e.onSearchTable}},[e._v("查询")])],1)],1),e._v(" "),a("el-button",{staticStyle:{"margin-bottom":"10px"},attrs:{type:"primary",size:"mini",icon:"el-icon-plus"},on:{click:e.onAdd}},[e._v("新增ISV")]),e._v(" "),a("el-table",{attrs:{data:e.pageInfo.list,border:"",fit:"","highlight-current-row":""}},[a("el-table-column",{attrs:{prop:"appKey",label:"AppId",width:"250"}}),e._v(" "),a("el-table-column",{attrs:{prop:"",label:"秘钥",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onShowKeys(t.row)}}},[e._v("查看")])]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"roleList",label:"角色",width:"150","show-overflow-tooltip":!0},scopedSlots:e._u([{key:"default",fn:function(t){return[a("span",{domProps:{innerHTML:e._s(e.roleRender(t.row))}})]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"status",label:"状态",width:"80"},scopedSlots:e._u([{key:"default",fn:function(t){return[1===t.row.status?a("span",{staticStyle:{color:"#67C23A"}},[e._v("启用")]):e._e(),e._v(" "),2===t.row.status?a("span",{staticStyle:{color:"#F56C6C"}},[e._v("禁用")]):e._e()]}}])}),e._v(" "),a("el-table-column",{attrs:{prop:"gmtCreate",label:"添加时间",width:"160"}}),e._v(" "),a("el-table-column",{attrs:{prop:"remark",label:"备注",width:"200","show-overflow-tooltip":!0}}),e._v(" "),a("el-table-column",{attrs:{label:"操作",width:"200"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onTableUpdate(t.row)}}},[e._v("修改")]),e._v(" "),a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onKeysUpdate(t.row)}}},[e._v("秘钥管理")]),e._v(" "),a("el-button",{attrs:{type:"text",size:"mini"},on:{click:function(a){return e.onExportKeys(t.row)}}},[e._v("导出秘钥")])]}}])})],1),e._v(" "),a("el-pagination",{staticStyle:{"margin-top":"5px"},attrs:{background:"","current-page":e.searchFormData.pageIndex,"page-size":e.searchFormData.pageSize,"page-sizes":[5,10,20,40],total:e.pageInfo.total,layout:"total, sizes, prev, pager, next"},on:{"size-change":e.onSizeChange,"current-change":e.onPageIndexChange}}),e._v(" "),a("el-dialog",{attrs:{title:e.isvDialogTitle,visible:e.isvDialogVisible,"close-on-click-modal":!1},on:{"update:visible":function(t){e.isvDialogVisible=t},close:e.onIsvDialogClose}},[a("el-form",{ref:"isvForm",attrs:{rules:e.rulesIsvForm,model:e.isvDialogFormData,"label-width":"120px",size:"mini"}},[a("el-form-item",{attrs:{label:"appId"}},[0===e.isvDialogFormData.id?a("span",{staticStyle:{color:"gray"}},[e._v("(系统自动生成)")]):a("span",[e._v(e._s(e.isvDialogFormData.appKey))])]),e._v(" "),a("el-form-item",{attrs:{label:"角色"}},[a("el-checkbox-group",{model:{value:e.isvDialogFormData.roleCode,callback:function(t){e.$set(e.isvDialogFormData,"roleCode",t)},expression:"isvDialogFormData.roleCode"}},e._l(e.roles,function(t){return a("el-checkbox",{key:t.roleCode,attrs:{label:t.roleCode}},[e._v(e._s(t.description))])}),1)],1),e._v(" "),a("el-form-item",{attrs:{label:"备注",prop:"remark"}},[a("el-input",{attrs:{type:"textarea"},model:{value:e.isvDialogFormData.remark,callback:function(t){e.$set(e.isvDialogFormData,"remark",t)},expression:"isvDialogFormData.remark"}})],1),e._v(" "),a("el-form-item",{attrs:{label:"状态"}},[a("el-radio-group",{model:{value:e.isvDialogFormData.status,callback:function(t){e.$set(e.isvDialogFormData,"status",t)},expression:"isvDialogFormData.status"}},[a("el-radio",{attrs:{label:1,name:"status"}},[e._v("启用")]),e._v(" "),a("el-radio",{attrs:{label:2,name:"status"}},[e._v("禁用")])],1)],1)],1),e._v(" "),a("div",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.isvDialogVisible=!1}}},[e._v("取 消")]),e._v(" "),a("el-button",{attrs:{type:"primary",disabled:e.isSaveButtonDisabled},on:{click:e.onIsvDialogSave}},[e._v("保 存")])],1)],1),e._v(" "),a("el-dialog",{attrs:{title:"秘钥信息",visible:e.isvKeysDialogVisible},on:{"update:visible":function(t){e.isvKeysDialogVisible=t},close:function(t){return e.resetForm("isvKeysFrom")}}},[a("el-form",{ref:"isvKeysFrom",staticClass:"key-view",attrs:{model:e.isvKeysFormData,"label-width":"160px",size:"mini"}},[a("el-form-item",{attrs:{label:""}},[a("el-alert",{attrs:{title:"带 ★ 的分配给开发者",type:"warning",closable:!1}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("appId")}},[a("span",[e._v(e._s(e.isvKeysFormData.appKey))])]),e._v(" "),a("el-form-item",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}],attrs:{label:"秘钥格式"}},[1===e.isvKeysFormData.keyFormat?a("span",[e._v("PKCS8(JAVA适用)")]):e._e(),e._v(" "),2===e.isvKeysFormData.keyFormat?a("span",[e._v("PKCS1(非JAVA适用)")]):e._e()]),e._v(" "),a("el-form-item",{directives:[{name:"show",rawName:"v-show",value:2===e.isvKeysFormData.signType,expression:"isvKeysFormData.signType === 2"}],attrs:{label:e.selfLabel("secret")}},[a("span",[e._v(e._s(e.isvKeysFormData.secret))])]),e._v(" "),a("el-tabs",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}],staticClass:"keyTabs",attrs:{type:"card"},model:{value:e.activeName,callback:function(t){e.activeName=t},expression:"activeName"}},[a("el-tab-pane",{attrs:{label:"ISV公私钥",name:"first"}},[a("el-form-item",{attrs:{label:"ISV公钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.publicKeyIsv,callback:function(t){e.$set(e.isvKeysFormData,"publicKeyIsv",t)},expression:"isvKeysFormData.publicKeyIsv"}})],1),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("ISV私钥")}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.privateKeyIsv,callback:function(t){e.$set(e.isvKeysFormData,"privateKeyIsv",t)},expression:"isvKeysFormData.privateKeyIsv"}})],1)],1),e._v(" "),a("el-tab-pane",{attrs:{label:"平台公私钥[可选]",name:"second"}},[a("el-form-item",{attrs:{label:"平台公钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.publicKeyPlatform,callback:function(t){e.$set(e.isvKeysFormData,"publicKeyPlatform",t)},expression:"isvKeysFormData.publicKeyPlatform"}})],1),e._v(" "),a("el-form-item",{attrs:{prop:"privateKeyPlatform",label:"平台私钥"}},[a("el-input",{attrs:{type:"textarea",readonly:""},model:{value:e.isvKeysFormData.privateKeyPlatform,callback:function(t){e.$set(e.isvKeysFormData,"privateKeyPlatform",t)},expression:"isvKeysFormData.privateKeyPlatform"}})],1)],1)],1)],1),e._v(" "),a("span",{staticClass:"dialog-footer",attrs:{slot:"footer"},slot:"footer"},[a("el-button",{on:{click:function(t){e.isvKeysDialogVisible=!1}}},[e._v("关 闭")])],1)],1)],1)},i=[],o={data:function(){return{searchFormData:{appKey:"",pageIndex:1,pageSize:10},pageInfo:{list:[],total:0},roles:[],isvDialogVisible:!1,isvDialogTitle:"新增ISV",isvDialogFormData:{id:0,status:1,remark:"",roleCode:[]},rulesIsvForm:{remark:[{min:0,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}]},activeName:"first",isSaveButtonDisabled:!1,isvKeysDialogVisible:!1,isvKeysFormData:{appKey:"",secret:"",publicKeyIsv:"",privateKeyIsv:"",publicKeyPlatform:"",privateKeyPlatform:"",signType:""}}},created:function(){this.loadTable(),this.loadRouteRole()},methods:{loadTable:function(){this.post("isv.info.page",this.searchFormData,function(e){this.pageInfo=e.data})},loadRouteRole:function(){0===this.roles.length&&this.post("role.listall",{},function(e){this.roles=e.data})},onShowKeys:function(e){this.post("isv.keys.get",{appKey:e.appKey},function(e){var t=this;this.isvKeysDialogVisible=!0,this.$nextTick(function(){Object.assign(t.isvKeysFormData,e.data)})})},onSearchTable:function(){this.loadTable()},onTableUpdate:function(e){var t=this;this.isvDialogTitle="修改ISV",this.isvDialogVisible=!0,this.$nextTick(function(){t.post("isv.info.get",{id:e.id},function(e){for(var t=e.data,a=t.roleList,s=[],i=0;i
- - + + 查询 From 9ea56260745a09b4b8845bc822ab9cc6ec84490c Mon Sep 17 00:00:00 2001 From: tanghc Date: Thu, 15 Oct 2020 20:16:24 +0800 Subject: [PATCH 06/35] 4.0.3 --- .../controller/Example1001_BaseController.java | 17 ++++++++++++++++- .../java/com/gitee/sop/test/AllInOneTest.java | 16 ++++++++++++++++ 2 files changed, 32 insertions(+), 1 deletion(-) diff --git a/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java b/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java index 42747c1e..7e70af33 100644 --- a/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java +++ b/sop-example/sop-story/src/main/java/com/gitee/sop/storyweb/controller/Example1001_BaseController.java @@ -22,9 +22,11 @@ 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.RequestMapping; -import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RestController; +import org.springframework.web.context.request.RequestContextHolder; +import org.springframework.web.context.request.ServletRequestAttributes; +import javax.servlet.http.HttpServletRequest; import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.Arrays; @@ -135,6 +137,19 @@ public class Example1001_BaseController { return testResult; } + // 获取header + @Open(value = "test.head",version = "1.0") + @GetMapping("/get/header/v1") + public StoryResult header(@RequestBody StoryParam story, HttpServletRequest request) { + HttpServletRequest servletRequest = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest(); + StoryResult storyResult = new StoryResult(); + storyResult.setId(1L); + storyResult.setName(story.getName() + + ", token1:" + request.getHeader("token") + + ", token2:" + servletRequest.getHeader("token")); + return storyResult; + } + // 返回数组结果 @ApiOperation(value = "返回数组结果(第二)", notes = "返回数组结果", position = -99) @Open("story.list") diff --git a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java index 266ee47e..78e9a3d3 100644 --- a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java +++ b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java @@ -218,6 +218,22 @@ public class AllInOneTest extends TestBase { client.execute(requestBuilder); } + /** + * 传递header + */ + public void testHeader() { + Map header = new HashMap<>(8); + header.put("token", "aaaabbbb"); + Client.RequestBuilder requestBuilder = new Client.RequestBuilder() + .method("test.head") + .version("1.0") + .header(header) + .bizContent(new BizContent().add("id", "1").add("name", "葫芦娃")) + .httpMethod(HttpTool.HTTPMethod.GET); + + client.execute(requestBuilder); + } + /** * 测试post提交大文本内容 * @throws IOException From af69ccb730ec37e2629fee2aeb5065c8cb55cebb Mon Sep 17 00:00:00 2001 From: tanghc Date: Fri, 16 Oct 2020 13:42:09 +0800 Subject: [PATCH 07/35] 4.0.3 --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 504688de..d1469907 100644 --- a/README.md +++ b/README.md @@ -105,9 +105,9 @@ System.out.println(responseData); ![服务列表](https://images.gitee.com/uploads/images/2019/0711/174825_2856281f_332975.png "服务列表") -![路由管理](https://images.gitee.com/uploads/images/2019/0711/174843_1648591c_332975.png "路由管理") +![路由管理](https://images.gitee.com/uploads/images/2020/1016/134039_bed1608d_332975.png "route.png") -![限流管理](https://images.gitee.com/uploads/images/2019/0711/174900_9315cc8e_332975.png "限流管理") +![限流管理](https://images.gitee.com/uploads/images/2020/1016/134102_f2dcfb25_332975.png "limit.png") ![秘钥信息](https://images.gitee.com/uploads/images/2019/0711/174921_bd817533_332975.png "秘钥信息") From c2489e4d7edb4944050d2588e534e3c8bfa4247b Mon Sep 17 00:00:00 2001 From: tanghc Date: Fri, 16 Oct 2020 13:44:47 +0800 Subject: [PATCH 08/35] 4.0.3 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index d1469907..1ee3b8dd 100644 --- a/README.md +++ b/README.md @@ -103,7 +103,7 @@ System.out.println(responseData); ## 界面预览 -![服务列表](https://images.gitee.com/uploads/images/2019/0711/174825_2856281f_332975.png "服务列表") +![服务列表](https://images.gitee.com/uploads/images/2020/1016/134354_c1915902_332975.png "service.png") ![路由管理](https://images.gitee.com/uploads/images/2020/1016/134039_bed1608d_332975.png "route.png") From 3ea29e8bf027965d311f7c4909b973a134c77714 Mon Sep 17 00:00:00 2001 From: tanghc Date: Mon, 19 Oct 2020 10:07:03 +0800 Subject: [PATCH 09/35] 4.0.3 --- sop-gateway/pom.xml | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml index 59764ef1..97eed025 100644 --- a/sop-gateway/pom.xml +++ b/sop-gateway/pom.xml @@ -59,6 +59,10 @@ mysql-connector-java runtime + + javax.servlet + javax.servlet-api + @@ -73,12 +77,6 @@ 1.18.4 provided - - javax.servlet - javax.servlet-api - 3.1.0 - provided - From 5e081b5cfdfa7afe7e2a04a6ace007ed59b3af4e Mon Sep 17 00:00:00 2001 From: tanghc Date: Mon, 19 Oct 2020 11:58:10 +0800 Subject: [PATCH 10/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-gateway/pom.xml | 19 +++++++++++++++++++ sop-gateway/src/main/docker/dockerfile | 4 ++++ 2 files changed, 23 insertions(+) create mode 100644 sop-gateway/src/main/docker/dockerfile diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml index 97eed025..60ccfbfb 100644 --- a/sop-gateway/pom.xml +++ b/sop-gateway/pom.xml @@ -13,6 +13,7 @@ 1.8 + gitee.com/sop @@ -95,6 +96,24 @@ true + + + com.spotify + docker-maven-plugin + 1.0.0 + + ${docker.image.prefix}/${project.artifactId} + + src/main/docker + + + / + ${project.build.directory} + ${project.build.finalName}.jar + + + + diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile new file mode 100644 index 00000000..ac259f9c --- /dev/null +++ b/sop-gateway/src/main/docker/dockerfile @@ -0,0 +1,4 @@ +FROM java:8 +VOLUME /tmp +ADD sop-gateway-4.0.3-SNAPSHOT.jar sop-gateway-4.0.3.jar +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sop-gateway-4.0.3.jar"] \ No newline at end of file From e661f45bd1106cc8e669420a95137a283ad9424c Mon Sep 17 00:00:00 2001 From: tanghc Date: Mon, 19 Oct 2020 15:52:10 +0800 Subject: [PATCH 11/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-gateway/src/main/docker/dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile index ac259f9c..79fcf801 100644 --- a/sop-gateway/src/main/docker/dockerfile +++ b/sop-gateway/src/main/docker/dockerfile @@ -1,4 +1,6 @@ FROM java:8 VOLUME /tmp +VOLUME /log ADD sop-gateway-4.0.3-SNAPSHOT.jar sop-gateway-4.0.3.jar -ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/sop-gateway-4.0.3.jar"] \ No newline at end of file + +ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom --logging.file=log/sop-gateway/log.log","-jar","/sop-gateway-4.0.3.jar"] \ No newline at end of file From c4194817d517d0bfd85f6e613d629de602214ccd Mon Sep 17 00:00:00 2001 From: tanghc Date: Mon, 19 Oct 2020 16:23:45 +0800 Subject: [PATCH 12/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-gateway/src/main/docker/dockerfile | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile index 79fcf801..3270f787 100644 --- a/sop-gateway/src/main/docker/dockerfile +++ b/sop-gateway/src/main/docker/dockerfile @@ -3,4 +3,6 @@ VOLUME /tmp VOLUME /log ADD sop-gateway-4.0.3-SNAPSHOT.jar sop-gateway-4.0.3.jar -ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom --logging.file=log/sop-gateway/log.log","-jar","/sop-gateway-4.0.3.jar"] \ No newline at end of file +ENV JAVA_OPTS="-Xms128m -Xmx128m --logging.file=log/sop-gateway/log.log --mysql.host=10.1.30.120:3306" + +ENTRYPOINT ["java","$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom","-jar","/sop-gateway-4.0.3.jar"] \ No newline at end of file From b4a805ccef9ba574b43439405d7a2e1c4e6ce542 Mon Sep 17 00:00:00 2001 From: tanghc Date: Mon, 19 Oct 2020 16:30:29 +0800 Subject: [PATCH 13/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-gateway/src/main/docker/dockerfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile index 3270f787..a77cb2af 100644 --- a/sop-gateway/src/main/docker/dockerfile +++ b/sop-gateway/src/main/docker/dockerfile @@ -5,4 +5,4 @@ ADD sop-gateway-4.0.3-SNAPSHOT.jar sop-gateway-4.0.3.jar ENV JAVA_OPTS="-Xms128m -Xmx128m --logging.file=log/sop-gateway/log.log --mysql.host=10.1.30.120:3306" -ENTRYPOINT ["java","$JAVA_OPTS -Djava.security.egd=file:/dev/./urandom","-jar","/sop-gateway-4.0.3.jar"] \ No newline at end of file +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop-gateway-4.0.3.jar \ No newline at end of file From c38c31031a27a25b23ae393c5632b0e7bc7404bf Mon Sep 17 00:00:00 2001 From: tanghc Date: Mon, 19 Oct 2020 19:28:42 +0800 Subject: [PATCH 14/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-gateway/pom.xml | 3 +-- sop-gateway/src/main/docker/dockerfile | 8 +++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml index 60ccfbfb..fe268d08 100644 --- a/sop-gateway/pom.xml +++ b/sop-gateway/pom.xml @@ -13,7 +13,6 @@ 1.8 - gitee.com/sop @@ -102,7 +101,7 @@ docker-maven-plugin 1.0.0 - ${docker.image.prefix}/${project.artifactId} + ${project.groupId}/${project.artifactId} src/main/docker diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile index a77cb2af..44bda9ad 100644 --- a/sop-gateway/src/main/docker/dockerfile +++ b/sop-gateway/src/main/docker/dockerfile @@ -1,8 +1,10 @@ FROM java:8 VOLUME /tmp VOLUME /log -ADD sop-gateway-4.0.3-SNAPSHOT.jar sop-gateway-4.0.3.jar +ADD *.jar app.jar -ENV JAVA_OPTS="-Xms128m -Xmx128m --logging.file=log/sop-gateway/log.log --mysql.host=10.1.30.120:3306" +ENV JAVA_OPTS="-Xms128m -Xmx128m" +# springboot配置文件 +ENV CONF=" --logging.file=log/spring.log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop-gateway-4.0.3.jar \ No newline at end of file +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar ${CONF} \ No newline at end of file From 34fed4b924a52e9798d78d7e4c2abdbbd37b1dc6 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 10:10:44 +0800 Subject: [PATCH 15/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-build.sh | 4 ++++ dockerfile | 23 +++++++++++++++++++++++ sop-gateway/src/main/docker/dockerfile | 7 ++++++- 3 files changed, 33 insertions(+), 1 deletion(-) create mode 100644 docker-build.sh create mode 100644 dockerfile diff --git a/docker-build.sh b/docker-build.sh new file mode 100644 index 00000000..f4d43e59 --- /dev/null +++ b/docker-build.sh @@ -0,0 +1,4 @@ +#!/bin/bash + +mvn clean package +docker build -t sop . diff --git a/dockerfile b/dockerfile new file mode 100644 index 00000000..5b131e4e --- /dev/null +++ b/dockerfile @@ -0,0 +1,23 @@ +FROM java:8 +VOLUME /tmp +VOLUME /sop + +ADD sop-gateway/target/*.jar sop/sop-gateway.jar +ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin.jar +ADD sop-website/target/*.jar sop/sop-website.jar +ADD sop-example/sop-story/target/*.jar sop/sop-story.jar + + +# JVM设置 +ENV JAVA_OPTS="-Xms128m -Xmx128m" + +# springboot配置文件 +# --logging.file:日志 +# --mysql.host:mysql地址 +# --register.url:nacos地址 +ENV CONF="--logging.file=log/spring.log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" + +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story.jar ${CONF} diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile index 44bda9ad..424ef75f 100644 --- a/sop-gateway/src/main/docker/dockerfile +++ b/sop-gateway/src/main/docker/dockerfile @@ -3,8 +3,13 @@ VOLUME /tmp VOLUME /log ADD *.jar app.jar +# JVM设置 ENV JAVA_OPTS="-Xms128m -Xmx128m" + # springboot配置文件 -ENV CONF=" --logging.file=log/spring.log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" +# --logging.file:日志 +# --mysql.host:mysql地址 +# --register.url:nacos地址 +ENV CONF="--logging.file=log/spring.log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar ${CONF} \ No newline at end of file From dc24e511a15656fb9cfde08b7fc6aa70730f6262 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 10:17:36 +0800 Subject: [PATCH 16/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/dockerfile b/dockerfile index 5b131e4e..b971b3b7 100644 --- a/dockerfile +++ b/dockerfile @@ -2,10 +2,10 @@ FROM java:8 VOLUME /tmp VOLUME /sop -ADD sop-gateway/target/*.jar sop/sop-gateway.jar -ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin.jar -ADD sop-website/target/*.jar sop/sop-website.jar -ADD sop-example/sop-story/target/*.jar sop/sop-story.jar +ADD sop-gateway/target/*.jar /sop/sop-gateway/sop-gateway.jar +ADD sop-admin/sop-admin-server/target/*.jar /sop/sop-admin/sop-admin.jar +ADD sop-website/target/*.jar /sop/sop-website/sop-website.jar +ADD sop-example/sop-story/target/*.jar /sop/sop-story/sop-story.jar # JVM设置 From 645a14e4f22f365162cdfe8be689a7ac6f402d5f Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 10:28:10 +0800 Subject: [PATCH 17/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 8 ++++---- pom.xml | 13 ------------- 2 files changed, 4 insertions(+), 17 deletions(-) diff --git a/dockerfile b/dockerfile index b971b3b7..f628b286 100644 --- a/dockerfile +++ b/dockerfile @@ -2,10 +2,10 @@ FROM java:8 VOLUME /tmp VOLUME /sop -ADD sop-gateway/target/*.jar /sop/sop-gateway/sop-gateway.jar -ADD sop-admin/sop-admin-server/target/*.jar /sop/sop-admin/sop-admin.jar -ADD sop-website/target/*.jar /sop/sop-website/sop-website.jar -ADD sop-example/sop-story/target/*.jar /sop/sop-story/sop-story.jar +ADD sop-gateway/target/*.jar sop/sop-gateway/sop-gateway.jar +ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin/sop-admin.jar +ADD sop-website/target/*.jar sop/sop-website/sop-website.jar +ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar # JVM设置 diff --git a/pom.xml b/pom.xml index a48783b3..989d13f2 100644 --- a/pom.xml +++ b/pom.xml @@ -237,19 +237,6 @@ UTF-8 - - org.apache.maven.plugins - maven-source-plugin - 2.2.1 - - - attach-sources - - jar-no-fork - - - - From 58d42dc382d4ebd42cf85d1ade83f5437210fc95 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 10:58:02 +0800 Subject: [PATCH 18/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-build.sh | 10 +++++++++- dockerfile | 12 +++++++----- 2 files changed, 16 insertions(+), 6 deletions(-) diff --git a/docker-build.sh b/docker-build.sh index f4d43e59..de4d00f7 100644 --- a/docker-build.sh +++ b/docker-build.sh @@ -1,4 +1,12 @@ #!/bin/bash +# 打包 mvn clean package -docker build -t sop . +# 创建镜像 +docker build -t gitee.com/sop . + +# 获取镜像id +image_id=`docker images gitee.com/sop --format "{{.ID}}" | awk '{print $1}'` + +# 运行镜像 +docker run --name sop -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 2222:2222 -d $image_id \ No newline at end of file diff --git a/dockerfile b/dockerfile index f628b286..de813168 100644 --- a/dockerfile +++ b/dockerfile @@ -5,6 +5,7 @@ VOLUME /sop ADD sop-gateway/target/*.jar sop/sop-gateway/sop-gateway.jar ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin/sop-admin.jar ADD sop-website/target/*.jar sop/sop-website/sop-website.jar +ADD sop-auth/target/*.jar sop/sop-website/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar @@ -15,9 +16,10 @@ ENV JAVA_OPTS="-Xms128m -Xmx128m" # --logging.file:日志 # --mysql.host:mysql地址 # --register.url:nacos地址 -ENV CONF="--logging.file=log/spring.log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" +ENV CONF="--logging.file.path=log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar ${CONF} From 9f83da1cda64fa7553a7ea017406d5160a9656d6 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 11:07:14 +0800 Subject: [PATCH 19/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sop-story/src/main/resources/application-dev.properties | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/sop-example/sop-story/src/main/resources/application-dev.properties b/sop-example/sop-story/src/main/resources/application-dev.properties index ea5b6216..5ce2d493 100644 --- a/sop-example/sop-story/src/main/resources/application-dev.properties +++ b/sop-example/sop-story/src/main/resources/application-dev.properties @@ -1,5 +1,6 @@ server.port=2222 spring.application.name=story-service +register.url=127.0.0.1:8848 # 注册中心 -spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848 +spring.cloud.nacos.discovery.server-addr=${register.url} From 92d2ba6a203885d7ba538074c431ec1d707df322 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 11:40:36 +0800 Subject: [PATCH 20/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/dockerfile b/dockerfile index de813168..26678a73 100644 --- a/dockerfile +++ b/dockerfile @@ -8,7 +8,6 @@ ADD sop-website/target/*.jar sop/sop-website/sop-website.jar ADD sop-auth/target/*.jar sop/sop-website/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar - # JVM设置 ENV JAVA_OPTS="-Xms128m -Xmx128m" @@ -16,10 +15,10 @@ ENV JAVA_OPTS="-Xms128m -Xmx128m" # --logging.file:日志 # --mysql.host:mysql地址 # --register.url:nacos地址 -ENV CONF="--logging.file.path=log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" +ENV CONF="--mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar ${CONF} -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar ${CONF} +ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar ${CONF} --logging.file.path=/sop/sop-gateway/log \ +&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar ${CONF} --logging.file.path=/sop/sop-admin/log \ +&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar ${CONF} --logging.file.path=/sop/sop-website/log \ +&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar ${CONF} --logging.file.path=/sop/sop-auth/log \ +&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar ${CONF} --logging.file.path=/sop/sop-story/log From 62bbb9a13049ed542ebb1ee8bd03f6d541958262 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 13:47:47 +0800 Subject: [PATCH 21/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-entrypoint.sh | 12 ++++++++++++ dockerfile | 15 +-------------- 2 files changed, 13 insertions(+), 14 deletions(-) create mode 100644 docker-entrypoint.sh diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh new file mode 100644 index 00000000..38cd1aee --- /dev/null +++ b/docker-entrypoint.sh @@ -0,0 +1,12 @@ +#!/bin/bash + +JAVA_OPTS="-Xms128m -Xmx128m" + +CONF="--mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" + +nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar $CONF --logging.file.path=/sop/sop-gateway/log > /dev/null 2>&1 & +nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar $CONF --logging.file.path=/sop/sop-admin/log > /dev/null 2>&1 & +nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar $CONF --logging.file.path=/sop/sop-website/log > /dev/null 2>&1 & +nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar $CONF --logging.file.path=/sop/sop-auth/log > /dev/null 2>&1 & +nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar $CONF --logging.file.path=/sop/sop-story/log > /dev/null 2>&1 & + diff --git a/dockerfile b/dockerfile index 26678a73..f943dc5b 100644 --- a/dockerfile +++ b/dockerfile @@ -8,17 +8,4 @@ ADD sop-website/target/*.jar sop/sop-website/sop-website.jar ADD sop-auth/target/*.jar sop/sop-website/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar -# JVM设置 -ENV JAVA_OPTS="-Xms128m -Xmx128m" - -# springboot配置文件 -# --logging.file:日志 -# --mysql.host:mysql地址 -# --register.url:nacos地址 -ENV CONF="--mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" - -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar ${CONF} --logging.file.path=/sop/sop-gateway/log \ -&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar ${CONF} --logging.file.path=/sop/sop-admin/log \ -&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar ${CONF} --logging.file.path=/sop/sop-website/log \ -&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar ${CONF} --logging.file.path=/sop/sop-auth/log \ -&& java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar ${CONF} --logging.file.path=/sop/sop-story/log +ENTRYPOINT ["docker-entrypoint.sh"] From 3c55c17818d91e646a7b1bd206d8a4bc58be42f6 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 13:56:55 +0800 Subject: [PATCH 22/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 2 ++ sop-gateway/pom.xml | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/dockerfile b/dockerfile index f943dc5b..b1ad1423 100644 --- a/dockerfile +++ b/dockerfile @@ -8,4 +8,6 @@ ADD sop-website/target/*.jar sop/sop-website/sop-website.jar ADD sop-auth/target/*.jar sop/sop-website/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar +RUN chmod +x /usr/local/bin/docker-entrypoint.sh + ENTRYPOINT ["docker-entrypoint.sh"] diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml index fe268d08..8fa2a919 100644 --- a/sop-gateway/pom.xml +++ b/sop-gateway/pom.xml @@ -95,14 +95,13 @@ true - + src/main/docker @@ -113,6 +112,7 @@ + --> From ace5e1d5f66a54075889ec7835fcf453a252647a Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 13:57:48 +0800 Subject: [PATCH 23/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 1 + 1 file changed, 1 insertion(+) diff --git a/dockerfile b/dockerfile index b1ad1423..8630eec2 100644 --- a/dockerfile +++ b/dockerfile @@ -8,6 +8,7 @@ ADD sop-website/target/*.jar sop/sop-website/sop-website.jar ADD sop-auth/target/*.jar sop/sop-website/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar +COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh ENTRYPOINT ["docker-entrypoint.sh"] From 71d420c22e5e7e428a3a772e9fe6800f193e70b9 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 17:02:01 +0800 Subject: [PATCH 24/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-build.sh | 2 +- docker-entrypoint.sh | 17 +++++++++-------- dockerfile | 2 +- sop-gateway/pom.xml | 18 ------------------ .../java/com/gitee/sop/test/AllInOneTest.java | 10 ++++++++-- 5 files changed, 19 insertions(+), 30 deletions(-) diff --git a/docker-build.sh b/docker-build.sh index de4d00f7..e9aa01f0 100644 --- a/docker-build.sh +++ b/docker-build.sh @@ -9,4 +9,4 @@ docker build -t gitee.com/sop . image_id=`docker images gitee.com/sop --format "{{.ID}}" | awk '{print $1}'` # 运行镜像 -docker run --name sop -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 2222:2222 -d $image_id \ No newline at end of file +docker run --name sop -p 8081:8081 -p 8082:8082 -p 8083:8083 -p 8087:8087 -p 2222:2222 -d $image_id \ No newline at end of file diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 38cd1aee..09a61bbe 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -2,11 +2,12 @@ JAVA_OPTS="-Xms128m -Xmx128m" -CONF="--mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" - -nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar $CONF --logging.file.path=/sop/sop-gateway/log > /dev/null 2>&1 & -nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar $CONF --logging.file.path=/sop/sop-admin/log > /dev/null 2>&1 & -nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar $CONF --logging.file.path=/sop/sop-website/log > /dev/null 2>&1 & -nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar $CONF --logging.file.path=/sop/sop-auth/log > /dev/null 2>&1 & -nohup java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar $CONF --logging.file.path=/sop/sop-story/log > /dev/null 2>&1 & - +# mysql, nacos配置 +CONF="--mysql.host=10.1.30.110:3306 --register.url=10.1.30.110:8848" + +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar $CONF --logging.file.path=/sop/sop-gateway/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar $CONF --logging.file.path=/sop/sop-admin/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar $CONF --logging.file.path=/sop/sop-website/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar $CONF --logging.file.path=/sop/sop-auth/log & +# 最后一条没有& +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar $CONF --logging.file.path=/sop/sop-story/log \ No newline at end of file diff --git a/dockerfile b/dockerfile index 8630eec2..9c0e7fc0 100644 --- a/dockerfile +++ b/dockerfile @@ -5,7 +5,7 @@ VOLUME /sop ADD sop-gateway/target/*.jar sop/sop-gateway/sop-gateway.jar ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin/sop-admin.jar ADD sop-website/target/*.jar sop/sop-website/sop-website.jar -ADD sop-auth/target/*.jar sop/sop-website/sop-auth.jar +ADD sop-auth/target/*.jar sop/sop-auth/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar COPY docker-entrypoint.sh /usr/local/bin/ diff --git a/sop-gateway/pom.xml b/sop-gateway/pom.xml index 8fa2a919..97eed025 100644 --- a/sop-gateway/pom.xml +++ b/sop-gateway/pom.xml @@ -95,24 +95,6 @@ true - diff --git a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java index 78e9a3d3..1cdeb28e 100644 --- a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java +++ b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java @@ -23,7 +23,7 @@ import java.util.Optional; */ public class AllInOneTest extends TestBase { - String url = "http://localhost:8081"; + String url = "http://10.1.30.120:8081"; String appId = "2019032617262200001"; String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ="; @@ -112,10 +112,16 @@ public class AllInOneTest extends TestBase { */ public void testJSR303() { Client client = new Client(url, appId, privateKey); + Map headers = new HashMap<>(8); + headers.put("accept-language", "zh-CN"); Client.RequestBuilder requestBuilder = new Client.RequestBuilder() .method("goods.add") .version("1.0") - .bizContent(new BizContent().add("goods_name", "iphone6").add("goods_remark", "iphone6").add("goods_comment", "1")) + .header(headers) + .bizContent(new BizContent() + .add("goods_name", "iphone6") + .add("goods_remark", "iphone6") + .add("goods_comment", "1")) .httpMethod(HttpTool.HTTPMethod.POST) .callback((requestInfo, responseData) -> { System.out.println(responseData); From 3b2a7f92d72e9e37a0f0af9d0a90782d42264448 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 17:10:28 +0800 Subject: [PATCH 25/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java index 1cdeb28e..dca10c54 100644 --- a/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java +++ b/sop-test/src/test/java/com/gitee/sop/test/AllInOneTest.java @@ -23,7 +23,7 @@ import java.util.Optional; */ public class AllInOneTest extends TestBase { - String url = "http://10.1.30.120:8081"; + String url = "http://localhost:8081"; String appId = "2019032617262200001"; String privateKey = "MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQCXJv1pQFqWNA/++OYEV7WYXwexZK/J8LY1OWlP9X0T6wHFOvxNKRvMkJ5544SbgsJpVcvRDPrcxmhPbi/sAhdO4x2PiPKIz9Yni2OtYCCeaiE056B+e1O2jXoLeXbfi9fPivJZkxH/tb4xfLkH3bA8ZAQnQsoXA0SguykMRZntF0TndUfvDrLqwhlR8r5iRdZLB6F8o8qXH6UPDfNEnf/K8wX5T4EB1b8x8QJ7Ua4GcIUqeUxGHdQpzNbJdaQvoi06lgccmL+PHzminkFYON7alj1CjDN833j7QMHdPtS9l7B67fOU/p2LAAkPMtoVBfxQt9aFj7B8rEhGCz02iJIBAgMBAAECggEARqOuIpY0v6WtJBfmR3lGIOOokLrhfJrGTLF8CiZMQha+SRJ7/wOLPlsH9SbjPlopyViTXCuYwbzn2tdABigkBHYXxpDV6CJZjzmRZ+FY3S/0POlTFElGojYUJ3CooWiVfyUMhdg5vSuOq0oCny53woFrf32zPHYGiKdvU5Djku1onbDU0Lw8w+5tguuEZ76kZ/lUcccGy5978FFmYpzY/65RHCpvLiLqYyWTtaNT1aQ/9pw4jX9HO9NfdJ9gYFK8r/2f36ZE4hxluAfeOXQfRC/WhPmiw/ReUhxPznG/WgKaa/OaRtAx3inbQ+JuCND7uuKeRe4osP2jLPHPP6AUwQKBgQDUNu3BkLoKaimjGOjCTAwtp71g1oo+k5/uEInAo7lyEwpV0EuUMwLA/HCqUgR4K9pyYV+Oyb8d6f0+Hz0BMD92I2pqlXrD7xV2WzDvyXM3s63NvorRooKcyfd9i6ccMjAyTR2qfLkxv0hlbBbsPHz4BbU63xhTJp3Ghi0/ey/1HQKBgQC2VsgqC6ykfSidZUNLmQZe3J0p/Qf9VLkfrQ+xaHapOs6AzDU2H2osuysqXTLJHsGfrwVaTs00ER2z8ljTJPBUtNtOLrwNRlvgdnzyVAKHfOgDBGwJgiwpeE9voB1oAV/mXqSaUWNnuwlOIhvQEBwekqNyWvhLqC7nCAIhj3yvNQKBgQCqYbeec56LAhWP903Zwcj9VvG7sESqXUhIkUqoOkuIBTWFFIm54QLTA1tJxDQGb98heoCIWf5x/A3xNI98RsqNBX5JON6qNWjb7/dobitti3t99v/ptDp9u8JTMC7penoryLKK0Ty3bkan95Kn9SC42YxaSghzqkt+uvfVQgiNGQKBgGxU6P2aDAt6VNwWosHSe+d2WWXt8IZBhO9d6dn0f7ORvcjmCqNKTNGgrkewMZEuVcliueJquR47IROdY8qmwqcBAN7Vg2K7r7CPlTKAWTRYMJxCT1Hi5gwJb+CZF3+IeYqsJk2NF2s0w5WJTE70k1BSvQsfIzAIDz2yE1oPHvwVAoGAA6e+xQkVH4fMEph55RJIZ5goI4Y76BSvt2N5OKZKd4HtaV+eIhM3SDsVYRLIm9ZquJHMiZQGyUGnsvrKL6AAVNK7eQZCRDk9KQz+0GKOGqku0nOZjUbAu6A2/vtXAaAuFSFx1rUQVVjFulLexkXR3KcztL1Qu2k5pB6Si0K/uwQ="; From 02d3955d005b1b3cc74c1dd67de52e2667feed89 Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 17:29:17 +0800 Subject: [PATCH 26/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/docs/files/10010_快速体验.md | 16 ++++++++++++++++ docker-entrypoint.sh | 12 ++++++------ dockerfile | 2 ++ sop-gateway/src/main/docker/dockerfile | 15 --------------- 4 files changed, 24 insertions(+), 21 deletions(-) delete mode 100644 sop-gateway/src/main/docker/dockerfile diff --git a/doc/docs/files/10010_快速体验.md b/doc/docs/files/10010_快速体验.md index 7d217d5a..5d1208e8 100644 --- a/doc/docs/files/10010_快速体验.md +++ b/doc/docs/files/10010_快速体验.md @@ -1,5 +1,7 @@ # 快速体验 +## 方式1 + > 运行环境:JDK8,Maven3,[Nacos](https://nacos.io/zh-cn/docs/what-is-nacos.html),Mysql - 安装并启动Nacos,[安装教程](https://nacos.io/zh-cn/docs/quick-start.html) @@ -14,6 +16,20 @@ 2. 运行`SopStoryApplication.java` - 找到sop-test,运行`com.gitee.sop.test.AlipayClientPostTest.testGet`进行接口调用测试 +## 方式2(docker) + +> 前提:安装好docker + +- 安装并启动Nacos,[安装教程](https://nacos.io/zh-cn/docs/quick-start.html) +- 执行Mysql脚本`sop.sql`(Mysql版本5.6+),5.6以下运行`sop-mysql5.6以下版本.sql` +- 打开`docker-entrypoint.sh`,修改mysql,nacos地址 +- 执行`docker-build.sh` +- 找到sop-test,运行`com.gitee.sop.test.AlipayClientPostTest.testGet`进行接口调用测试 + + +> admin地址:http://ip:8082/ +> 文档地址:http://ip:8083/ + ## 使用admin - 找到`sop-admin/sop-admin-server`工程,打开sop-admin-server下的`application-dev.properties`,修改相关配置 diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 09a61bbe..16ad5969 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -3,11 +3,11 @@ JAVA_OPTS="-Xms128m -Xmx128m" # mysql, nacos配置 -CONF="--mysql.host=10.1.30.110:3306 --register.url=10.1.30.110:8848" +args="--mysql.host=10.1.30.110:3306 --register.url=10.1.30.110:8848" -java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar $CONF --logging.file.path=/sop/sop-gateway/log & -java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar $CONF --logging.file.path=/sop/sop-admin/log & -java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar $CONF --logging.file.path=/sop/sop-website/log & -java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar $CONF --logging.file.path=/sop/sop-auth/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar $args --logging.file.path=/sop/sop-gateway/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar $args --logging.file.path=/sop/sop-admin/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-website/sop-website.jar $args --logging.file.path=/sop/sop-website/log & +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-auth/sop-auth.jar $args --logging.file.path=/sop/sop-auth/log & # 最后一条没有& -java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar $CONF --logging.file.path=/sop/sop-story/log \ No newline at end of file +java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-story/sop-story.jar $args --logging.file.path=/sop/sop-story/log \ No newline at end of file diff --git a/dockerfile b/dockerfile index 9c0e7fc0..3d585900 100644 --- a/dockerfile +++ b/dockerfile @@ -2,12 +2,14 @@ FROM java:8 VOLUME /tmp VOLUME /sop +# 将所有应用放到一个镜像当中 ADD sop-gateway/target/*.jar sop/sop-gateway/sop-gateway.jar ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin/sop-admin.jar ADD sop-website/target/*.jar sop/sop-website/sop-website.jar ADD sop-auth/target/*.jar sop/sop-auth/sop-auth.jar ADD sop-example/sop-story/target/*.jar sop/sop-story/sop-story.jar +# 拷贝启动脚本 COPY docker-entrypoint.sh /usr/local/bin/ RUN chmod +x /usr/local/bin/docker-entrypoint.sh diff --git a/sop-gateway/src/main/docker/dockerfile b/sop-gateway/src/main/docker/dockerfile deleted file mode 100644 index 424ef75f..00000000 --- a/sop-gateway/src/main/docker/dockerfile +++ /dev/null @@ -1,15 +0,0 @@ -FROM java:8 -VOLUME /tmp -VOLUME /log -ADD *.jar app.jar - -# JVM设置 -ENV JAVA_OPTS="-Xms128m -Xmx128m" - -# springboot配置文件 -# --logging.file:日志 -# --mysql.host:mysql地址 -# --register.url:nacos地址 -ENV CONF="--logging.file=log/spring.log --mysql.host=10.1.30.120:3306 --register.url=10.1.30.110:8848" - -ENTRYPOINT java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.jar ${CONF} \ No newline at end of file From 418c9ffc7a73410a981c0ace2c08bc07f885dd5c Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 19:36:58 +0800 Subject: [PATCH 27/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- dockerfile | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/dockerfile b/dockerfile index 3d585900..7ed256b7 100644 --- a/dockerfile +++ b/dockerfile @@ -2,6 +2,18 @@ FROM java:8 VOLUME /tmp VOLUME /sop +COPY sop.sql sop.sql + +# 安装mysql +RUN yum install mysql mysql-server +RUN /etc/init.d/mysqld start &&\ +mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'root';" &&\ +mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'root';" +EXPOSE 3306 +CMD ["mysqld_safe"] + +CMD mysql -uroot -proot mysql < sop.sql + # 将所有应用放到一个镜像当中 ADD sop-gateway/target/*.jar sop/sop-gateway/sop-gateway.jar ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin/sop-admin.jar From dc8d28a256a17526fdaec8bc3e115ac184b9195e Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 20 Oct 2020 19:51:09 +0800 Subject: [PATCH 28/35] =?UTF-8?q?=E6=94=AF=E6=8C=81docker?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/docs/files/10010_快速体验.md | 6 +++--- docker-entrypoint.sh | 2 +- dockerfile | 12 ------------ 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/doc/docs/files/10010_快速体验.md b/doc/docs/files/10010_快速体验.md index 5d1208e8..a28b020e 100644 --- a/doc/docs/files/10010_快速体验.md +++ b/doc/docs/files/10010_快速体验.md @@ -22,13 +22,13 @@ - 安装并启动Nacos,[安装教程](https://nacos.io/zh-cn/docs/quick-start.html) - 执行Mysql脚本`sop.sql`(Mysql版本5.6+),5.6以下运行`sop-mysql5.6以下版本.sql` -- 打开`docker-entrypoint.sh`,修改mysql,nacos地址 +- 打开`docker-entrypoint.sh`,修改mysql,nacos配置 - 执行`docker-build.sh` - 找到sop-test,运行`com.gitee.sop.test.AlipayClientPostTest.testGet`进行接口调用测试 -> admin地址:http://ip:8082/ -> 文档地址:http://ip:8083/ +> - admin地址:http://ip:8082 登录账号:admin/123456 +> - 文档地址:http://ip:8083/ ## 使用admin diff --git a/docker-entrypoint.sh b/docker-entrypoint.sh index 16ad5969..73b6894c 100644 --- a/docker-entrypoint.sh +++ b/docker-entrypoint.sh @@ -3,7 +3,7 @@ JAVA_OPTS="-Xms128m -Xmx128m" # mysql, nacos配置 -args="--mysql.host=10.1.30.110:3306 --register.url=10.1.30.110:8848" +args="--mysql.host=10.1.30.110:3306 --mysql.username=root --mysql.password=root --register.url=10.1.30.110:8848" java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-gateway/sop-gateway.jar $args --logging.file.path=/sop/sop-gateway/log & java $JAVA_OPTS -Djava.security.egd=file:/dev/./urandom -jar /sop/sop-admin/sop-admin.jar $args --logging.file.path=/sop/sop-admin/log & diff --git a/dockerfile b/dockerfile index 7ed256b7..3d585900 100644 --- a/dockerfile +++ b/dockerfile @@ -2,18 +2,6 @@ FROM java:8 VOLUME /tmp VOLUME /sop -COPY sop.sql sop.sql - -# 安装mysql -RUN yum install mysql mysql-server -RUN /etc/init.d/mysqld start &&\ -mysql -e "grant all privileges on *.* to 'root'@'%' identified by 'root';" &&\ -mysql -e "grant all privileges on *.* to 'root'@'localhost' identified by 'root';" -EXPOSE 3306 -CMD ["mysqld_safe"] - -CMD mysql -uroot -proot mysql < sop.sql - # 将所有应用放到一个镜像当中 ADD sop-gateway/target/*.jar sop/sop-gateway/sop-gateway.jar ADD sop-admin/sop-admin-server/target/*.jar sop/sop-admin/sop-admin.jar From a94b8e2770667bb0a2fedd916306c981eb84cfe2 Mon Sep 17 00:00:00 2001 From: Harry <501777010@qq.com> Date: Thu, 22 Oct 2020 11:59:57 +0800 Subject: [PATCH 29/35] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B7=AF=E7=94=B1?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=97=B6=E6=95=B0=E6=8D=AE=E5=BA=93=E8=BF=9E?= =?UTF-8?q?=E6=8E=A5=E6=B1=A0=E8=87=AA=E5=8A=A8=E6=96=AD=E5=BC=80=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=B7=AF=E7=94=B1=E4=BF=A1=E6=81=AF=E5=85=A5=E5=BA=93?= =?UTF-8?q?=E5=A4=B1=E8=B4=A5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-gateway/src/main/resources/META-INF/gateway.properties | 3 +++ 1 file changed, 3 insertions(+) diff --git a/sop-gateway/src/main/resources/META-INF/gateway.properties b/sop-gateway/src/main/resources/META-INF/gateway.properties index d59b5f1b..8974b391 100644 --- a/sop-gateway/src/main/resources/META-INF/gateway.properties +++ b/sop-gateway/src/main/resources/META-INF/gateway.properties @@ -18,6 +18,9 @@ spring.datasource.url=jdbc:mysql://${mysql.host}/sop?useUnicode=true&characterEn spring.datasource.username=${mysql.username} spring.datasource.password=${mysql.password} +#连接池 +spring.datasource.hikari.pool-name=DatebookHikariCP +spring.datasource.hikari.max-lifetime=500000 spring.cloud.gateway.discovery.locator.lower-case-service-id=true spring.cloud.gateway.discovery.locator.enabled=true From fc8f305e3dadbaa5269abb6ef08395e8b3421892 Mon Sep 17 00:00:00 2001 From: Harry <501777010@qq.com> Date: Fri, 23 Oct 2020 16:22:41 +0800 Subject: [PATCH 30/35] =?UTF-8?q?=E4=BC=98=E5=8C=96:=E8=A1=A5=E5=85=85giti?= =?UTF-8?q?gnore=E6=96=87=E4=BB=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- sop-common/sop-bridge-eureka/.gitignore | 25 +++++++++++++++++++++++++ sop-common/sop-bridge-nacos/.gitignore | 25 +++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 sop-common/sop-bridge-eureka/.gitignore create mode 100644 sop-common/sop-bridge-nacos/.gitignore diff --git a/sop-common/sop-bridge-eureka/.gitignore b/sop-common/sop-bridge-eureka/.gitignore new file mode 100644 index 00000000..c456c4a3 --- /dev/null +++ b/sop-common/sop-bridge-eureka/.gitignore @@ -0,0 +1,25 @@ +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ diff --git a/sop-common/sop-bridge-nacos/.gitignore b/sop-common/sop-bridge-nacos/.gitignore new file mode 100644 index 00000000..c456c4a3 --- /dev/null +++ b/sop-common/sop-bridge-nacos/.gitignore @@ -0,0 +1,25 @@ +/target/ +!.mvn/wrapper/maven-wrapper.jar + +### STS ### +.apt_generated +.classpath +.factorypath +.project +.settings +.springBeans +.sts4-cache + +### IntelliJ IDEA ### +.idea +*.iws +*.iml +*.ipr + +### NetBeans ### +/nbproject/private/ +/nbbuild/ +/dist/ +/nbdist/ +/.nb-gradle/ +/build/ From 3b1b1845f84bce283497f587cb23dc12ceb22907 Mon Sep 17 00:00:00 2001 From: Harry <501777010@qq.com> Date: Fri, 23 Oct 2020 16:37:04 +0800 Subject: [PATCH 31/35] =?UTF-8?q?=E4=BC=98=E5=8C=96:=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E8=BF=9E=E6=8E=A5=E6=B1=A0=E9=85=8D=E7=BD=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/main/resources/META-INF/sop-admin.properties | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/sop-admin/sop-admin-server/src/main/resources/META-INF/sop-admin.properties b/sop-admin/sop-admin-server/src/main/resources/META-INF/sop-admin.properties index 3920b570..00b51aa0 100644 --- a/sop-admin/sop-admin-server/src/main/resources/META-INF/sop-admin.properties +++ b/sop-admin/sop-admin-server/src/main/resources/META-INF/sop-admin.properties @@ -25,6 +25,10 @@ spring.datasource.url=jdbc:mysql://${mysql.host}/sop?useUnicode=true&characterEn spring.datasource.username=${mysql.username} spring.datasource.password=${mysql.password} +#连接池 +spring.datasource.hikari.pool-name=DatebookHikariCP +spring.datasource.hikari.max-lifetime=500000 + # 固定不用改 mybatis.mapper-locations=classpath:mybatis/mapper/*.xml easyopen.show-doc=false From 70b8525ccc1be69ce8f1703ee08720ca03d78b6b Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 27 Oct 2020 15:38:39 +0800 Subject: [PATCH 32/35] 4.0.3 --- .../gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java index b5f9efaf..84e4018c 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java @@ -5,6 +5,7 @@ import com.gitee.sop.gatewaycommon.bean.SopConstants; import com.gitee.sop.gatewaycommon.exception.ApiException; import com.gitee.sop.gatewaycommon.gateway.ServerWebExchangeUtil; import com.gitee.sop.gatewaycommon.gateway.route.GatewayForwardChooser; +import com.gitee.sop.gatewaycommon.manager.EnvironmentKeys; import com.gitee.sop.gatewaycommon.param.ApiParam; import com.gitee.sop.gatewaycommon.route.ForwardInfo; import com.gitee.sop.gatewaycommon.util.RouteInterceptorUtil; @@ -44,8 +45,6 @@ import java.util.Objects; @Order(Ordered.HIGHEST_PRECEDENCE) public class IndexFilter implements WebFilter { - private static final String REST_PATH_PREFIX = "/rest"; - /** 路径白名单 */ private static final List PATH_WHITE_LIST = Arrays.asList( "/sop", "/actuator" @@ -69,7 +68,7 @@ public class IndexFilter implements WebFilter { return chain.filter(exchange); } // 如果是restful请求,直接转发 - if (path.startsWith(REST_PATH_PREFIX)) { + if (path.startsWith(EnvironmentKeys.SOP_RESTFUL_PATH.getValue())) { exchange.getAttributes().put(SopConstants.RESTFUL_REQUEST, true); String restfulPath = ServerWebExchangeUtil.getRestfulPath(path); ServerWebExchange newExchange = ServerWebExchangeUtil.getForwardExchange(exchange, restfulPath); From 4c552199fbeb6c810f292b80722e2a5915c3357f Mon Sep 17 00:00:00 2001 From: tanghc Date: Tue, 27 Oct 2020 15:48:47 +0800 Subject: [PATCH 33/35] 4.0.3 --- doc/docs/files/10100_提供restful接口.md | 6 ++++-- .../sop/gatewaycommon/gateway/ServerWebExchangeUtil.java | 7 +++---- .../sop/gatewaycommon/gateway/filter/IndexFilter.java | 2 +- 3 files changed, 8 insertions(+), 7 deletions(-) diff --git a/doc/docs/files/10100_提供restful接口.md b/doc/docs/files/10100_提供restful接口.md index 1be388a3..c1218423 100644 --- a/doc/docs/files/10100_提供restful接口.md +++ b/doc/docs/files/10100_提供restful接口.md @@ -6,8 +6,6 @@ `http://ip:port/rest/服务id/your_path`,其中`http://ip:port/rest/`为固定部分,后面跟微服务请求路径。 -> 可在微服务端指定一个配置:`sop.restful.prefix=xxx`。请求路径将变成:`http://ip:port/rest/xxx/your_path` - 下面是一个微服务的接口例子 ```java @@ -36,6 +34,10 @@ public class TraditionalWebappController { 微服务之间的调用可以使用dubbo或feign,有了版本号的管理,可以做到服务的平滑升级,对用户来说都是无感知的。结合SOP-Admin提供的上下线功能, 可实现预发布环境功能。 +默认情况下,`http://ip:port/rest/`为固定部分,如果想要更改`rest`,可在网关配置文件指定:`sop.restful.path=/aaa` + +请求前缀将变成:`http://ip:port/aaa/` + - 封装请求工具【可选】 封装请求,方便调用,针对vue的封装如下: diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java index 8fb92151..e73688bf 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/ServerWebExchangeUtil.java @@ -44,7 +44,6 @@ public class ServerWebExchangeUtil { private static final String THROWABLE_KEY = "sop.throwable"; private static final String UNKNOWN_PATH = "/sop/unknown"; - private static final String REST_PATH = "/rest"; private static final FormHttpMessageConverter formHttpMessageConverter = new FormHttpMessageConverter(); @@ -77,10 +76,10 @@ public class ServerWebExchangeUtil { return ServerRequest.create(exchange, messageReaders); } - public static String getRestfulPath(String path) { - int index = path.indexOf(REST_PATH); + public static String getRestfulPath(String path, String prefix) { + int index = path.indexOf(prefix); // 取"/rest"的后面部分 - return path.substring(index + REST_PATH.length()); + return path.substring(index + prefix.length()); } /** diff --git a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java index 84e4018c..6903c71a 100644 --- a/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java +++ b/sop-common/sop-gateway-common/src/main/java/com/gitee/sop/gatewaycommon/gateway/filter/IndexFilter.java @@ -70,7 +70,7 @@ public class IndexFilter implements WebFilter { // 如果是restful请求,直接转发 if (path.startsWith(EnvironmentKeys.SOP_RESTFUL_PATH.getValue())) { exchange.getAttributes().put(SopConstants.RESTFUL_REQUEST, true); - String restfulPath = ServerWebExchangeUtil.getRestfulPath(path); + String restfulPath = ServerWebExchangeUtil.getRestfulPath(path, EnvironmentKeys.SOP_RESTFUL_PATH.getValue()); ServerWebExchange newExchange = ServerWebExchangeUtil.getForwardExchange(exchange, restfulPath); return chain.filter(newExchange); } From 80cc48b3b14b1df5b2c6ea6071ced603982457a9 Mon Sep 17 00:00:00 2001 From: tanghc Date: Wed, 28 Oct 2020 16:40:16 +0800 Subject: [PATCH 34/35] 4.0.3 --- .../files/90011_原理分析之如何存储路由.md | 59 +++++++------------ 1 file changed, 22 insertions(+), 37 deletions(-) diff --git a/doc/docs/files/90011_原理分析之如何存储路由.md b/doc/docs/files/90011_原理分析之如何存储路由.md index 662248c7..575e5f82 100644 --- a/doc/docs/files/90011_原理分析之如何存储路由.md +++ b/doc/docs/files/90011_原理分析之如何存储路由.md @@ -1,52 +1,37 @@ # 原理分析之如何存储路由 -SOP基于spring cloud,因此会涉及到网关路由。但是开发者不用去配置文件定义路由的隐射关系,SOP自动帮你解决了这个问题。 +SOP基于spring cloud,因此会涉及到网关路由。但是开发者不用去配置文件定义路由的隐射关系,SOP帮你解决了这个问题。 ## 获取路由信息 -首先明确一点,路由信息由各微服务提供,因此网关需要从注册中心获取各微服务实例,这个通过nacos提供的`watch`来实现。 -当有新的微服务加入时,Nacos会触发一个事件推送,详见`NacosWatch.java`类 +网关启动成后会触发一个事件,代码见:`com.gitee.sop.gatewaycommon.config.AbstractConfiguration.listenEvent` -```java -this.publisher.publishEvent(new HeartbeatEvent(this, this.nacosWatchIndex.getAndIncrement())); -``` +这个事件会取拉取微服务中提供的路由信息 -因此,只要注册了`HeartbeatEvent`事件就能随时感知到微服务实例的变化。如何注册呢,config类实现`ApplicationListener`接口即可。 +下面以nacos为例,介绍拉取路由过程 -```java -public class AbstractConfiguration implements ApplicationContextAware, ApplicationListener { - @EventListener(classes = HeartbeatEvent.class) - public void listenEvent(ApplicationEvent heartbeatEvent) { - // 有服务注册进来 - } -} -``` +1.从nacos中获取微服务实例 -然后,每个微服务提供一个restful接口,接口地址为:`http://ip:port/sop/routes`,用来返回自身路由信息。网关请求这个接口用来获取路由信息。 +入口代码:`com.gitee.sop.bridge.route.NacosRegistryListener.onEvent` -加载路由伪代码如下: +2.拿到微服务信息,调用微服务提供的接口拉取路由数据 -```java -@Override -public void onAddInstance(InstanceDefinition instance) { - String serviceName = instance.getServiceId(); - String url = getRouteRequestUrl(instance); - log.info("拉取路由配置,serviceId: {}, url: {}", serviceName, url); - ResponseEntity responseEntity = getRestTemplate().getForEntity(url, String.class); - if (responseEntity.getStatusCode() == HttpStatus.OK) { - String body = responseEntity.getBody(); - ServiceRouteInfo serviceRouteInfo = JSON.parseObject(body, ServiceRouteInfo.class); - baseRouteCache.load(serviceRouteInfo, callback -> routesProcessor.saveRoutes(serviceRouteInfo, instance)); - } else { - log.error("拉取路由配置异常,url: {}, status: {}, body: {}", url, responseEntity.getStatusCodeValue(), responseEntity.getBody()); - } -} -``` +入口代码:`com.gitee.sop.gatewaycommon.route.BaseRegistryListener.pullRoutes` + +最终落实到:`com.gitee.sop.gatewaycommon.route.ServiceRouteListener.onAddInstance` + +微服务提供一个url:`http://ip:port/sop/routes`,对应Controller在:`com.gitee.sop.servercommon.route.ServiceRouteController.listRoutes` + +微服务找到被`@Open`注解的方法,然后封装成一个路由对象,放到List中,最后返回给网关。 + +3.网关拿到路由信息,经过处理,转化成网关路由配置 + +关联方法: + +`com.gitee.sop.gatewaycommon.gateway.route.GatewayRouteCache.add` -参考代码: +`com.gitee.sop.gatewaycommon.gateway.route.GatewayRouteCache.refresh` -- `com.gitee.sop.gatewaycommon.route.RegistryListener`以及实现类 -- `com.gitee.sop.gatewaycommon.route.ServiceRouteListener` 路由的存储方式是一个Map,key为路由id,即接口名+版本号。 @@ -57,5 +42,5 @@ public void onAddInstance(InstanceDefinition instance) { private static final Map routes = synchronizedMap(new LinkedHashMap<>()); ``` -因为客户端调用接口都会传递一个接口名和版本号,因此通过这两个字段能够很快查询出路由信息,进行路由转发操作。 +因为客户端调用接口都会传递一个接口名和版本号,因此通过这两个字段能够很快查询出路由信息,然后进行路由转发操作。 From 06dbb2179625c8cab26343ce46efb3d4db670de4 Mon Sep 17 00:00:00 2001 From: tanghc Date: Wed, 28 Oct 2020 17:20:44 +0800 Subject: [PATCH 35/35] 4.0.3 --- .../sop/gateway/entity/ConfigRouteLimit.java | 54 ------------------- .../gateway/manager/DbRouteConfigManager.java | 8 +-- .../mapper/ConfigRouteLimitMapper.java | 11 ---- sop-mysql5.6以下版本.sql | 24 --------- sop.sql | 25 --------- 5 files changed, 2 insertions(+), 120 deletions(-) delete mode 100644 sop-gateway/src/main/java/com/gitee/sop/gateway/entity/ConfigRouteLimit.java delete mode 100644 sop-gateway/src/main/java/com/gitee/sop/gateway/mapper/ConfigRouteLimitMapper.java diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/entity/ConfigRouteLimit.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/entity/ConfigRouteLimit.java deleted file mode 100644 index cd52de97..00000000 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/entity/ConfigRouteLimit.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.gitee.sop.gateway.entity; - -import lombok.Data; - -import javax.persistence.Column; -import javax.persistence.GeneratedValue; -import javax.persistence.GenerationType; -import javax.persistence.Id; -import javax.persistence.Table; -import java.util.Date; - - -/** - * 表名:config_route_limit - * 备注:路由限流配置 - * - * @author tanghc - */ -@Table(name = "config_route_limit") -@Data -public class ConfigRouteLimit { - @Id - @Column(name = "id") - @GeneratedValue(strategy = GenerationType.IDENTITY) - /** 数据库字段:id */ - private Integer id; - - /** 路由id, 数据库字段:route_id */ - private String routeId; - - /** 限流策略,1:窗口策略,2:令牌桶策略, 数据库字段:limit_type */ - private Byte limitType; - - /** 每秒可处理请求数, 数据库字段:exec_count_per_second */ - private Integer execCountPerSecond; - - /** 返回的错误码, 数据库字段:limit_code */ - private String limitCode; - - /** 返回的错误信息, 数据库字段:limit_msg */ - private String limitMsg; - - /** 令牌桶容量, 数据库字段:token_bucket_count */ - private Integer tokenBucketCount; - - /** 1:开启,0关闭, 数据库字段:limit_status */ - private Byte limitStatus; - - /** 数据库字段:gmt_create */ - private Date gmtCreate; - - /** 数据库字段:gmt_modified */ - private Date gmtModified; -} diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/manager/DbRouteConfigManager.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/manager/DbRouteConfigManager.java index 0108cffd..5c5aac2e 100644 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/manager/DbRouteConfigManager.java +++ b/sop-gateway/src/main/java/com/gitee/sop/gateway/manager/DbRouteConfigManager.java @@ -1,6 +1,5 @@ package com.gitee.sop.gateway.manager; -import com.gitee.sop.gateway.mapper.ConfigRouteLimitMapper; import com.gitee.sop.gateway.mapper.ConfigRouteMapper; import com.gitee.sop.gatewaycommon.bean.ChannelMsg; import com.gitee.sop.gatewaycommon.bean.RouteConfig; @@ -21,13 +20,10 @@ import java.util.List; public class DbRouteConfigManager extends DefaultRouteConfigManager { @Autowired - ConfigRouteLimitMapper configRouteLimitMapper; + private ConfigRouteMapper configRouteMapper; @Autowired - ConfigRouteMapper configRouteMapper; - - @Autowired - Environment environment; + private Environment environment; @Override public void load(String serviceId) { diff --git a/sop-gateway/src/main/java/com/gitee/sop/gateway/mapper/ConfigRouteLimitMapper.java b/sop-gateway/src/main/java/com/gitee/sop/gateway/mapper/ConfigRouteLimitMapper.java deleted file mode 100644 index 4dfb7f86..00000000 --- a/sop-gateway/src/main/java/com/gitee/sop/gateway/mapper/ConfigRouteLimitMapper.java +++ /dev/null @@ -1,11 +0,0 @@ -package com.gitee.sop.gateway.mapper; - -import com.gitee.fastmybatis.core.mapper.CrudMapper; -import com.gitee.sop.gateway.entity.ConfigRouteLimit; - - -/** - * @author tanghc - */ -public interface ConfigRouteLimitMapper extends CrudMapper { -} diff --git a/sop-mysql5.6以下版本.sql b/sop-mysql5.6以下版本.sql index bc1e43a2..8e02579a 100644 --- a/sop-mysql5.6以下版本.sql +++ b/sop-mysql5.6以下版本.sql @@ -9,7 +9,6 @@ DROP TABLE IF EXISTS `perm_role`; DROP TABLE IF EXISTS `perm_isv_role`; DROP TABLE IF EXISTS `isv_keys`; DROP TABLE IF EXISTS `isv_info`; -DROP TABLE IF EXISTS `config_route_limit`; DROP TABLE IF EXISTS `config_route_base`; DROP TABLE IF EXISTS `config_limit`; DROP TABLE IF EXISTS `config_ip_blacklist`; @@ -113,22 +112,6 @@ CREATE TABLE `config_route_base` ( ) ENGINE=INNODB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='路由配置表'; -CREATE TABLE `config_route_limit` ( - `id` INT(11) UNSIGNED NOT NULL AUTO_INCREMENT, - `route_id` VARCHAR(64) NOT NULL COMMENT '路由id', - `service_id` VARCHAR(64) NOT NULL DEFAULT '', - `limit_type` TINYINT(4) NOT NULL DEFAULT '1' COMMENT '限流策略,1:窗口策略,2:令牌桶策略', - `exec_count_per_second` INT(11) DEFAULT NULL COMMENT '每秒可处理请求数', - `limit_code` VARCHAR(64) DEFAULT NULL COMMENT '返回的错误码', - `limit_msg` VARCHAR(100) DEFAULT NULL COMMENT '返回的错误信息', - `token_bucket_count` INT(11) DEFAULT NULL COMMENT '令牌桶容量', - `limit_status` TINYINT(4) NOT NULL DEFAULT '0' COMMENT '限流开启状态,1:开启,0关闭', - `gmt_create` DATETIME DEFAULT NULL, - `gmt_modified` DATETIME DEFAULT NULL, - PRIMARY KEY (`id`), - UNIQUE KEY `uk_routeid` (`route_id`) USING BTREE -) ENGINE=INNODB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='路由限流配置'; - CREATE TABLE `isv_info` ( `id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT, @@ -241,13 +224,6 @@ INSERT INTO `config_route_base` (`id`, `route_id`, `status`, `gmt_create`, `gmt_ (8,'goods.add1.0',1,'2019-05-13 17:23:00','2019-05-13 17:23:11'); -INSERT INTO `config_route_limit` (`id`, `route_id`, `service_id`, `limit_type`, `exec_count_per_second`, `limit_code`, `limit_msg`, `token_bucket_count`, `limit_status`, `gmt_create`, `gmt_modified`) VALUES - (1,'alipay.story.find1.0','story-service',1,10,'isp.service-busy','服务器正忙',NULL,1,'2019-04-10 20:55:08','2019-04-10 21:04:35'), - (2,'alipay.story.get1.0','story-service',2,5,'isp.service-busy','服务器正忙',5,0,'2019-04-10 21:05:51','2019-04-11 18:18:03'), - (3,'alipay.story.get1.2','story-service',2,10,'isp.service-busy','服务器正忙',3,1,'2019-04-11 17:26:04','2019-04-11 18:19:33'), - (4,'alipay.category.get1.0','story-service',1,5,'error-code','服务器忙',5,1,'2019-05-07 12:22:04','2019-05-07 12:25:06'); - - INSERT INTO `isv_info` (`id`, `app_key`, `status`, `sign_type`, `remark`, `gmt_create`, `gmt_modified`) VALUES (1,'2019032617262200001',1,1,NULL,'2019-03-27 10:10:34','2019-05-09 11:10:38'), (3,'asdfasdf',2,1,NULL,'2019-03-27 11:01:11','2019-05-11 10:45:01'), diff --git a/sop.sql b/sop.sql index 2f850206..3b44a9e7 100644 --- a/sop.sql +++ b/sop.sql @@ -12,7 +12,6 @@ DROP TABLE IF EXISTS `perm_isv_role`; DROP TABLE IF EXISTS `isv_keys`; DROP TABLE IF EXISTS `isv_info`; DROP TABLE IF EXISTS `config_service_route`; -DROP TABLE IF EXISTS `config_route_limit`; DROP TABLE IF EXISTS `config_route_base`; DROP TABLE IF EXISTS `config_limit`; DROP TABLE IF EXISTS `config_ip_blacklist`; @@ -115,23 +114,6 @@ CREATE TABLE `config_route_base` ( ) ENGINE=InnoDB AUTO_INCREMENT=9 DEFAULT CHARSET=utf8 COMMENT='路由配置表'; -CREATE TABLE `config_route_limit` ( - `id` int(11) unsigned NOT NULL AUTO_INCREMENT, - `route_id` varchar(64) NOT NULL COMMENT '路由id', - `service_id` varchar(64) NOT NULL DEFAULT '', - `limit_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '限流策略,1:窗口策略,2:令牌桶策略', - `exec_count_per_second` int(11) DEFAULT NULL COMMENT '每秒可处理请求数', - `limit_code` varchar(64) DEFAULT NULL COMMENT '返回的错误码', - `limit_msg` varchar(100) DEFAULT NULL COMMENT '返回的错误信息', - `token_bucket_count` int(11) DEFAULT NULL COMMENT '令牌桶容量', - `limit_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '限流开启状态,1:开启,0关闭', - `gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, - `gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, - PRIMARY KEY (`id`), - UNIQUE KEY `uk_routeid` (`route_id`) USING BTREE -) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8 COMMENT='路由限流配置'; - - CREATE TABLE `config_service_route` ( `id` varchar(128) NOT NULL DEFAULT '' COMMENT '路由id', `service_id` varchar(128) NOT NULL DEFAULT '', @@ -244,13 +226,6 @@ INSERT INTO `config_route_base` (`id`, `route_id`, `status`, `gmt_create`, `gmt_ (8,'goods.add1.0',1,'2019-05-13 17:23:00','2019-05-13 17:23:11'); -INSERT INTO `config_route_limit` (`id`, `route_id`, `service_id`, `limit_type`, `exec_count_per_second`, `limit_code`, `limit_msg`, `token_bucket_count`, `limit_status`, `gmt_create`, `gmt_modified`) VALUES - (1,'alipay.story.find1.0','story-service',1,10,'isp.service-busy','服务器正忙',NULL,1,'2019-04-10 20:55:08','2019-04-10 21:04:35'), - (2,'alipay.story.get1.0','story-service',2,5,'isp.service-busy','服务器正忙',5,0,'2019-04-10 21:05:51','2019-04-11 18:18:03'), - (3,'alipay.story.get1.2','story-service',2,10,'isp.service-busy','服务器正忙',3,1,'2019-04-11 17:26:04','2019-04-11 18:19:33'), - (4,'alipay.category.get1.0','story-service',1,5,'error-code','服务器忙',5,1,'2019-05-07 12:22:04','2019-05-07 12:25:06'); - - INSERT INTO `isv_info` (`id`, `app_key`, `status`, `sign_type`, `remark`, `gmt_create`, `gmt_modified`) VALUES (1,'2019032617262200001',1,1,NULL,'2019-03-27 10:10:34','2019-05-09 11:10:38'), (3,'asdfasdf',2,1,NULL,'2019-03-27 11:01:11','2019-05-11 10:45:01'),