【AICon】探索八个行业创新案例,教你在教育、金融、医疗、法律等领域实践大模型技术! >>> 了解详情
写点什么

企业微信自建应用开发初探

  • 秦明辉

  • 2019-04-02
  • 本文字数:5739 字

    阅读完需:约 19 分钟

企业微信自建应用开发初探

企业微信是腾讯推出的一个新的办公协作平台,通过与微信一致的沟通体验,为企业员工提供最基础和最实用的办公服务。同时企业微信作为一个开发平台,企业可以根据需要开发定制自己的企业应用集成到企业微信上。ABC WeChat 是我们公司为 ABC 开发的基于企业微信的一款应用(因保密需要,这里用 ABC 代替公司名称)。


本文以该项目为例对在企业微信平台开发企业应用的特点进行了总结,重点分析了企业微信开发平台对应用开发提供的支持,并指出了实际开发中存在的一些挑战。

1.ABC WeChat 项目介绍

从 2018 年 5 月份讨论需求开始,ABC WeChat 项目主体开发共分两个阶段,总历时约六个月。这个应用主要是为一个现有劳动力管理产品提供了一个基于微信的客户端,使得用户可以通过企业微信,使用该产品的部分功能,如打卡,查看排版信息等,满足用户的移动办公需求。主要实现的功能有:


  • 实现现有产品的登录入口,并且提供一定时间内的免登录

  • 根据位置不同展示不同的打卡二维码

  • 扫描二维码实现自动打卡

  • 展示用户的排班信息

  • 提供打卡提醒及异常提醒

  • 工时和异常信息的统计

  • 请假及审批

2.企业微信开发应用集成方式

企业微信提供多种应用集成方式。其中,按提供方来分有三种:


  • 基础应用:由微信提供;

  • 第三方应用:开放体系下的第三方服务商提供;

  • 自建应用:我们自己新建的,一般我们也都是需要自建应用进行开发。


按交互方式来分有两种:


  • 主页型应用:用户点击应用后直接打开一个链接;

  • 消息型应用:可以像公众号一样设置多个菜单,每个菜单可以配置不同的响应方式。


ABC WeChat 项目属于自建应用中的主页型应用。这种应用是完全由企业自主开发定制,相对于基础应用和第三方应用更加灵活,功能上也更加符合企业自身需求。而相对于用有限几个菜单来提供响应的消息型应用来说,主页型应用的功能更加强大。


本文主要讨论自建的主页型应用。其基本结构如下图所示。


3.企业微信平台对应用开发的支持

作为开发平台来说,企业微信对其上自建的企业应用提供了简单灵活的集成方式,并通过 API 提供了对手机硬件和微信本身功能的调用,可以帮助企业比较快速地构建出一个企业微信应用供企业用户使用。

简单的集成方式

对于自建的主页型应用,企业微信提供的集成方式是极其简单的,只需要企业管理员在管理端配置一个要访问应用的主页地址即可。当用户点击对应图标访问该应用时,企业微信就会打开内嵌浏览器并访问配置的主页地址。从而实现用户通过企业微信访问企业应用的目的。当然,企业现有应用的 web 页面未必适合直接放到企业微信中使用。一般都需要针对性的开发一套针对企业微信的 web 页面。

网页开发,跨平台

自建主页型应用是指向一个链接地址,后台企业应用服务器对该链接进行响应并下发网页代码。企业微信打开内嵌浏览器来解析网页代码并展示给用户。这个过程和普通网站类似,只是不需要用户打开浏览器而是企业微信打开并维护一个内嵌浏览器。因此对这种应用来说,其和普通 web 应用基本类似,也是基于网页开发的,原则上可以跨平台,只要有浏览器就可以运行。相比于 Native 的应用来说,提供了更多的灵活性。

通过一套标准 API,提供对手机硬件的调用

