一种基于kettle的供数方法、系统、终端设备及介质与流程

文档序号:17889964发布日期:2019-06-13 15:31阅读:355来源:国知局
一种基于kettle的供数方法、系统、终端设备及介质与流程

本发明涉及数据迁移技术领域,特别涉及一种基于kettle的供数方法、系统、终端设备及介质。



背景技术:

现有的数据抽取方法通常是利用sqoop将传统数据库(mysql、oracle、或者postgres等)中的数据导入hadoop的hdfs中。但是,在实践中发现,这种数据抽取方法往往需要数据处理人员针对所抽取的每个数据表手动编写sqoop脚本,若所抽取的某一数据表结构发生变更时,数据处理人员还需要依据变更后的表结构重新编写该某一数据表的sqoop脚本,可见,基于这种数据抽取方法实现供数的效率通常较低。



技术实现要素:

为了解决利用现有数据抽取方法实现供数效率较低的技术问题,本发明提供了一种基于kettle的供数方法、系统、终端设备及介质。

一种基于kettle的供数方法,所述方法包括:

当检测到第三方用户的供数请求时,通过解析所述供数请求生成针对所述供数请求的建表文件,所述建表文件中包含用于所述第三方用户创建数据表的建表语句;

检测是否接收到所述第三方用户发送的终止建表指令;

当接收到所述终止建表指令时,将目标业务方数据导入所述第三方用户创建的数据表中;其中,所述目标业务方数据通过kettle工具抽取获得,所述第三方用户所创建的数据表依据所述建表文件创建获得。

一种基于kettle的供数系统,包括:

生成单元,用于当检测到第三方用户的供数请求时,通过解析所述供数请求生成针对所述供数请求的建表文件,所述建表文件中包含用于所述第三方用户创建数据表的建表语句;

检测单元,用于检测是否接收到所述第三方用户发送的终止建表指令;

控制单元,用于当所述检测单元接收到所述终止建表指令时,将目标业务方数据导入所述第三方用户创建的数据表中;其中,所述目标业务方数据通过kettle工具抽取获得,所述第三方用户所创建的数据表依据所述建表文件创建获得。

一种终端设备,所述终端设备包括:

处理器;

存储器,所述存储器上存储有计算机可读指令,所述计算机可读指令被所述处理器执行时,实现如前所述的方法。

本发明的实施例提供的技术方案可以包括以下有益效果:

本发明所提供的基于kettle的供数方法包括如下步骤,当检测到第三方用户的供数请求时,通过解析供数请求生成针对该供数请求的建表文件;其中,该建表文件中包含用于第三方用户创建数据表的建表语句;检测是否接收到第三方用户发送的终止建表指令;当接收到终止建表指令时,将目标业务方数据导入第三方用户创建的数据表中;其中,目标业务方数据通过kettle工具抽取获得,第三方用户所创建的数据表依据上述建表文件创建获得。

此方法下,当接收到供数请求的情况时,向第三方用户提供与该供数请求对应的建表文件便于第三方用户快速建表,提高了供数效率,此外,基于kettle的数据抽取方式极大地降低了数据处理人员的工作量。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性的,并不能限制本发明。

附图说明

此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并于说明书一起用于解释本发明的原理。

图1是根据一示例性实施例示出的一种装置的示意图;

图2是根据一示例性实施例示出的一种基于kettle的供数方法的流程图;

图3是根据另一示例性实施例示出的一种基于kettle的供数方法的流程图;

图4是根据一示例性实施例示出的一种基于kettle的供数系统的框图;

图5是根据另一示例性实施例示出的一种基于kettle的供数系统的框图。

具体实施方式

这里将详细地对示例性实施例执行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。

本发明所公开的基于kettle的供数系统的实施环境可以是便携终端设备,例如智能手机、平板电脑、台式电脑。图1是根据一示例性实施例示出的一种装置示意图。装置100可以是上述便携终端设备。如图1所示,装置100可以包括以下一个或多个组件:处理组件102,存储器104,电源组件106,多媒体组件108,音频组件110,传感器组件114以及通信组件116。

