一种贴纸功能框架实现方法与设备与流程

文档序号:13421300阅读:270来源:国知局
一种贴纸功能框架实现方法与设备与流程

本发明涉及计算机技术领域,更具体地,涉及一种贴纸功能框架实现方法与设备。



背景技术:

直播平台中的颜值直播间是主要用于主播和观众之间进行沟通和交流的视频平台。在颜值直播间中有一个贴纸功能,该贴纸功能实现如下效果:当主播的脸对准摄像头时,软件会自动给主播的脸部贴上卡通贴纸等特效,并且该特效会跟随脸部移动而移动。

传统实现该贴纸功能的解决方案是基于模型-视图-控制器(modelviewcontroller,mvc)框架模式进行设计。mvc框架模式中数据层和视图层直接被控制层持有,即控制层c直接持有数据层m和视图层v的实例引用关系。当视图层v发生变化时,同步更改对应的控制层c和数据层m的业务逻辑。

上述传统解决方案中,控制层c直接持有数据层m和视图层v的实例引用关系,会导致控制层c中的业务逻辑非常复杂,且使得软件不具备扩展性和可维护性;另外,由于控制层c直接持有视图层v的对象,容易导致内存泄漏。



技术实现要素:

为了克服上述问题或者至少部分地解决上述问题,本发明提供一种贴纸功能框架实现方法与设备,以达到有效简化控制层业务逻辑、提高软件程序可扩展性和可维护性以及有效避免内存泄漏的目的。

一方面,本发明提供一种贴纸功能框架实现方法,包括:s1,基于贴纸功能的数据业务需求,定义数据层接口函数,并建立所述数据层接口函数的数据接口实现逻辑;s2,基于所述贴纸功能的视图业务需求,定义视图层接口函数,并建立所述视图层接口函数的视图接口实现逻辑;s3,基于所述贴纸功能的业务逻辑流程,通过依次调用相应的所述数据层接口函数和所述视图层接口函数,实现所述数据接口实现逻辑和所述视图接口实现逻辑的实例化。

其中,步骤s1中所述定义数据层接口函数的步骤进一步包括:分别定义数据层的获取贴纸数据信息接口函数、下载贴纸接口函数和删除贴纸接口函数;相应的,所述建立所述数据层接口函数的数据接口实现逻辑的步骤进一步包括:建立所述获取贴纸数据信息接口函数的内部实现逻辑,包括获取贴纸详情数据信息;建立所述下载贴纸接口函数的内部实现逻辑,包括基于所述贴纸详情数据中的贴纸下载路径,下载贴纸图片;建立所述删除贴纸接口函数的内部实现逻辑,包括基于本地贴纸文件路径,删除本地贴纸文件。

其中,所述建立所述数据层接口函数的数据接口实现逻辑的步骤进一步包括:定义数据层接口函数实现类;利用所述数据层接口函数实现类,继承所述数据层接口函数,复写所述数据层接口函数的数据接口实现逻辑。

其中,所述下载贴纸接口函数至少返回如下数据信息:贴纸资源的下载路径数据信息和贴纸下载状态信息。

其中,步骤s2中所述定义视图层接口函数的步骤进一步包括:分别定义视图层的数据刷新接口函数、展示贴纸接口函数、展示贴纸下载状态接口函数和点击事件接口函数;相应的,所述建立所述视图层接口函数的视图接口实现逻辑的步骤进一步包括:建立所述数据刷新接口函数的内部实现逻辑,包括将视图数据设置到数据适配器中,并通过调用所述数据适配器中的视图数据刷新函数刷新视图数据元素;建立所述展示贴纸接口函数的内部实现逻辑,包括通过粘贴函数在视图层展示贴纸元素对象;建立所述展示贴纸下载状态接口函数的内部实现逻辑,包括监听数据层的贴纸下载状态,并根据所述贴纸下载状态调用视图层信息,展示贴纸的下载状态;建立所述点击事件接口函数的内部实现逻辑,包括获取贴纸点击事件,并通过调用视图层的设置选择函数更新视图元素的选中状态。