由于浏览器本身限制,网页上运行的代码难以调用手机本身的一些功能,如扫描,拍照,获取地理位置等。因此企业微信提供了一套 JS-SDK, 第三方可以通过 JS 调用该 SDK 实现对手机部分功能的调用。这种方式本身也屏蔽了不同手机不同操作系统本身的差异性和复杂性,使得开发过程更为简单。但同时也受限于企业微信 SDK 暴露出来的 API,对于其没有暴露的功能,实现起来就会非常困难。

提供消息推送接口

企业微信开放了消息发送接口,企业可以使用这些接口让自建应用与企业微信后台或用户间进行双向通信。消息接口总体上分为主动发送单聊消息、接收单聊消息以及发送消息到群三部分。利用这些接口,自建应用可以充分利用微信强大的沟通能力实现各种各样的通知和提醒功能,使得信息传递的更灵活,更及时。ABC WeChat 项目使用了“主动发送应用消息”接口实现了将打卡提醒和异常通知发送到指定用户的企业微信上。同时,自建应用为应用消息指定一个 URL,使得用户可以通过点击消息进入到应用对应页面上,十分灵活方便。

提供标准页面样式库

在企业微信内部的企业应用的样式最好和企业微信保持统一,这样视觉上不会让用户觉得突兀。WeUI for Work 是一套由微信官方设计的同企业微信原生视觉体验一致的基础样式库。利用该样式库,自建应用可以比较容易地构建出适合企业微信风格的应用。ABC WeChat 也使用了该样式库。

4.开发自建应用时遇到的挑战和解决办法

虽然企业微信已经为应用提供了基本的开发支持,但是还有很多需要完善加强的地方。因为这些不足之处,ABC WeChat 项目遇到了很多技术困难。下面详细的列出这些问题和相应的解决办法。

本地存储

对于网页应用,通常客户端使用的本地存储方式有 localStorage, cookie, WebSQL。但是对于在企业微信中的应用来说,localStorage 和 WebSQL 都无法实现长期存储(微信中 web view 和浏览器的行为差异),只有 cookie 才能满足长期存储的要求。甚至在 ABC WeChat 项目初期,企业微信也是不支持长期存储的 cookie 的,在项目中期时企业微信的一次版本更新中才加入了长期 cookie 的支持(没有在官方文档中找到关于对长期 cookie 支持的说明)。


在 ABC WeChat 项目中,自动登录以避免每次都让用户输入用户名和密码的功能就是使用了长期存储的 cookie。在项目中发现,IPhone 平台上,企业微信对 cookie 的写入有明显的延迟。根据项目经验,需要等待四五秒钟,企业微信才能把 cookie 写入。而在 Android 手机上则没有这个问题,cookie 写入近似是实时的。这种 iPhone 上的延迟在一般的用户应用场景中不会带来问题。但在自动化测试时需要考虑到这种限制,避免登进后立即登出的用例测试。

JSAPI 提供的功能不够丰富

企业微信目前提供一些基础 API 供应用使用,但是并不是很完善。ABC WeChat 项目中就遇到了一些因为 API 支持不足产生的问题。


1)无法获取企业微信当前使用语言


ABC WeChat 项目中有个需求是需要保证应用页面和企业微信使用同一种语言。但是遗憾的是,企业微信并没有提供 API 可以获取到用户当前使用的语言。我们最后是通过调用浏览器的 API 获取语言设置,但是结果在 IPhone 和 Android 的某些机型上表现并不一致,因此需要额外的工作来优化。


2)没有对电子围栏的支持


地理围栏(Geo-fencing)是 LBS 的一种新应用,就是用一个虚拟的栅栏围出一个虚拟地理边界。当手机进入离开某个特定地理区域或在该区域内活动时,手机可以接收自动通知和警告。原有项目需求中有一项就是要利用电子围栏实现用户打卡提醒等功能。但是遗憾的是企业微信 SDK 并没有提供相应的支持,因此该需求没有完整实现。


3)无法充分定制右上角菜单


企业微信提供了 API 可以对右上角菜单进行定制,但是只能隐藏部分菜单,无法彻底隐藏菜单入口,也不支持加入新的菜单。因此项目只能在自己的页面中加入自定义的菜单。


企业微信 API 目前还在持续更新中,希望其能提供更多更强大的功能供企业应用使用。