处理组件102通常控制装置100的整体操作,诸如与显示,电话呼叫,数据通信,相机操作以及记录操作相关联的操作等。处理组件102可以包括一个或多个处理器118来执行指令,以完成下述的方法的全部或部分步骤。此外,处理组件102可以包括一个或多个模块,用于便于处理组件102和其他组件之间的交互。例如,处理组件102可以包括多媒体模块,用于以方便多媒体组件108和处理组件102之间的交互。

存储器104被配置为存储各种类型的数据以支持在装置100的操作。这些数据的示例包括用于在装置100上操作的任何应用程序或方法的指令。存储器104可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(staticrandomaccessmemory,简称sram),电可擦除可编程只读存储器(electricallyerasableprogrammableread-onlymemory,简称eeprom),可擦除可编程只读存储器(erasableprogrammablereadonlymemory,简称eprom),可编程只读存储器(programmablered-onlymemory,简称prom),只读存储器(read-onlymemory,简称rom),磁存储器,快闪存储器,磁盘或光盘。存储器104中还存储有一个或多个模块,用于该一个或多个模块被配置成由该一个或多个处理器118执行,以完成如下所示方法中的全部或者部分步骤。

电源组件106为装置100的各种组件提供电力。电源组件106可以包括电源管理系统,一个或多个电源,及其他与为装置100生成、管理和分配电力相关联的组件。

多媒体组件108包括在装置100和用户之间的提供一个输出接口的屏幕。在一些实施例中,屏幕可以包括液晶显示器(liquidcrystaldisplay,简称lcd)和触摸面板。如果屏幕包括触摸面板,屏幕可以被实现为触摸屏,以接收来自用户的输入信号。触摸面板包括一个或多个触摸传感器以感测触摸、滑动和触摸面板上的手势。触摸传感器可以不仅感测触摸或滑动动作的边界,而且还检测与触摸或滑动操作相关的持续时间和压力。屏幕还可以包括有机电致发光显示器(organiclightemittingdisplay,简称oled)。

音频组件110被配置为输出和/或输入音频信号。例如,音频组件110包括一个麦克风(microphone,简称mic),当装置100处于操作模式,如呼叫模式、记录模式和语音识别模式时,麦克风被配置为接收外部音频信号。所接收的音频信号可以被进一步存储在存储器104或经由通信组件116发送。在一些实施例中,音频组件110还包括一个扬声器,用于输出音频信号。

传感器组件114包括一个或多个传感器,用于为装置100提供各个方面的状态评估。例如,传感器组件114可以检测到装置100的打开/关闭状态,组件的相对定位,传感器组件114还可以检测装置100或装置100一个组件的位置改变以及装置100的温度变化。在一些实施例中,该传感器组件114还可以包括磁传感器,压力传感器或温度传感器。

通信组件116被配置为便于装置100和其他设备之间有线或无线方式的通信。装置100可以接入基于通信标准的无线网络,如wifi(wireless-fidelity,无线保真)。在一个示例性实施例中,通信组件116经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,通信组件116还包括近场通信(nearfieldcommunication,简称nfc)模块,用于以促进短程通信。例如,在nfc模块可基于射频识别(radiofrequencyidentification,简称rfid)技术,红外数据协会(infrareddataassociation,简称irda)技术,超宽带(ultrawideband,简称uwb)技术,蓝牙技术和其他技术来实现。

在示例性实施例中,装置100可以被一个或多个应用专用集成电路(applicationspecificintegratedcircuit,简称asic)、数字信号处理器、数字信号处理设备、可编程逻辑器件、现场可编程门阵列、控制器、微控制器、微处理器或其他电子元件实现,用于执行下述方法。

图2是根据一示例性实施例示出的一种基于kettle的供数方法的流程图。如图2所示,此方法包括以下步骤。

步骤210,当检测到第三方用户的供数请求时,通过解析供数请求生成针对该供数请求的建表文件,该建表文件中包含用于第三方用户创建数据表的建表语句。