其中,所述数据层的获取贴纸数据信息接口函数对应的所述数据接口实现逻辑包括:通过标准http请求获取贴纸详情数据信息。

其中,在所述标准http请求的头部添加降权校验码,以供服务器根据所述降权校验码判定所述标准http请求是否合法。

其中,所述s3的步骤进一步包括:基于所述贴纸功能的业务逻辑流程,在控制层中依次调用所述获取贴纸数据信息接口函数、所述下载贴纸接口函数、所述展示贴纸下载状态接口函数、所述数据刷新接口函数、所述展示贴纸接口函数和所述点击事件接口函数。

进一步的,所述s3的步骤还包括:在控制层中调用所述删除贴纸接口函数。

另一方面,本发明提供一种贴纸功能框架实现设备,包括:至少一个存储器、至少一个处理器、通信接口和总线;所述存储器、所述处理器和所述通信接口通过所述总线完成相互间的通信,所述通信接口用于所述贴纸功能框架实现设备与数据输入装置通信接口之间的信息传输;所述存储器中存储有可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如如上所述的贴纸功能框架实现方法。

本发明提供的一种贴纸功能框架实现方法与设备,通过定义数据层和视图层的接口函数,建立各接口函数实现逻辑,以及基于贴纸功能业务逻辑流程,在控制层依次调用数据层和视图层各接口函数,实现各接口函数的实例化。能够有效简化控制层业务逻辑,提高软件程序可扩展性和可维护性,并能有效避免软件代码内存泄漏。

附图说明

图1为本发明实施例一种贴纸功能框架实现方法的流程图;

图2为本发明实施例一种建立数据层接口实现逻辑的处理流程图;

图3为本发明实施例一种建立视图层接口实现逻辑的处理流程图;

图4为本发明实施例一种贴纸功能框架实现设备的结构框图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。

作为本发明实施例的一个方面,本实施例提供一种贴纸功能框架实现方法,参考图1,为本发明实施例一种贴纸功能框架实现方法的流程图,包括:

s1,基于贴纸功能的数据业务需求,定义数据层接口函数,并建立所述数据层接口函数的数据接口实现逻辑。

可以理解为,在实现贴纸功能时,需要在数据层中实现一定的业务逻辑,如贴纸信息的获取,贴纸的下载等。数据层的设计主要分为数据接口层的设计和数据实现层的设计,数据接口层对外暴露数据层的获取接口,数据实现层实现该接口实现的具体业务逻辑。

根据数据层的业务逻辑需求,数据层的接口设计主要定义数据层对外的函数功能,即定义数据层接口函数;并建立各数据层接口函数的内部实现逻辑,即各数据层接口函数的数据接口实现逻辑。例如,根据贴纸功能的贴纸信息获取业务逻辑需求,在数据层中定义获取贴纸数据信息接口函数,并建立该获取贴纸数据信息接口函数的内部实现逻辑为:通过标准http请求获取贴纸详情数据信息。视图层和控制层获取数据层的数据时只能通过调用数据层接口函数来进行获取,无法通过其他方式来调用数据层的数据和业务逻辑。

s2,基于所述贴纸功能的视图业务需求,定义视图层接口函数,并建立所述视图层接口函数的视图接口实现逻辑。

可以理解为,在实现贴纸功能时,需要在视图层中实现一定的业务逻辑,如贴纸的展示,贴纸下载状态的展示等。视图层的设计主要分为视图接口层的设计和视图实现层的设计,视图接口层对外暴露视图层的获取接口,视图实现层实现该接口实现的具体业务逻辑。

根据视图层的业务逻辑需求,视图层的接口设计主要定义视图层对外的函数功能,即定义视图层接口函数;并建立各视图层接口函数的内部实现逻辑,即各视图层接口函数的视图接口实现逻辑。例如,根据贴纸功能在视图层的贴纸展示业务逻辑需求,在视图层中定义展示贴纸接口函数,并建立该展示贴纸接口函数的内部实现逻辑为:通过粘贴项目函数在视图层展示贴纸元素对象。数据层和控制层获取视图层的数据时只能通过调用视图层接口函数来进行获取,无法通过其他方式来调用视图层的数据和业务逻辑。

