Merge branch 'master' into eureka

eureka
tanghc 5 years ago
commit ac762e800f
  1. 6
      sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/IsvApi.java
  2. 2
      sop-admin/sop-admin-server/src/main/resources/public/index.html
  3. 2
      sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-25908fca.a66354ec.css
  4. 2
      sop-admin/sop-admin-server/src/main/resources/public/static/css/chunk-73b2dcec.ed391cc5.css
  5. 1
      sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.05d6b15b.js
  6. 1
      sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.66819987.js
  7. 1
      sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-73b2dcec.24dc2be7.js
  8. 1
      sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-73b2dcec.60c5d8e9.js
  9. 42
      sop-admin/sop-admin-vue/src/views/isv/index.vue
  10. 52
      sop-admin/sop-admin-vue/src/views/isv/keys.vue
  11. 2
      sop-gateway/src/main/resources/application-dev.properties
  12. 2
      sop-website/src/main/resources/public/pages/doc/doc.html

@ -246,10 +246,8 @@ public class IsvApi {
isvFormVO.setPublicKeyIsv(keyStoreIsv.getPublicKey()); isvFormVO.setPublicKeyIsv(keyStoreIsv.getPublicKey());
isvFormVO.setPrivateKeyIsv(keyStoreIsv.getPrivateKey()); isvFormVO.setPrivateKeyIsv(keyStoreIsv.getPrivateKey());
RSATool rsaToolPlatform = new RSATool(RSATool.KeyFormat.PKCS8, RSATool.KeyLength.LENGTH_2048); isvFormVO.setPublicKeyPlatform("");
RSATool.KeyStore keyStorePlatform = rsaToolPlatform.createKeys(); isvFormVO.setPrivateKeyPlatform("");
isvFormVO.setPublicKeyPlatform(keyStorePlatform.getPublicKey());
isvFormVO.setPrivateKeyPlatform(keyStorePlatform.getPrivateKey());
return isvFormVO; return isvFormVO;
} }