需要说明的是,在本发明实施例中,当检测到第三方用户的供数请求时,通过kettle工具和hive工具实现对第三方用户的供数,具体的描述,请参照图3所示的针对步骤210的细节描述,本发明实施例不再赘述。其中,kettle是一款国外开源的用于实现数据抽取、交互转换以及数据加载的工具,其为纯java编写可以在window、linux、unix上运行,具有数据抽取高效稳定的特点,因此本发明实施例公开的供数方法通过kettle工具实现数据抽取。hive是基于分布式计算(hadoop)的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供完整的sql查询功能。

步骤220,检测是否接收到第三方用户发送的终止建表指令,如果是,执行步骤230;如果否,结束本流程。

步骤230,将目标业务方数据导入第三方用户创建的数据表中;其中,目标业务方数据通过kettle工具抽取获得,第三方用户所创建的数据表依据上述建表文件创建获得。

通过执行步骤210~步骤230,可以在接收到第三方用户发送的供数请求时,向第三方用户提供与该供数请求对应的建表文件便于第三方用户快速建表,从而提高了供数效率,此外,基于kettle的数据抽取方式通过transformation和job这两种脚本实现数据的基础转化(数据抽取、交互转换以及数据加载),可以极大地降低数据处理人员的工作量。

可选的,在一示例性实施例中,在步骤210执行完毕之后,以及执行步骤220之前,还可以设置上述建表文件的下载方式为预设下载方式;当检测到第三方用户输入的针对上述建表文件的下载请求时,判断第三方用户启用的下载方式与预设下载方式是否匹配;当第三方用户启用的下载方式与预设下载方式匹配时,响应第三方用户输入的下载请求以将上述建表文件传输至第三方用户,并继续执行步骤220。通过实施该方法,第三方用户通过预设的下载方式对上述建表文件进行下载来实现建表,使得第三方用户不用考虑接入hive工具的具体方式,极大地简化了供数流程。

在另一示例性实施例中,当第三方用户启用的下载方式与预设下载方式不匹配时,还可以向第三方用户提供用于实现上述预设下载方式的安装包,以便第三方用户通过下载该安装包成功获得建表文件。需要说明的是,向第三方用户提供的安装包可以为绿色安装包也可以为安装版安装包,本发明实施例不做限定。基于该示例性实施例,进一步可选的,当接收到第三方用户发送的接入请求时,还可以对第三方用户进行身份合法性的验证,以及在第三方用户的身份合法性验证通过时,控制第三方用户接入该基于kettle的供数系统,以及执行步骤210~步骤230和上述示例性实施例所描述的步骤;以及当第三方用户的身份合法性验证未通过时,还可以输出用于指示非法接入的提示信息。通过实施该示例性实施例,可以通过验证第三方用户的身份的合法性,保证接入该基于kettle的供数系统的第三方用户都为授权用户,从而可以达到保证数据安全性的目的。

通过实施上述基于kettle的供数方法,可以简化供数流程,提高供数效率,也可以降低数据处理人员的工作量,还可以提高数据的安全性。

图3是根据图2对应实施例示出的步骤210的细节流程图。如图3所示,步骤210可以包括:

步骤211,当检测到第三方用户的供数请求时,通过解析供数请求生成kettle任务,以使kettle工具根据该kettle任务的指示对业务方源表进行数据抽取操作得到目标业务方数据。

步骤212,通过hive工具建立与目标业务方数据对应的hive表。

步骤213,依据上述hive表生成建表文件。

可选的,在一示例性实施例中,在通过hive工具建立与目标业务方数据对应的hive表之后,以及依据该hive表生成建表文件之前,还可以通过扫描所建立的hive表对应的hive元数据表和业务方源表,判断业务方源表中是否存在变更源表;其中,hive元数据表中存储有业务方源表的表结构信息;当判断出业务方源表中不存在变更源表时,继续执行步骤213。其中,在本发明实施例中,通过扫描所建立的hive表对应的hive元数据表和业务方源表,判断业务方源表中是否存在变更源表的具体实现方式可以是,将hive元数据表中记录的业务方源表的结构信息与业务方源表的结构信息进行比对获得比对结果;当该比对结果指示hive元数据表中记录的业务方源表的结构信息与业务方源表的结构信息匹配时,确定业务方源表中不存在变更源表;当该比对结果指示hive元数据表中记录的业务方源表的结构信息与业务方源表的结构信息不匹配时,确定业务方源表中存在变更源表。