s3,基于所述贴纸功能的业务逻辑流程,通过依次调用相应的所述数据层接口函数和所述视图层接口函数,实现所述数据接口实现逻辑和所述视图接口实现逻辑的实例化。

可以理解为,在上述步骤定义了数据层和视图层的接口函数,并建立了各接口函数的内部实现逻辑之后,基于贴纸功能的业务逻辑流程,通过在控制层中依次调用上述各接口函数,实现数据层和视图层的连接,以及各接口函数实现逻辑的实例化,即实现数据层和视图层的连接器设计。如,先要获取贴纸的下载路径信息,再根据下载路径信息下载相应的贴纸,再通过视图层对下载的贴图进行展示,则在控制层中先要调用数据层的获取贴纸数据信息接口函数,再调用下载贴纸接口函数,再调用视图层的展示贴纸接口函数。

该步骤中控制层持有的是视图层和数据层的接口,而不是直接持数据层和接口层的实例对象。而对接口的实例化是通过调用其具体的实现类来实现的,因此在控制层中进行相应的业务逻辑功能编写时,通过调用接口函数来间接的调用实例化中的函数功能,从而达到功能实施的目的。

例如,后期视图层发生变更,仅需要重新定义一个视图层实现类,并使该视图层实现类继承视图层的接口,在视图层中做好新视图的更新业务逻辑,贴纸框架中的控制层和数据层的业务逻辑便可以完整的被复用,从而能够极大的提高程序的扩展性。

本发明实施例提供的一种贴纸功能框架实现方法,控制层通过接口函数与视图层及数据层进行连接,通过控制层将数据层和视图层的接口函数及相应的逻辑步骤的实施串联起整个贴纸功能的业务流程,避免传统方案的直接耦合设计,能够有效避免代码内存泄漏的风险性。同时能够极大的提高代码的可扩展性和可维护性。

其中可选的,步骤s1中所述定义数据层接口函数的步骤进一步包括:分别定义数据层的获取贴纸数据信息接口函数、下载贴纸接口函数和删除贴纸接口函数;相应的,所述建立所述数据层接口函数的数据接口实现逻辑的进一步处理步骤参考图2,为本发明实施例一种建立数据层数据接口实现逻辑的处理流程图,包括:

s11,建立所述获取贴纸数据信息接口函数的内部实现逻辑,包括获取贴纸详情数据信息;s12,建立所述下载贴纸接口函数的内部实现逻辑,包括基于所述贴纸详情数据中的贴纸下载路径,下载贴纸图片;s13,建立所述删除贴纸接口函数的内部实现逻辑,包括基于本地贴纸文件路径,删除本地贴纸文件。

可以理解为,在实现贴纸功能的过程中,数据层中至少需要获取贴纸数据信息,并根据贴纸数据信息中的下载路径下载需要的贴纸,及在存在不需要的贴纸时,删除对应的贴纸。因此在定义数据层的接口函数时,至少定义数据层的获取贴纸数据信息接口函数、下载贴纸接口函数和删除贴纸接口函数,数据层接口函数的具体定义代码如下:

本实施例数据层接口函数定义中共定义了三个接口函数,接口函数名称分别为startfetchdata、downloadpaster和delete,其中startfetchdata表示开始获取贴纸数据的相关信息接口,downloadpaster表示下载贴纸内容信息接口,delete表示删除贴纸信息接口。贴纸功能框架中数据层通过上述三个接口函数对外暴露最核心的数据操作是应用程序编程接口(applicationprogramminginterface,api),即对视图层和控制层来说数据层有且只有上述三个函数功能。

在根据上述步骤定义了数据层的接口函数后,还需要对各接口函数进行实现,在一个实施例中,所述建立所述数据层接口函数的数据接口实现逻辑的步骤进一步包括:定义数据层接口函数实现类;利用所述数据层接口函数实现类,继承所述数据层接口函数,复写所述数据层接口函数的数据接口实现逻辑。