应用安全隔离机制

企业微信没有为应用之间提供隔离机制。当用户在企业微信内和企业应用进行交互的时候,企业应用后台 API 是不知道当前请求是从哪个应用客户端产生的。而对于不同的应用,企业微信都是打开 webview 进行服务,所以应用就有机会使用其他应用的 cookie。如下图所示,应用 B 有可能利用应用 A 的 cookie 来访问 Server A.其可能的过程如下:


1)用户访问企业应用 A 并通过认证,在企业微信 webview 中会生成对应的 cookie A,其中包含有用户的认证标识;


2)用户访问企业应用 B,假设企业应用 B 是恶意程序并知道 Server A 的相关 URL,则企业应用 B 有机会重定向前端去访问 server A;


3)根据浏览器机制,该访问会自动带上 cookie A。由于 cookie A 中存有用户的合法认证信息,server A 会认为这是一个合法访问从而执行对应的操作。而实际上该操作是用户并不知情的一个恶意操作。



如果企业微信提供标识或者机制使得企业应用后台能够验证当前请求是否来自于正确的应用客户端,将会使应用之间隔离性更好,更加安全。否则应用就需要添加格外的机制去做相应的防范,如添加 CSRF token。ABC WeChat 也是通过在后台 server 验证 CSRF token 实现了对上述跨站攻击的防御。

没有提供集成开发工具

由于应用前端代码是运行在企业微信内嵌的 webview 里,开发人员无法容易的通过添加断点进行调试,所以经常使用 alert 或者抓包的方式进行问题的定位和分析,效率十分低下。官方文档上虽然有提供一些接口调试工具,但大多是针对企业微信某种类型接口的调试,没有提供集成开发工具,无法方便的对网页进行开发调试。


项目后期发现可以使用微信公众平台推出的微信 Web 开发者工具来调试企业微信页面。该工具集成了 Chrome DevTools, 使得开发人员可以像调试浏览器应用一样调试微信网页,能有效提高开发效率。不过项目团队在试用后发现有断点和源码位置不匹配及偶尔卡死的问题。该工具目前还在持续更新中。

不支持单点登录到企业微信

企业微信官方文档上宣称的单点登录,都是使用企业微信账号登录第三方网站。企业微信通过提供 OAuth 接口使得企业应用可以通过该接口的授权实现当前应用的免登录,进而实现了企业应用的单点登录功能。但是企业微信并不支持通过输入员工的企业账号直接登入企业微信。用户必须首先使用企业微信账号登录企业微信,然后才能访问集成到企业微信工作台上的应用。也就是说企业微信本身不支持单点登录。同时企业微信也不支持利用第三方账号注册,用户必须利用个人微信或者手机号完成注册并加入对应的公司。


这一点对于大型公司不够友好。大型公司往往会自己构建单点登陆系统,有自己的账号管理体系,不会完全交给企业微信来维护其用户信息。对于 ABC WeChat 项目来说,客户就是拥有自己的单点登陆系统。因此集成了企业微信后,用户在已经登陆企业微信的基础上还需要再次输入企业账号,通过验证后才能访问企业应用。为了减少用户繁琐的登录动作,我们特意实现了免登录功能,使得在用户成功登录一次后的一定时间(可配置)内都不用再次登录。

对自动化测试支持不足

由于企业微信无法安装到 X86 结构的模拟器上,因此难以实现在模拟器上运行企业微信的自动化测试脚本。项目组就此问题曾咨询腾讯技术支持,得到的答复是建议使用真机进行自动化测试。而对于企业自动化测试来说,使用真机意味着需要管理很多移动设备。对于不已开发移动端应用为主业的大型企业来说,让 IT 部门去管理一批新的移动设备是很麻烦的事情。


对于 ABC WeChat 项目来说,由于绝大部分的页面和功能与企业微信环境并没有关系,基本可以脱离企业微信直接运行在浏览器中。因此项目最终决定直接在模拟器中的浏览器中运行自动化脚本来实现 UI 的自动化测试。