在本发明实施例中,若业务方源表中存在变更源表还可以依据hive元数据表和变更源表获得变更信息;将变更信息发送给目标账号,以使目标账号的所有者参考变更信息对hive表执行更表操作;当检测到目标账号的所有者针对hive表的更表操作终止时,依据更新后的hive表生成建表文件。进一步可选的,在依据hive元数据表和变更源表获得变更信息之前,还可以发送用于提示更新hive表的提示信息至目标账号。通过实施该方法,将用于提示更新hive表的提示信息和变更信息发送至目标账号,可以提高hive表的更新效率和准确度,从而进一步提高供数效率。

其中,变更信息用于表述变更源表相较于hive元数据表记录的变更源表的表结构的变化,举例来说,若变更源表的表结构相较于hive元数据表所记录的变更源表的表结构增加了字段,那么,变更信息可以为增加的字段信息,若变更源表的表结构相较于hive元数据表所记录的变更源表的表结构删除了字段,那么,变更信息可以为删除的字段信息。

可选的,在一示例性实施例中,将变更信息发送给目标账号之前,还可以根据当前时间点从数据处理人员的登记表中确定目标工号;其中,该登记表中记录有每一数据处理人员的工作时段和工号;获取目标工号对应的数据处理人员的登记信息,该登记信息至少包括目标工号对应的数据处理人员的联系方式;根据上述联系方式确定目标账号。其中,目标工号对应的上述联系方式可以是一种也可以是多种,本发明实施例不做限定。

若目标工号对应的联系方式为多种,且每一种联系方式的优先级等级不同,可选的,在一示例性实施例中,根据上述联系方式确定目标账号,可以包括:获取上述联系方式中每种联系方式的优先级等级;将上述联系方式中优先级等级最高的联系方式对应的账号确定为目标账号。基于该示例性实施例,进一步可选的,将变更信息发送给目标账号之后,还可以判断在预设时长内是否检测到目标账号所有者针对hive表的更新操作,以及当判断出未检测到目标账号所有者针对hive表的更新操作时,按照预设规则对目标账号进行更新。在本发明实施例中,按照预设规则对目标账号进行更新的具体实现方式如下:将上述联系方式中优先级等级仅次于最高优先级等级的联系方式作为第一目标联系方式,以及利用第一目标联系方式对应的账号更新目标账号,以及当本次目标账号更新结束,且在预设时长内未检测到目标账号所有者针对hive表的更新操作时,将上述联系方式中优先级等级仅次于第一目标联系方式的联系方式作为第二目标联系方式,以及利用第二目标联系方式对应的账号更新目标账号,依次类推直至遍历完上述联系方式中的所有联系方式。通过实施该示例性实施例,当在预设时长内未检测到目标账号所有者针对hive表的更新操作时,可以基于上述联系方式的优先级的等级对上述联系方式中包含的所有联系方式进行遍历,能够最大限度的保证目标账号所有者对hive表的及时更新。

需要说明的是,上述联系方式可以是邮件、qq、微信或者短信等等,那么,上述联系方式对应的账号可以为邮箱账号、qq账号、微信账号或者手机号码等等。

通过实施上述基于kettle的供数方法,可以简化供数流程,提高供数效率,也可以降低数据处理人员的工作量,还可以提高数据的安全性,还可以提高hive表的更新效率和准确度,进一步提高供数效率,还可以最大限度的保证目标账号所有者对hive表的及时更新。

以下是本发明公开的基于kettle的供数系统的实施例。

图4是根据一示例性实施例示出的一种基于kettle的供数系统的框图。如图4所示,该基于kettle的供数系统可以包括:

生成单元401,用于当检测到第三方用户的供数请求时,通过解析供数请求生成针对该供数请求的建表文件,建表文件中包含用于第三方用户创建数据表的建表语句。

检测单元402,用于检测是否接收到第三方用户发送的终止建表指令。