可以理解为,在上述对数据层接口函数进行定义之后,通过定义一个数据层接口函数实现类datahandler来继承上述接口函数。由于是接口继承关系,所以在数据层接口函数实现类datahandler中需要复写上述三个接口函数的具体数据接口业务实现逻辑。

具体实现时,建立startfetchdata接口函数内部的数据接口实现逻辑包括,通过向服务器发送请求,获取目标贴纸的详情数据信息,包括各贴纸元素的具体下载路径等。

建立downloadpaster接口函数内部的数据接口实现逻辑包括,对贴纸内容进行下载。startfetchdata接口函数获取贴纸的详情信息中会包含各个贴纸的具体下载路径,downloadpaster接口函数内部会通过downloadmanager类来对具体的贴纸内容进行下载处理,将下载的内容保存到本地的安全数码存储卡(securedigitalmemorycard,sd)中。

delete接口函数内部的数据接口实现逻辑包括,删除贴纸文件。当下载的贴纸不合适,或不再需要时,系统根据传递进来的贴纸文件路径调用系统的delete接口函数对对应的贴纸数据进行删除处理。

本发明实施例提供的一种贴纸功能框架实现方法,主要描述数据层的框架设计及具体的逻辑业务实现。通过对数据层面向接口的框架设计,能够有效的解耦数据层与视图层及控制层之间的耦合关系,且能够极大的提高程序的可扩展性和可维护性。

在一个实施例中,所述下载贴纸接口函数至少返回如下数据信息:贴纸资源的下载路径数据信息和贴纸下载状态信息。

可以理解为,在上述实施例的基础上,在定义数据层的下载贴纸接口函数时,定义该接口函数的贴纸资源下载路径数据信息,即在根据上述实施例获取贴纸的详情数据信息之后,该详情数据信息中包含相应贴纸的下载路径数据信息,下载贴纸接口函数根据该下载路径数据信息到对应地址下载对应的贴纸资源。

同时,在发出下载指令之后,可能出现多种下载状态,如成功、失败及暂停等。在对贴纸进行下载之后,返回相应的贴纸下载状态信息。

在上述实施例的基础上,步骤s2中所述定义视图层接口函数的步骤进一步包括:分别定义视图层的数据刷新接口函数、展示贴纸接口函数、展示贴纸下载状态接口函数和点击事件接口函数;相应的,所述建立所述视图层接口函数的视图接口实现逻辑的进一步处理步骤参考图3,为本发明实施例一种建立视图层接口实现逻辑的处理流程图,包括:

s21,建立所述数据刷新接口函数的内部实现逻辑,包括将视图数据设置到数据适配器中,并通过调用所述数据适配器中的视图数据刷新函数刷新视图数据元素;s22,建立所述展示贴纸接口函数的内部实现逻辑,包括通过粘贴函数在视图层展示贴纸元素对象;s23,建立所述展示贴纸下载状态接口函数的内部实现逻辑,包括监听数据层的贴纸下载状态,并根据所述贴纸下载状态调用视图层信息,展示贴纸的下载状态;s24,建立所述点击事件接口函数的内部实现逻辑,包括获取贴纸点击事件,并通过调用视图层的设置选择函数更新视图元素的选中状态。

可以理解为,本实施例主要描述视图层的框架设计及具体的业务实现逻辑,通过定义视图层的接口函数来暴露视图层与外界的耦合函数关系,即通过定义贴纸视图的接口函数的方式来确定贴纸中视图层与其他层级之间的交互接口。

本实施例是对视图层的框架设计,所以视图层的接口函数需要能够反映视图的状态的变化,在贴纸功能框架中将与视图层相关的状态变化抽象成接口函数。具体定义视图层的数据刷新接口函数、展示贴纸接口函数、展示贴纸下载状态接口函数和点击事件接口函数。视图层接口函数的具体定义代码如下:

