数据来源:
POA 中已经存在的 service、version、spec、scope 等数据,需要在开放平台中插入对应的数据。
将POA 中现有的 服务,导入开放平台的服务
具体操作:
根据 platform_openapi 下 SERVICE 表的数据生成 insert 语句
use platform_openapi; select CONCAT( 'INSERT INTO \`TB_DEV_SERVICE\` (ID, DELETED, NAME, DESCRIPTION, ORIGIN, SYSTEM_ID) VALUES', '(\'', ID, '\',\'0\',\'', NAME, '\',\'', DESCRIPTION, '\',\'', ORIGIN, '\',\'','1','\');') as INSERT_SQL from platform_openapi.SERVICE order by ID ;
通过 sql 脚本 设置服务的管理员和开发者
也可以在开放平台管理功能中进行设置
INSERT INTO `TB_DEV_SERVICE_DEVELOPER` (`ID`, `DELETED`, `SERVICE_ID`, `DEVELOPER_ID`) VALUES ('<SERVICE_ID>_150', 0 , '<SERVICE_ID>', '150'); INSERT INTO `TB_DEV_SERVICE_OPERATOR` (`ID`, `DELETED`, `SERVICE_ID`, `OPERATOR_ID`) VALUES ('<SERVICE_ID>_151', 0 , '<SERVICE_ID>', '151');
注,请将 <SERVICE_ID>
替换为 TB_DEV_SERVICE 表的 ID
将POA 中现有的 spec,导入开放平台的spec
具体操作:
根据 platform_openapi 下 API_SPEC 表的数据生成 insert 语句
use platform_openapi; SELECT CONCAT( 'INSERT INTO \`TB_DEV_SERVICE_SPEC\` (ID,DELETED, SERVICE_ID, API_VERSION, EDIT_VERSION, DESCRIPTION, SCOPE_COUNT) VALUES', '(\'', SERVICE_ID,'_',EDIT_VERSION, '\',\'0\',\'', SERVICE_ID, '\',\'', API_VERSION, '\',\'', EDIT_VERSION, '\',\'','','\', 0);') as INSERT_SQL FROM platform_openapi.API_SPEC order by SERVICE_ID, API_VERSION ;
注,请根据 poa-docs 中的 Scopes,补全 SCOPE_COUNT
poa-docs 地址:https://poa-docs.paas.xxx.edu.cn
将POA 中现有的 scope,导入开放平台的scope
具体操作:
根据 platform_openapi 下 API 表的数据生成 insert 语句
use platform_openapi; SELECT CONCAT( 'INSERT INTO \`TB_DEV_SERVICE_SCOPE\` (ID, DELETED, SERVICE_ID, API_VERSION, NAME, DESCRIPTION, PUBLISHED, ENABLED) VALUES', '(\'', SERVICE_ID,'_',SCOPE, '\',\'0\',\'', SERVICE_ID, '\',\'', API_VERSION, '\',\'', SCOPE, '\',\'','','\', 1, 1);') as INSERT_SQL from ( select SERVICE_ID, API_VERSION, EDIT_VERSION, SCOPE from platform_openapi.API where EDIT_VERSION in ( select max(EDIT_VERSION) as EDIT_VERSION from platform_openapi.API group by SERVICE_ID, API_VERSION, SCOPE ) group by SERVICE_ID, API_VERSION, EDIT_VERSION, SCOPE ) API_TMP order by SERVICE_ID, API_VERSION, EDIT_VERSION, SCOPE ;
注,请根据 poa-docs 中的 Scopes,补全 DESCRIPTION
poa-docs 地址:https://poa-docs.paas.xxx.edu.cn
数据来源:
应用数据的来源主要有三部分:
说明:
需要将上述三类数据,整理为一份应用数据,对于有重复的应用数据,保留一份即可。建议先从认证服务的数据开始,认证服务中的应用数据比较全面。
数据从 cas_server.TB_SERVICE 表中获取
具体操作:
方式一,
use cas_server; select S.NAME, S.DESCRIPTION, S.INFORMATION_URL, S.APPLICATION_ID as APPLICATION_IDENTIFICATION from cas_server.TB_SERVICE S where S.DELETED = 0 ;
根据上面的查询结果,在开放平台数据库中创建应用:
use develop_center; INSERT INTO `TB_DEV_APPLICATION` (`ID`, `NAME`, `DESCRIPTION`, `URL`, `SYSTEM_ID`, `APPLICATION_IDENTIFICATION`) VALUES (-ID-, -NAME-, -DESCRIPTION-, -URL-, '1', -APPLICATION_IDENTIFICATION-) ;
除了ID以外,其他字段一一对应。
方式二,
创建应用也可以参考使用以下语句:
select CONCAT( 'INSERT INTO \`TB_DEV_APPLICATION\` (ID, DELETED, NAME, DESCRIPTION, URL, SYSTEM_ID, APPLICATION_IDENTIFICATION) VALUES', '(\'', ID, '\',\'1\',\'',NAME, '\',\'',DESCRIPTION,'\',\'', INFORMATION_URL,'\',\'','1', '\',\'', APPLICATION_ID , '\');') as INSERT_SQL from cas_server.TB_SERVICE where DELETED = 0 ;
这个语句对查询结果做了拼接,可以拿来直接使用,使用这个也需要考虑应用是否已经存在。
数据从 message.ACCESS_APP 表中获取
具体操作:
方式一,
首先查询需要创建的应用:
use message; select APP.NAME, APP.DESCRIPTION, APP.ENABLED, APP.APP_ID APPLICATION_IDENTIFICATION from message.ACCESS_APP APP where DELETED = 0 ;
在查询结果中,根据字段APPLICATION_IDENTIFICATION,在开放平台中对比,如果不存在此应用,那么需要创建应用,数据从上面查询中获取。
根据上面的查询结果,在开放平台数据库中创建应用:
USE develop_center; INSERT INTO `TB_DEV_APPLICATION` (`ID`, `NAME`, `DESCRIPTION`, `SYSTEM_ID`, `APPLICATION_IDENTIFICATION`) VALUES (-ID-, -NAME-, -DESCRIPTION-, '1', -APPLICATION_IDENTIFICATION-) ;
除了ID以外,其他字段一一对应。
如果已经存在,那么不需要再添加。
方式二,
创建应用也可以参考使用以下语句:
select CONCAT( 'INSERT INTO \`TB_DEV_APPLICATION\` (ID,DELETED, NAME, DESCRIPTION, SYSTEM_ID, `APPLICATION_IDENTIFICATION`, URL) VALUES ', '(\'',ID,'-message\',\'1\',\'',NAME,'\',\'', IFNULL(DESCRIPTION,''),'\',\'','1','\',\'',APP_ID,'\',\'',IFNULL(URL,''),'\');') as INSERT_SQL from message.ACCESS_APP where DELETED = 0 AND APP_ID IS NOT NULL ;
这个语句对查询结果做了拼接,可以拿来直接使用,使用这个语句也需要考虑应用是否已经存在。
根据 https://poa-sa.paas.xxx.edu.cn/v1/clients
接口获取所有client 信息
具体操作:
根据 /clients 接口获取所有client 信息
根据返回数据中的clientName 来和应用表TB_DEV_APPLICATION 中的数据进行关联,对应表中的NAME;
如果应用表中没有的应用,需要进行创建:
use develop_center; INSERT INTO `TB_DEV_APPLICATION` (`ID`, `NAME`, `DESCRIPTION`, `SYSTEM_ID`, `APPLICATION_IDENTIFICATION`) VALUES (-ID-, -NAME-, -DESCRIPTION-, '1', -APPLICATION_IDENTIFICATION-) ;
具体操作:
SELECT CONCAT('INSERT INTO \`TB_DEV_APPLICATION_DEVELOPER\` (ID, DELETED, APPLICATION_ID, DEVELOPER_ID) VALUES','(\'',ID, '\',\'0' ,'\',\'',ID, '\',\'','150','\');') FROM TB_DEV_APPLICATION; SELECT CONCAT('INSERT INTO \`TB_DEV_APPLICATION_OPERATOR\` (ID, DELETED, APPLICATION_ID, OPERATOR_ID) VALUES','(\'',ID,'\',\'0' ,'\',\'',ID, '\',\'','151','\');') FROM TB_DEV_APPLICATION; SELECT CONCAT('INSERT INTO \`TB_DEV_SERVICE_DEVELOPER\` (ID, DELETED, SERVICE_ID, DEVELOPER_ID) VALUES','(\'',ID, '\',\'0' ,'\',\'',ID, '\',\'','150','\');') FROM TB_DEV_SERVICE; SELECT CONCAT('INSERT INTO \`TB_DEV_SERVICE_OPERATOR\` (ID, DELETED, SERVICE_ID, OPERATOR_ID) VALUES','(\'',ID, '\',\'0' ,'\',\'',ID, '\',\'','151','\');') FROM TB_DEV_SERVICE;
这个语句对查询结果做了拼接,结果是对应用的开发者和管理员,服务的开发者和管理员进行插入数据的语句。
如果有ID重复时,需要手动去修改ID,防止重复。
数据来源:
说明:
先根据开放平台中所选应用的APPLICATION_IDENTIFICATION 字段,在cas数据库中查询基础能力信息:
use cas_server; select S.LOGOUT_TYPE, S.APPLICATION_DOMAIN, S.ADD_TIME, S.DESCRIPTION, S.EXTERNAL_ID, S.INFORMATION_URL, S.ENABLED, S.REGISTERED_SERVICE_ID, S.COMPANY_ID, S.RESPONSE_TYPE, S.DELETED, S.SSO_ENABLED, S.LOGOUT_URL, S.NAME, S.ADD_ACCOUNT, S.APPLICATION_ID, S.SERVICE_ID from TB_SERVICE S where S.DELETED = 0 and S.APPLICATION_ID = -APPLICATION_IDENTIFICATION-;
查询结果放入下面的ABILITY_SETTINGS 字段中。
下面插入数据中,APPLICATION_ID 对应所选应用的ID
use develop_center; INSERT INTO `TB_DEV_APPLICATION_ABILITY_USAGE` (`ID`, `COMPANY_ID`, `DELETED`, `APPLICATION_ID`, `ABILITY_ID`, `APPLY_TIME`, `ABILITY_SETTINGS`) VALUES (-ID-, '1', '0', -APPLICATION_ID-, 'cas', '2020-12-22 15:32:43',-ABILITY_SETTINGS-) ;
注,
-ABILITY_SETTINGS- 内容:
{ "logoutType": "", "applicationDomain": "", "addTime": 1608538919314, "description": "", "externalId": "", "informationUrl": "", "enabled": true, "registeredServiceId": 10060, "companyId": "", "responseType": "", "deleted": false, "ssoEnabled": true, "logoutUrl": "", "name": "", "id": "", "addAccount": "", "applicationId": "", "serviceId": "", "requireAllAttributes": true }
利用上面的查询将对应内容置换。
可以使用下面的查询语句生成 sql拼接语句来进行插入:
select CONCAT( 'INSERT INTO \`TB_DEV_APPLICATION_ABILITY_USAGE\` (ID, COMPANY_ID, DELETED, APPLICATION_ID, ABILITY_ID, APPLY_TIME,ABILITY_SETTINGS) VALUES (', '\'',ID,'cas','\',\'',' 1\', \'0','\',\'', ID,'\',\'', 'cas\', \'2020-12-22 15:32:43\',\'', '{"logoutType":"',IFNULL(LOGOUT_TYPE,''),'","applicationDomain":"',IFNULL(APPLICATION_DOMAIN,''),'","addTime":1608538919314,"description":"',IFNULL(DESCRIPTION,''), '","externalId":"',IFNULL(EXTERNAL_ID,''),'","informationUrl":"',IFNULL(INFORMATION_URL,''),'","enabled":true,"registeredServiceId":',IFNULL(REGISTERED_SERVICE_ID,''), ',"companyId":"1","responseType":"',RESPONSE_TYPE,'","deleted":false,"ssoEnabled":',IF(SSO_ENABLED = 1,'true','false'),',"idTokenEnabled":',IF(ID_TOKEN_ENABLED = 1,'true','false'), ',"jwtAsServiceTicket":',IF(JWT_AS_SERVICE_TICKET = 1,'true','false'),',"logoutUrl":"',IFNULL(LOGOUT_URL,''),'","name":"',NAME, '","id":"',ID,'","addAccount":"admin","applicationId":"',IFNULL(APPLICATION_ID,''),'","serviceId":"',IFNULL(SERVICE_ID,''),'","requireAllAttributes":',IFNULL(REQUIRE_ALL_ATTRIBUTES,'1'), '}', '\');' ) as INSERT_SQL from TB_SERVICE where DELETED = '0' ;
先根据开放平台中所选应用的APPLICATION_IDENTIFICATION 字段,在message数据库中查询基础能力信息:
use develop_center; INSERT INTO `TB_DEV_APPLICATION_ABILITY_USAGE` (`ID`, `COMPANY_ID`, `DELETED`, `APPLICATION_ID`, `ABILITY_ID`, `APPLY_TIME`) VALUES (-ID-, '1', '0', -APPLICATION_ID-, 'message', '2020-12-31 15:32:43') ;
根据 /clients 接口获取所有client 信息,主要是clientId,来添加应用的基础能力信息。需要替换对应的clientId信息。
use develop_center; INSERT INTO `TB_DEV_APPLICATION_ABILITY_USAGE` (`ID`, `COMPANY_ID`, `DELETED`, `APPLICATION_ID`, `ABILITY_ID`, `APPLY_TIME`,`ABILITY_SETTINGS`) VALUES (-ID-, '1', '0', -APPLICATION_ID-, 'platformApi', '2020-12-31 15:32:43','{\"clientId\":\"id123\"}');
根据 /clients 接口获取所有client 信息,可以看到此应用关联的scopes 列表。
根据scope名称来查询开放平台中的scope:
select S.ID from TB_DEV_SERVICE_SCOPE S where S.NAME = -name- ;
根据上面的应用id和scope的Id使用下面插入语句插入数据:
INSERT INTO `TB_DEV_APPLICATION_SCOPE_USAGE` (`ID`, `APPLICATION_ID`, `ABILITY_ID`, `SCOPE_ID`, `APPLY_TIME`) VALUES (-ID-, -APPLICATION_ID-, 'platformApi', -SCOPE_ID-, '2020-12-31 11:33:19') ;