华为云用户手册

  • DATE 功能描述 DATE函数将"yyyy-MM-dd"日期格式的字符串解析为DATE类型的日期。 语法说明 DATE DATE string 入参说明 参数名 数据类型 参数说明 string STRING SQL日期格式的字符串。 注意该字符串的格式必须为"yyyy-MM-dd"格式,否则语义校验会报错。 示例 测试语句 SELECT DATE "2021-08-19" AS `result`FROMtesttable; 测试结果 result 2021-08-19
  • EXTRACT 功能描述 提取时间点或时间间隔中指定某一时间单位的部分,以BIGINT类型返回。 语法说明 BIGINT EXTRACT(timeinteravlunit FROM temporal) 入参说明 参数名 数据类型 参数说明 timeinteravlunit TIMEUNIT 需要从时间点或时间间隔中提取的时间单位,取值可以是:YEAR/QUARTER/MONTH/WEEK/DAY/DOY/HOUR/MINUTE/SECOND。 temporal DATE/TIME/TIMESTAMP/INTERVAL 时间点或时间间隔。 不允许指定不存在于时间点或时间间隔中的时间单位,否则作业会提交失败。 例如如下错误语句,会报错YEAR不能从TIME中提取。 SELECT EXTRACT(YEAR FROM TIME '12:44:31' ) AS `result`FROMtesttable; 示例 测试语句 SELECT EXTRACT(YEAR FROM DATE '1997-04-25' ) AS `result`, EXTRACT(MINUTE FROM TIME '12:44:31') AS `result2`, EXTRACT(SECOND FROM TIMESTAMP '1997-04-25 13:14:15') AS `result3`, EXTRACT(YEAR FROM INTERVAL '2-10' YEAR TO MONTH) AS `result4`,FROMtesttable; 测试结果 result result2 result3 result4 1997 44 15 2
  • 函数说明 表1 时间函数 函数 返回值 描述 DATE string DATE 将日期字符串以"yyyy-MM-dd"的形式解析为SQL日期。 TIME string TIME 将时间字符串以"HH:mm:ss[.fff]"形式解析为SQL时间。 TIMESTAMP string TIMESTAMP 将时间字符串转换为时间戳,时间字符串格式为:"yyyy-MM-dd HH:mm:ss[.fff]"。 INTERVAL string range INTERVAL interval表示时间间隔。有两种类型,分别为: 一种为"yyyy-MM"即保存年份和月份,精度到月份,它的range参数可以为YEAR或者YEAR To Month。 一种为天时间"dd HH:mm:sss.fff",用来保存天数、小时、分钟、秒和毫秒, 精度最低到毫秒。它的range参数可以为DAY、MINUTE、DAY TO HOUR、DAY TO SECOND。 例如: INTERVAL '10 00:00:00.004' DAY TO second表示间隔10天4毫秒。 INTERVAL '10' DAY表示间隔10天 INTERVAL '2-10' YEAR TO MONTH表示间隔2年10个月。 CURRENT_DATE DATE 以UTC时区返回当前SQL日期。 CURRENT_TIME TIME 以UTC时区返回当前SQL时间。 CURRENT_TIMESTAMP TIMESTAMP 以UTC时区返回当前SQL时间戳。 LOCALTIME TIME 返回当前时区的当前SQL时间。 LOCALTIMESTAMP TIMESTAMP 返回当前时区的当前SQL时间戳。 EXTRACT(timeintervalunit FROM temporal) BIGINT 提取时间点的一部分或者时间间隔。以int类型返回该部分。 例如:提取日期“2006-06-05”中的日为5 EXTRACT(DAY FROM DATE '2006-06-05') 返回5。 YEAR(date) BIGINT 返回输入时间的年份 例如:YEAR(DATE '1994-09-27') 返回1994 QUARTER(date) BIGINT 从SQL日期返回表示该日期季度的数字。 MONTH(date) BIGINT 返回输入时间的月份 例如:MONTH(DATE '1994-09-27')返回9 WEEK(date) BIGINT 计算当前日期是一年中的第几周 例如:WEEK(DATE '1994-09-27') 返回39 DAYOFYEAR(date) BIGINT 计算当前日期是一年中的第几天 例如:DAYOFYEAR(DATE '1994-09-27') 返回270 DAYOFMONTH(date) BIGINT 计算当前日期是这个月的第几天 例如:DAYOFMONTH(DATE '1994-09-27') 返回27 DAYOFWEEK(date) BIGINT 计算当前日期是当前周的第几天 其中周日设为1 例如:DAYOFWEEK(DATE '1994-09-27') 返回3 HOUR(timestamp) BIGINT 返回当前时间戳的24小时制的小时数,范围0-23 例如:HOUR(TIMESTAMP '1994-09-27 13:14:15') 返回13 MINUTE(timestamp) BIGINT 返回当前时间戳中的分钟数,范围0-59 例如:MINUTE(TIMESTAMP '1994-09-27 13:14:15') 返回14 SECOND(timestamp) BIGINT 返回当前时间戳中的秒数,范围0-59 例如:SECOND(TIMESTAMP '1994-09-27 13:14:15') 返回15 FLOOR(timepoint TO timeintervalunit) TIME 向下对齐时间。 例如:FLOOR(TIME '12:44:31' TO MINUTE)按分钟对齐到12:44:00。 CEIL(timepoint TO timeintervalunit) TIME 向上对齐时间。 例如:CEIL(TIME '12:44:31' TO MINUTE)按分钟对齐到12:45:00。 (timepoint1, temporal1) OVERLAPS (timepoint2, temporal2) BOOLEAN 若两个时间范围有重叠,则返回TRUE 例如: (TIME '2:55:00', INTERVAL '1' HOUR) OVERLAPS (TIME '3:30:00', INTERVAL '2' HOUR) 返回TRUE (TIME '9:00:00', TIME '10:00:00') OVERLAPS (TIME '10:15:00', INTERVAL '3' HOUR) 返回 FALSE DATE_FORMAT(timestamp, string) STRING 将日期从源格式转换至目标格式 TIMESTAMPADD(timeintervalunit, interval, timepoint) TIMESTAMP/DATE/TIME 将整型interval与timeintervalunit组成的结果添加日期或日期时间到timepoint中,并返回添加后的日期时间 例如:TIMESTAMPADD(WEEK, 1, DATE '2003-01-02') 返回2003-01-09 TIMESTAMPDIFF(timepointunit, timepoint1, timepoint2) INT 返回timepoint1和timepoint2相差的时间单元数量 timepointunit表示时间单元,应该是SECOND、MINUTE、HOUR、DAY、MONTH或YEAR 例如: TIMESTAMPDIFF(DAY, TIMESTAMP '2003-01-02 10:00:00', TIMESTAMP '2003-01-03 10:00:00') 返回1 CONVERT_TZ(string1, string2, string3) TIMESTAMP 将string2时区的时间string1转换为其在string3时区的对应时间 例如:CONVERT_TZ('1970-01-01 00:00:00', 'UTC', 'America/Los_Angeles') 返回'1969-12-31 16:00:00' FROM_UNIXTIME(numeric[, string]) STRING 根据时间戳numeric和当前时区返回string格式的时间 string默认格式为'YYYY-MM-DD hh:mm:ss' 例如:FROM_UNIXTIME(44)返回1970-01-01 09:00:44 UNIX_TIMESTAMP() BIGINT 返回当前时间的时间戳,单位为秒 UNIX_TIMESTAMP(string1[, string2]) BIGINT 将string2格式的时间字符串string1转为时间戳,单位为秒 string2默认格式为'yyyy-MM-dd HH:mm:ss' TO_DATE(string1[, string2]) DATE 将string2格式的日期字符串,转换为DATE类型 string2默认格式为 'yyyy-MM-dd' TO_TIMESTAMP(string1[, string2]) TIMESTAMP 将string2格式的日期时间字符串转换为TIMESTAMP类型 string2默认格式为'yyyy-MM-dd HH:mm:ss'
  • 示例 根据order_id对数据进行去重,其中proctime为事件时间属性列 SELECT order_id, user, product, number FROM ( SELECT *, ROW_NUMBER() OVER (PARTITION BY order_id ORDER BY proctime ASC) as row_num FROM Orders) WHERE row_num = 1;
  • 语法说明 ROW_NUMBER(): 从第一行开始,依次为每一行分配一个唯一且连续的号码。 PARTITION BY col1[, col2...]: 指定分区的列,例如去重的键。 ORDER BY time_attr [asc|desc]: 指定排序的列。所制定的列必须为时间属性。目前仅支持proctime。升序( ASC )排列指只保留第一行,而降序排列( DESC )则指保留最后一行。 WHERE rownum = 1: Flink 需要 rownum = 1 以确定该查询是否为去重查询。
  • 语法格式 create table hbaseSource ( attr_name attr_type (',' attr_name attr_type)* )with ( 'connector.type' = 'hbase', 'connector.version' = '1.4.3', 'connector.table-name' = '', 'connector.zookeeper.quorum' = '');
  • 前提条件 该场景作业需要运行在 DLI 的独享队列上,因此要与HBase建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。 如何建立增强型跨源连接,请参考《 数据湖探索 用户指南》中增强型跨源连接章节。 如何设置安全组规则,请参见《虚拟私有云用户指南》中“安全组”章节。 若使用 MRS HBase,请在增强型跨源的主机信息中添加MRS集群所有节点的主机ip信息。 详细操作请参考《 数据湖 探索用户指南》中的“修改主机信息”章节描述。
  • 参数说明 表1 参数说明 参数 是否必选 说明 connector.type 是 connector的类型,只能为hbase connector.version 是 该值只能为1.4.3 connector. table-name 是 hbase中的表名 connector.zookeeper.quorum 是 Zookeeper的地址 connector.zookeeper.znode.parent 否 Zookeeper中的根目录,默认是/hbase
  • 前提条件 请务必确保您的账户下已在 云搜索服务 里创建了集群。如何创建集群请参考《 云搜索 服务用户指南》中创建集群章节。 如果需要通过集群账号和密码访问Elasticsearch,则创建的云搜索服务集群必须开启安全模式并且关闭https。 该场景作业需要运行在DLI的独享队列上,因此要与云搜索服务建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。 如何建立增强型跨源连接,请参考《数据湖探索用户指南》中增强型跨源连接章节。 如何设置安全组规则,请参见《虚拟私有云用户指南》中“安全组”章节。
  • 示例 create table sink1( attr1 string, attr2 int) with ( 'connector.type' = 'elasticsearch', 'connector.version' = '7', 'connector.hosts' = 'http://xxxx:9200', 'connector.index' = 'es', 'connector.document-type' = 'one', 'update-mode' = 'append', 'format.type' = 'json');
  • 功能描述 DLI将Flink作业的输出数据输出到云搜索服务 CSS 的Elasticsearch中。Elasticsearch是基于Lucene的当前流行的企业级搜索服务器,具备分布式多用户的能力。其主要功能包括全文检索、结构化搜索、分析、聚合、高亮显示等。能为用户提供实时搜索、稳定可靠的服务。适用于 日志分析 、站内搜索等场景。 云搜索服务(Cloud Search Service,简称 CS S)为DLI提供托管的分布式搜索引擎服务,完全兼容开源Elasticsearch搜索引擎,支持结构化、非结构化文本的多条件检索、统计、报表。云搜索服务的更多信息,请参见《云搜索服务用户指南》。
  • 语法格式 create table esSink ( attr_name attr_type (',' attr_name attr_type)* (','PRIMARY KEY (attr_name, ...) NOT ENFORCED))with ( 'connector.type' = 'elasticsearch', 'connector.version' = '7', 'connector.hosts' = 'http://xxxx:9200', 'connector.index' = '', 'connector.document-type' = '', 'update-mode' = '', 'format.type' = 'json');
  • 参数说明 表1 参数说明 参数 是否必选 说明 connector.type 是 connector的类型,对于elasticsearch需配置为elasticsearch connector.version 是 使用的elasticsearch的版本。 当前只能使用版本7,即该值只能为7 connector.hosts 是 Elasticsearch所在集群的主机名,多个以’;’间隔,注意请以http开头,如http://x.x.x.x:9200 connector.index 是 Elasticsearch的索引名 connector.document-type 是 Elasticsearch的type名称 当版本为7时,由于elasticsearch使用默认的_doc类型,因此该属性无效 update-mode 是 sink的写入类型,支持append和upsert connector.key-delimiter 否 连接复合主键的拼接符,默认为_ connector.key-null-literal 否 当key中含有null时,使用该字符代替 connector.failure-handler 否 elasticsearch请求失败时的策略,默认为fail fail:当请求失败且作业失败时抛出异常 ignore:忽略 retry-rejected:对于由于es节点的队列满时,会重新请求而不抛出失败。 custom:使用定制策略 connector.failure-handler-class 否 使用失败时的定制策略时所使用的自定义处理方式 connector.flush-on-checkpoint 否 checkpoint时是否会等待所有阻塞请求完成。 默认为true,表示会等待阻塞请求完成,如果配置为false,则表示不会等待阻塞请求完成。 connector.bulk-flush.max-actions 否 批量写入时的每次最大写入记录数 connector.bulk-flush.max-size 否 批量写入时的最大数据量,当前只支持MB,请带上单位 mb connector.bulk-flush.interval 否 批量写入时的刷新的时间间隔,单位为milliseconds,无需带上单位 format.type 是 当前只支持json connector.username 否 Elasticsearch所在集群的账号。该账号参数需和密码“connector.password”参数同时配置。 使用账号密码参数时,创建的云搜索服务集群必须开启安全模式并且关闭https。 connector.password 否 Elasticsearch所在集群的密码。该密码参数需和“connector.username”参数同时配置。
  • 前提条件 该场景作业需要运行在DLI的独享队列上,因此要与HBase建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。 若使用MRS HBase,请在增强型跨源的主机信息中添加MRS集群所有节点的主机ip信息。 详细操作请参考《数据湖探索用户指南》中的“修改主机信息”章节描述。 如何建立增强型跨源连接,请参考《数据湖探索用户指南》中增强型跨源连接章节。 如何设置安全组规则,请参见《虚拟私有云用户指南》中“安全组”章节。
  • 语法格式 create table hbaseSink ( attr_name attr_type (',' attr_name attr_type)* )with ( 'connector.type' = 'hbase', 'connector.version' = '1.4.3', 'connector.table-name' = '', 'connector.zookeeper.quorum' = '');
  • 功能描述 DLI将Flink作业的输出数据输出到 消息通知 服务( SMN )中。 消息通知服务(Simple Message Notification,简称SMN)为DLI提供可靠的、可扩展的、海量的消息处理服务,它大大简化系统耦合,能够根据用户的需求,向订阅终端主动推送消息。可用于连接云服务、向多个协议推送消息以及集成在产生或使用通知的任何其他应用程序等场景。SMN的更多信息,请参见《消息通知服务用户指南》。
  • 参数说明 表1 参数说明 参数 是否必选 说明 connector.type 是 sink的类型,smn表示输出到消息通知服务中 connector.region 是 SMN所在区域 connector.topic-urn 否 SMN服务的主题URN,用于静态主题URN配置。作为消息通知的目标主题,需要提前在SMN服务中创建。 与“urn_column”配置两者至少存在一个,同时配置时,“topic_urn”优先级更高。 connector.urn-column 否 主题URN内容的字段名,用于动态主题URN配置。 与“topic_urn”配置两者至少存在一个,同时配置时,“topic_urn”优先级更高。 connector.message-subject 是 发送SMN服务的消息标题,用户自定义 connector.message-column 是 当前表的某个字段名,其内容作为消息的内容,用户自定义。目前只支持默认的文本消息
  • 语法格式 create table smnSink ( attr_name attr_type (',' attr_name attr_type)* (','PRIMARY KEY (attr_name, ...) NOT ENFORCED))with ( 'connector.type' = 'smn', 'connector.region' = '', 'connector.topic-urn' = '', 'connector.message-subject' = '', 'connector.message-column' = '');
  • 示例 将数据写入smn的相应主题中,其中smn发送的消息的主题为'test',内容为字段'attr1'的内容 create table smnSink ( attr1 STRING, attr2 STRING)with ( 'connector.type' = 'smn', 'connector.region' = 'cn-north-1', 'connector.topic-urn' = 'xxxxxx', 'connector.message-subject' = 'test', 'connector.message-column' = 'attr1');
  • 参数说明 表1 参数说明 参数 是否必选 说明 connector.type 是 connector的类型,只能为hbase connector.version 是 该值只能为1.4.3 connector.table-name 是 hbase中的表名 connector.zookeeper.quorum 是 Zookeeper的地址 connector.zookeeper.znode.parent 否 Zookeeper中的根目录,默认是/hbase connector.write.buffer-flush.max-size 否 每次插入的数据的最大的缓存大小,默认为2mb ,仅支持mb connector.write.buffer-flush.max-rows 否 每次刷新数据的最大条数 connector.write.buffer-flush.interval 否 刷新时间,默认值为0s,如2s connector.rowkey 否 设置复合rowkey,即根据多个字段设置。 形如:rowkey1:3,rowkey2:3,… 其中3表示取该字段的前3个byte,该值不能大于该字段的字节大小,且该值不能小于1
  • 功能描述 DLI将作业的输出数据输出到HBase中。HBase是一个稳定可靠,性能卓越、可伸缩、面向列的分布式 云存储 系统,适用于海量数据存储以及分布式计算的场景,用户可以利用HBase搭建起TB至PB级数据规模的存储系统,对数据轻松进行过滤分析,毫秒级得到响应,快速发现数据价值。HBase支持消息数据、报表数据、推荐类数据、风控类数据、日志数据、订单数据等结构化、半结构化的KeyValue数据存储。 利用DLI,用户可方便地将海量数据高速、低时延写入HBase。
  • 语法格式 create table hbaseSource ( attr_name attr_type (',' attr_name attr_type)* (',' watermark for rowtime_column_name as watermark-strategy_expression))with ( 'connector.type' = 'hbase', 'connector.version' = '1.4.3', 'connector.table-name' = '', 'connector.zookeeper.quorum' = '');
  • 前提条件 该场景作业需要运行在DLI的独享队列上,因此要与HBase建立增强型跨源连接,且用户可以根据实际所需设置相应安全组规则。 若使用MRS HBase,请在增强型跨源的主机信息中添加MRS集群所有节点的主机ip信息。 详细操作请参考《数据湖探索用户指南》中的“修改主机信息”章节描述。 如何建立增强型跨源连接,请参考《数据湖探索用户指南》中增强型跨源连接章节。 如何设置安全组规则,请参见《虚拟私有云用户指南》中“安全组”章节。
  • 参数说明 表1 参数说明 参数 是否必选 说明 connector.type 是 connector的类型,只能为hbase connector.version 是 该值只能为1.4.3 connector. table-name 是 hbase中的表名 connector.zookeeper.quorum 是 Zookeeper的地址 connector.zookeeper.znode.parent 否 Zookeeper中的根目录,默认是/hbase connector.rowkey 否 读取复合rowkey的内容,并根据设置的大小,赋给新的字段 形如:rowkey1:3,rowkey2:3,… 其中3表示取该字段的前3个byte,该值不能大于该字段的字节大小,且该值不能小于1。表示将复合rowkey的前三个字节赋给字段rowkey1,其后三个字节赋给字段rowkey2
  • 添加MX邮箱解析时,提示冲突? 可能的原因:MX邮箱解析与CNAME解析冲突。 解决方法: 登录云速建站控制台,请切换至云速建站站点所在的区域。 图1 切换区域 在左侧导航栏,单击“域名解析”,进入“云解析”控制台。 图2 选择域名解析 删除冲突的CNAME解析记录。 单击需要添加MX邮箱解析的域名名称,进入“解析记录”界面。 在CNAME解析记录所在行,单击“删除”,弹出“删除记录集”对话框。 图3 CNAME解析记录 单击“是”,完成CNAME解析记录的删除。 添加A解析记录。 单击“添加记录集”,弹出“添加记录集”对话框。 增加如图4所示解析记录,单击“确定”。 图4 添加A记录解析 类型:选择“A – 将域名指向IPv4地址” 别名:选择“是” 别名地址:选择“云速建站”,以及系统自动关联的别名地址 请使用系统自动关联的别名地址,手动输入的别名地址存在解析记录添加后不生效的情况。 添加MX邮箱解析记录。 父主题: 域名类
  • 如何展示秒杀、团购产品? 为了提高网站产品的销售量,独立营销版和独立企业版站点为您提供了秒杀、团购产品营销插件,可营造多种促销优惠方案。秒杀和团购产品添加步骤类似,本节以秒杀产品为例,为您介绍如何添加和展示秒杀产品。 登录云速建站控制台。 选择需要编辑的站点,单击 “网站设计”,进入网站管理后台。 添加秒杀产品。 在云速建站管理后台选择“产品-添加产品”,产品类型选择“秒杀”,根据产品填写其余参数,单击“保存”。 图21 添加秒杀产品 编辑完善秒杀产品。添加完成后,我们也可以对刚添加的产品进行编辑、复制、下架和删除。 图22 编辑完善秒杀产品 选择“站点概况”,单击“站点编辑”,进入网站前台编辑页面。 创建秒杀产品详情页。 选择“页面管理-创建新页面”,填写创建新页面参数,单击“保存”。 图23 建立秒杀产品详情页 添加秒杀插件。在创建的秒杀页面中,选择“插件-营销-秒杀”,将秒杀插件拖拽至页面中。 图24 添加秒杀插件 选择秒杀类型为“秒杀详情”,单击“确定”。 图25 选择秒杀类型 设置秒杀详情展示的样式。选择,即可编辑秒杀产品展示样式,单击“保存”。 图26 设置秒杀详情展示的样式 创建秒杀列表页。 选择“页面管理-创建新页面”,填写创建新页面参数,单击“保存”。 图27 创建秒杀列表页 添加秒杀插件。在创建的秒杀页面中,选择“插件-营销-秒杀”,将秒杀插件拖拽至页面中。 图28 添加秒杀插件 选择秒杀类型为“秒杀列表”,单击“确定”。 图29 选择秒杀类型 设置秒杀列表展示的样式。选择,即可编辑秒杀产品展示样式,单击“保存”。 图30 设置秒杀列表展示的样式 链接设置。选择,设置链接,详情链接选择建立秒杀产品详情页,更多选择建立秒杀列表页,单击“保存”。 图31 链接设置 所有页面创建完成后,单击右上角“保存”即可。 图32 保存
  • 云速建站可以上传视频吗? 云速建站不支持直接上传视频到云空间中,您可以使用外部链接的方式添加视频。 主要支持以下两种方式: 视频模块+视频URL 在视频网站复制视频URL链接地址,此地址必须以.mp4或者.flv结尾,在云速建站视频模块中粘贴视频URL链接地址并保存,通过预览查看效果。 代码模块+视频HTML代码 在视频网站复制视频HTML代码,在云速建站代码模块中粘贴视频HTML代码并保存,通过预览查看效果。 具体操作步骤请参考文档:多终端独立版站点上传视频。
  • 固定显示后通栏上的模块页面不显示 ? 原因一:添加的模块没有完全拉入通栏模块。 解决方法:将添加的模块放置橙色边框内。 进入站点编辑页面。 将编辑页面切换为底版管理,单击“Common”,进入底版编辑页面。 图4 底版编辑 将模块移出通栏,然后再移回通栏,直至出现橙色边框。 将添加的模块放置出现的橙色边框内,保存即可。 图5 模块移至通栏 原因二:添加的模块在当前页面被解锁。 解决方法:重新添加此模块。 进入站点编辑页面。 将编辑页面切换为底版管理,单击“Common”,进入底版编辑页面。 图6 底版编辑 选择删除此模块。 图7 删除模块 重新添加此模块至底版,保存即可。
  • 云速建站网站推广的效果怎么样? 云速建站目前暂不支持网站推广业务,但是提供SEO优化承载功能,通过SEO功能可以让网站的关键词被搜索引擎收录并在搜索结果中排名靠前,从而使网站得到更多精准的访问流量以便更好的推广。 许多客户使用这个功能的优化效果还不错,比如“宝珍堂”和“九道广告”。 产品SEO功能包括:后台产品设置SEO、产品统一SEO、页面SEO、站点设置中的全局SEO。 SEO设置具体操作步骤请参考:多终端独立版SEO设置和多终端自适应版SEO设置。
  • 云速建站提供哪些售后服务? 您可享受咨询解答、退换货和软件维护、升级等服务。云速建站提供的以下四种形式的帮助: 帮助中心:提供云速建站的介绍、使用、常见问题等资料,指导您了解并操作云速建站。 智能客服:收录了经常被问到的问题和解决方法。 云社区有定期发布最佳实践,技巧分享,统一标识【云速建站】。 在线、工单或电话人工咨询,客户量较大的情况下需要您耐心等待。 同时支持5天无理由全额退订。但对于付费模板的消费,涉及到了设计师专有版权,购买后不能退款。
共100000条