From 8876cb1fa0ec57aa2aaf5bafd98c63eaaf3f3154 Mon Sep 17 00:00:00 2001 From: tanghc Date: Thu, 18 Jul 2019 17:37:34 +0800 Subject: [PATCH] 1.12.4 --- changelog.md | 6 + doc/docs/_sidebar.md | 59 +++++----- doc/docs/files/10010_快速体验.md | 4 +- doc/docs/files/10109_配置Sleuth链路追踪.md | 104 ++++++++++++++++++ doc/docs/files/images/10109_1.png | Bin 0 -> 36010 bytes doc/docs/index.html | 2 +- sop-1.12.4.sql | 2 + sop-admin/sop-admin-server/pom.xml | 2 +- .../api/isv/param/IsvInfoForm.java | 5 + .../adminserver/api/isv/result/IsvInfoVO.java | 3 + .../gitee/sop/adminserver/entity/IsvInfo.java | 3 + .../src/main/resources/public/index.html | 2 +- .../static/js/chunk-25908fca.9d8bc0b6.js | 1 - .../static/js/chunk-25908fca.ca176fa6.js | 1 + .../sop-admin-vue/src/views/isv/index.vue | 29 +++-- sop-common/pom.xml | 2 +- sop-common/sop-gateway-common/pom.xml | 4 +- sop-common/sop-registry-api/pom.xml | 2 +- sop-common/sop-service-common/pom.xml | 4 +- sop-example/sop-auth/pom.xml | 2 +- sop-example/sop-book/sop-book-web/pom.xml | 2 +- sop-example/sop-easyopen/pom.xml | 2 +- sop-example/sop-springmvc/pom.xml | 2 +- sop-example/sop-story/sop-story-web/pom.xml | 2 +- sop-gateway/pom.xml | 2 +- sop-website/website-server/pom.xml | 2 +- sop.sql | 1 + 27 files changed, 194 insertions(+), 56 deletions(-) create mode 100644 doc/docs/files/10109_配置Sleuth链路追踪.md create mode 100644 doc/docs/files/images/10109_1.png create mode 100644 sop-1.12.4.sql delete mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.9d8bc0b6.js create mode 100644 sop-admin/sop-admin-server/src/main/resources/public/static/js/chunk-25908fca.ca176fa6.js 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 0000000000000000000000000000000000000000..6dc46da9794a0a51df4f33dd3547c628cf7474c8 GIT binary patch literal 36010 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 yf0X_IUHC6Y 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