@ -1 +1 @@
<!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=favicon.ico><title>SOP Admin</title><link href=static/css/chunk-elementUI.81cf475c.css rel=stylesheet><link href=static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=static/css/app.c6dfb7ee.css rel=stylesheet></head><body><noscript><strong>We're sorry but SOP Admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function n(n){for(var r,c,a=n[0],f=n[1],i=n[2],d=0,l=[];d<a.length;d++)c=a[d],u[c]&&l.push(u[c][0]),u[c]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);h&&h(n);while(l.length)l.shift()();return o.push.apply(o,i||[]),t()}function t(){for(var e,n=0;n<o.length;n++){for(var t=o[n],r=!0,c=1;c<t.length;c++){var a=t[c];0!==u[a]&&(r=!1)}r&&(o.splice(n--,1),e=f(f.s=t[0]))}return e}var r={},c={runtime:0},u={runtime:0},o=[];function a(e){return f.p+"static/js/"+({}[e]||e)+"."+{"chunk-0faf9ba2":"88458f58","chunk-25908fca":"05d6b15b","chunk-2c1f2e8f":"f092c0a0","chunk-2d2085ef":"91d75f3c","chunk-2d221c34":"20057287","chunk-4de1c2b6":"e74e3d03","chunk-6f78c9fe":"3ac83b41","chunk-73b2dcec":"24dc2be7","chunk-9b31c83a":"52bc6b2c","chunk-9f479afe":"0d0ed757","chunk-c3ce42fe":"9517b588"}[e]+".js"}function f(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var n=[],t={"chunk-0faf9ba2":1,"chunk-25908fca":1,"chunk-2c1f2e8f":1,"chunk-4de1c2b6":1,"chunk-73b2dcec":1,"chunk-9b31c83a":1,"chunk-c3ce42fe":1};c[e]?n.push(c[e]):0!==c[e]&&t[e]&&n.push(c[e]=new Promise(function(n,t){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-0faf9ba2":"ed1510dd","chunk-25908fca":"89ab33e8","chunk-2c1f2e8f":"0314067f","chunk-2d2085ef":"31d6cfe0","chunk-2d221c34":"31d6cfe0","chunk-4de1c2b6":"a37cd815","chunk-6f78c9fe":"31d6cfe0","chunk-73b2dcec":"99cf6327","chunk-9b31c83a":"3b12267b","chunk-9f479afe":"31d6cfe0","chunk-c3ce42fe":"6b789903"}[e]+".css",u=f.p+r,o=document.getElementsByTagName("link"),a=0;a<o.length;a++){var i=o[a],d=i.getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(d===r||d===u))return n()}var l=document.getElementsByTagName("style");for(a=0;a<l.length;a++){i=l[a],d=i.getAttribute("data-href");if(d===r||d===u)return n()}var h=document.createElement("link");h.rel="stylesheet",h.type="text/css",h.onload=n,h.onerror=function(n){var r=n&&n.target&&n.target.src||u,o=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");o.code="CSS_CHUNK_LOAD_FAILED",o.request=r,delete c[e],h.parentNode.removeChild(h),t(o)},h.href=u;var s=document.getElementsByTagName("head")[0];s.appendChild(h)}).then(function(){c[e]=0}));var r=u[e];if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(function(n,t){r=u[e]=[n,t]});n.push(r[2]=o);var i,d=document.createElement("script");d.charset="utf-8",d.timeout=120,f.nc&&d.setAttribute("nonce",f.nc),d.src=a(e),i=function(n){d.onerror=d.onload=null,clearTimeout(l);var t=u[e];if(0!==t){if(t){var r=n&&("load"===n.type?"missing":n.type),c=n&&n.target&&n.target.src,o=new Error("Loading chunk "+e+" failed.\n("+r+": "+c+")");o.type=r,o.request=c,t[1](o)}u[e]=void 0}};var l=setTimeout(function(){i({type:"timeout",target:d})},12e4);d.onerror=d.onload=i,document.head.appendChild(d)}return Promise.all(n)},f.m=e,f.c=r,f.d=function(e,n,t){f.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},f.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,n){if(1&n&&(e=f(e)),8&n)return e;if(4&n&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)f.d(t,r,function(n){return e[n]}.bind(null,r));return t},f.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return f.d(n,"a",n),n},f.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},f.p="",f.oe=function(e){throw console.error(e),e};var i=window["webpackJsonp"]=window["webpackJsonp"]||[],d=i.push.bind(i);i.push=n,i=i.slice();for(var l=0;l<i.length;l++)n(i[l]);var h=d;t()})([]);</script><script src=static/js/chunk-elementUI.298ac98c.js></script><script src=static/js/chunk-libs.75deb05f.js></script><script src=static/js/app.f05d6d01.js></script></body></html> <!DOCTYPE html><html><head><meta charset=utf-8><meta http-equiv=X-UA-Compatible content="IE=edge,chrome=1"><meta name=viewport content="width=device-width,initial-scale=1,maximum-scale=1,user-scalable=no"><link rel=icon href=favicon.ico><title>SOP Admin</title><link href=static/css/chunk-elementUI.81cf475c.css rel=stylesheet><link href=static/css/chunk-libs.3dfb7769.css rel=stylesheet><link href=static/css/app.c6dfb7ee.css rel=stylesheet></head><body><noscript><strong>We're sorry but SOP Admin doesn't work properly without JavaScript enabled. Please enable it to continue.</strong></noscript><div id=app></div><script>(function(e){function n(n){for(var r,c,a=n[0],f=n[1],i=n[2],d=0,l=[];d<a.length;d++)c=a[d],u[c]&&l.push(u[c][0]),u[c]=0;for(r in f)Object.prototype.hasOwnProperty.call(f,r)&&(e[r]=f[r]);h&&h(n);while(l.length)l.shift()();return o.push.apply(o,i||[]),t()}function t(){for(var e,n=0;n<o.length;n++){for(var t=o[n],r=!0,c=1;c<t.length;c++){var a=t[c];0!==u[a]&&(r=!1)}r&&(o.splice(n--,1),e=f(f.s=t[0]))}return e}var r={},c={runtime:0},u={runtime:0},o=[];function a(e){return f.p+"static/js/"+({}[e]||e)+"."+{"chunk-0faf9ba2":"88458f58","chunk-25908fca":"66819987","chunk-2c1f2e8f":"f092c0a0","chunk-2d2085ef":"91d75f3c","chunk-2d221c34":"20057287","chunk-4de1c2b6":"e74e3d03","chunk-6f78c9fe":"3ac83b41","chunk-73b2dcec":"60c5d8e9","chunk-9b31c83a":"52bc6b2c","chunk-9f479afe":"0d0ed757","chunk-c3ce42fe":"9517b588"}[e]+".js"}function f(n){if(r[n])return r[n].exports;var t=r[n]={i:n,l:!1,exports:{}};return e[n].call(t.exports,t,t.exports,f),t.l=!0,t.exports}f.e=function(e){var n=[],t={"chunk-0faf9ba2":1,"chunk-25908fca":1,"chunk-2c1f2e8f":1,"chunk-4de1c2b6":1,"chunk-73b2dcec":1,"chunk-9b31c83a":1,"chunk-c3ce42fe":1};c[e]?n.push(c[e]):0!==c[e]&&t[e]&&n.push(c[e]=new Promise(function(n,t){for(var r="static/css/"+({}[e]||e)+"."+{"chunk-0faf9ba2":"ed1510dd","chunk-25908fca":"a66354ec","chunk-2c1f2e8f":"0314067f","chunk-2d2085ef":"31d6cfe0","chunk-2d221c34":"31d6cfe0","chunk-4de1c2b6":"a37cd815","chunk-6f78c9fe":"31d6cfe0","chunk-73b2dcec":"ed391cc5","chunk-9b31c83a":"3b12267b","chunk-9f479afe":"31d6cfe0","chunk-c3ce42fe":"6b789903"}[e]+".css",u=f.p+r,o=document.getElementsByTagName("link"),a=0;a<o.length;a++){var i=o[a],d=i.getAttribute("data-href")||i.getAttribute("href");if("stylesheet"===i.rel&&(d===r||d===u))return n()}var l=document.getElementsByTagName("style");for(a=0;a<l.length;a++){i=l[a],d=i.getAttribute("data-href");if(d===r||d===u)return n()}var h=document.createElement("link");h.rel="stylesheet",h.type="text/css",h.onload=n,h.onerror=function(n){var r=n&&n.target&&n.target.src||u,o=new Error("Loading CSS chunk "+e+" failed.\n("+r+")");o.code="CSS_CHUNK_LOAD_FAILED",o.request=r,delete c[e],h.parentNode.removeChild(h),t(o)},h.href=u;var s=document.getElementsByTagName("head")[0];s.appendChild(h)}).then(function(){c[e]=0}));var r=u[e];if(0!==r)if(r)n.push(r[2]);else{var o=new Promise(function(n,t){r=u[e]=[n,t]});n.push(r[2]=o);var i,d=document.createElement("script");d.charset="utf-8",d.timeout=120,f.nc&&d.setAttribute("nonce",f.nc),d.src=a(e),i=function(n){d.onerror=d.onload=null,clearTimeout(l);var t=u[e];if(0!==t){if(t){var r=n&&("load"===n.type?"missing":n.type),c=n&&n.target&&n.target.src,o=new Error("Loading chunk "+e+" failed.\n("+r+": "+c+")");o.type=r,o.request=c,t[1](o)}u[e]=void 0}};var l=setTimeout(function(){i({type:"timeout",target:d})},12e4);d.onerror=d.onload=i,document.head.appendChild(d)}return Promise.all(n)},f.m=e,f.c=r,f.d=function(e,n,t){f.o(e,n)||Object.defineProperty(e,n,{enumerable:!0,get:t})},f.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},f.t=function(e,n){if(1&n&&(e=f(e)),8&n)return e;if(4&n&&"object"===typeof e&&e&&e.__esModule)return e;var t=Object.create(null);if(f.r(t),Object.defineProperty(t,"default",{enumerable:!0,value:e}),2&n&&"string"!=typeof e)for(var r in e)f.d(t,r,function(n){return e[n]}.bind(null,r));return t},f.n=function(e){var n=e&&e.__esModule?function(){return e["default"]}:function(){return e};return f.d(n,"a",n),n},f.o=function(e,n){return Object.prototype.hasOwnProperty.call(e,n)},f.p="",f.oe=function(e){throw console.error(e),e};var i=window["webpackJsonp"]=window["webpackJsonp"]||[],d=i.push.bind(i);i.push=n,i=i.slice();for(var l=0;l<i.length;l++)n(i[l]);var h=d;t()})([]);</script><script src=static/js/chunk-elementUI.298ac98c.js></script><script src=static/js/chunk-libs.75deb05f.js></script><script src=static/js/app.f05d6d01.js></script></body></html>