本实施例中定义了四个视图层接口函数,分别为reloaddata、showpaster、downloadstate和onitemcheck。其中reloaddata表示对视图层的数据刷新接口,即在该接口函数内完成对数据的刷新流程;showpaster表示在视图层展示贴纸元素接口,即在视图层中呈现对应的贴纸视图元素信息;downloadstate表示在视图层展示贴纸下载状态接口,贴纸的下载状态用于更新视图中贴纸的下载状态信息;onitemcheck表示视图层的点击选取事件接口,即对应贴纸被点击的事件信息,其中主要是点击事件所引起的视图层的改变。

在根据上述步骤定义了视图层的接口函数后,还需要对各接口函数进行逻辑实现,具体通过定义一个视图层接口函数实现类uihandler来实现视图层的具体业务逻辑。让该视图层接口函数实现类继承与iviewbeautypaster相关的接口函数,并实现各接口函数的具体视图接口业务实现逻辑。

具体实现时,建立reloaddata接口函数的视图接口实现逻辑包括,将视图数据设置到数据适配器中,然后通过调用数据适配器中的视图数据刷新函数notifidatachanged来刷新视图层数据元素。

建立showpaster接口函数的视图接口实现逻辑包括,通过将贴纸元素对象pasteritem设置到贴纸上,实现特定贴纸元素在视图层的展示。

建立downloadstate接口函数的视图接口实现逻辑包括,监听数据层的下载状态,根据下载状态的不同调用数据层相应的信息来进行呈现。

建立onitemcheck接口函数的视图接口实现逻辑包括,对贴纸元素进行点击事件的实现,即当贴纸接收点击事件以后通过调用视图层中的setselect(true)方法来更新元素的选中状态。

本发明实施例提供的一种贴纸功能框架实现方法,通过对贴纸功能框架中视图层的接口函数定义和接口函数实现逻辑的建立,实现视图层与数据层和控制层的解耦,能够有效避免代码内存泄漏的风险性。

其中可选的,所述数据层的获取贴纸数据信息接口函数对应的所述数据接口实现逻辑包括:通过标准http请求获取贴纸详情数据信息。

可以理解为,根据上述实施例,在建立数据层获取贴纸数据信息接口函数的数据接口实现逻辑时,逻辑流程包括,通过标准http请求形式向服务器发送获取贴纸详情数据信息请求,以供服务器根据该http请求提供相应贴纸的详情数据信息。

其中可选的,在所述标准http请求的头部添加降权校验码,以供服务器根据所述降权校验码判定所述标准http请求是否合法。

可以理解为,在上述实施例的基础上,在通过标准http请求获取贴纸的详情数据信息时,为了对数据进行一定的保密处理,在http的头部中添加降权校验码。服务器会根据该降权校验码来判定该请求是否合法,并在服务器通过处理后返回需要显示的贴纸详情数据。

本发明实施例提供的一种贴纸功能框架实现方法,通过在htitp请求中加入降权校验码,实现对数据的保密处理,能够有效保证安全。

其中可选的,所述s3的步骤进一步包括:基于所述贴纸功能的业务逻辑流程,在控制层中依次调用所述获取贴纸数据信息接口函数、所述下载贴纸接口函数、所述展示贴纸下载状态接口函数、所述数据刷新接口函数、所述展示贴纸接口函数和所述点击事件接口函数。

在一个实施例中,所述s3的步骤还包括:在控制层中调用所述删除贴纸接口函数。

可以理解为,贴纸功能框架中控制层主要根据业务逻辑来将视图层和数据层的接口函数进行组装,从而达到程序需要的业务逻辑。本实施例中贴纸首先需要从服务器获取贴纸详情,具体在控制层中通过调用数据层的startfetchdata接口函数来获取贴纸详情信息。

接下来通过贴纸详情信息中贴纸的具体下载地址,在控制层中调用数据层的downloadpaster接口函数将贴纸的具体内容下载到磁盘中。该downloadpaster接口函数中设有下载回调信息downloadcallback,通过参数downloadcallback来判定下载是否成功。