和 Facebook workplace 应用开发的对比

Facebook workplace 是 Facebook 在办公协作领域推出的一款产品,其作用和企业微信类似,企业也可以基于该平台开发自己的企业应用。这里就两者对企业应用集成的支持做了简单对比和分析。可以看出 Facebook workplace 在与企业应用集成方面更符合企业级软件的集成需求。企业微信还需要进一步完善和成熟。

使用和交互方式的不同

Facebook workplace 中用户的使用的是对话式。用户首先会打开一个聊天窗口,在该窗口中,应用中预先提供一些菜单选项,当用户点击这些选项的时候,客户端就会发送消息给相应的应用程序后端。后端执行相应操作后会返回消息给到用户的当前聊天窗口。对于用户来说,有点像和某个对象在聊天,用户问,聊天对象回答。由于是对话式的,应用提供的菜单数量有限,可能给出的交互界面一般也不会太复杂。这样才能对用户的某个操作快速给出一个响应,符合一问一答的沟通体验。


企业微信中提供两种交互方式。其中消息型应用类似 Facebook workplace,也是对话式。而主页型应用则不同,它是用 H5 构建出来的网页,用户通过网页和应用后台进行交互。相对于对话式,网页上可以提供更加丰富的业务功能,从体验上来说,是一个网站或者一个软件。

对单点登录的支持

如前所述,企业微信本身不支持单点登录。而 Facebook workplace 则提供对单点登录的支持。用户可以通过输入 IdP 所管理注册的第三方账号直接登录 Facebook workplace。


其官方文档上声明,除了可以集成支持标准 SAML2.0 协议的 IdP 之外,明确支持以下几种 IdP:


  • ADFS (Active Directory Federation Service)

  • Azure AD

  • G Suite (formerly Google Apps for Work)

  • Okta

  • OneLogin

  • Ping Identity


对企业来说,一套统一的用户管理机制显然更容易管理和维护。很多企业已经建立了 IdP 服务器用来统一管理账号。因此使用未提供单点登录集成的企业微信,有可能会增加一些对用户账号管理的重复工作。

对后台 API 的安全验证机制

上文提到企业微信没有为其上的企业应用提供隔离机制,因此需要应用额外处理可能的安全的风险。但是 workplace 对这点就有较完善的考虑。其提供一种签名机制可以用来验证请求方是否合法。其基本过程可以描述如下:


a.前端需要调用后台 API 的时候,都需要先调用 workplace 提供的 SDK 获取一个签名,在获取该签名的时候,需要提供 appID。每个应用都有唯一的 appID。


b.前端调用后台 API,并带上签名作为参数。


c.后台 API 接收到该请求,根据 appID 和相关参数重新生成签名。然后通过比对当前签名和新生成的签名是否一致来确保当前请求确实来自于同一个应用客户端。


如果应用 A 试图调用其他应用 B 的 API,是无法成功的,因为 A 无法获取到应用 B 的 appID,也就无法在请求中加入正确的签名。当请求到达应用 B 后,签名验证失败,该请求将被退回。

小结

综上,本文结合实际项目 ABC WeChat 对企业微信开发企业应用的集成方式做了介绍,并重点分析了企业微信作为开发平台对应用的支持的优点和不足。文章最后比较了在企业微信和同类型平台 Facebook workplace 上开发企业应用的不同之处。对在企业微信上开发自建应用有一定借鉴意义。

作者简介

秦明辉,现就职于奥博杰天软件有限公司,担任多个项目的架构师和技术负责人。曾担任神州数码系统有限公司的资深工程师,负责智慧城市政务平台、推荐系统和银行智能柜面系统的设计与研发。关注高可用后台服务架构,推荐系统以及 DevOps。


更多内容,请关注前端之巅。



2019-04-02 13:306608
大前端 移动 语言 & 开发 操作系统 编程语言 银行 企业动态 行业深度

评论 2 条评论