控制单元403,用于当上述检测单元402接收到终止建表指令时,将目标业务方数据导入第三方用户创建的数据表中;其中,目标业务方数据通过kettle工具抽取获得,第三方用户所创建的数据表依据上述建表文件创建获得。

需要说明的是,上述生成单元401,还可以用于当检测到第三方用户的供数请求时,通过解析供数请求生成针对该供数请求的建表文件之后,向上述检测单元402发送启动指令,以启动上述检测单元402。

通过实施该基于kettle的供数系统,可以在生成单元401接收到第三方用户发送的供数请求时,向第三方用户提供与该供数请求对应的建表文件便于第三方用户快速建表,从而提高了供数效率,此外,基于kettle的数据抽取方式通过transformation和job这两种脚本实现数据的基础转化(数据抽取、交互转换以及数据加载),可以极大地降低数据处理人员的工作量。

可选的,在一示例性实施例中,生成单元401,还可以用于当检测到第三方用户的供数请求时,通过解析供数请求生成针对该供数请求的建表文件之后,设置上述建表文件的下载方式为预设下载方式,以及当检测到第三方用户输入的针对上述建表文件的下载请求时,判断第三方用户启用的下载方式与预设下载方式是否匹配,以及当第三方用户启用的下载方式与预设下载方式匹配时,响应第三方用户输入的下载请求以将上述建表文件传输至第三方用户。通过实施该基于kettle的供数系统,第三方用户通过预设的下载方式对上述建表文件进行下载来实现建表,使得第三方用户不用考虑接入hive工具的具体方式,极大地简化了供数流程。

在另一示例性实施例中,上述生成单元401,还可以用于当第三方用户启用的下载方式与预设下载方式不匹配时,向第三方用户提供用于实现上述预设下载方式的安装包,以便第三方用户通过下载该安装包成功获得建表文件。需要说明的是,向第三方用户提供的安装包可以为绿色安装包也可以为安装版安装包,本发明实施例不做限定。基于该示例性实施例,进一步可选的,生成单元401,还可以用于当接收到第三方用户发送的接入请求时,对第三方用户进行身份合法性的验证,以及在第三方用户的身份合法性验证通过时,控制第三方用户接入该基于kettle的供数系统,以及当第三方用户的身份合法性验证未通过时,输出用于指示非法接入的提示信息。通过实施该示例性实施例,可以通过验证第三方用户的身份的合法性,保证接入该基于kettle的供数系统的第三方用户都为授权用户,从而可以达到保证数据安全性的目的。

通过实施上述基于kettle的供数系统,可以简化供数流程,提高供数效率,也可以降低数据处理人员的工作量,还可以提高数据的安全性。

图5是根据另一示例性实施例示出的一种基于kettle的供数系统的框图。如图5所示的基于kettle的供数系统是由图4所示的基于kettle的供数系统优化得到,在图5所示的基于kettle的供数系统中,上述生成单元401可以包括:

解析子单元4011,用于当检测到第三方用户的供数请求时,通过解析供数请求生成kettle任务,以使kettle工具根据该kettle任务的指示对业务方源表进行数据抽取操作得到目标业务方数据。

建表子单元4012,用于通过hive工具建立与目标业务方数据对应的hive表,以及依据hive表生成建表文件。

可选的,在一示例性实施例中,建表子单元4012,还可以用于在通过hive工具建立与目标业务方数据对应的hive表之后,以及依据该hive表生成建表文件之前,通过扫描所建立的hive表对应的hive元数据表和业务方源表,判断业务方源表中是否存在变更源表;其中,hive元数据表中存储有业务方源表的表结构信息;以及当判断出业务方源表中不存在变更源表时,触发执行上述的依据hive表生成建表文件。

在本发明实施例中,建表子单元4012用于通过扫描所建立的hive表对应的hive元数据表和业务方源表,判断业务方源表中是否存在变更源表的方式具体可以为:上述建表子单元4012,用于将hive元数据表中记录的业务方源表的结构信息与业务方源表的结构信息进行比对获得比对结果,以及当该比对结果指示hive元数据表中记录的业务方源表的结构信息与业务方源表的结构信息匹配时,确定业务方源表中不存在变更源表,以及当该比对结果指示hive元数据表中记录的业务方源表的结构信息与业务方源表的结构信息不匹配时,确定业务方源表中存在变更源表。