然后,通过控制层将回调信息downloadcallback转发到视图层中的downloadstate接口函数,并在视图层根据该回调信息做出相应的展示。

在贴纸数据下载完成后,通过调用视图层的reloaddata接口函数来加载相应的贴纸数据。视图层通过监听系统按钮的回调信息,当贴纸被点击选中时,回调视图层的onitemcheck接口函数,然后通过调用视图层的showpaster接口函数,实现对对应贴纸的实时展示。

当用户发现下载的贴图不喜欢或不再需要时,通过控制层调用数据层的删除贴图接口函数delete,按照相应贴图存储路径删除对应的贴图存储元素。

本发明实施例提供的一种贴纸功能框架实现方法,通过对贴纸功能框架控制层实现逻辑的建立,实现按贴纸功能业务逻辑需求对数据层和视图层接口函数的调用,从而实现数据层和视图层基于接口耦合的连接,能够极的大降低耦合性,使得贴纸功能框架具有更强的扩展性和可维护性。

作为本发明实施例的另一个方面,本实施例提供一种贴纸功能框架实现设备,参考图4,为本发明实施例一种贴纸功能框架实现设备的结构框图,包括:至少一个存储器1、至少一个处理器2、通信接口3和总线4。

其中,存储器1、处理器2和通信接口3通过总线4完成相互间的通信,通信接口3用于所述贴纸功能框架实现设备与数据输入装置通信接口之间的信息传输;存储器1中存储有可在处理器2上运行的计算机程序,处理器2执行所述程序时实现如上述实施例所述的贴纸功能框架实现方法。

可以理解为,所述的贴纸功能框架实现设备中至少包含存储器1、处理器2、通信接口3和总线4,且存储器1、处理器2和通信接口3通过总线4形成相互之间的通信连接,并可完成相互间的通信。

通信接口3实现贴纸功能框架实现设备与数据输入装置通信接口之间的通信连接,并可完成相互间信息传输,如通过通信接口3实现对用户编码数据的获取等。

贴纸功能框架实现设备运行时,处理器2调用存储器1中的程序指令,以执行上述各方法实施例所提供的方法,例如包括:基于贴纸功能的数据业务需求,定义数据层接口函数,并建立所述数据层接口函数的数据接口实现逻辑。以及定义数据层接口函数实现类;利用所述数据层接口函数实现类,继承所述数据层接口函数,复写所述数据层接口函数的数据接口实现逻辑等。

本发明另一个实施例中,提供一种非暂态计算机可读存储介质,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如上述实施例所述的贴纸功能框架实现方法。

可以理解为,实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所描述的贴纸功能框架实现设备的实施例仅仅是示意性的,其中作为分离部件说明的单元可以是或者也可以不是物理上分开的,既可以位于一个地方,或者也可以分布到不同网络单元上。可以根据实际需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。

通过以上实施方式的描述,本领域的技术人员可以清楚地了解,各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、磁碟、光盘等,包括若干指令,用以使得一台计算机设备(如个人计算机,服务器,或者网络设备等)执行上述各方法实施例或者方法实施例的某些部分所述的方法。

本发明实施例提供的一种贴纸功能框架实现设备和一种非暂态计算机可读存储介质,通过定义数据层和视图层的接口函数,建立各接口函数实现逻辑,以及基于贴纸功能业务逻辑流程,在控制层依次调用数据层和视图层各接口函数,实现各接口函数的实例化。能够有效简化控制层业务逻辑,提高软件程序可扩展性和可维护性,并能有效避免软件代码内存泄漏。

综上,本发明提供的一种贴纸功能框架实现方法与设备,通过定义数据层和视图层的接口函数,建立各接口函数实现逻辑,以及基于贴纸功能业务逻辑流程,在控制层依次调用数据层和视图层各接口函数,实现各接口函数的实例化。能够有效简化控制层业务逻辑,提高软件程序可扩展性和可维护性,并能有效避免软件代码内存泄漏。

最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

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