发布
用户头像
Geek_3ecf5a
关于企业微信的开发流程和问题写得很详细, 感谢!
2019-06-20 11:41
回复
用户头像
找大神TH0631280401
兄弟那么6,来我们公司吧,在泰国,月薪大几万,v我,TH0631280401
2019-04-07 16:17
回复
没有更多了
  • 组织赋能,统一企业门户实现高效化、移动化协作

    企业门户就是一个联接企业内部和外部的应用系统,它使企业能够发布存储在企业内部和外部的各种信息,可以为企业提供一个单一的访问企业各种信息资源的入口,企业的员工、客户、合作伙伴和供应商等等都可以通过这个门户获得个性化的信息和服务。

    2022-11-15

  • 集成销售和收入计划,打造企业内部的协作共赢

    近年来,随着商业经济发展的步伐急剧加快,市场竞争也愈发激烈,许多行业的需求模式与发展方式出现了重大的变化。而众多的不确定因素导致企业需要不断调整和改革运营计划来应对这些不确定性。这对企业来说是挑战也是机遇,可以帮助企业实时了解市场趋

    2023-09-25

  • 一个 OpenTiny,Vue2 Vue3 都支持!

    TinyVue 是一套跨端、跨框架的企业级 UI 组件库,支持 Vue 2 和 Vue 3,支持 PC 端和移动端。今天给大家介绍如何同时在 Vue2 和 Vue3 项目中使用 TinyVue。

    2023-04-07

  • 场景联动:智能电灯如何感知光线?(下)

    在这一讲中,我介绍了利用树莓派打造网关,让光照传感器接入物联网平台的办法,并且带你实现了光照传感器和智能电灯的场景联动。

    2020-12-23

  • 【云图说】 | 第 268 期 初识开天企业工作台 MSSE

    开天企业工作台是企业一站式数字化工作台,是企业应用的统一门户,为企业提供了用户、组织的统一管理,应用的统一管理和授权及应用间的单点登录,解决企业内应用管理和用户不统一的问题,提升企业的办公效率。

    2023-03-06

  • 19|http 库:如何批量下载在线内容,解放鼠标(下)?

    今天,我就以京东自动签到领金豆为例,介绍一款比“requests-html”更加强大的浏览器工具“selenium”。

    2021-03-25

  • 企业移动应用 APP 是否能实现统一整合与管理呢?

    伴随着数字化的浪潮,过去的企业软件多是部门级的“大”软件,如HR、CRM、ERP、OA等等,这些软件往往模块众多,功能复杂,以适应部门级的企业团队协同工作。但在移动互联的驱动下,企业工作的流程从长流程变成短流程,鼠标点击变成手指一键触屏,大软件系统为

    2023-01-13

  • 企业内部使用的即时通讯软件有哪些?

    在高度信息化的今天,我们只需要通过手机或者电脑上的即时通讯,就可以把想要传达的信息传给别人。在办公中,即时通讯的存在大大提高了企业工作效率。但有不少企业在内部沟通时用的还是个人即时通讯软件或者是Saas类的企业即时通讯软件。这些软件虽然能够解决

    2022-12-30

  • 数字化时代与银行数字化转型

    2022-09-20

  • 42|大前端:通过一云多端搭建跨 PC/ 移动的平台应用

    大前端的出现,可以让数据的存储和数据的获取方式更好地服务于前端的交互和业务的需求。

    2022-12-24

  • 让数据说话,瓴羊 Quick BI 报表工具助企业洞察市场趋势

    根据Gartner的BI魔力象限的定义,现代分析和商业智能已经取代了传统的商业智能。这种变化反映了行业对数据分析业务的敏捷性和一站式需求的关注。现在的ABI报表工具不再依赖于完整的产品切割,而是关注于集成支持企业报告功能。

    2023-08-09

  • 瓴羊 QuickBI,让企业更加清晰地管理和呈现数据

    在信息科技时代,许多企业已经认识到商业信息将成为公司的核心资产之一。要获取商业信息,离不开专业的数据分析,这也使得像瓴羊QuickBI这样的商业智能BI工具成为企业进入信息化时代后的必备工具。在当今市场环境下,企业面临全面的竞争。除了对产品、服务、

    2023-07-04

  • JAVA 权限管理 助力企业精细化运营

    在企业的日常经营中,企业人数达到一定数量之后,就需要对企业的层级和部门进行细分,建立企业的树形组织架构。围绕着树形组织架构,企业能够将权限落实到个人,避免企业内部出现管理混乱等情况。权限管理是每个企业管理中的重要内容,但在实操中,权限管理面

    2023-08-17

  • 企业微信 API 接口调用教程:从入门到精通

    本文通过 access_token 凭证的方式来讲解怎么调用 企业微信 API,并一步步介绍如何获取企业微信 API 的 corpsecret、corpid、access_token 凭证以及怎么向企业微信的应用发送消息。 企业微信 API 在线地址为:https://qiyeweixin.apifox.cn/ ,这个在线地址的

    2023-09-22

  • 【墨菲安全实验室】企业微信私有化 2.5-2.6.93 版本后台 API 未授权访问漏洞

    企业微信私有化2.5.x版本及2.6.930000版本以下后台中存在接口未授权访问漏洞,攻击者通过访问/cgi-bin/gateway/agentinfo接口可获得Secret,从而利用开放API获取企业通讯录等敏感信息及企业微信内应用权限。

    2023-08-17

  • 目前包头市等保测评企业有几家?2 家还是 3 家?

    最近看到不少人在问,目前包头市等保测评企业有几家?2家还是3家?有没有人来解答一下。

    2023-06-27

  • 41|微前端:从 MVC 贫血模式到 DDD 充血模式

    这节课我们详细看看“微前端”这个近些年兴起的概念。

    2022-12-22

  • 掌控数据:家里的数据可以怎么利用?

    在这一讲中,我围绕自动浇花器讲解了智能家居系统中设备数据的应用系统开发方法。

    2021-01-01

  • Zabbix5.0 配置企业微信告警

    zabbix5.0设置企业微信告警,首先需要一个企业微信;

    2023-04-18