在本发明实施例中,若上述建表子单元4012判断出业务方源表中存在变更源表时,上述建表子单元4012,还可以用于依据hive元数据表和变更源表获得变更信息,以及将变更信息发送给目标账号,以使目标账号的所有者参考变更信息对hive表执行更表操作,以及当检测到目标账号的所有者针对hive表的更表操作终止时,依据更新后的hive表生成建表文件。进一步可选的,上述建表子单元4012,还可以用于在依据hive元数据表和变更源表获得变更信息之前,发送用于提示更新hive表的提示信息至目标账号。通过实施该方式,将用于提示更新hive表的提示信息和变更信息发送至目标账号,可以提高hive表的更新效率和准确度,从而进一步提高供数效率。其中,变更信息用于表述变更源表相较于hive元数据表记录的变更源表的表结构的变化,举例来说,若变更源表的表结构相较于hive元数据表所记录的变更源表的表结构增加了字段,那么,变更信息可以为增加的字段信息,若变更源表的表结构相较于hive元数据表所记录的变更源表的表结构删除了字段,那么,变更信息可以为删除的字段信息。

可选的,在一示例性实施例中,上述建表子单元4012,还可以用于将变更信息发送给目标账号之前,根据当前时间点从数据处理人员的登记表中确定目标工号;其中,该登记表中记录有每一数据处理人员的工作时段和工号;获取目标工号对应的数据处理人员的登记信息,该登记信息至少包括目标工号对应的数据处理人员的联系方式;根据上述联系方式确定目标账号。其中,目标工号对应的上述联系方式可以是一种也可以是多种,本发明实施例不做限定。

若目标工号对应的联系方式为多种,且每一种联系方式的优先级等级不同,可选的,在一示例性实施例中,上述建表子单元4012用于根据上述联系方式确定目标账号的方式具体可以为:上述建表子单元4012,用于获取上述联系方式中每种联系方式的优先级等级;以及将上述联系方式中优先级等级最高的联系方式对应的账号确定为目标账号。基于该示例性实施例,进一步可选的,上述建表子单元4012,还可以用于将变更信息发送给目标账号之后,判断在预设时长内是否检测到目标账号所有者针对hive表的更新操作,以及当判断出未检测到目标账号所有者针对hive表的更新操作时,按照预设规则对目标账号进行更新。在本发明实施例中,按照预设规则对目标账号进行更新的具体实现方式如下:将上述联系方式中优先级等级仅次于最高优先级等级的联系方式作为第一目标联系方式,以及利用第一目标联系方式对应的账号更新目标账号,以及当本次目标账号更新结束,且在预设时长内未检测到目标账号所有者针对hive表的更新操作时,将上述联系方式中优先级等级仅次于第一目标联系方式的联系方式作为第二目标联系方式,以及利用第二目标联系方式对应的账号更新目标账号,依次类推直至遍历完上述联系方式中的所有联系方式。通过实施该示例性实施例,当在预设时长内未检测到目标账号所有者针对hive表的更新操作时,可以基于上述联系方式的优先级的等级对上述联系方式中包含的所有联系方式进行遍历,能够最大限度的保证目标账号所有者对hive表的及时更新。

需要说明的是,上述联系方式可以是邮件、qq、微信或者短信等等,那么,上述联系方式对应的账号可以为邮箱账号、qq账号、微信账号或者手机号码等等。

通过实施上述基于kettle的供数系统,可以简化供数流程,提高供数效率,也可以降低数据处理人员的工作量,还可以提高数据的安全性,还可以提高hive表的更新效率和准确度,进一步提高供数效率,还可以最大限度的保证目标账号所有者对hive表的及时更新。

本发明还提供一种终端设备,该终端设备包括:

处理器;

存储器,该存储器上存储有计算机可读指令,该计算机可读指令被处理器执行时,实现如前所示的基于kettle的供数方法。

该终端设备可以是图1所示的装置100。

在一示例性实施例中,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时,实现如前所示的基于kettle的供数方法。

应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围执行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1