diff --git a/changelog.md b/changelog.md index 419f5415..692483fb 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,11 @@ # changelog +## 1.12.4 + +- 优化属性文件配置 +- 新增sleuth接入文档 +- admin的isv列表新增备注字段 + ## 1.12.3 - 修复删除zk节点导致的BUG diff --git a/doc/docs/_sidebar.md b/doc/docs/_sidebar.md index 28cb8fb7..88f0f8b6 100644 --- a/doc/docs/_sidebar.md +++ b/doc/docs/_sidebar.md @@ -1,31 +1,32 @@ -* [首页](/?t=1562744547267) +* [首页](/?t=1563439736156) * 开发文档 - * [快速体验](files/10010_快速体验.md?t=1562744547269) - * [项目接入到SOP](files/10011_项目接入到SOP.md?t=1562744547286) - * [新增接口](files/10020_新增接口.md?t=1562744547286) - * [业务参数校验](files/10030_业务参数校验.md?t=1562744547287) - * [错误处理](files/10040_错误处理.md?t=1562744547287) - * [编写文档](files/10041_编写文档.md?t=1562744547287) - * [接口交互详解](files/10050_接口交互详解.md?t=1562744547287) - * [easyopen支持](files/10070_easyopen支持.md?t=1562744547287) - * [使用签名校验工具](files/10080_使用签名校验工具.md?t=1562744547287) - * [ISV管理](files/10085_ISV管理.md?t=1562744547287) - * [自定义路由](files/10086_自定义路由.md?t=1562744547287) - * [路由授权](files/10090_路由授权.md?t=1562744547287) - * [接口限流](files/10092_接口限流.md?t=1562744547288) - * [监控日志](files/10093_监控日志.md?t=1562744547288) - * [SDK开发](files/10095_SDK开发.md?t=1562744547288) - * [使用SpringCloudGateway](files/10096_使用SpringCloudGateway.md?t=1562744547288) - * [应用授权](files/10097_应用授权.md?t=1562744547288) - * [更改数据节点名称](files/10099_更改数据节点名称.md?t=1562744547288) - * [对接前端](files/10100_对接前端.md?t=1562744547288) - * [自定义过滤器](files/10102_自定义过滤器.md?t=1562744547288) - * [文件上传](files/10104_文件上传.md?t=1562744547289) - * [nacos注册中心](files/10106_nacos注册中心.md?t=1562744547289) - * [扩展其它注册中心](files/10107_扩展其它注册中心.md?t=1562744547289) + * [快速体验](files/10010_快速体验.md?t=1563439736157) + * [项目接入到SOP](files/10011_项目接入到SOP.md?t=1563439736174) + * [新增接口](files/10020_新增接口.md?t=1563439736174) + * [业务参数校验](files/10030_业务参数校验.md?t=1563439736174) + * [错误处理](files/10040_错误处理.md?t=1563439736174) + * [编写文档](files/10041_编写文档.md?t=1563439736174) + * [接口交互详解](files/10050_接口交互详解.md?t=1563439736174) + * [easyopen支持](files/10070_easyopen支持.md?t=1563439736175) + * [使用签名校验工具](files/10080_使用签名校验工具.md?t=1563439736175) + * [ISV管理](files/10085_ISV管理.md?t=1563439736175) + * [自定义路由](files/10086_自定义路由.md?t=1563439736175) + * [路由授权](files/10090_路由授权.md?t=1563439736175) + * [接口限流](files/10092_接口限流.md?t=1563439736175) + * [监控日志](files/10093_监控日志.md?t=1563439736175) + * [SDK开发](files/10095_SDK开发.md?t=1563439736175) + * [使用SpringCloudGateway](files/10096_使用SpringCloudGateway.md?t=1563439736176) + * [应用授权](files/10097_应用授权.md?t=1563439736176) + * [更改数据节点名称](files/10099_更改数据节点名称.md?t=1563439736176) + * [对接前端](files/10100_对接前端.md?t=1563439736176) + * [自定义过滤器](files/10102_自定义过滤器.md?t=1563439736176) + * [文件上传](files/10104_文件上传.md?t=1563439736176) + * [nacos注册中心](files/10106_nacos注册中心.md?t=1563439736176) + * [扩展其它注册中心](files/10107_扩展其它注册中心.md?t=1563439736176) + * [配置Sleuth链路追踪](files/10109_配置Sleuth链路追踪.md?t=1563439736176) * 原理分析 - * [原理分析之@ApiMapping](files/90010_原理分析之@ApiMapping.md?t=1562744547289) - * [原理分析之路由存储](files/90011_原理分析之路由存储.md?t=1562744547289) - * [原理分析之如何路由](files/90012_原理分析之如何路由.md?t=1562744547289) - * [原理分析之文档归纳](files/90013_原理分析之文档归纳.md?t=1562744547289) - * [常见问题](files/90100_常见问题.md?t=1562744547289) + * [原理分析之@ApiMapping](files/90010_原理分析之@ApiMapping.md?t=1563439736177) + * [原理分析之路由存储](files/90011_原理分析之路由存储.md?t=1563439736177) + * [原理分析之如何路由](files/90012_原理分析之如何路由.md?t=1563439736177) + * [原理分析之文档归纳](files/90013_原理分析之文档归纳.md?t=1563439736177) + * [常见问题](files/90100_常见问题.md?t=1563439736177) diff --git a/doc/docs/files/10010_快速体验.md b/doc/docs/files/10010_快速体验.md index 86590f45..98da7209 100644 --- a/doc/docs/files/10010_快速体验.md +++ b/doc/docs/files/10010_快速体验.md @@ -6,15 +6,15 @@ - 执行Mysql脚本`sop.sql` - IDE安装lombok插件,然后打开项目(IDEA下可以打开根pom.xml,然后open as project) - 启动注册中心,sop-registry(运行SopRegistryApplication.java) +- 启动网关:打开sop-gateway下的`application-dev.properties`,修改数据库`username/password`,指定zookeeper地址,运行`SopGatewayApplication.java` - 启动微服务:sop-story-web(运行SopStoryApplication.java) -- 启动网关:打开sop-gateway下的`application-dev.yml`,修改数据库`username/password`,运行`SopGatewayApplication.java` - 找到sop-test,打开测试用例,进行接口调用测试,运行com.gitee.sop.AlipayClientPostTest.testPost() 确保注册中心先启动 ## 使用admin -- 找到`sop-admin/sop-admin-server`工程,打开sop-admin-server下的`application-dev.yml`,修改数据库`username/password` +- 找到`sop-admin/sop-admin-server`工程,打开sop-admin-server下的`application-dev.properties`,修改相关配置 - 运行`com.gitee.sop.adminserver.SopAdminServerApplication.java` - 访问:`http://localhost:8082` diff --git a/doc/docs/files/10109_配置Sleuth链路追踪.md b/doc/docs/files/10109_配置Sleuth链路追踪.md new file mode 100644 index 00000000..794bba25 --- /dev/null +++ b/doc/docs/files/10109_配置Sleuth链路追踪.md @@ -0,0 +1,104 @@ +# 配置Sleuth链路追踪 + +配置了Sleuth可以很方便查看微服务的调用路线图,可快速定位问题。 + +SOP基于SpringCloud,因此只要整合[Spring Cloud Sleuth](https://spring.io/projects/spring-cloud-sleuth)即可。 +除此之外,还需要支持dubbo的链路的跟踪,Sleuth在2.0已经对dubbo做了支持,详见:[brave-instrumentation-dubbo-rpc](https://github.com/openzipkin/brave/tree/master/instrumentation/dubbo-rpc) + +接入Spring Cloud Sleuth步骤如下: + +- 下载zipkin服务器 + +以mac环境为例,执行下面命令,下载jar并启动zipkin服务 + +``` +curl -sSL https://zipkin.io/quickstart.sh | bash -s +java -jar zipkin.jar +``` + +默认端口是9411,更多安装方式详见:[quickstart](https://zipkin.io/pages/quickstart.html) + +- sop-gateway/pom.xml添加依赖 + +```xml + + + org.springframework.cloud + spring-cloud-starter-zipkin + +``` + +配置文件新增 + +```properties +# zipkin服务跟踪 +spring.zipkin.base-url=http://127.0.0.1:9411/ +# 设置sleuth收集信息的比率,默认0.1,最大是1,数字越大越耗性能 +spring.sleuth.sampler.probability=1 +``` +重启sop-gateway + +- 打开sop-story-web/pom.xml + +添加依赖: + +```xml + + + org.springframework.cloud + spring-cloud-starter-zipkin + + + + io.zipkin.brave + brave-instrumentation-dubbo-rpc + 5.6.6 + +``` + +配置文件新增: + +```properties +# zipkin服务跟踪 +spring.zipkin.base-url=http://127.0.0.1:9411/ +# 设置sleuth收集信息的比率,默认0.1,最大是1,数字越大越耗性能 +spring.sleuth.sampler.probability=1 +# dubbo使用zipkin过滤器 +dubbo.provider.filter=tracing +dubbo.consumer.filter=tracing +``` + +重启服务 + +- 打开sop-book/sop-book-web/pom.xml + +步骤同上 + +- 运行DubboDemoTest.java单元测试 + +运行完毕看控制台,找到日志信息 + +```text +2019-07-18 16:22:04.438 INFO [story-service,59dae98250b276bd,60828035658f175f,true] 90553 --- [:12345-thread-2] c.g.s.s.service.DefaultDemoService : dubbo provider, param: DemoParam(id=222) +``` + +日志内容多了`[story-service,59dae98250b276bd,60828035658f175f,true]`部分,这些是zipkin加进去的,说明如下: + +```text +story-service:服务名称 +59dae98250b276bd:traceId +60828035658f175f:spanId +true:是否上传到zipkin服务器 +``` + +查看各个服务的控制台,可以发现traceId是一致的。 + +- 浏览器打开:http://127.0.0.1:9411/ + +将traceId复制黏贴到右上角文本框进行查询,可看到服务调用链。 + + +![预览](images/10109_1.png "10109_1.png") + + + diff --git a/doc/docs/files/images/10109_1.png b/doc/docs/files/images/10109_1.png new file mode 100644 index 00000000..6dc46da9 Binary files /dev/null and b/doc/docs/files/images/10109_1.png differ diff --git a/doc/docs/index.html b/doc/docs/index.html index 80152d93..951b1933 100644 --- a/doc/docs/index.html +++ b/doc/docs/index.html @@ -38,7 +38,7 @@ loadSidebar: true, loadNavbar: false, mergeNavbar: true, - maxLevel: 4, + maxLevel: 3, subMaxLevel: 2, ga: 'UA-106147152-1', name: '', diff --git a/sop-1.12.4.sql b/sop-1.12.4.sql new file mode 100644 index 00000000..f0ece71b --- /dev/null +++ b/sop-1.12.4.sql @@ -0,0 +1,2 @@ +ALTER TABLE `sop`.`isv_info` ADD COLUMN `remark` VARCHAR(128) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '备注' AFTER `sign_type`; + diff --git a/sop-admin/sop-admin-server/pom.xml b/sop-admin/sop-admin-server/pom.xml index b7ca28fe..92c1113a 100644 --- a/sop-admin/sop-admin-server/pom.xml +++ b/sop-admin/sop-admin-server/pom.xml @@ -30,7 +30,7 @@ com.gitee.sop sop-registry-api - 1.12.3-SNAPSHOT + 1.12.4-SNAPSHOT diff --git a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/param/IsvInfoForm.java b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/param/IsvInfoForm.java index 6d62d1c2..90d88ebc 100644 --- a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/param/IsvInfoForm.java +++ b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/param/IsvInfoForm.java @@ -2,6 +2,7 @@ package com.gitee.sop.adminserver.api.isv.param; import com.gitee.easyopen.doc.annotation.ApiDocField; import lombok.Data; +import org.hibernate.validator.constraints.Length; import java.util.Collections; import java.util.List; @@ -16,6 +17,10 @@ public class IsvInfoForm { @ApiDocField(description = "状态:0:启用,1:禁用") private Byte status = 0; + @ApiDocField(description = "备注") + @Length(max = 100, message = "长度不得唱过100") + private String remark; + @ApiDocField(description = "roleCode数组", elementClass = String.class) private List roleCode = Collections.emptyList(); } diff --git a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/result/IsvInfoVO.java b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/result/IsvInfoVO.java index e2279495..98821496 100644 --- a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/result/IsvInfoVO.java +++ b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/api/isv/result/IsvInfoVO.java @@ -26,6 +26,9 @@ public class IsvInfoVO { @ApiDocField(description = "签名类型:1:RSA2,2:MD5") private Byte signType; + @ApiDocField(description = "备注") + private String remark; + /** 数据库字段:gmt_create */ @ApiDocField(description = "添加时间") private Date gmtCreate; diff --git a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/entity/IsvInfo.java b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/entity/IsvInfo.java index 44720207..1a95e68b 100644 --- a/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/entity/IsvInfo.java +++ b/sop-admin/sop-admin-server/src/main/java/com/gitee/sop/adminserver/entity/IsvInfo.java @@ -40,6 +40,9 @@ public class IsvInfo { /** 1启用,2禁用, 数据库字段:status */ private Byte status; + /** 备注,数据库字段:remark */ + private String remark; + /** 数据库字段:gmt_create */ private Date gmtCreate; 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 db9c4412..1052e74f 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.9d8bc0b6.js b/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.9d8bc0b6.js deleted file mode 100644 index ec5a6661..00000000 --- a/sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.9d8bc0b6.js +++ /dev/null @@ -1 +0,0 @@ -(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:"appKey"}},[a("el-input",{staticStyle:{width:"250px"},attrs:{clearable:!0,placeholder:"appKey"},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:"id",label:"ID",width:"80"}}),e._v(" "),a("el-table-column",{attrs:{prop:"appKey",label:"appKey",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:"角色"},scopedSlots:e._u([{key:"default",fn:function(t){return[a("div",{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:"gmtModified",label:"修改时间",width:"160"}}),e._v(" "),a("el-table-column",{attrs:{label:"操作",width:"150"},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("秘钥管理")])]}}])})],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:"appKey"}},[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:"状态"}},[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"},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("appKey")}},[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("fieldset",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}]},[a("legend",[e._v("ISV公私钥")]),e._v(" "),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("fieldset",{directives:[{name:"show",rawName:"v-show",value:e.showKeys(),expression:"showKeys()"}]},[a("legend",[e._v("平台公私钥")]),e._v(" "),a("el-form-item",{attrs:{label:e.selfLabel("平台公钥")}},[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),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,roleCode:[]},rulesIsvForm:{appKey:[{required:!0,message:"不能为空",trigger:"blur"},{min:1,max:100,message:"长度在 1 到 100 个字符",trigger:"blur"}]},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