旧数据迁移到开发平台

1. 服务数据

来源:
    POA 中已经存在的 service、version、spec、scope 等数据,需要在开放平台中插入对应的数据。

1.1迁移服务:

    将POA 中现有的 服务,导入开放平台的服务

具体操作:

 USE platform_openapi;

SELECT * FROM SERVICE;

根据上面查询结果,来进行下面的插入操作,对应的字段做修改:

Use develop_center;

INSERT INTO `TB_DEV_SERVICE` (`ID`, `NAME`, `DESCRIPTION`, `ORIGIN`, `SYSTEM_ID`) 
VALUES (-ID-, -NAME-, -DESCRIPTION-, -ORIGIN-, -'1'-);

    创建服务也可以参考使用以下语句:
        SELECT CONCAT('INSERT INTO \`TB_DEV_SERVICE\` (ID,DELETED, NAME, DESCRIPTION, ORIGIN, SYSTEM_ID) 
	    VALUES','(\'', ID,  '\',\'0\',\'', NAME, '\',\'', DESCRIPTION, '\',\'', ORIGIN, '\',\'','1','\');') INFO
        FROM SERVICE;

    这个语句对查询结果做了拼接,可以拿来直接使用

设置此服务的管理员和开发者,也可以不在这里设置开发者和管理员,在2.4.1来统一设置:

INSERT INTO `TB_DEV_SERVICE_DEVELOPER` (`ID`, `DELETED`, `SERVICE_ID`, `DEVELOPER_ID`) 
VALUES (-ID-, -DELETED- ,-SERVICE_ID-, '150');

INSERT INTO `TB_DEV_SERVICE_OPERATOR` (`ID`, `DELETED`, `SERVICE_ID`, `OPERATOR_ID`) 
VALUES (-ID-, -DELETED- ,-SERVICE_ID-, '151');  

1.2迁移spec:

    将POA 中现有的 spec,导入开放平台的spec

具体操作:

查询服务的spec信息

USE platform_openapi;
SELECT SERVICE_ID,API_VERSION,EDIT_VERSION 
FROM API_SPEC
WHERE SERVICE_ID = -SERVICE_ID-;

根据查询结果插入以下数据:

USER develop_center;
INSERT INTO `TB_DEV_SERVICE_SPEC` (`ID`, `SERVICE_ID`, `API_VERSION`, `EDIT_VERSION`) 
VALUES (-ID-, -SERVICE_ID-, -API_VERSION-, -EDIT_VERSION-);

TB_DEV_SERVICE_SPEC表中SCOPE_COUNT 列内容的设置:

    services/{serviceId}/apiVersions/{apiVersion}/apiSpecs/scopes
    根据返回值设置SCOPE_COUNT;

1.3迁移scope:

    将POA 中现有的 scope,导入开放平台的scope

具体操作:

USE platform_openapi;
SELECT * FROM API_VERSION
WHERE SERVICE_ID = 'admincenter';
取结果中的SERVICE_ID,PUBLISHED,API_VERSION


根据查询结果访问
    services/{serviceId}/apiVersions/{apiVersion}/apiSpecs/scopes

获取scope的name 和description。

INSERT INTO `TB_DEV_SERVICE_SCOPE` (`ID`, `COMPANY_ID`, `DELETED`, `SERVICE_ID`, `NAME`, `PUBLISHED`, `DESCRIPTION`, `API_VERSION`) VALUES (-ID-, '1', '0', -SERVICE_ID-, -NAME-, -PUBLISHED-, -DESCRIPTION-, -API_VERSION-);

2. 应用数据

来源: 应用数据的来源主要有三部分:

    认证服务中的 service
    消息服务的 应用(accessApp)
    POA 的 client

说明: 需要将上述三类数据,整理为一份应用数据,对于有重复的应用数据,保留一份即可。建议先从认证服务的数据开始,认证服务中的应用数据比较全面。

2.1.1迁移cas 中的应用数据:

    数据从 TB_SERVICE 表中获取。

2.1.2具体操作:

#### 创建应用

USE cas_server;
SELECT S.NAME, S.DESCRIPTION, S.INFORMATION_URL,S.APPLICATION_ID APPLICATION_IDENTIFICATION
FROM 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-);


建应用也可以参考使用以下语句:
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 , '\');')
FROM TB_SERVICE
WHERE DELETED = 0;  

这个语句对查询结果做了拼接,可以拿来直接使用,使用这个也需要考虑应用是否已经存在。


除了ID以外,其他字段一一对应。

2.2.1迁移message 中的应用数据:

数据从 ACCESS_APP 表中获取。

2.2.2具体操作:

首先查询需要创建的应用:

USE message;
SELECT APP.NAME, APP.DESCRIPTION,APP.ENABLED,APP.APP_ID APPLICATION_IDENTIFICATION
FROM 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,''),'\');') INFO
        FROM ACCESS_APP
        WHERE DELETED = 0 AND APP_ID IS NOT NULL
    这个语句对查询结果做了拼接,可以拿来直接使用,使用这个语句也需要考虑应用是否已经存在。

如果已经存在,那么不需要再添加。

2.3.1迁移platform_openapi 中的数据

根据 /clients 接口获取所有client 信息

2.3.2具体操作

根据 /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-);

2.4为应用和服务设置管理员和开发者

2.4.1具体操作

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,防止重复。

3. 基础能力数据

数据来源:

1.认证服务的 service
2.消息服务的应用
3.POA 中 client 的scope 

说明: 1.认证服务的 service ,已经在之前创建了对应的应用,也需要给此应用对应开通 CAS认证基础能力。 2.消息服务的应用,已经在之前创建了对应的应用,也需要给此应用对应开通消息基础能力。 3.POA 中 client 申请了 scope ,之前已经创建了对应的应用,也需要给次应用对应开通平台OpenAPI基础能力。同时在开放平台中添加应用和scope的关系。

3.1添加应用的CAS基础能力

先根据开放平台中所选应用的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'),'}'
    '\');'
    )
FROM TB_SERVICE
WHERE DELETED = '0';

3.2添加应用的MESSAGE基础能力

先根据开放平台中所选应用的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');    

3.3.1添加应用的openapi基础能力。

根据 /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\"}');    

3.3.2添加应用的scope。

根据 /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');