发现更多内容

面试官:如何实现多级缓存?

不在线第一只蜗牛

缓存 程序员 面试

大语言模型支持:开发个性化 AI 应用

测吧(北京)科技有限公司

测试

今日必读的9篇大模型论文

学术头条

人工智能 论文 大模型

区块链游戏解说:什么是 Planet IX

Footprint Analytics

web3

自动化测试创新:AI 驱动的测试策略变革

测吧(北京)科技有限公司

测试

AI 优化学习路径:个性化推荐与辅助学习

测吧(北京)科技有限公司

测试

2023 re:Invent 用 PartyRock 10 分钟构建你的 AI 应用

亚马逊云科技 (Amazon Web Services)

亚马逊云科技 生成式人工智能 Amazon CodeWhisperer Amazon Bedrock Amazon Q

开发竞猜比分与专家分析功能:如何为体育直播平台注入新活力

软件开发-梦幻运营部

龙蜥系统运维联盟:Kindling-OriginX 如何集成 DeepFlow 的数据增强网络故障的解释力

OpenAnolis小助手

deepflow 开源 系统运维 ebpf 龙蜥社区

揭秘 LLMs 时代向量数据库的 3 大实用场景

Zilliz

Milvus 向量数据库 LLM zillizcloud rag

CORS就是跨域吗?

EquatorCoco

CORS web开发 跨域

【论文解读】transformer小目标检测综述

合合技术团队

目标检测 Transformer 深度学习、

EMQX Enterprise 5.4 发布:OpenTelemetry 分布式追踪、OCPP 网关、Confluent 集成支持

EMQ映云科技

mqtt emqx mqtt broker

2024年.NET框架发展趋势预测

这我可不懂

.net

听 GPT 讲 client-go 源代码 (9)

fliter

京东商品优惠券数据采集

tbapi

京东 京东API接口 京东商品优惠券数据 京东商品详情数据

拼多多商品优惠券数据采集

tbapi

拼多多 拼多多商品详情接口 拼多多商品数据采集

inBuilder低代码平台新特性推荐-第十六期

inBuilder低代码平台