@ -1 +1 @@
.gen-key{margin-bottom:0!important}fieldset{border:1px solid #ccc;color:grey;margin-left:40px;margin-bottom:20px}fieldset label{width:110px!important}fieldset .el-form-item__content{margin-left:110px!important}.key-view .el-form-item{margin-bottom:10px!important} .gen-key{margin-bottom:0!important}fieldset{border:1px solid #ccc;color:grey;margin-left:40px;margin-bottom:20px}fieldset label{width:110px!important}fieldset .el-form-item__content{margin-left:110px!important}.key-view .el-form-item{margin-bottom:10px!important}.keyTabs .el-tabs__header{margin-left:70px}

@ -1 +1 @@
.gen-key{margin-bottom:0!important}fieldset{border:1px solid #ccc;color:grey;margin-left:40px;margin-bottom:20px}fieldset label{width:110px!important}fieldset .el-form-item__content{margin-left:110px!important} .gen-key{margin-bottom:0!important}fieldset{border:1px solid #ccc;color:grey;margin-left:40px;margin-bottom:20px}fieldset label{width:110px!important}fieldset .el-form-item__content{margin-left:110px!important}.keyTabs .el-tabs__header{margin-left:70px}

@ -38,7 +38,7 @@
prop="roleList" prop="roleList"
label="角色" label="角色"
width="100" width="100"
show-overflow-tooltip="true" :show-overflow-tooltip="true"
> >
<template slot-scope="scope"> <template slot-scope="scope">
<div v-html="roleRender(scope.row)"></div> <div v-html="roleRender(scope.row)"></div>
@ -68,7 +68,7 @@
prop="remark" prop="remark"
label="备注" label="备注"
width="120" width="120"
show-overflow-tooltip="true" :show-overflow-tooltip="true"
/> />
<el-table-column <el-table-column
label="操作" label="操作"
@ -159,24 +159,24 @@
<el-form-item v-show="isvKeysFormData.signType === 2" :label="selfLabel('secret')"> <el-form-item v-show="isvKeysFormData.signType === 2" :label="selfLabel('secret')">
<span>{{ isvKeysFormData.secret }}</span> <span>{{ isvKeysFormData.secret }}</span>
</el-form-item> </el-form-item>
<fieldset v-show="showKeys()"> <el-tabs v-show="showKeys()" v-model="activeName" type="card" class="keyTabs">
<legend>ISV公私钥</legend> <el-tab-pane label="ISV公私钥" name="first">
<el-form-item label="ISV公钥"> <el-form-item label="ISV公钥">
<el-input v-model="isvKeysFormData.publicKeyIsv" type="textarea" readonly /> <el-input v-model="isvKeysFormData.publicKeyIsv" type="textarea" readonly />
</el-form-item> </el-form-item>
<el-form-item :label="selfLabel('ISV私钥')"> <el-form-item :label="selfLabel('ISV私钥')">
<el-input v-model="isvKeysFormData.privateKeyIsv" type="textarea" readonly /> <el-input v-model="isvKeysFormData.privateKeyIsv" type="textarea" readonly />
</el-form-item> </el-form-item>
</fieldset> </el-tab-pane>
<fieldset v-show="showKeys()"> <el-tab-pane label="平台公私钥[可选]" name="second">
<legend>平台公私钥</legend> <el-form-item label="平台公钥">
<el-form-item :label="selfLabel('平台公钥')"> <el-input v-model="isvKeysFormData.publicKeyPlatform" type="textarea" readonly />
<el-input v-model="isvKeysFormData.publicKeyPlatform" type="textarea" readonly /> </el-form-item>
</el-form-item> <el-form-item prop="privateKeyPlatform" label="平台私钥">
<el-form-item prop="privateKeyPlatform" label="平台私钥"> <el-input v-model="isvKeysFormData.privateKeyPlatform" type="textarea" readonly />
<el-input v-model="isvKeysFormData.privateKeyPlatform" type="textarea" readonly /> </el-form-item>
</el-form-item> </el-tab-pane>
</fieldset> </el-tabs>
</el-form> </el-form>
<span slot="footer" class="dialog-footer"> <span slot="footer" class="dialog-footer">
<el-button @click="isvKeysDialogVisible = false"> </el-button> <el-button @click="isvKeysDialogVisible = false"> </el-button>
@ -190,6 +190,7 @@
fieldset label {width: 110px !important;} fieldset label {width: 110px !important;}
fieldset .el-form-item__content {margin-left: 110px !important;} fieldset .el-form-item__content {margin-left: 110px !important;}
.key-view .el-form-item {margin-bottom: 10px !important;} .key-view .el-form-item {margin-bottom: 10px !important;}
.keyTabs .el-tabs__header{margin-left: 70px;}
</style> </style>
<script> <script>
export default { export default {
@ -219,6 +220,7 @@ export default {
{ min: 0, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur' } { min: 0, max: 100, message: '长度在 1 到 100 个字符', trigger: 'blur' }
] ]
}, },
activeName: 'first',
isSaveButtonDisabled: false, isSaveButtonDisabled: false,
isvKeysDialogVisible: false, isvKeysDialogVisible: false,
isvKeysFormData: { isvKeysFormData: {

@ -28,30 +28,30 @@
<el-form-item v-show="isvKeysFormData.signType === 2" prop="secret" :label="selfLabel('secret')"> <el-form-item v-show="isvKeysFormData.signType === 2" prop="secret" :label="selfLabel('secret')">
<el-input v-model="isvKeysFormData.secret" /> <el-button type="text" @click="onGenSecret">重新生成</el-button> <el-input v-model="isvKeysFormData.secret" /> <el-button type="text" @click="onGenSecret">重新生成</el-button>
</el-form-item> </el-form-item>
<fieldset v-show="showKeys()"> <el-tabs v-show="showKeys()" v-model="activeName" type="card" class="keyTabs">
<legend>ISV公私钥</legend> <el-tab-pane label="ISV公私钥" name="first">
<el-form-item class="gen-key"> <el-form-item class="gen-key">
<el-button type="text" @click="onGenKeysIsv">重新生成</el-button> <el-button type="text" @click="onGenKeysIsv">重新生成</el-button>
</el-form-item> </el-form-item>
<el-form-item prop="publicKeyIsv" label="ISV公钥"> <el-form-item prop="publicKeyIsv" label="ISV公钥">
<el-input v-model="isvKeysFormData.publicKeyIsv" type="textarea" /> <el-input v-model="isvKeysFormData.publicKeyIsv" type="textarea" />
</el-form-item> </el-form-item>
<el-form-item prop="privateKeyIsv" :label="selfLabel('ISV私钥')"> <el-form-item prop="privateKeyIsv" :label="selfLabel('ISV私钥')">
<el-input v-model="isvKeysFormData.privateKeyIsv" type="textarea" /> <el-input v-model="isvKeysFormData.privateKeyIsv" type="textarea" />
</el-form-item> </el-form-item>
</fieldset> </el-tab-pane>
<fieldset v-show="showKeys()"> <el-tab-pane label="平台公私钥[可选]" name="second">
<legend>平台公私钥[可选]</legend> <el-form-item class="gen-key">
<el-form-item class="gen-key"> <el-button type="text" @click="onGenKeysPlatform">重新生成</el-button>
<el-button type="text" @click="onGenKeysPlatform">重新生成</el-button> </el-form-item>
</el-form-item> <el-form-item prop="publicKeyPlatform" label="平台公钥">
<el-form-item prop="publicKeyPlatform" :label="selfLabel('平台公钥')"> <el-input v-model="isvKeysFormData.publicKeyPlatform" type="textarea" />
<el-input v-model="isvKeysFormData.publicKeyPlatform" type="textarea" /> </el-form-item>
</el-form-item> <el-form-item prop="privateKeyPlatform" label="平台私钥">
<el-form-item prop="privateKeyPlatform" label="平台私钥"> <el-input v-model="isvKeysFormData.privateKeyPlatform" type="textarea" />
<el-input v-model="isvKeysFormData.privateKeyPlatform" type="textarea" /> </el-form-item>
</el-form-item> </el-tab-pane>
</fieldset> </el-tabs>
<el-form-item> <el-form-item>
<el-button type="primary" @click="onSubmit">保存</el-button> <el-button type="primary" @click="onSubmit">保存</el-button>
<el-button @click="onBack">取消</el-button> <el-button @click="onBack">取消</el-button>
@ -64,6 +64,7 @@
fieldset {border: 1px solid #ccc; color: gray;margin-left: 40px;margin-bottom: 20px;} fieldset {border: 1px solid #ccc; color: gray;margin-left: 40px;margin-bottom: 20px;}
fieldset label {width: 110px !important;} fieldset label {width: 110px !important;}
fieldset .el-form-item__content {margin-left: 110px !important;} fieldset .el-form-item__content {margin-left: 110px !important;}
.keyTabs .el-tabs__header{margin-left: 70px;}
</style> </style>
<script> <script>
export default { export default {
@ -108,7 +109,8 @@ export default {
privateKeyIsv: [ privateKeyIsv: [
{ validator: validatePubPriKey, trigger: 'blur' } { validator: validatePubPriKey, trigger: 'blur' }
] ]
} },
activeName: 'first'
} }
}, },
created() { created() {

@ -18,8 +18,6 @@ zipkin.url=http://127.0.0.1:9411/
pre.domain=localhost pre.domain=localhost
# ------- 需要改的配置end ------- # ------- 需要改的配置end -------
sop.restful.enable=true
# 入口地址,不用改,默认是/zuul # 入口地址,不用改,默认是/zuul
zuul.servlet-path=/api zuul.servlet-path=/api
# 禁用默认的过滤器,不能删,不用改 # 禁用默认的过滤器,不能删,不用改

@ -222,7 +222,7 @@
<td>String</td> <td>String</td>
<td></td> <td></td>
<td>3</td> <td>3</td>
<td>调用的接口版本,固定为:1.0</td> <td>调用的接口版本,<span class="sop-version"></span></td>
<td>1.0</td> <td>1.0</td>
</tr> </tr>

Loading…
Cancel
Save