开源 低代码

k8s-权限管理

EquatorCoco

Kubernetes 云原生 k8s

听 GPT 讲 client-go 源代码 (10)

fliter

你好,iLogtail 2.0!

阿里巴巴云原生

阿里云 云原生 iLogtail

马斯克称首位受试者可凭思维操控鼠标;字节低调推出视频模型丨 RTE 开发者日报 Vol.148

声网

解锁Mysql中的JSON数据类型,怎一个爽字了得

不在线第一只蜗牛

json MySQL 数据库 开发语言

基于规则引擎的多维度配置化适配系统

五陵散人

规则引擎 匹配

测试流程智能化:AI 技术赋能测试领域

测吧(北京)科技有限公司

测试

OpenAI的Sora亮相:AI视频生成的新用场

算AI

人工智能 创业 创新 sora

接手外包团队开发的微服务项目,人麻了!

伤感汤姆布利柏

OpenTiny Vue 组件库适配微前端可能遇到的4个问题

OpenTiny社区

开源 Vue 前端 微前端 组件库

盘一盘制造业最受欢迎的9个IT岗位

伤感汤姆布利柏

QCN9274 QCN6274 IPQ9574|What Does Wi-Fi 7 Actually Bring?

wallyslilly

qcn9274 qcn6274 ipq9574

企业微信自建应用开发初探_大前端_秦明辉_InfoQ精选文章

资讯网名字姓高男孩起名字生辰八字喜土如何起名金马会梦解诗词大全郭晓冬主演电视剧恋人开文具店起什么名好魔兽小说起名字女孩姓钱特色养生中山手机网站制作从岛主到国王高姓的起名大全yy充值中心周易测算生辰八字财运网上起名准么多啦a梦解说巫师不朽河南 睢县系统让我去算命超级武圣公司起名(面条)接种新冠疫苗后注意事项有哪些新冠疫苗接种后注意事项公司起名寓意兴旺的字精准营销公司推广伤感王者昵称wifi软件姓李起什么名字好seo的公司女孩如何起名字大全起名何姓少年生前被连续抽血16次?多部门介入两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”淀粉肠小王子日销售额涨超10倍高中生被打伤下体休学 邯郸通报单亲妈妈陷入热恋 14岁儿子报警何赛飞追着代拍打雅江山火三名扑火人员牺牲系谣言张家界的山上“长”满了韩国人?男孩8年未见母亲被告知被遗忘中国拥有亿元资产的家庭达13.3万户19岁小伙救下5人后溺亡 多方发声315晚会后胖东来又人满为患了张立群任西安交通大学校长“重生之我在北大当嫡校长”男子被猫抓伤后确诊“猫抓病”测试车高速逃费 小米:已补缴周杰伦一审败诉网易网友洛杉矶偶遇贾玲今日春分倪萍分享减重40斤方法七年后宇文玥被薅头发捞上岸许家印被限制高消费萧美琴窜访捷克 外交部回应联合利华开始重组专访95后高颜值猪保姆胖东来员工每周单休无小长假男子被流浪猫绊倒 投喂者赔24万小米汽车超级工厂正式揭幕黑马情侣提车了西双版纳热带植物园回应蜉蝣大爆发当地回应沈阳致3死车祸车主疑毒驾恒大被罚41.75亿到底怎么缴妈妈回应孩子在校撞护栏坠楼外国人感慨凌晨的中国很安全杨倩无缘巴黎奥运校方回应护栏损坏小学生课间坠楼房客欠租失踪 房东直发愁专家建议不必谈骨泥色变王树国卸任西安交大校长 师生送别手机成瘾是影响睡眠质量重要因素国产伟哥去年销售近13亿阿根廷将发行1万与2万面值的纸币兔狲“狲大娘”因病死亡遭遇山火的松茸之乡“开封王婆”爆火:促成四五十对奥巴马现身唐宁街 黑色着装引猜测考生莫言也上北大硕士复试名单了德国打算提及普京时仅用姓名天水麻辣烫把捣辣椒大爷累坏了

资讯网 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化