ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

微信平台设计与实现--互联网+固定资产投资服务监管

2020-05-19 23:06:25  阅读:476  来源: 互联网

标签:项目 发改 微信 固定资产 用户 项目法人 部门 互联网


目  录

1绪 论.. 1

1.1 研究的背景及意义... 1

1.1.1 选题的背景... 1

1.1.2 国内外研究现状... 1

1.1.3 研究的意义... 2

1.2 系统目标... 2

2需求分析.. 4

2.1 业务需求... 4

2.1.1主要业务... 4

2.2 功能需求... 8

2.2.1 角色分析... 8

2.2.2 业务功能... 9

2.3 非功能需求... 20

2.3.1环境需求... 21

2.3.2 性能需求... 21

2.3.3 安全需求... 22

3总体设计.. 23

3.1 系统设计的原则... 23

3.2 系统体系结构设计... 23

3.3 系统功能技术架构设计... 25

3.3.1. 用户管理功能构建设计... 26

3.3.2. 项目库管理功能构建设计... 27

3.3.3. 问题督办管理功能构建设计... 28

3.3.4. 统计分析管理功能构建设计... 29

4数据库设计.. 30

4.1 概念结构设计... 30

4.1.1设计思路... 30

4.1.2总体E-R图... 30

4.1.3实体属性设计... 31

4.2 逻辑结构设计... 35

4.2.1 设计思路... 35

4.2.2 逻辑模型... 36

4.3 物理结构设计... 36

4.3.1 存取方式... 36

4.3.2 存储结构... 37

5界面设计.. 40

5.1 界面关系图或工作流图... 40

5.2 界面设计成果... 41

5.2.1 主界面... 41

5.2.2 子界面... 41

6详细设计.. 47

6.1 系统主要功能模块介绍... 47

6.2 用户功能管理... 47

6.2.1 功能结构设计... 47

6.2.2 类图设计... 47

6.2.3 顺序图设计... 49

6.3 项目库管理功能... 49

6.3.1 功能结构设计... 49

6.3.2 类图设计... 50

6.3.3 顺序图设计... 51

6.4 项目问题督办管理功能... 51

6.4.1 功能结构设计... 51

6.4.2 类图设计... 52

6.4.3 顺序图设计... 53

6.5 统计分析管理功能... 53

6.5.1 功能结构设计... 53

6.5.2 类图设计... 54

6.5.3 顺序图设计... 55

7 编码.. 56

7.1代码实现与核心算法... 56

7.1.1用户登录管理代码实现... 56

7.1.2项目库管理实现... 57

7.1.3微信信息类型回复实现... 58

7.2代码优化分析... 61

8 测试.. 62

8.1测试方案设计... 62

8.1.1测试策略... 62

8.1.2测试进度安排... 62

8.1.3测试资源... 62

8.1.4关键测试点... 63

8.2测试用例构建... 63

8.2.1测试用例编写约定... 63

8.2.2测试用例设... 63

8.2.3关键测试用例... 64

8.2.4测试用例维护... 64

9总结与展望.. 65

9.1设计工作总结... 65

9.2未来工作展望... 65

谢 辞.. 66

参考文献.. 67

附录A 外文翻译—原文部分... 69

附录B 外文翻译译文部分... 76

附录C 软件使用说明书... 80

附录D 主要源代码... 82

 


1   绪 论

1.1研究的背景及意义

1.1.1选题的背景

 

身处于互联网的时代,科技的变革改变我们生活,生活方式发生了巨大的改变。也促使着我们不断学习获取最新有效的技术。微信作为社交区使用人数是最多的,其中的微信公众号是人们阅读获取最新的信息和学习的胜地。比如,人民日报的公众号发文最新国家时事和感动中国人物的事迹以及每晚深情的夜读,深受人们的称赞。以及个人公众号订阅号类型的,也促使作者去学习、总结、认真编辑文档,创造出更多搞质量的优质文章。微信公众号也在不断的进行更新,适应用户的体验度。在个人的微信公众号下,官方为公众号的管理员(粉丝数大于500人)开通广告流量主。激励管理员创作更优质的文章。微信官方发表微信开发者文档,这样鼓励更多的企业和个人媒体的加入。按照微信官方文档支持开发者的对公众号的编码创作。公众号为人们提供更便捷的“信息获取”、“技能学习”和“拓展思考”的取水源。

微信公众号设计主题为《城口县互联网+固定资产投资服务监管平台建设项目微信公众平台的设计与实现》。本项目的概要描述。分为四个用户角色:系统管理员进行系统配置项的设置和发改部门与行业主管部门的增删改查操作、发改部门针对法人提交的项目进行审核、行业主管部门对法人的提交的项目进行分类整理和报送和调度提醒发改部门、项目法人对自己情况进行填写和申请。依照微信公众号中的导航菜单的个人中心和官网上资料说明。在每个具体业务模块的操作说明中,后给信息通知的模块接收系统通知消息模块,接收与登录用户相关的个人待办事项通知

项目申请资源的合理分配、有效挖掘出更有利的项目投资,从项目的可行性、回报周期和社会项目的需求,借以实现组织目标的管理活动。

1.1.2国内外研究现状

微信公众号在2012年问世,用户使用量持续的新增,不少商家和企业就看到微信公众化的发展空间,就利用线上微信公众号和线下实体店相结合的经营模式,吸引大批用户,激发了商业的活力。同时,结合公众号分析平台的数据分析,用户关注量排名前均属于新闻媒体的企业公众化。反映了用户对社会新闻信息的密切关注。在微信后台的数据反映,微信平台在文章质量检测中也是很灵敏。处理很多不妥、违规、存在社会舆论的低质量文章的打击程度。微信公众号为了用户更方便在线上营销的战略,开发了每日群发、小程序接口、卡卷等接口的实现极度的方便促进用户和商户的交易的流程。作者Institut für Germanistik, Germanistik/Linguistik,Universität Duisburg-Essen在2019年发表的《WeChat– Funktionsweise, technische Möglichkeiten and Emoji-Kommunikation》中介绍微信平台开发的技术要求和应用可能性和交流发送表情的处理研究。

1.1.3研究的意义

本项目微信公众号业务研究中:需要支持通过微信平台进行一些基本的项目申报审批流程。使项目投资能够扩大社会再生产,从而促进项目投资的客户持续发展。支持项目(法人)对项目申请批报和项目创新力的构建,去提高社会需求的满意度。从而给社会提供更高效便捷的生活质量。拉动社会消费的增长。在微观的角度上看,项目投资监管平台能增强技术经济的实力和项目投资创新能力提升给人们正向的指引作用。提供用户使用的便利和开拓能力,使用户有舒适的体验感。

从“实践”的角度上来看,项目申报入口设置在微信公众号里面,迎合了社交应用最广的微信APP里面。因此,我们不用去下载别的应用软件,也不用花时间去学习别的软件的操作,减少用户操作的时间。降低用户的手机使用的复杂度,压缩了在手机上操作的时间。从而可以促进用户使用的频率和满意度。本项目作为一个政务类型的平台,设置在微信公众号里面可以有助于拓展服务聚到,让政务建设的成果真正惠及全民,体现出政府服务部门便民便利的服务理念。有助于抢占舆论的征地和强化政民互动。

1.2系统目标

建设一个统一、完整、规范的重大重点项目信息库及服务监管平台,且在微信移动端进行操作。

 

 

 

图1-1 系统目标

“1311”应用系统

    “1库”——微信平台实现项目库管理。

    “3核”——微信平台移动端实现前期工作管理、项目调度管理和问题督察管理。

    “1端”——微信平台移动端,“1屏”——在手机端展示可视化数据系统。

实现“3全”管理

(1) 全覆盖管理

能够覆盖项目投资监管管理相关职能部门,能够实现多个部门之间的数据共享、业务协同。加快推进重大重点项目的前期工作办理。

(2) 全流程管理

在项目调度过程中,用发牌预警的手段,实现对项目投资监管平台已经通过初步审核的进入重点项目中去选址、确定项目、项目实施、项目完成的整个项目开发申请的流程的监管,这样就能实时监控和遇到问题的及时解决的一个效率。项目建设实施过程中的困难和问题,从而保障重大重点项目按时按质科学有序推进,顺利建设实施。

(3) 全可视管理

采用多种可视化的技术手段对重大重点项目的调度情况及项目建设具体情况,用可视化图表或者是3D动态图进行展示,包括基于各地区项目投标情况展现示,各地区项目申报通过审核的数据展示,年度各时期对项目申报情况的展示。利用项目图片或视频信息实现项目进度可视化。全可视化的项目申请到项目调度的整个流程中,使投资项目监管更客观有据、更生动形象、更一日了然,投资决策更科学高效。

“固定资产投资服务监管微信平台系统”目标如下:

1.高效集成,协同办公

用互联网技术替换传统的手工操作,实现项目在线的申报和对项目信息的实时监控。把控每一个项目申请的过程。使其好的项目能得到该有的处理和审批。实现多个发改部门同时批改审核。

2.提速审批,监控过程

项目法人填报项目申请后,会接受到项目申请的信息通知。同时给行业主管部门一个项目申请的信息单,来通知行业主管部门。行业主管部门针对申请的项目进行初步的查阅。如果项目逻辑清晰标准符合。立即通过验证推送给相应发改部门快速的审核。将审核结果第一时间通知项目法人,并存储在数据库中。

3.共享数据,辅助决策

微信平台上对项目申请的数据保存数据库中,用数据图表的形式形象的展示出来。让用户更直接了解项目申请的情况。

2   需求分析

1.1业务需求

(1)     支持在微信平台能查询到申请项目信息,查看项目的基本信息、投资情况、前期工作

进项目调度进展、项目问题。

(2)     提供项目单位在线问题、业务、操作等咨询,县级发改人员、技术支撑人员在线问题回

复。支持项目(法人)单位和发改部门通过微信平台发起项目问题,相关部门(行业主管部门和发改部门)通过微信公众号后台进行问题的回复、反馈和督办。

(3)     支持项目(法人)人员通过微信填报调度任务,支持上传项目实景图片或视频。

(4)     提供多维度的统计分析报表查询,方便随时随地了解重大重点项目的总体进展情况。

提供用户较完善的信息,让用户有比较好的体验感。

2.1.1主要业务

(1)     项目法人登录注册管理业务流程设计

该业务流程是项目法人登录页面无账号可以进行注册,注册成功进入登录页面。通过账号验证。会跳转到项目法人首页,进行个人信息更改。

项目法人登录注册管理业务流程如图2-1所示

 

 

 

 图2-1 项目法人登录注册管理业务流程图

(1)     行业部门登录管理业务流程设计

各行业主管部门使用预设的账号和密码登录系统及时填报各自责任范围内的前期事项办理进展情况。行业部门人员管理各自行业的项目并整理报送给发改部门。

行业部门登录管理业务流程如图2-2所示

  图2-2 行业部门管理业务流程图

(2)     发改部门管理业务流程设计

发改部门进行身份验证,通过验证后跳转到发改部门的首页,发改部门可以对项目进行批审、可查看项目的进展信息、对全部问题及待办事项进行监督。如图2-3所示

 

 

图2-3 发改部门管理业务流程图

(3)     系统管理员管理业务流程设计

系统管理员进行身份的验证,后面根据微信服务器传过来的OPENID去查询数据库。根据数据库的用户管理员类型字段,登录相应的首页。系统管理员能对行业部门人员和发改部门进行增、删、查、改的操作。

系统管理员管理业务流程如图2-4所示:

 

 

 

图2-4 系统管理员管理业务流程图

(4)     微信公众号信息通知管理业务流程设计

根据用户的操作,有需要用户确认和信息提醒的操作,应该用微信后台信息通知模块

给用户通知。针对用户的项目申报的进度更新并以微信公众号信息通知给用户。根据用户的反馈信息和项目问题督办处理结果给用户相应的消息提醒。

微信公众号信息通知管理业务流程如图2-5所示

 

 

 

 

图2-5 微信公众号信息通知管理业务流程图

(5)     微信公众号可视化展示管理业务流程设计

结合不用用户申请的项目类型和数量形成一张项目清单,并且用图表的方式展示用户申请项目的不同类型的数量。图表方式展示出用户项目申报的情况。

微信公众号可视化展示管理业务流程如图2-6所示

 

 

 

图2-6 微信公众号可视化展示管理业务流程图

(6)     微信公众号业务办理管理业务流程设计

微信公众号业务办理包含五个方面:

1)      信息查询:支持通过微信平台查询项目,查看项目申请的基本信息、项目申请的投 资情况、项目申请的前期工作进展情况、项目调度进展、项目问题等。

2)      业务咨询:提供项目单位在线问题、业务、操作等咨询,县级发改人员、技术支       撑人员在线问题回复。

3)      协调推进:支持项目(法人)单位和发改部门通过微信平台发起项目问题,发改       部门和系统管理员通过微信方式进行问题的回复、反馈和督办。

4)      调度反馈:支持项目(法人)单位工作人员通过微信填报调度任务,支持上传项       目实景图片或视频。

5)      报表报告:提供多维度的统计分析报表查询,方便随时随地了解重大重点项目的       总体进展情况。

 

图2-7 微信公众号可视化管理业务流程图

1.2功能需求

本项目微信平台能够支持项目(法人)单位工作人员通过微信填报调度任务,支持上传项目实景图片或视频。提供多维度的统计分析报表查询,方便随时随地了解重大重点项目的总体进展情况。

2.1.1角色分析

根据对互联网+固定资产投资服务监管微信平台的设计与实现的需求分析,本系统主要涉及到的角色如下表2-1所示:

表2-1 系统角色表

角色

职责或功能

项目法人

申请项目填报、查看项目进度、接受项目调度信息通知、在线填报调度反馈、确定项目结算、反馈调度问题、联系客服、加入官方群聊、项目可视化展示。

行业部门

前期工作预警、前期事项配置、前期工作反馈、行业主管发起问题、行业主管部门接受问题、反馈进度结果、打印项目清单列表、项目可视化展示。

发改部门

项目审核管理、审核待办事宜管理、重点项目库管理、项目可视化展示。

系统管理员

对行业部门人员和发改部门人员的添、删、改、查。项目调度反馈调整。

2.1.2业务功能

微信公众平台:基于微信服务号建设移动端的功能,提供信息通知、业务办理、统计分析、操作指引等实用性功能。实现项目法人在移动端的设计了本系统的功能需求总体用例图如下图2-8所示。

 

图2-8 系统总体用例图

(1) 项目法人需求分析

项目(法人)单位和发改部门通过微信平台发起项目问题,系统管理员部门和发改部

门通过微信公众号的方式进行问题的回复解答。项目(法人)单位工作人员通过微信填报调度任务,支持上传项目实景图片或视频。

该模块的用例图如图2-9所示。

 

图2-9 项目法人管理模块用例图

项目法人的项目申请管理模块案例分析表如下表2-2所示:

表2-2 项目法人项目申请管理模块案例分析表

描述项

说明

用例名称

项目法人申报项目管理案例

标识符*

CF01

用例描述

描述项目法人对项目申请的过程

参与者表

项目法人

优先级

1

状态*

进行中

前置条件

项目法人通过验证登录

                                                                   续表2-2

后置条件

跳转到项目法人的首页

基本操作流

1.项目法人通过账号的登录,转到项目法人首页界面。

2.项目法人填写项目的基本信息进行申请。

3.项目申请提交成功,微信后台发送信息通知。

可选操作流

当操作权限不够时系统弹出错误提示,并记录操作日志信息

被泛化用例表

该用例的特化用例列表

项目法人的项目信息管理案例分析表如下表2-3所示

表2-3 项目法人的项目信息管理案例分析表

描述项

说明

用例名称

项目法人申请的项目信息管理案例

标识符*

CF02

用例描述

描述项目法人对自己项目申请的信息查看

参与者表

项目法人

优先级

1

状态*

进行中

前置条件

项目法人在项目法人首页点击项目信查看

后置条件

项目法人申请过项目

基本操作流

1.项目法人登录进入到项目法人的首页。

2.点击项目信息查看按钮。

3.查看申请过的项目信息。

可选操作流

当注册信息不符合提示要求时,系统弹出错误提示,并记录操作日志信息。

(2) 行业主管部门管理模块需求设计

各行业主管部门使用预设的账号和密码登录系统及时填报各自责任范围内的前期事项办理进展情况。行业主管部门可发起问题、项目资金拨款申请等。行业主管部门接收与自己相关的待处理问题,并可在线反馈处理进度和处理结果。

该模块的用例图如图2-10所示

 

图2-10 行业主管部门人员管理模块用例图

行业主管部门人员对项目问题督办管理案例分析表如下表2-4所示:

表2-4 行业主管部门人员项目问题督办管理案例分析表

描述项

说明

用例名称

行业主管部门人员项目问题督办管理案例

标识符*

CF03

用例描述

描述行业主管部门人员对项目整理、监督、反馈提醒的过程

参与者表

行业主管部门

优先级

1

前置条件

行业主管部门人员已经通过登录验证

后置条件

行业主管部门点击相对应的操作,进入行业主管部门的操作界面。

基本操作流

1.行业部门人员账号验证,进入行业部门的首页

2.点击监督的按钮,进入相对应的项目调整的页面。

3.查看项目可视化的图表,了解最近项目类型问题反馈的情况和项目问题督办的情况。做出对问题处理的及时的响应。

4.操作结束,数据同步到数据库,同时对发布的问题相应对应的用户提醒。

行业主管部门人员项目可视化展示案例分析表如下表2-5所示:

表2-5 行业主管部门项目可视化展示案例分析表

描述项

说明

用例名称

行业主管部门项目可视化展示案例

标识符*

CF04

用例描述

描述行业主管部门人员查看项目可视化展示的过程

参与者表

行业主管部门人员、项目法人、发改部门

优先级

1

状态*

进行中

前置条件

用户通过行业主管的登录验证

后置条件

用户点击 “项目可视化”按钮

基本操作流

1.行业主管部门点击可视化按钮,进入项目大数据的页面。

2.点击项目的数据类型的按钮,数据从数据库呈现前端页面。

可选操作流

查看本系统的总体项目数据图表展示

被泛化用例表

该用例的信息查阅用例

(3) 发改部门人员管理模块需求设计

发改部门人员管理模块主要有下面六点功能:

(1) 发改部门使用预设的账号和密码登录系统录入单个项目或EXCEL文件批量导入项

目。对接重庆市固定资产投资项目网上服务监管,获取系统中已经的项目信息,自动关联到对应的项目单位及管理部门。

(2) 发改部门进行审核,审核分为审核通过和退回。审核待办事宜将通过系统消息和

移动端进行推送和提醒。

(3) 发改部门可按项目查看本期的进展信息。

(4) 发改部门都可发起问题、项目资金拨款申请等。

(5) 发改部门通过微信平台发起项目问题,相关部门和发改部门通过微信进行问题的

回复、反馈和督办。

(6) 发改部门可对全部问题及待办事项进行监控、督促。

发改部门人员管理模块的用例图如图2-11所示

 

图2-11 发改部门人员管理模块用例图

发改部门人员对申请项目审批管理案例分析表如下表2-6所示:

表2-6 发改部门人员项目管理案例分析表

描述项

说明

用例名称

发改部门人员项目管理案例

标识符*

CF05

用例描述

描述发改部门对项目审批、导入、问题处理、申报的项目进度查看操作的过程

参与者表

发改部门人员

优先级

1

状态*

进行中

前置条件

发改部门人员已经通过登录验证

后置条件

操作完成后,并进入到发改部门的首页

基本操作流

1.发改部门人员登录成功,进入发改部门人员首页界面。

2.发改部门点击项目进行审批、导入、问题处理、项目进度查看操作功能。

3.发改部门点击操作后,进入相应的操作界面进行操作。

发改部门人员项目调度案例分析表如下表2-7所示:

表2-7 发改部门人员项目调度案例分析表

描述项

说明

用例名称

发改部门人员项目调度案例

标识符*

CF06

用例描述

描述发改部门人员对通过项目审核的项目进行项目调度审核过程

参与者表

发改部门人员

优先级

1

状态*

进行中

前置条件

已经通过项目申请的审核项目

后置条件

对重点项目库中项目调度的信息进行审核,审核结果通知项目法人

基本操作流

1.点击“项目调度”的按钮,进入项目调度审核页面

2.项目调度审核结果存储在数据库中,审核结果通知用户

(4) 系统管理员管理模块需求设计

系统管理员可以对发改部门人员、行业部门人员进行增、删、改、查的操作和项目问题处理总揽。该模块用例图2-12所示。

 

图2-12 系统管理员管理模块用例图

系统管理员处理项目问题管理模块案例分析表如下表2-8所示:

表2-8 系统管理员处理项目问题案例分析表

描述项

说明

用例名称

系统管理员处理项目问题管理案例

标识符*

CF07

用例描述

描述系统管理员处理项目中的问题

参与者表

系统管理员

优先级

2

状态*

进行中

前置条件

系统管理员登录验证成功

后置条件

微信公众号发送项目问题被解决的信息通知

基本操作流

1.系统管理员拿到自己的账号登录验证通过或者微信之前登录成功后直接在微信中免登录操作。操作对应的问题处理功能

2.系统管理员对选择的用户提出的项目问题进行处理。

3.系统管理员对项目问题处理结果用微信公众号信息通知的形

式发送给用户。

可选操作流

管理员查看项目问题处理的情况

被泛化用例表

用户提出的项目问题进行处理过程表

系统管理员可视化设置案例的分析表如下表2-9所示:

表2-9 系统管理员可视化案例分析表

描述项

说明

用例名称

系统管理员大数据可视化页面的案例分析

标识符*

CF08

用例描述

管理员布局可视化页面的展示

参与者表

系统管理员

优先级

2

状态*

进行中

前置条件

系统管理员人员账号验证成功,进入首页点击可视化按钮

后置条件

按照用户的需求更改可视化页面展示的字段和图表的展示意义。更改可视化页面展示的结构。

基本操作流

1.点击需要换一个图形展示的图表。

2.将项目图表的列名和数据类型修改,并保存到数据库。

可选操作流

系统管理员信息修改案例

(5) 微信公众号业务办理模块需求设计

业务办理:项目申请信息查询、项目业务流程咨询、项目调度反馈。

信息查询:支持通过微信平台查询项目,查看项目信息、项目申请进展情况、项目调度进展、项目问题等。

业务咨询:提供项目单位在线问题、业务、操作等咨询,县级发改人员、技术支撑人员在线问题回复。

协调推进:支持项目(法人)单位和发改部门通过微信平台发起项目问题,相关部门和发改部门通过微信进行问题的回复、反馈和督办。

调度反馈:支持项目(法人)单位工作人员通过微信填报调度任务,支持上传项目实景图片或视频。

报表报告:提供多维度的统计分析报表查询,方便随时随地了解重大重点项目的总体进展情况。

微信公众号业务办理模块的用例图如图2-13所示

 

图2-13 微信公众号业务办理模块用例图

微信公众号业务办理模块案例分析表如下表2-10所示:

表2-10 微信公众号业务办理模块案例分析表

描述项

说明

续表2-10

用例名称

微信公众号业务办理模块案例

标识符*

CF09

用例描述

描述用户对项目申报问题、处理、监测的过程

参与者表

系统管理员、项目法人、行业部门人员、发改部门人员

优先级

1

状态*

进行中

前置条件

用户通过身份验证

后置条件

系统弹出“登记成功”提示框,外来人员进行访问

基本操作流

  1. 用户员通过登录验证
  2. 用户进入相应的首页进行相应的操作

可选操作流

问题重名或者问题内容超长导致操作出错,系统弹出错误提示,并记录操作日志信息

被泛化用例表

该用例的特化用例列表

(6) 微信公众号信息通知管理模块需求设计

信息通知:接收系统通知消息,接收与登录用户相关的个人待办事项通知,如项目待办事项提醒、监测预警提示等。

该模块的用例图如图2-14所示

 

图2-14 信息通知管理模块用例图

微信公众号信息通知管理案例分析表如下表2-11所示:

表2-11 微信公众号信息通知管理案例分析表

描述项

说明

用例名称

微信公众号信息通知管理案例

标识符*

CF10

用例描述

1.系统管理员:微信等方式对项目责任单位和相关部门进行调度

填报提醒

2.项目法人:接受有关个人申报的项目进度问题提醒和项目申报

结果处理的提醒

3.行业部门人员:审核待办事宜将通过系统消息和移动端进行推

送和提醒,前期工作进展进行监测预警,如有超时未办理等情况,系统自动发牌预警,预警提醒同时通过移动端推送给相关人员

4.发改部门人员:接收系统通知消息,接收与登录用户相关的个人

待办事项通知,如项目待办事项提醒、监测预警提示。

参与者表

系统管理员、项目法人、行业部门人员、发改部门人员

优先级

1

状态*

进行中

前置条件

系统管理员、项目法人、行业部门人员、发改部门人员能通过登录验证

后置条件

操作完成后,系统弹出“操作成功”提示框,并进入到对应用户的首页界面

可选操作流

1.系统管理员登陆首位界面,接受项目调度问题的反馈提醒

2.发改部门人员登陆首页界面,接受项目审核待办提醒

3.行业部门人员登录首页界面,接受项目监督整合提醒

4.项目法人登录首页界面,接受该用户提交项目的进度提醒

被泛化用例表

该用例的特化用例列表

(7) 微信公众号可视化管理需求设计

可视化展示:基于地理信息平台,实现投资项目可视化展示

微信公众号可视化管理模块的用例图如图2-15所示

 

图2-15 微信公众号可视化管理模块用例图

微信公众号可视化管理案例分析表如下表2-12所示:

表2-12 微信公众号可视化管理案例分析表

描述项

说明

用例名称

微信公众号可视化管理案例

标识符*

CF11

用例描述

1.可视化的技术手段对重大重点项目的推进及建设情况进行立

体呈现。

2.基于地理信息技术展现示项目建设地点分布和项目开竣工情

况,采集项目图片或视频信息实现项目进度可视化,采用红黄牌预警实现项目问题的可视化。

3.对重大重点项目的各阶段进展数据进行汇总、比对、分析,为

相关领导及时、准确、全面地提供多维度的统计分析报表和可视化的数据展示

参与者表

系统管理员、项目法人、行业部门人员、发改部门人员

优先级

1

状态*

进行中

前置条件

用户通过登入验证

后置条件

操作完成后,进入到需要查看项目情况的类型描述页面

基本操作流

  1. 成功进入页面后,选择以什么方式查看项目情况
  2. 点击提交按钮进入项目总揽情况页面

2.2功能需求

本项目微信平台能够支持项目(法人)单位工作人员通过微信填报调度任务,支持上传项目实景图片或视频。提供多维度的统计分析报表查询,方便随时随地了解重大重点项目的总体进展情况。

2.2.1角色分析

根据对互联网+固定资产投资服务监管微信平台的设计与实现的需求分析,本系统主要涉及到的角色如下表2-1所示:

表2-1 系统角色表

角色

职责或功能

项目法人

申请项目填报、查看项目进度、接受项目调度信息通知、在线填报调度反馈、确定项目结算、反馈调度问题、联系客服、加入官方群聊、项目可视化展示。

行业部门

前期工作预警、前期事项配置、前期工作反馈、行业主管发起问题、行业主管部门接受问题、反馈进度结果、打印项目清单列表、项目可视化展示。

发改部门

项目审核管理、审核待办事宜管理、重点项目库管理、项目可视化展示。

系统管理员

对行业部门人员和发改部门人员的添、删、改、查。项目调度反馈调整。

2.2.2业务功能

微信公众平台:基于微信服务号建设移动端的功能,提供信息通知、业务办理、统计分析、操作指引等实用性功能。实现项目法人在移动端的设计了本系统的功能需求总体用例图如下图2-8所示。

 

图2-8 系统总体用例图

(1) 项目法人需求分析

项目(法人)单位和发改部门通过微信平台发起项目问题,系统管理员部门和发改部

门通过微信公众号的方式进行问题的回复解答。项目(法人)单位工作人员通过微信填报调度任务,支持上传项目实景图片或视频。

该模块的用例图如图2-9所示。

 

图2-9 项目法人管理模块用例图

项目法人的项目申请管理模块案例分析表如下表2-2所示:

表2-2 项目法人项目申请管理模块案例分析表

描述项

说明

用例名称

项目法人申报项目管理案例

标识符*

CF01

用例描述

描述项目法人对项目申请的过程

参与者表

项目法人

优先级

1

状态*

进行中

前置条件

项目法人通过验证登录

                                                                   续表2-2

后置条件

跳转到项目法人的首页

基本操作流

1.项目法人通过账号的登录,转到项目法人首页界面。

2.项目法人填写项目的基本信息进行申请。

3.项目申请提交成功,微信后台发送信息通知。

可选操作流

当操作权限不够时系统弹出错误提示,并记录操作日志信息

被泛化用例表

该用例的特化用例列表

项目法人的项目信息管理案例分析表如下表2-3所示

表2-3 项目法人的项目信息管理案例分析表

描述项

说明

用例名称

项目法人申请的项目信息管理案例

标识符*

CF02

用例描述

描述项目法人对自己项目申请的信息查看

参与者表

项目法人

优先级

1

状态*

进行中

前置条件

项目法人在项目法人首页点击项目信查看

后置条件

项目法人申请过项目

基本操作流

1.项目法人登录进入到项目法人的首页。

2.点击项目信息查看按钮。

3.查看申请过的项目信息。

可选操作流

当注册信息不符合提示要求时,系统弹出错误提示,并记录操作日志信息。

(2) 行业主管部门管理模块需求设计

各行业主管部门使用预设的账号和密码登录系统及时填报各自责任范围内的前期事项办理进展情况。行业主管部门可发起问题、项目资金拨款申请等。行业主管部门接收与自己相关的待处理问题,并可在线反馈处理进度和处理结果。

该模块的用例图如图2-10所示

 

图2-10 行业主管部门人员管理模块用例图

行业主管部门人员对项目问题督办管理案例分析表如下表2-4所示:

表2-4 行业主管部门人员项目问题督办管理案例分析表

描述项

说明

用例名称

行业主管部门人员项目问题督办管理案例

标识符*

CF03

用例描述

描述行业主管部门人员对项目整理、监督、反馈提醒的过程

参与者表

行业主管部门

优先级

1

前置条件

行业主管部门人员已经通过登录验证

后置条件

行业主管部门点击相对应的操作,进入行业主管部门的操作界面。

基本操作流

1.行业部门人员账号验证,进入行业部门的首页

2.点击监督的按钮,进入相对应的项目调整的页面。

3.查看项目可视化的图表,了解最近项目类型问题反馈的情况和项目问题督办的情况。做出对问题处理的及时的响应。

4.操作结束,数据同步到数据库,同时对发布的问题相应对应的用户提醒。

行业主管部门人员项目可视化展示案例分析表如下表2-5所示:

表2-5 行业主管部门项目可视化展示案例分析表

描述项

说明

用例名称

行业主管部门项目可视化展示案例

标识符*

CF04

用例描述

描述行业主管部门人员查看项目可视化展示的过程

参与者表

行业主管部门人员、项目法人、发改部门

优先级

1

状态*

进行中

前置条件

用户通过行业主管的登录验证

后置条件

用户点击 “项目可视化”按钮

基本操作流

1.行业主管部门点击可视化按钮,进入项目大数据的页面。

2.点击项目的数据类型的按钮,数据从数据库呈现前端页面。

可选操作流

查看本系统的总体项目数据图表展示

被泛化用例表

该用例的信息查阅用例

(3) 发改部门人员管理模块需求设计

发改部门人员管理模块主要有下面六点功能:

(1) 发改部门使用预设的账号和密码登录系统录入单个项目或EXCEL文件批量导入项

目。对接重庆市固定资产投资项目网上服务监管,获取系统中已经的项目信息,自动关联到对应的项目单位及管理部门。

(2) 发改部门进行审核,审核分为审核通过和退回。审核待办事宜将通过系统消息和

移动端进行推送和提醒。

(3) 发改部门可按项目查看本期的进展信息。

(4) 发改部门都可发起问题、项目资金拨款申请等。

(5) 发改部门通过微信平台发起项目问题,相关部门和发改部门通过微信进行问题的

回复、反馈和督办。

(6) 发改部门可对全部问题及待办事项进行监控、督促。

发改部门人员管理模块的用例图如图2-11所示

 

图2-11 发改部门人员管理模块用例图

发改部门人员对申请项目审批管理案例分析表如下表2-6所示:

表2-6 发改部门人员项目管理案例分析表

描述项

说明

用例名称

发改部门人员项目管理案例

标识符*

CF05

用例描述

描述发改部门对项目审批、导入、问题处理、申报的项目进度查看操作的过程

参与者表

发改部门人员

优先级

1

状态*

进行中

前置条件

发改部门人员已经通过登录验证

后置条件

操作完成后,并进入到发改部门的首页

基本操作流

1.发改部门人员登录成功,进入发改部门人员首页界面。

2.发改部门点击项目进行审批、导入、问题处理、项目进度查看操作功能。

3.发改部门点击操作后,进入相应的操作界面进行操作。

发改部门人员项目调度案例分析表如下表2-7所示:

表2-7 发改部门人员项目调度案例分析表

描述项

说明

用例名称

发改部门人员项目调度案例

标识符*

CF06

用例描述

描述发改部门人员对通过项目审核的项目进行项目调度审核过程

参与者表

发改部门人员

优先级

1

状态*

进行中

前置条件

已经通过项目申请的审核项目

后置条件

对重点项目库中项目调度的信息进行审核,审核结果通知项目法人

基本操作流

1.点击“项目调度”的按钮,进入项目调度审核页面

2.项目调度审核结果存储在数据库中,审核结果通知用户

(4) 系统管理员管理模块需求设计

系统管理员可以对发改部门人员、行业部门人员进行增、删、改、查的操作和项目问题处理总揽。该模块用例图2-12所示。

 

图2-12 系统管理员管理模块用例图

系统管理员处理项目问题管理模块案例分析表如下表2-8所示:

表2-8 系统管理员处理项目问题案例分析表

描述项

说明

用例名称

系统管理员处理项目问题管理案例

标识符*

CF07

用例描述

描述系统管理员处理项目中的问题

参与者表

系统管理员

优先级

2

状态*

进行中

前置条件

系统管理员登录验证成功

后置条件

微信公众号发送项目问题被解决的信息通知

基本操作流

1.系统管理员拿到自己的账号登录验证通过或者微信之前登录成功后直接在微信中免登录操作。操作对应的问题处理功能

2.系统管理员对选择的用户提出的项目问题进行处理。

3.系统管理员对项目问题处理结果用微信公众号信息通知的形

式发送给用户。

可选操作流

管理员查看项目问题处理的情况

被泛化用例表

用户提出的项目问题进行处理过程表

系统管理员可视化设置案例的分析表如下表2-9所示:

表2-9 系统管理员可视化案例分析表

描述项

说明

用例名称

系统管理员大数据可视化页面的案例分析

标识符*

CF08

用例描述

管理员布局可视化页面的展示

参与者表

系统管理员

优先级

2

状态*

进行中

前置条件

系统管理员人员账号验证成功,进入首页点击可视化按钮

后置条件

按照用户的需求更改可视化页面展示的字段和图表的展示意义。更改可视化页面展示的结构。

基本操作流

1.点击需要换一个图形展示的图表。

2.将项目图表的列名和数据类型修改,并保存到数据库。

可选操作流

系统管理员信息修改案例

(5) 微信公众号业务办理模块需求设计

业务办理:项目申请信息查询、项目业务流程咨询、项目调度反馈。

信息查询:支持通过微信平台查询项目,查看项目信息、项目申请进展情况、项目调度进展、项目问题等。

业务咨询:提供项目单位在线问题、业务、操作等咨询,县级发改人员、技术支撑人员在线问题回复。

协调推进:支持项目(法人)单位和发改部门通过微信平台发起项目问题,相关部门和发改部门通过微信进行问题的回复、反馈和督办。

调度反馈:支持项目(法人)单位工作人员通过微信填报调度任务,支持上传项目实景图片或视频。

报表报告:提供多维度的统计分析报表查询,方便随时随地了解重大重点项目的总体进展情况。

微信公众号业务办理模块的用例图如图2-13所示

 

图2-13 微信公众号业务办理模块用例图

微信公众号业务办理模块案例分析表如下表2-10所示:

表2-10 微信公众号业务办理模块案例分析表

描述项

说明

续表2-10

用例名称

微信公众号业务办理模块案例

标识符*

CF09

用例描述

描述用户对项目申报问题、处理、监测的过程

参与者表

系统管理员、项目法人、行业部门人员、发改部门人员

优先级

1

状态*

进行中

前置条件

用户通过身份验证

后置条件

系统弹出“登记成功”提示框,外来人员进行访问

基本操作流

  1. 用户员通过登录验证
  2. 用户进入相应的首页进行相应的操作

可选操作流

问题重名或者问题内容超长导致操作出错,系统弹出错误提示,并记录操作日志信息

被泛化用例表

该用例的特化用例列表

(6) 微信公众号信息通知管理模块需求设计

信息通知:接收系统通知消息,接收与登录用户相关的个人待办事项通知,如项目待办事项提醒、监测预警提示等。

该模块的用例图如图2-14所示

 

图2-14 信息通知管理模块用例图

微信公众号信息通知管理案例分析表如下表2-11所示:

表2-11 微信公众号信息通知管理案例分析表

描述项

说明

用例名称

微信公众号信息通知管理案例

标识符*

CF10

用例描述

1.系统管理员:微信等方式对项目责任单位和相关部门进行调度

填报提醒

2.项目法人:接受有关个人申报的项目进度问题提醒和项目申报

结果处理的提醒

3.行业部门人员:审核待办事宜将通过系统消息和移动端进行推

送和提醒,前期工作进展进行监测预警,如有超时未办理等情况,系统自动发牌预警,预警提醒同时通过移动端推送给相关人员

4.发改部门人员:接收系统通知消息,接收与登录用户相关的个人

待办事项通知,如项目待办事项提醒、监测预警提示。

参与者表

系统管理员、项目法人、行业部门人员、发改部门人员

优先级

1

状态*

进行中

前置条件

系统管理员、项目法人、行业部门人员、发改部门人员能通过登录验证

后置条件

操作完成后,系统弹出“操作成功”提示框,并进入到对应用户的首页界面

可选操作流

1.系统管理员登陆首位界面,接受项目调度问题的反馈提醒

2.发改部门人员登陆首页界面,接受项目审核待办提醒

3.行业部门人员登录首页界面,接受项目监督整合提醒

4.项目法人登录首页界面,接受该用户提交项目的进度提醒

被泛化用例表

该用例的特化用例列表

(7) 微信公众号可视化管理需求设计

可视化展示:基于地理信息平台,实现投资项目可视化展示

微信公众号可视化管理模块的用例图如图2-15所示

 

图2-15 微信公众号可视化管理模块用例图

微信公众号可视化管理案例分析表如下表2-12所示:

表2-12 微信公众号可视化管理案例分析表

描述项

说明

用例名称

微信公众号可视化管理案例

标识符*

CF11

用例描述

1.可视化的技术手段对重大重点项目的推进及建设情况进行立

体呈现。

2.基于地理信息技术展现示项目建设地点分布和项目开竣工情

况,采集项目图片或视频信息实现项目进度可视化,采用红黄牌预警实现项目问题的可视化。

3.对重大重点项目的各阶段进展数据进行汇总、比对、分析,为

相关领导及时、准确、全面地提供多维度的统计分析报表和可视化的数据展示

参与者表

系统管理员、项目法人、行业部门人员、发改部门人员

优先级

1

状态*

进行中

前置条件

用户通过登入验证

后置条件

操作完成后,进入到需要查看项目情况的类型描述页面

基本操作流

  1. 成功进入页面后,选择以什么方式查看项目情况
  2. 点击提交按钮进入项目总揽情况页面

2.3非功能需求

基于微信公众号开发,由于微信同时支持在iOS和Android系统上运行。使得项目投资监管系统的获取微信服务器的后台数据不存在系统上的区别。微信官方同时也支持微信公众号测试号的开通,在测试号中可以大多数服务号类型的公众号的测试。在非功能需求没有过多的要求,智能手机微信版本在4.2版本以上。

2.3.1环境需求

服务器端的环境如表2-13所示

表2-13 服务端环境

系统的数据库

MYSQL

移动端系统

Linux

服务器类型

腾讯云

公网域名

域名已备案

服务器端口

80端口未占用,企业号的支持443端口

服务器所处温度

温度范围为20-25℃(68-75℉)

客户端的环境如表2-14所示:

表2-14 客户端环境

操作系统

Android、IOS

微信版本

4.0V以上

分辨率

最佳效果为1024×768像素

公众号申请类型

服务号/企业号(可在测试号进行测试)

微信账号数量

微信账号数量在4个以上

2.3.2 性能需求

(1) 可维护性

维护方法:微信服务器对于在公众号操作时候出现数据异常,会将这个异常数据记录保存在我的数据库中,并且对这个异常进行处理,及时将出现这个异常通知给用户并告诉针对这个异常用户应该做些什么让这个异常更小概率发生和处理,及时处理后也将处理的结果通知用户。让用户在使用过程中做好应对处理和准备。

(2) 易操作性

界面设计:系统向美观实用方面设计,方便和简约的图形界面,考虑用户体验感,页面元素轻巧,需求功能明显,极易上手操作。

(3) 可扩展性

功能扩展:公众号服务器菜单结构可以链接到固定资产项目投资的官网上去便于查找自己需求的数据。可接通多个接口和菜单方式。满足用户的申报项目基本需求。

非公能拓展:非公能的接口设置均不封闭。及时关注用户对这个系统的反馈和提议,针对非公能可以及时处理问题。

(4) 软件维护:

对用户进行深度分析,定期微信公众号页面内容进行更新,如产品,活动等。对用户进行深度分析,包括用户的来源,比如用户是来自公众号还是小程序等。理性客观的对数据进行总结,让用户体验舒适。在页面内容进行更新方面,一定要有自己的规律,具体问题具体分析。

(5) 响应性

操作平均响应时间不超过2.0秒,页面的响应时间不大于500毫秒,事务处理时间低于0.5秒,查询等待时间小于2.0秒。

2.3.3 安全需求

(1) 容错性

当用户输入错误时,系统有针对错误处理并提示用户让用户正确输入。用户操作不在微信平台时也会提示出请在微信端操作的页面友情提示。

(2) 系统的外在环境安全

用户输入的数据全部保存在腾讯云数据库当中,有着强大的腾讯云管理团队技术维护。并且防止服务器的DDOS攻击。定期查看流量剧增的IP地址,将其加入服务器访问的黑名单。同时将服务器的公网IP设置为弹性IP.设置复杂密码防止黑客暴力破解。

(3) 系统内部安全

系统源代码放到腾讯云的服务器上比较安全。对于数据非法访问自动跳转异常页面。数据提交采用安全POST提交方法。

(4) 系统运行安全

腾讯云安全在云服务生命周期的每个阶段都采用安全审计流程、从需求设计、到系统上线、再到运营都在腾讯云的安全风险可控和保护当中。

(5) 防火墙技术安全

采用腾讯服务器的弹性域名和设置安全组。更改常用端口8080、22、80、3306等端口。使其黑客采用DDos攻击增加难度。使用动态MFA口令加密。

(6) 边界防护安全

设置本系统只能在移动端且微信平台下面进行操作,离开微信平台,一切操作失败且温馨提示。防止在PC端对本系统的端口扫描造成危害。

3   总体设计

3.1系统设计的原则

经过充分考虑本项目监管的总体规划目标,以及微信平台的应用环境下,本系统的设计将严格遵循以下的设计原则:

(1) 可靠性原则

利用腾讯云数据库,具有很强的稳定性,可以同时并发访问用户在登录的时候都是讲用户信息进行BASE64进行加密,然后读取数据进行反解密。这样避免了用户信息存在图片和表情信息存储不到数据库,从而导致丢失的情况产生。同时也为用户节约手机端的流量。

(2) 先进性原则

微信公众平台的开发,在用户访问时候,能够同时处理并发达到10000个用户同时访问,并发性处理。访问高峰期一般在周末和晚上,用户会通过搜索检索相关的信息。一直以来。而我们的微信公众平台在信息的处理和服务的方法方面都站在用户的角度去考虑。比如,用户对审核进度的反馈得到有效回复和处理。

(3) 安全性原则

数据库重要数据会进行HASH+MD5加密算法进行加密。这个算法是不可逆算法,即使黑客截取数据包,黑客也是获取加密后的数据,难以从加密后的算法进行反推出用户的密码。

(4) 规范性原则

统一遵守官方微信公众号平台开发文档原则。投资项目统一编码标准原则、投资项目信息数据处理统一标准、信息联网数据接口统一标准。

(5) 可扩展性原则

微信公众平台会定时更新和修复BUG和某个应用的功能的开放,所以本项目中的所有功能模块的设计都预留了扩展接口。针对应接微信官方版本更新的接受和项目功能扩展的需求。

3.2系统体系结构设计

微信公众平台以微信用户的OPENID为依据,主要解决的是微信认证情况,不允许别人微信平台登录微信号进行登录操作。增加了用户信息的安全与保密。

用户端:界面主要是微信公众号,用户在公众号里发送信息到微信服务器,微信服务器根据开发者配置域名验证记得服务器中。自己服务器处理后将数据返回给微信服务器从而送达给用户聊天界面。微信公众号数据交互具体。

如图3-1所示

 
 
图3-1 微信公众号数据交互
微信服务器与我们的服务器项目的URL地址。在IDEA里面新建一个WEB项目,并创建一个Servlet。用创建的doGet()方法将在WEB.XML中设置的浏览器访问地Weixin-
Servlet,将http://外网服务器地址/Weixin/WeixinServlet设置在微信公众号里面。建立连接。如图3-2所示。
 
图3-2 微信服务器建立连接
用户在微信公众号发送信息,这时信息发送到微信服务器中(携带者发送者的OPENID和在那个微信公众号里面的OPNEID和项目信息的ID及用户发送消息的类型和内容打包成XML)。微信服务器根据用户在那个微信公众号的OPENID发送给前一步设置的服务器的地址(http://外网服务器地址/Weixin/WeixinServlet)然后根据用户的消息类型进行相应的回复,也打包成XML的形式发送给微信服务器。

3.3系统功能技术架构设计

 

图3-3 资产投资项目监管微信平台功能架构设计图

(1) 用户管理:用户(项目法人、行业主管部门人员、发改部门人员)进行登录首页,对个人

信息查看、部门信息修改功能。

(2) 项目库管理:项目法人填报项目申请,行业主管部门进行整理检查,发改部门对项目

进行审批,审批结果以微信平台信息通知用户并入重点项目库。

(3) 问题督办反馈:在用公众号情况下发生的一些项目逻辑不合理和数据返回异常情况,

问题反馈给系统客服人员,客服人员将问题上报给系统管理员。项目法人可以上报自己项目审批结果的给客服。系统将会对项目审批时间采用类型优先的电梯算法进行依次审批。对即将超时的项目以公众号信息的方式送给发改部门和行业主管部门将其通知到位。

(4) 统计分析:用户可以通过公众号的方式查看全国各地所有项目申报情况,项目审批情

况,项目的审批通过率的展示。项目月报、前期工作进展一览表、项目建设推进一览表、项目开情况统计、项目问题督办统计、项目投资进度排名、自定义报表等,提供同比、环比、趋势分析等比对分析功能,支持报表在线打印及导出。

3.1. 

3.2. 

3.3. 

3.3.1用户管理功能构建设计

 

图3-4 用户管理功能构建设计图

(1)     项目法人登录或注册:项目法人可以通过邮箱注册获取账号,登录项目法人的主页了

解自己相应的功能操作,查看自己个人信息和修改个人密码的操作。

(2)     系统管理员:可以接受用户发过来的反馈问题,及时维护微信公众号存在的一些问题

与不合理的地方。可以对发改部门人员和行业主管部门人员进行添加、删除、修改、查找和项目处理进度和项目申报总览情况等一些基本操作。

(3)     发改部门人员:通过自己账号登录查看自己个人信息和修改个人信息。并可以通过邮

箱验证码和微信扫一扫登录自己管理的页面。

(4)     行业主管部门:通过自己账号登录查看自己个人信息和修改个人信息。并可以通过邮

箱验证码和微信扫一扫登录自己管理的页面。

3.3.2项目库管理功能构建设计

 

图3-5 项目库管理功能构建设计图

(1)     项目填报:项目法人通过登录到首页,填写项目法人上报项目投资的一些文件。

(2)     项目审核:项目审核有发改部门对项目法人上报的项目进行审核,是否符合国家定义

的项目标准。审核结果分为审核通过和审核退回。审核通过会将项目法人上报的项目选入重点项目库。

(3)     项目待办事宜:对于项目的审核时间过长会以消息推送的方式到公众号提醒负责该项

目的发改部门人员。

(4)     重点项目库:对于审核通过的项目会入重点项目库形成清单档案。

(5)     项目录入:分为单个项目录入和批量项目录入。

3.3.3问题督办管理功能构建设计

 

图3-6 问题督办管理功能构建设计图

(1)     项目问题填报:项目法人单位可以发起问题、行业主管部门可以发起在整体的过程中的问题。发改部门的可以对审核项目的问题和项目中存在歧义的事情进行上报。

(2)     项目问题清单:行业主管部门接受项目问题反馈进度结果,项目法人能对项目的结算

确定(类似淘宝购买东西后的评价),发改部门对全部问题的监控督促,系统管理员对上报的项目进行调整,这一段流程产生的项目问题清单。

(3)     项目问题总揽:项目总揽是对项目的问题解决和处理进度总的情况查看。这个权限是

公开的可以让所有人能看见。清晰明了的看到项目问题的负责人和审批项目的发改部门的功能效率问题的查看。以全国的2D地图进行地区方式的查看。

3.3.4统计分析管理功能构建设计

 

图3-7 问题督办管理功能构建设计图

(1)     统计总揽:当前年度项目总个数及总投资额、项目开竣工情况、前期工作预警情况、项

目问题及待办事项情况、项目投资到位及投资完成情况。

(2)     多维度统计报表:项目月报、前期工作进展一览表、项目建设推进一览表、项目开情况

统计、项目问题督办统计、项目投资进度排名、自定义报表等,提供同比、环比、趋势分析等比对分析功能,支持报表在线打印及导出。

(3)     可视化分析:分为两部分项目监测预警和项目全景视图。项目检测预警是采用电子地

图、数据可视化等技术对重大重点项目的总体情况、开竣工情况、投资情况、监测预警情况进行全方位展现。项目全景视图是图形化展现每个项目关键节点进展情况,实现对每个项目的全景展示。

4   数据库设计

5  

(1)    

(2)    

(3)    

(4)    

4.1 概念结构设计

概念结构设计目的是系统需求分析后,对系统的需求之间关联,用图形化简单明了勾画出整个系统的需求。让项目开发人员。本项目是采用E-R图来进行概念结构设计。

4.1.1设计思路

项目的数据库设计是最基本最重要的一步,数据库设计好坏与系统的安全性和易读性直接相关联。严格遵循数据库设计的一对一设计原则、独特命名原则、双向使用原则。

本项目的用户共有三个角色,项目法人可以进行项目申报,项目反馈,项目问题督办,项目法人理论上支持一人申报多个项目和多次项目反馈。若申报的项目进入重点项目库,那么项目法人也会进行项目调度申请填报。也是支持有项目法人有多个重点项目,一个重点项目针对一个项目调度填报。项目调度通过则启动项目。行业主管部门实体支持针对多个申报项目监督和处理。发改部门实体按照审批类型进行批阅多个项目。

4.1.2总体E-R图

项目投资监管微信平台的总体E-R图如下图4-1所示:

 

图4-1 项目投资监管平台总体E-R图

4.1.3实体属性设计

根据微信平台的设计实际需求,在数据库设计当中主要涉及9个实体,分别是统计分析、项目法人、项目库、发改部门、行业主管部门、项目档案、前期事项清单、重点项目库、系统管理员。

(1)     项目法人实体属性图

项目法人的实体的属性包括用户OPENID、用户名、邮箱、爱好、电话、性别、年龄,其中项目法人OPENID为主键,

如下图4-2所示:

 

图4-2 项目法人实体图

(2)     发给部门的实体属性图

发改部门的实体的属性包括用户OPENID、用户名、邮箱、爱好、电话、性别、年龄,发改部门审批类型、审批项目数、登记评估分。其中发给部门OPENID为主键,

如下图4-3所示:

 

图4-3 项目库实体图

(3)     行业主管部门的实体属性图

行业主管部门人员的属性有OPENID、用户名、邮箱、爱好、电话、性

别、年龄,项目问题督察数、处理能力评估分。其中行业主管OPENID为主键,

如下图4-4所示

 

图4-4 行业主管部门实体图

(4)     项目库的实体属性图

项目库实体属性含有项目编号、项目名称、项目类型、项目申请的时间、项目选址、项目申请人、项目申请人的联系方式,项目申请金额、其中项目编号为主键。

如图4-5所示。

 

图4-5 系统管理员实体图

(5)     统计分析的实体属性图

统计分析的实体的属性包括用户项目编号、申请项目名称、申请项目类型、申请项目的时间、项目的选址、项目申请人、项目申请人的联系方式、项目警告、项目清单、项目申请金额、其中项目编号为主键。如图4-6所示。

 

图4-6 统计分析实体图

(6)     项目档案的实体属性图

项目档案实体属性有用户申请项目编号、申请项目名称、申请项目类型、申请项目时间、项目选址、项目负责人、重点项目库、项目历史年度、项目负责人的联系方式,项目申请金额、其中项目ID为主键。

如图4-7所示。

 

图4-7 项目档案实体图

(7)     项目前期事项清单的实体属性图

项目前期事项清单的实体属性有项目编号、项目红牌、项目黄牌、项目警告、项目

审批情况、项目审批单位其中项目编号为主键。如图4-8所示。

 

图4-8 项目前期事项清单实体图

(8)     重点项目库的实体属性图

重点项目库的实体的属性包括重点项目id、项目当前年份、项目信息对象、项目历史

年度、项目报告打印、预备项目、其中项目id为主键。Project为外键

如图4-9所示。

 

图4-9 重点项目库实体类图

4.2 逻辑结构设计

数据库的逻辑结构设计的内容是对概念设计阶段中系统的功能结构分类、优化项目投资审核管理的数据模型。为建立数据库和书写数据库文档做好准备工作。

4.2.1 设计思路

(1)     对项目法人与项目库的关系是1:N的关系,项目法人建立一张表格,以微信服务器中

唯一识别OPENID作为主键,用项目库信息作为项目法人的外键进行关联。项目法人可以申请多个不同类型的项目。

(2)     对“项目调度申请”关系,项目法人和发改部门是1:N的关系,在上面建立的项目法

人信息表格后,另外的外键设置的是项目调度申请外键,用来存储通过项目申请后填写的项目调度的详细信息。

(3)     对“问题通知提醒”关系,项目法人实体和行业主管部门实体的关系是M:N的关系,

需要再建一个关系表-行业主管部门,用来项目法人申请项目的通知信息和问题反馈信息。

(4)     对“归集”关系,实体行业主管部门和实体前期事项清单是M:N的关系,行业主管

部门针对用户反馈的信息形成事项清单,并存储在前期事项清单表单上。

(5)     对“提交事务”关系,实体发改部门和实体前期事项清单是M:N的关系,将前期事

项清单数据保存,并用大数据可视化的角度展示给发改部门。

(6)     对“通过申请”关系,发改部门通过项目的申请关系是M:N的关系。通过项目申请并

且以微信后台信息通知的形式发给用户。

4.2.2 逻辑模型

  1. E-R图转换为关系模式

(1)     项目法人表(项目法人微信OPENID,项目法人昵称,项目法人邮箱,项目法人账号

密码,项目法人性别,项目法人年龄,项目法人手机号,项目法人爱好,申请状态,项目法人头像,个人说明)

(2)     发改部门人员表(发改部门微信OPENID,发改部门人员的昵称,发改部门人员的邮

箱,发改部门的账号密码,发改部门人员的性别,发改部门人员的年龄,发改部门人员的手机号,发改部门人员的爱好,项目审批评价得分,项目审批数量)

(3)     行业主管人员(行业主管部门微信OPENID,行业主管人员的昵称,行业主管人员邮

箱,行业主管账号密码,行业主管人员的性别,行业主管人员的年龄,行业主管人员的手机号,行业主管部门人员的爱好,项目问题督办,项目问题督办评价得分)

(4)     项目库表(项目编号,项目名称,项目地址,建设性质,行业编码,建设时间,行政区

划代码,建设单位项目编号,项目申请单位名称,项目申请组织机构代码,项目申请单位联系电话,项目联系人,项目联系人电话,项目联系人邮箱,单位地址,文件地址,备注信息)

(5)     统计分析表(统计编号,项目编号,项目警告,项目类型,项目列表清单)

(6)     项目档案表(项目档案编号,项目编号,项目金额,项目负责人,项目地址)

(7)     前期事项清单表(事项清单编号,项目警告,黄牌警告,红牌警告,项目批审情况,项

目审批单位)

(8)     重点项目库表(重点项目库编号,项目编号,当前年份,历史年份)

  1. 逻辑模型优化

(1)     对用户表,在微信上三个角色登录的邮箱、用户名和密码具有很强相似。避免建立

多表,所以在用户登录的信息建立在一个表格,用type字段来区分用户登录的类型。

(2)     前期事项清单,在前期事项清单中含有项目的基本信息,所以在项目清单中增加一个

项目实体字段,它关联项目表的主键。在统计分析表格加了项目库外键。关联所有项目的审核情况和项目类型的情况。

4.3 物理结构设计

4.3.1 存取方式

依照本项目的业务,项目主要对数据的操作是查询和插入,所以采用B+树索引存取方法,提高数据库的查找效率。

4.3.2 存储结构

数据库采用mysql作为存储数据库,并且采用了索引顺序存储、数据分离和缓存优化技术。系统的数据库表存储采取顺序存储并对行字段建立对应索引,对经常查询的表进行数据分离,加快系统的查询速度,并且对于系统中的一些不经常更新的查询结果,将其存放在数据库视图中,节省了重复查询的时间开销。

根据逻辑结构设计得到的结果,将逻辑模型转为mysql数据库表,并根据字段含义设计对应的物理类型,如下所示:

项目法人的数据库表设计如表4-1所示:

表4-1项目法人的数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

1

age

varchar

255

项目法人年纪

2

phone

varchar

255

项目法人联系电话

3

openid

varchar

255

项目法人在微信服务器的id

4

email

varchar

255

项目法人的邮箱

5

username

varchar

255

项目法人的名字

6

sex

varchar

255

项目法人的性别

7

love

varchar

255

项目法人的爱好

发改部门数据库设计表如表4-2所示:

表4-2 发改部门数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

1

evaluate

varchar

255

对发改部门的评价

2

type

varchar

255

发改部门审批的类型

3

age

varchar

255

发改部门年纪

4

phone

varchar

255

发改部门联系电话

5

openid

varchar

255

发改部门在微信服务器的id

6

email

varchar

255

发改部门的邮箱

7

username

varchar

255

发改部门的名字

8

sex

varchar

255

发改部门的性别

                                                                            续表4-2

9

love

varchar

255

发改部门的爱好

10

projectNumber

varchar

255

发改部门管理项目的名称

行业主管部门数据库表设计如表4-3所示:

表4-3 行业主管部门人员数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

1

age

varchar

255

行业主管部门年纪

2

phone

varchar

255

行业主管部门联系电话

3

openid

varchar

255

行业主管部门在微信服务器的id

4

email

varchar

255

行业主管部门的邮箱

5

username

varchar

255

行业主管部门的名字

6

sex

varchar

255

行业主管部门的性别

7

love

varchar

255

行业主管部门的爱好

8

projectProblem

varchar

255

行业主管部门提交项目问题

9

evaluate

varchar

255

行业主管部门的评价

项目库数据库表设计如表4-4所示:

表4-4 项目库管理员数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

1

projectid

int

10

项目的编号

2

projectname

varchar

255

项目名称的名字

3

projectType

varchar

255

项目类型

4

projectTime

varchar

255

项目创建的时间

5

projectLocation

varchar

255

项目投资的地方

6

ProjectPhone

varchar

255

项目负责人的电话

7

projectMoney

varchar

255

项目金额

8

projectleader

varchar

255

项目负责人

项目档案数据库表设计如表4-5所示:

表4-5 项目档案数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

                                                                               续表4-5

1

projectid

int

10

项目的编号

2

projectname

varchar

255

项目名称的名字

3

projectType

varchar

255

项目类型

4

projectTime

varchar

255

项目创建的时间

5

projectLocation

varchar

255

项目投资的地方

6

projectPhone

varchar

255

项目负责人的电话

7

projectMoney

varchar

255

项目金额

8

projectleader

varchar

255

项目负责人

9

historicalyear

varchar

255

历史年度

统计分析数据库表设计如表4-6所示:

表4-6 统计分析数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

1

projectid

int

10

项目的编号

2

projectname

varchar

255

项目名称的名字

3

projectType

varchar

255

项目类型

4

projectTime

varchar

255

项目创建的时间

5

projectLocation

varchar

255

项目投资的地方

6

projectPhone

varchar

255

项目负责人的电话

7

projectMoney

varchar

255

项目金额

8

projectleader

varchar

255

项目负责人

9

projectwarnning

varchar

255

项目预警

前期事项清单数据库表设计如表4-7示:

表4-7 前期事项清单数据库表

序号

字段名

数据类型

字段长度

是否主键

说明

1

id

int

10

登记人id

2

approvalitems

varchar

20

审批事项

3

approvalunit

varchar

20

审批单位

4

warnning

varchar

20

是否预警

5

yellowcard

varchar

20

黄牌警告

5   界面设计

5.1 界面关系图或工作流图

用户管理模块的具体功能主要包括用户(项目法人、行业主管部门人员、发改部门人员)信息的查询、修改、删除功能。其中项目法人可以注册自己的账号、项目申请、项目调度和个人信息反馈查询。行业主管部门进行整理提交项目法人提交项目信息。发改部门可以对项目法人申请的项目进行审批和项目调度的审批。并且可以查看自己的项目审批评分和整合项目数据的可视化分析。项目数据保存在数据库,可以动态展示项目的信息情况。

微信公众号关系如图5-1所示

 

图5-1 固定资产投资监管微信平台系统页面关系图

5.2 界面设计成果

5.2.1 主界面

固定资产投资监管微信平台系统首页,项目法人通过登录进入首页,展示出来首页相关的功能如图5-2所示。

 

图5-2 固定资产投资监管微信平台系统首页

5.2.2 子界面

(1)用户个人信息展示界面,在允许的微信公众号获取用户信息的条例的前提下。根据OPENID获取数据库存储的用户个人信息中心页面如图5-3所示。

 

图5-3 用户个人信息页面

(2)项目法人首页,项目法人拥有的功能有项目申请、项目申请情况和统计展示。在项目

法人的首页有进行客服咨询的接口。项目法人的功能操作的界面如图5-4所示。

 

图5-4 项目法人首页

(3)项目法人的项目申请页面,项目法人需要填写申请的项目信息,项目申请的信息字

段经过正则表达式的校验。项目法人的填写项目基本信息页面如图5-5所示。

 

图5-5 项目法人项目申请页面

(4)项目法人申请后的项目信息和项目审核的结果将在这个项目信息查看页面展示

项目申请信息页面,如图5-6所示。

 

图5-6 项目申请信息页面

(5)用户通过登录后,系统将信息通知模块展示给用户,未读的信息将用红色标记给用

户展示出来通知页面。用户的信息通知模块展示如图5-7所示。

 

图5-7 信息通知页面

(6)用户在微信平台进行相关的操作后,将以微信平台信息通知对方,项目法人申请项

目成功后,将这个消息用微信公众号的信息通知方式给用户展示和提示。项目申请通过审核也用微信的后台通知对方。微信公众号信息通知如图5-8所示。

 

图5-8 微信平台信息通知

(7)用户可以对总体项目信息查看。项目可视化展示,如图5-9所示;

  

图5-9 项目可视化展示

(8)用户可以对在使用微信平台上出现的问题进行反馈。项目法人对项目申请结果出现

的不满意项目问题反馈页面,反馈页面如图5-10所示。

 

图5-10 在线项目问题反馈页面

(9)在公众号里面出现业务不熟悉或者操作上的问题,需要寻求帮助的可以在线联系客

服页面,也是符合政府类型的媒体便民惠民的一个政策。公众号里联系客服的功能页面截图如图5-11所示。

  

图5-11 联系客服页面

(10)发改部门人员对项目类型进行审核,发改部门人员审核的项目类型单一。不同项目

类型分发给不同的发改部门进行审核。
发改部门人员项目审核页面,如图5-12所示。

 

图5-12 项目审核页面

(11)发改部门人员进入了首页,发改部门的首页主要有查看项目信息、重点项目库和统

计展示的功能页面,发改部门功能页面如图5-13所示。

 

图5-13 发改部门功能页面


6   详细设计

(1)    

(2)    

(3)    

(4)    

(5)    

(6)    

6.1 系统主要功能模块介绍

用户管理模块的具体功能主要包括用户(项目法人、行业主管部门人员、发改部门人员)信息的查询、修改、删除功能。其中项目法人可以注册自己的账号。行业主管和发改部门人员部门进行管理员新增,只能是自己进行登录和系统管理员进行新增。新增和修改主要体现在用户点击注册和修改按钮时当相应的操作(登录,修改,新增,删除)操作的情况下,数据库中的用户表信息能同步更新。

6.2 用户功能管理

6.2.1 功能结构设计

用户管理的功能结构设计如图6-1所示:

 

图6-1 用户管理功能结构图

6.2.2 类图设计

项目法人的注册新增。个人信息的修改、删除以及查询功能。项目法人涉及的类有UserInfo,CompetentInfo,CorrectionInfo,用户处理类UserServlet,CompetentServlet,CorrectionServlet,用户数据库访问类UserDao,CompetentDao,CorrectionDao,以及连接数据库的类DataBaseConnection。实体类功能的关系如图5-4所示:

 

图6-2 用户管理功能类图

用户控制器类的描述信息如表6-1所示:

表6-1 用户控制器类的描述信息表

用户控制器类

类的描述:负责响应用户发出的请求信息增加(仅项目法人)、删除、查询和修改的请求

操作描述

doGet(Request req,

Response res)

当用户发送get请求的操作时候,响应用户的发出的请求(登录、查询、修改、注册),并进行相应的逻辑处理。将输出流响应给用户。并返回响应的页面给用户。

doPost(Request req,

Response res)

当用户发送表单/Post请求的操作时候,响应用户的发出的请求(登录、查询、修改、注册),并进行相应的逻辑处理。将输出流响应给用户。并返回响应的页面给用户。

用户实体类的描述信息如表6-2所示:

表6-2 用户实体类的描述信息表

用户实体类

类的描述:主要描述用户的具体属性和对应的方法

属性描述

sex

用户性别

age

用户年龄

love

用户兴趣爱好

用户父类超类描述信息如表6-3所示:

表6-3 用户超类实体类的描述信息表

用户超类实体类

类的描述:对三种类型用户相同属性的超类

属性描述

UserName

描述系统用户的名字

UserPassword

描述系统用户的密码

Email

用户注册的邮箱(忘记密码的凭证)

OpenId

微信平台自动给用户生成的一个openId

Phone

描述联系用户的电话号码

6.2.3 顺序图设计

用户基本信息操作的程序流程如时序图6-3所示:

 

图6-3 用户基本信息操作的时序图

按照上图类似,用户在页面发送一个请求到相应的Servlet类进行一些必要的逻辑性处理应用userInfo实体类将类属性变量存在实体类当中调用相应的Dao包进行数据库的操作返回数据给Servlet,Servlet将会对返回的数据进行逻辑处理将结果响应给用户。

6.3 项目库管理功能

6.3.1 功能结构设计

项目库管理的功能结构设计如图6-4所示:

 

图6-4 项目库管理功能结构图

6.3.2 类图设计

项目法人进入自己相应的页面进行项目填报,项目法人将项目一些基本信息填写并提交上报给项目法人的Servlet,在Servlet响应对应的用户doGet()/doPost()相关的请求后判断用户提交上来的数据类型自动生成该项目的调度时间和当前的时间戳,如果在时间在他们两之和还未处理,需要给用户和发改部门进行信息通知对方做相应的处理。发改部门对申请项目进行审核,审核通过将项目列入重点项目库当中。审核的结果也将以信息发送的方式给用户和发改部门。并调用相应的Dao包更新数据库。

项目库管理类中的关系如图6-5所示:

 

图6-5 项目库管理功能类图

项目库类的描述信息如表6-4所示:

表6-4 发改部门类的描述信息表

发改部门控制器类

                                                                         续表6-4

类的描述:负责项目法人填报项目的审核

queryProject(Map<String,String> map)

查询项目处理的进展

updateCorrectionInfo

(Map<String,String> map)

更新项目审批的结果和项目问题更新

dealProject(Map<String,String> map)

对项目法人提交的项目进行审批过程

AddProject(Map<String,String> map)

发改部门可以批量添加项目

6.3.3 顺序图设计

项目库管理基本信息修改的程序流程如时序图6-6所示:

 

图6-6 项目库管理的时序图

如上图所示,由项目法人填报的项目类型,系统自动生成电镀时间和分配给项目对应的发改部门的人员进行审批,发改部门对项目处理调用Dao包数据库的方法,更新数据库的数据,并处理数据库的数据,将数据呈现的微信公众号的信息通知模块给项目法人。

6.4 项目问题督办管理功能

6.4.1 功能结构设计

项目问题督办管理的功能结构设计如图6-7所示

 

图6-7 项目问题督办功能结构图

6.4.2 类图设计

问题督办管理,基于他们的类有很多相同属性,建立了一个基类。BaseProjectProblem。

项目问题是由项目法人、行业主管部门、发改部门人员提出项目中的问题和反馈。对于用户提出的项目形成一个项目问题id,根据Id可以知道项目处理的进度和结果。如果项目被处理或超时未处理的情况。会返回一个结果给用户,当然这跟个结果不需要吧所有情况都弄出来,所以建立一个返回消息的数据包ProjectProblemList给用户,用户知道自己的项目问题申报的处理的情况。对于用户可以查看现阶段全国申报项目数量和对项目的处理完成度。和多少超时未处理的数量和多少不合格项目申请的数量。

项目问题监督类图如图6-8所示:

 

图6-8 项目问题督办管理功能类图

项目问题督办类的描述信息如表6-5所示:

表6-5项目问题督办信息表

项目问题控制器类

类的描述:负责保存用户提出项目问题和反馈,并将项目处理结果送给用户查看

addProjectProblem

添加项目申报的问题,并同步到数据库

dealProjectProblem(int projectId)

对项目问题提出记录保存在数据库中

LookProjectProblem()

总揽全国地区项目问题申报情况。

6.4.3 顺序图设计

项目问题督办时序图6-9所示:

 

图6-9 项目问题督办信息的时序图

如上图所示,用户上报项目问题,形成一个项目ProjectProblem的对象,将用户上传项问题的情况存储到对象当中去。新建一个ProjectProblemList用于系统管理员对用户提交的项目问题处理结果以公众号的信息通知用户,ProjectProblemOverview查看项目总揽。

6.5 统计分析管理功能

用户可以查看当前年度项目总个数及总投资额、项目开竣工情况、前期工作预警情况、项目问题及待办事项情况、项目投资到位及投资完成情况。形成多维度统计报表。可以对项目的可视化分析查看。

6.5.1 功能结构设计

统计分析管理的功能结构设计如图6-10所示:

 

图6-10 统计分析管理功能结构图

该模块的功能方便用户查看项目的统计总揽情况,以全国地图的方式展示出来。对项目的申报投资监管的情况可以进行多维度报表打印。也能用大数据的方式对各地区的数据的可视化分析和预测。

6.5.2 类图设计

建立一个统计总揽的对象类,该类包括:当前年度项目总个数及总投资额、项目开竣工情况、前期工作预警情况、项目投资到位及投资完成情况。查看详细的项目情况。对项目的多维度报表建立一个面向对象方式包含属性:项目月报、前期工作进展一览表、项目建设推进一览表、项目问题督办统计、项目投资进度排名、自定义报表等,支持报表在线打印及导出。和对项目的可视化分析。统计分析管理类图如图6-11:

 

图6-11 统计分析管理功能类图

统计分析管理类的描述信息如表6-6所示:

表6-6 统计分析类的描述项目信息表

用户控制器类

类功能描述:用户对项目了解的方式统计总揽、多维度分析、可视化分析

操作描述

Statisticsshow(Project project)

对所有项目的统计分析

dimensionReport()

对所有的项目多维度分析

VisualAnalysis()

对所有项目的可视化分析

6.5.3 顺序图设计

项目统计分析流程如时序图6-12所示:

 

图6-12 项目统计的时序图

如上图所示,用户查看项目统计分析:当前年度项目总个数及总投资额、项目开竣工情况、前期工作预警情况、项目问题。多维度报表:提供同比、环比、趋势分析等比对分析功能,支持报表在线打印及导出。和可视化分析结果返回给用户。

7 编码

(1)   

(2)   

(3)   

(4)   

(5)   

(6)   

(7)   

7.1  代码实现与核心算法

7.1.1  用户登录管理代码实现

(1) 用微信服务器返回的code来确定是否在微信平台登录:

if (code==""||code==null||request.getParameter("code").equals(null)||request.getParameter("code").equals(""))

(2) 用微信服务器给的code换取OPENID:

    String url ="https://api.weixin.qq.com/sns/oauth2/access_token?appid=wxcea26c733963d889&secret=e0d4867f02ecff50780971ec9698f5d4&code="+code+"&grant_type=authorization_code";
try {
    weiwei=get(url);
} catch (Exception e) {
    e.printStackTrace();
}

(3) 根据OPENID查询用户是否之前已登录,并实现不同页面跳转:

if (UserLoginDao.LoginQuery(openid)==1)
       {
    request.getRequestDispatcher("User/PersonalCenter.jsp").forward(request,response);
            }
            else {out.print("您还未注册,快来注册吧!");
     request.getRequestDispatcher("UserLogin/UserLogin.jsp").forward(request,response);
            }

(4) 用户未在公众号登录。页面跳转到注册登录页面,下面是实现邮箱验证码注册功能。

邮箱验证码生成及发送:

for (int i = 0; i < 6; i++) {//验证码随机生成
        int r = rd.nextInt(10); //每次随机出一个数字(0-9)
        code = code + r;  //把每次随机出的数字拼在一起
    }
    public static String getEmailCode(){
    if(emailCode==null||emailCode.IsExpired()){
        random1();
    }
    return emailCode.getCode();
}
//邮箱验证码发送
    send.setAuthentication("chenqiwei1@foxmail.com", "eymwdiwinzuabbaf"); //第一个参数是发送者的QQEamil邮箱   第二个参数是刚刚获取的授权码

邮箱十分钟内填写有效的限制:

  if(emailCode==null||emailCode.IsExpired()){
        random1();
    }
Date now = new Date();
    Date afterDate = new Date(now.getTime() + 600000);//设置十分钟有效

(5) 

(6) 

6.1 

6.1.1 

用户登录算法流程如图7-1所示:

 

图7-1 登录算法流程图

7.1.2  项目库管理实现

(1)     获取项目申请的信息

String p1_name=request.getParameter("p1_name");
        String p1_address=request.getParameter("p1_address");
        String p1_code=request.getParameter("p1_code");
        String p1_time=request.getParameter("p1_time");
        String p1_code2=request.getParameter("p1_code2");
        String p1_number=request.getParameter("p1_number");
        String p2_name=request.getParameter("p2_name");
        String p2_code=request.getParameter("p2_code");
        String p2_tel=request.getParameter("p2_tel");
        String p2_person=request.getParameter("p2_person");
        String p2_phone=request.getParameter("p2_phone");
        String p2_email=request.getParameter("p2_email");
        String p2_adress=request.getParameter("p2_adress");
//        String p3_file=request.getParameter("p3_file");
       
String p3_info=request.getParameter("p3_info");
        String value=request.getParameter("value");
        String openid=userInfo.getOpenid();
        response.setContentType("text/html");
        //上传文件
    //获得文件名称
       
fileName = fileItem.getName();
       fileName = fileName.substring(fileName.lastIndexOf("\\")+1);
       String houzhui = fileName.substring(fileName.lastIndexOf("."));
       rename = UUID.randomUUID()+houzhui;

(2) 微信发送项目申报成功信息模板:

    //发送模板
   
public static void sendTemplateMessage(String opneid){
        String url="https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN";
        url=url.replace("ACCESS_TOKEN",ConnectWeChatServlet.getAccessToken());
        System.out.println(url);
        Calendar cal = Calendar.getInstance();
        String data="…项目申请成功…";
        String result=Joke.post(url,data);
        System.out.println(result);
    }

(3)   

(4)   

(5)   

(6)   

(7)   

7.1   

7.1.1   

7.1.2   

7.1.3  微信信息类型回复实现

(1)     微信信息类型识别处理实现

//接受微信服务器的消息,用于处理所有事件的消息回复
private static String getResponse(Map<String, String> requestMap) {
    BaseMessage msg=null;
    String msgType=requestMap.get("MsgType");
    switch (msgType){
        case "text":   //文本消息
            msg=dealTextMessage(requestMap) break;
        case "image":  //图片消息
            msg=dealImageMessage(requestMap); break;
        case "voice":  //语音消息
            msg=dealVoiceMessage(requestMap); break;
        case "video":  //视频消息
            msg=dealTextMessage(requestMap); break;
        case "shortvideo":  //短视频消息
            msg=dealTextMessage(requestMap); break;
        case "location":   //地理位置消息
            msg=dealLocationMessage(requestMap); break;
        case "link":     //链接消息
            msg=dealLinkMessage(requestMap); break;
        case "event":    //事件消息
            msg=dealEventMessage(requestMap); break;
        default:      //其他事件消息
            msg=dealTextMessage(requestMap); break;

(2)     微信公众号自动回复信息

private static BaseMessage dealTextMessage(Map<String, String> requestMap) {
    String msg =requestMap.get("Content");
    if (msg.indexOf("天气+")!=-1){  //
        msg=msg.replace("天气+","");
        String resp=Weather(msg);
        TextMessage tm =new TextMessage(requestMap,resp);
        return tm;}
    if(msg.equals("消息动态")){
        List<Article> articles=new ArrayList<>();
        articles.add(new Article("项目投资监管平台头条推荐","特朗普宣布暂停想世卫组织拨款,联合国秘书长表态!","https://dss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/super/crop=144,0,1728,1080/sign=d190fab2ba4543a9e154a08c2326beb6/203fb80e7bec54e754583e58b4389b504fc26a3b.jpg","https://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666309146&idx=1&sn=338c82dd3d13c42d30cf520e9041b1d0&scene=0"));
        NewsMessage newsMessage=new NewsMessage(requestMap,"1",articles);
        System.out.println("newMessage:"+newsMessage);
        return newsMessage;}
       if (msg.equals("帮助")){
        msg="【微信客服业务指导】\n" +
                "1、成语查询  例如(成语:山清水秀)\n" +
                "2、天气查询  (1、直接对机器人说地方的天气 2、发送:【例如】天气+南昌)\n" +
                "3、语音聊天。\n" +
                "4、上传图片回复该图片外网链接\n" +
                "5、客服"+
                "6、登录个人中心"+
                "7、消息动态";
        TextMessage textMessage=new TextMessage(requestMap,msg);
        return textMessage;}
    TextMessage tm = null;
    try {
        String aa=ConnectWeChatServlet.robotchat(msg);
        JSONObject jsonObject=JSONObject.fromObject(aa);
        tm=new TextMessage(requestMap,jsonObject.getString("text"));
    } catch (Exception e) {
        e.printStackTrace();}return tm;}

微信消息回复算法流程如图7-2所示:

 

图7-2 微信回复算法流程图

7.2  代码优化分析

对微信公众平台功能开发的限制,本项目采用如下的优化方案:

(1) 采用对象存储ACCESS_TOKEN时间限制

因为微信公众平台访问业务数据是结合ACCESS_TOKEN的信息的交互。然而ACCESS_TOKEN访问的次数有明确的限制。所以采用对象存储微信服务器发送的ACCESS_TOKEN。并增加一个过期的字段,并设置其过期的方法。减少对微信服务器的请求。加快访问速度。

(2) 使用用户视图减少数据库的压力

在微信的可视化中,有着大量的数据访问和数据交叉使用,直接数据库访问的话,大大增加加载的时间,使用户等待的时间过长。大大的降低了用户体验度。

(3) 用StringBuilder/StringBuffer代替String字符串的定义

在微信项目申请中出现大量的字符串定义。用String类型定义的变量,java虚拟机会定义多个对象,对象进行操作后还要进行回收操作,大大降低了系统的性能。

(4) 采用数据库连接池和线程池

使用数据库连接池能够有效的减少数据库的频繁打开和关闭,线程池可以减少线程创

建销毁。

8 测试

8.1测试方案设计

8.1.1测试策略

项目投资监管微信平台项目的测试不仅有单元测试、白盒测试,还额外增加性能测试、负载测试和兼容性测试共五种测试原则来进行,其中单元测试为对连接微信服务器的数据交互的功能是否符合预期结果的测试;白盒测试是结合微信服务器的数据请求的每个功能节点进行的测试,测试数据显示的情况。性能测试主要测试功能显示是否正常测试和多名用户使用下系统的稳定性的一种测试。负载测试是测试用户使用的对象在承担不同工作量下所表现能力。兼容性测试是用户使用内核不同的手机进行的功能测试。

8.1.2测试进度安排

对于微信公众平台的测试分为以下几个部分和时间段进行,本系统的测试进度安排如下表8-1所示:

表8-1 测试进度安排表

测试阶段

测试任务

测试日期及用时

单元测试

对系统的每个功能测试,边测试边开发

第8学期4~7周

白盒测试

对系统微信平台的数据交互进行不同消息类型的回复

第8学期第6周

性能测试

对系统的各个功能点进行连接速度的测试和在多个用户同时访问的时候数据流量承载能力。

第8学期第6周

负载测试

对项目中的功能对象是否在不同工作量条件下的性能测试

第8学期第7周

兼容性测试

对微信平台处于不同的移动端操作系统(IOS和Android)功能是否显示正常

第8学期第7周

8.1.3测试资源

为项目系统功能和性能测试更贴近真实情况,增加了如下的硬件资源的测试,测试资源如下表8-2所示:

表8-2 硬件测试资源表

硬件环境

资源类型

资源描述

数量

计算机硬件

Intel I7 8G内存 256G固态硬盘

1

操作系统

Windows 10

1

JDK

JDK 1.8

1

续表8-2

浏览器

Chrome 浏览器

1

文件部署服务器

FileZilla Client

1

服务器的连接

Putty

1

手机

支持微信APP的智能手机-WeChat4.0以上

1

为了更好的使用微信公众号的应用的资源环境最低要求

表8-3 软件测试资源表

软件环境

资源类型

软件

应用数据库

MYSQL 5.6以上

应用服务器

Tomcat 8.5.1版本

服务器

腾讯云服务器1核 2GB 1Mbps

系统盘

高性能云硬盘

8.1.4关键测试点

(1)用户在微信平台以外能否正常提示微信平台登录

(2)用户是否进行项目申请和项目调度问题反馈。

(3)问题督办页面是否能进行对项目法人的信息进行归集和简单的处理。

(4)发改部门是否能进行项目的审核并且用微信消息模板通知用户。

(5)用户是否能在较短时间查看到项目的可视化展示页面。

8.2测试用例构建

8.2.1测试用例编写约定

(1)对于不同身份的用户登录进行设计多个测试用例。

(2)对于页面INPUT表单提交的功能测试,输入数据测试采用等价类划分的原则,选取不同的输入类型和数据范围

(3)测试用例的用较少的数据测试范围更广的数据类型,降低测试用例中数据耦合度。

(4)无论任何时候,测试用例能够返回胡一个数据结果,以便查看测试的效果。

8.2.2测试用例设

基于微信公众项目的特点,测试用例设计是程序功能流程图与界面关系图入手,书写出测试用例中的执行步骤和测试用例的每一步的预期结果。采用单元测试和白盒测试。对微信平台客服端的输入消息以及回复消息的进行测试,对微信平台的关键功能的代码执行分步的流程进行设计。此过程中,主要用到的测试用例设计:

(1)等价类划分法

用等价类划分法将测试数据分化成几个范围数据,在每个数据类里面寻找一些特殊和普通数据进行测试。

(2)边界值法

系统对数据查询采用循环语句开发时候,经常有不同从0开始和大于小于和大于等于小于等于的方法混用导致系统功能出现偏差。采用数据的边界值可以很好解决这些问题。

(3)判定表法

微信平台中有一些逻辑比较复杂的功能点,例如不同用户登录时候微信服务器发送Code数据然后用code去微信服务器换回ACCESS_TOKEN,然后用ACCESS_OPENID换回OPENID,用OPENID获取用户类型,查找用户登录的类型进行不同的也爱你跳转。所以需要对数据采用严密的测试,以保证正常的显示和操作。

8.2.3关键测试用例

本项目部分关键功能的测试用例,如下表8-4所示:

表8-4 问题模块测试用例

测试目的

测试用户首页的功能

预置条件

正常登录并且进入到相对应的用户首页

序号

测试步骤

预期结果

1

点击“项目申请”按钮

进入到项目申请的表单提交页面

2

在项目申请界面,输入表单相对应的数据和格式。并点击提交

项目申请成功,并且微信客服端有信息通知跳转到项目申请信息页面

3

在项目申请界面,输入错误的数据类型

提示框显示对应字段输入格式错误,取消提交

4

在问项目申请情况界面,点击自己已申请完成的项目

在项目的下面显示该项目的所有信息。

5

点击统计展示界面按钮

展示所有项目信息,并可视化展示。

6

点击联系客服按钮

QQ客服聊天页面

7

点击多维度报表按钮

可视化展示项目清单信息

8

点击“项目反馈”按钮

展会邮箱反馈给管理员

9

点击“加入我们”按钮

跳转到QQ官方群里面

测试状态

已达到“测试”要求

测试结果

功能显示正常

       

8.2.4测试用例维护

在开发过程中,功能需求方法可能变化,或者服务器承载有限,导致现有的测试用例覆盖不完善,此时需要重新增加测试用例来覆盖修改后的系统。

依据不同行业的不同项目生成项目调度清单,并向用户发送信息模板和项目各阶段预警完成时间。找到更多合适测试方法、覆盖面广的测试方法去发现系统中的错误。

9    总结与展望

9.1设计工作总结

在这个互联网高速发展的时代,人们在获取信息和工作方式有了巨大的改变。也促使着我们不断学习获取最新有效的技术。为了结合我国最大的社交平台与创新精神结合。开放固定资产投资监管的平台,鼓励项目法人创造更多效率更高的生产力。项目申请合理分配、有效挖掘出更有利的项目投资,从项目的可行性、回报周期和社会项目的需求,借以实现组织目标的管理活动。为了测试项目开发的功能健全性。建设一个统一、完整、规范的重大重点项目信息库及服务监管平台。

本文的主要工作包括以下几个方面:

(1)     实现1库(项目库管理)、3核(前期工作管理、项目调度管理和问题督察管理)、1端

(微信平台移动端)和1屏(综合分析展示系统)。

(2)     项目申请模块、信息通知模块、客服联系模块、项目信息展示模块、项目问题反馈信息

模块的设计与实现。

(3)     实现全覆盖管理、全流程管理、全可视管理功能。

在对这个微信开发整个设计与开发过程中,对数据交互和MVC框架有了更深层次的了解。分层的思想有了更深刻的领悟。在学习微信平台开发过程,自己学会了怎么利用官方文档去学习和利用,实现自己的需求的功能。自己编写代码的效率提升很多。我使用的是java语言实现,这样下来加强了我的java架构把握和编程能力,更重要的是给了我一种写大项目的整体架构。在毕业项目中,微信平台实现的特殊性,自己购买了腾讯云服务器,温故了对linux服务器系统的操作命令。利用腾讯云的数据库的与自己项目数据进行对接,温故数据库的语言。在这次毕业论文的工作中,我通过对软件工程结构化与面向对象的理论思想的初步实践,理解书本上的每个步骤是多么的关键且不可替代,者此毕业设计给我软件开发很大的帮助和视野,让我明白自己需要还有哪些不懂,需要自己继续前进。

9.2未来工作展望

虽然本项目的微信平台实现了预期的设计目标,但是由于微信公众号的局限性,一些功能,例如微信公众号平台的卡卷、智能设备接入、周边摇一摇的功能需要服务号开给开通。所以以后这些功能还需要有待加入测试完善。这样用户在申请项目金额的时候就可以更好的给用户更佳的体验。这样给平台的发展前景会越来越好。

 

 

谢 辞

本论文的顺利完成,感谢华东交通大学老师们知识传授和江西联微企业班班主任胡桂虹老师不厌其烦细心指导,让我有效地完成了论文所要求的知识积累,也益于黎小龙导师从选题到手机资料和论文确定、开题报告准备的帮助,在此对这些表示十分感谢!另外,特别感谢大学四年里指导我的老师和学长们的帮助,指导我编程思想和技巧,你们打开了我的编程之路,你们的指导与教诲一直记在我心!

感谢和一起一路走下来的异校的同学,同样对编程比较感兴趣的同学,每天的学习动力有很大一部分是来源你们。是你们让我会有每天毒药学习一点,然后晚上和你们一起分享今日的收获!那个时候是我最开心和幸福的时刻。

在大学的四年里面,父母的支不懂我的专业,但是父母会一直支持我现在所做的一些。正是因为他们的那份肯定和信任。更使我继续努力前进的动力。由于软件工程的特殊性经济压力给父母带来很大的负担,感谢学校的奖学金让我有缓解之痛。希望以后自己能靠自己能力去为社会带来一份收益,同样为父母带来更多快乐和幸福。

非常感谢江西联微的胡老师给我毕业设计阶段上的指导,选题讨论、论文格式要求,每周给每个小组开会,了解和监督我们的项目进展。并且在做的不好的地方会仔细的校正。老师的这种无私奉献精神。在此我向她表示我诚挚的谢意。

同时,感谢所有任课老师和所有同学在这四年来给我的指导和帮助不仅教会我很多的知识,更是能映射出做人的准则。在此向他们表示由衷感谢。


参考文献

[1]全国投资项目在线审批监管平台网站。网址:http://www.tzxm.gov.cn/

[2]微信公众号开发概述|微信开放文档。网址:https://developers.weixin.qq.com/doc/offiaccount/Getting_Started/Overview.html

[3]龚让声.微信公众平台二次开发关键技术[J].电子技术与软件工程,2019,(3):46-47.

[4]王俊欢.响应式布局在微网站中的应用研究[J].现代计算机(专业版),2019,(28):48-51.

[5]尤鸿霞.微信公众平台开放的API和各项高级功能建设[J].微信公众平台应用开发实战,2017,(10):268-269.

[7]霍斯特曼科内尔.Java核心技术[M].北京:机械工业出版社,2019.

[8]林寒超.Hibernate技术的研究[J].计算机技术与发展,2019,16(11):112-113.

[9]王学鸣.微信公众号的现状、类型及发展趋势研究[J].无线互联科技,2019,(5):60-61.

[10]赵国旭.关于“民航摆渡人”微信公众号开发运行的报告,2019

[11]钟志勇.微信公众平台应用开发实战,2019,(28):48-51.

[12]李广鹏.基于微信平台的掌课课程设计开发研究[J].山东商业职业技术学院学报,2019,01:24-27.

[13]武高峰.哈密林果微信公众号系统开发[D].北京林业大学,2019.

[14]刘莉,王健庆.基于微信开发模式的学院微信平台开发与实践[J].福建电脑,2019,11:120-121.

[15]李珍.论微信公众平台自媒体的发展问题及应对策略[D].湘潭大学,2019.

[16]李嘉,任嘉莉,刘璇,范静.微信公众平台的用户持续使用意愿研究[J].情报科学,2019,10:26-33+55.

[17]李权.基于微信公众平台的混合式学习模式研究[D].重庆师范大学,2019.

[18]丁如梅,范静,金艳,王怀宁.微信公众平台在胰腺外科护理管理中的应用[J].中西医结合护理(中英文),2019,02:146-148.

[19]高丽,梁海英,白小花,梁丽敏.微信平台在腰椎间盘突出症病人术后延续护理中的应用[J].护理研究,2017,06:758-760.

[20]刘康,徐同坤.基于提高学生兴趣和实践能力的Java程序设计微课教学改革研究[J].电脑迷,2019(01):224.
[21]任灏榕.基于J2ME的Java手机游戏开发技巧[J].电子技术与软件工程,2019(02):46.
[22]雷静,叶煜.融入信息化教学手段的高职Java语言程序设计课程教学模式探索与实践[J].当代教育实践与教学研究,2019(01):15-16.
[23]张之涵,谭霞,温克欢,魏恩伟.基于Android和Java编程的家庭智能用电管理系统设计[J].自动化与仪器仪表,2019(01):121-124.

[24]李运.高校应用文写作学情调查及基于微信公众号开发的信息化教学对策研究——以天津中德应用技术大学为例,2019(000),007

[25]冯志强.基于微信公众号开发与使用技术,2019(000),009

[26]易伟.微信公众平台搭建与开发揭秘,2019(12),002

[27]Ge Wang;Wei Zhang;Runxi Zeng.WeChat use intensity and social support: The moderating effect of motivators for WeChat use2019(91),FEB.

[28]Xu, Xi;Yao, Zhong;Sun, Qing.Social media environments effect on perceived interactivity: An empirical investigation from WeChat moments, 2019(43),2

[29]Chen, Yanhong;Lu, Yaobin;Wang, Bin;Pan, Zhao.How do product recommendations affect impulse buying? An empirical study on WeChat social commerce, 2019(56),2

[30]Jia,Xu;Junbin,Wang;Xiaoxin,Wang;Pin,Lv. A novel online testing system based on the WeChat platform, 2019(27),4

[31]Diana B.Kontsevaia,Paul D.BergerMobile.Marketing in China: Can WeChat Turn Their New Advertising Strategy into a Sustainable Advantage?2019(42),6


附录A 外文翻译—原文部分

Original source: https://doc.xuehai.net/bdc5b148a3c8c5ab962032f13ccdba6b154cc92b4.html

Mobile Marketing in China: Can WeChat Turn Their New Advertising Strategy into a Sustainable Advantage?

Abstract

WeChat is the Chinese equivalent of Facebook. In this paper, we examine mobile marketing in China, and specifically focus on WeChat’s strategy in opening up its platform to advertising. There is profit potential and also risk potential for WeChat in adopting this strategy. We discuss aspects of this strategy along various dimensions, compare WeChat and Facebook where relevant, and stress how and why WeChat needs to be cautious as it goes forward, to avoid various pitfalls that were handled unsuccessfully by Weibo. Core issues that are discussed include differentiation, personalization, customer perception, and the uniqueness of China and the Chinese consumer.

Keywords: WeChat, mobile marketing, social media, marketing in China

1.Introduction

Mobile marketing is the latest acclaimed marketing strategy. At a time when other marketing channels are said to be losing effectiveness, “mobile” has become the best way to reach consumers. Executives from North America are flocking to mobile as the biggest new solution. “Your mobile device quickly has become the easiest portal into your digital self,” proclaims Phil NICKINSON from Android Central. And Google’s Eric Schmidt believes that “Mobile is the future, and there’s no such thing as communication overload.” In sum, the marketing world currently loves mobile marketing! Before getting carried away by wonderful quotes about mobile and its place in everyone’s future, however, one might reflect on the following phrase from Matt Haig, author of Mobile Marketing: The Message Revolution: “End users, not technologies, shape the market. Consequently, marketers need to stay abreast not only of technological developments, but also, of the way people respond to them” (Haig, 2002). In other words, while talking about mobile marketing, it is vital not to forget the users and the place they occupy in the mobile marketing world. In some ways, this mirrors the very long-standing concept usually applied to new products, but also to new services: the distinction between tech-push and demand-pull, and the recognition of both.

2. WECHAT: The App Th at “Stole” Mobile in China

WeChat emerged in 2011, and started out as a purely text-messaging platform created by Tencent Holdings. By 2015, the platform boasted some 600 million daily-active users (Bao, 2015). Its tremendous growth over the last five years disrupted the telecommunications business, by replacing the need to send SMS, and even replaced the need for phone numbers, as people share their WeChat IDs, rather than phone numbers or e-mail addresses. Moreover, since its launch, WeChat has developed an array of applications within its own app. For example, it added a payments system connected to JD.com, one of China’s biggest online stores, ensuring that people increasingly shop on WeChat’s own platform. This, in turn, hurt Chinas e-commerce giant, Alibaba, dominant on the e-commerce scene until then (Rein, 2015). WeChat users can join the network by either giving their WeChat ID, by scanning a personalized QR code, or simply by shaking the phone and letting the device read the other people who have WeChat and are in the area. The massive number of users   WeChat has attracted has not gone unnoticed by Chinas commercial sector. There are QR codes everywhere: on tables, TVs, and billboards, so people can scan them and subscribe to their favorite (or at least moderately interesting) brands in an instant. Businesses have been known to successfully connect with their constituents using the platform by making their own profiles.

3. Differentiation and Revenue

According to Juniper Research, it will be a struggle for mobile messaging companies to sustain revenue, despite growing traffic (Juniper Research, 2015). Many predictions have been made that argue that just because traffic is going to increase, so will the revenue (e.g., SUFANG et al., 2016). Juniper shows, however, that this is not necessarily the case. According to their research, the revenue generated from each message sent over apps similar to those of WeChat will be less than 1% of what will be generated from SMS and MMS (Juniper Research, 2015). They predict that, despite the doubling of mobile traffic, free-messaging platforms will struggle to turn that traffic into revenue, even for advertising-enabled platforms. In light of possible stagnation of revenue from mobile messaging platforms, will a mobile marketing strategy hurt WeChat’s revenue by weakening its focus on users? First, lets examine other companies which have been successful with native advertising, and their future strategies.   

3.1 Facebook: Why Mobile Needs to Differentiate   

Facebook started out as a single social website based in the United States and has since expanded its universe to include a variety of apps such as WhatsApp, a text communications app, Instagram, a photo sharing app, and Messenger, Facebook’s own text messaging app. Facebook’s biggest challenge in an immensely competitive space is to ensure that their users stay engaged with their universe. Acquisition of apps such as WhatsApp and Instagram was a way to ensure that Facebook gets access to a variety of user data, even when users are not directly connected to Facebook (Johnson, 2016). Of course, Facebook needs a lot of data to sustain their main source of revenue: native advertising. Facebook began using native advertising in 2011. While it did not exactly invent the practice, Facebook is the one that perfected it, by giving businesses access to an unprecedented product—a social-media platform that revolutionized communication, and thus, became ingrained and entrenched in the world’s mind. Facebook ads work on a pay-per-click or pay-per-impression basis, and vary in price, depending on the type of audience being targeted. Many businesses jumped on the opportunity to not only connect with customers using their social profiles or “pages,” but also to directly impress upon a tailored audience. Indeed, Facebook remains one of the platforms with the most detailed targeting options available. Despite Facebook’s using their community as their main product, they have been very successful in remaining the number one social-media platform and have steadily begun their migration to mobile. In 2014, Facebook’s Messenger was the number one messenger accessed per month in the USA, followed by Google+, then SnapChat, and fourth being Facebook-owned Instagram (Kokalitcheva, 2015). However, there are more changes coming. In the fast world of mobile advertising, it is no longer effective to rely on users simply logging in onto a network. People have to be engaged; otherwise there is no utility for them in using an application. That is why, in recent years, Facebook has put a lot of focus on developing its messaging platform into an all-around communications platform. Its latest challenge is to integrate services and eventually, payments, to ensure that users can derive continued benefit (Gottfried, 2013).

While diversification of its product may seem natural, it also comes at a time when Facebook posted drops in advertising revenues (Johnson, 2016). The revenue drop suggests that monetizing ads might no longer be enough to sustain growth in the long run, and that other business models might be necessary. The drop in revenues and differentiations supports Juniper Research findings that user growth does not always equal revenue growth, despite the disbelief it has received in the literature.

3.2 Revenue from New Markets

Even if Juniper Research is wrong and the text messaging business will continue to grow at the current pace, turning traffic into revenue, it is not apparent how WeChat   could replicate the same success as Facebook. Recently, Facebook’s ad revenue came mainly from foreign countries, rather than from inside its “home” country, the United States (Gottfried, 2013). That is primarily because people in the U.S. have likely become desensitized to social ads, if not leaving the platform altogether.

If WeChat’s user base becomes similarly desensitized, expansion into foreign markets will prove very difficult, because 93% of its operations is concentrated in the Chinese Mainland. They have a small presence in the U.S., Hong Kong, Europe and other locations, but as noted, these markets account for only about 7% of their influence (Marketline2013). While WeChat can spend resources at dominating other local markets, it is unlikely that they will be able to replace the competition already within those countries. In fact, WeChat owes its beginning success to its own innovation in its local market. For example, by adding a voice note it became a very useful tool, taking into account how the Chinese language is structured (Rein, 2015). Its entry into foreign markets would have to replicate the same vigor and localization they showed in their home market, which could be difficult and expensive, and may even require help from a local partner.

4. Customer Perception and Personalization

4.1. Chinese Consumers and Mobile Marketing

The Chinese consumer perception of mobile marketing has changed over time. While blanket marketing no longer works, personalized, timely ads, can still be effective. Utility is the key. Research conducted in Taiwan in 2006 suggested that users very much disliked the idea of mobile advertising; the majority perceived mobile ads as “annoying, excessive and offensive (SUFANG et al., 2016). In fact, when people received mobile advertisements, most put it aside to read later. Mobile was not an effective communications channel. Since then, however, both practices and perceptions of mobile marketing have changed significantly, and mobile marketing has become much more targeted, localized and optimized.

When mobile ads are optimized, consumers tend to tolerate them much better.

What does optimized entail? It could mean security, localization for the market, delivering ease of use, or serving a specific purpose, such as communication or payment, or any combination of these. Adaptation to a certain market plays a limited role, in that there are specific features that Chinese consumers will appreciate, such as the ability to easily compare products and prices when shopping. Yet, that’s not the most influential characteristic when it comes to Chinese consumers desire to spend time and money on mobile. In fact, what had the most positive effect on mobile purchase behavior is perceived usefulness (Gong et al., 2013). Therefore, the more uniquely useful the app, the more people will continue to use it. Services, again, play the central role in customer satisfaction. How is WeChat going to grow its revenue through ads, without compromising the current utility it has made for itself?

4.2 Dangers of Over-Advertising

WeChat knows that there is a potential risk of losing some of its user base. Thus, it began implementing mobile ads very cautiously. Asians, on average, are less receptive to ads imbedded in mobile, as compared to Europeans and Americans (Olson, 2015). So, WeChat restricted access to its users. Indeed, at first, only vendors who talked directly to the platform could launch a campaign.   There is a reason WeChat was aware that it needed to be cautious when implementing ads. It learned from Weibo’s experience only a few years before, when Weibo did the same thing with mobile marketing. Weibo is China’s Twitter-like microblogging platform that saw a rapid decline in its user base after it overwhelmed its users with a nonstop myriad of ads (Olson, 2015). Weibo ended up losing a lot of market share (to WeChat) because users were dissatisfied. Using Weibo's service simply became less useful to (former) users, because of the effort of getting past the ads. Restricting access to its audience was one of the best things that WeChat could do in order to get access to potential revenue from ads, and yet keep its users faith. As the program grows, however, the protection of users is likely to become de-emphasized, and more and more ads will appear in user feeds.

4.2 Data Protection

Data security could become a problem in the future. With the increased need for   information about target audiences, many social-media platforms are now turning to mining images that are found on peoples profiles as a source of information (Macmillan, 2016). Given WeChat’s fairly basic targeting-scheme, it seems unlikely that they will employ this technology soon; but, if they are to compete with the likes of Facebook, it is only a matter of time until they also have to adopt similar technologies to provide the most transparent view of their audience. All this does is to guarantee that the users are no longer at the center of the product; rather, the users become the product.

WeChat has been excellent thus far in guessing its user needs, and has seen great growth because of that. By entering into the world of mobile marketing, it may have endangered its position simply by switching their main user-base from the people using the app, to the companies who will pay for their ads.

4.3 Me-Marketing

Alongside short-term revenue, WeChat’s entry into mobile advertising is meant to push the envelope and immediately begin with personalized marketing. WeChat already showed that its advertising is going to be completely different, by raising demand for its premium users. Yet, it’s unclear how this model will evolve in the future. Will WeChat lower its prices and become China’s equivalent of Facebook advertising? If so, why not start out with low prices from the beginning, as Facebook did? The strategy is especially unclear, because the first ever campaign it conducted raised a few eyebrows and bruised some egos. The first campaign was signed with BMW. BMW wanted to target only affluent, educated people in the so-called first and second tier cities (Beijing, Shanghai and other large cities). People who did not fit the targeting criteria saw ads for soda and smartphones instead. People who did fit the category saw BMW ads pop up on their Moments page. The highly-anticipated opening to WeChat’s own platform was noticed by many, and many also noticed the blatant targeting. While the BMW’s brand soared immediately after the campaign, it soon received a backlash, as people who did not see BMW’s ad appear in their newsfeeds began referring to themselves as DIAO, a polite term for loser (Loras,2015). WeChat came away happy with the additional press the campaign received; yet, it managed to alienate some of its community in return for securing a bold entry into the world of mobile marketing. Alienation, obviously, is not useful to engendering success.

5 In Summary—Focus On Utility

WeChat grew into a huge, successful application, as a result of a combination of fortunate events and Chinese socio-cultural needs and characteristics. It began its successful rein as an innovator for the Chinese market, creating new app features specifically useful for the Chinese speaking population. Moreover, as noted earlier, little separation between private and professional life in China aided WeChat’s journey to becoming the one app that dominates the Chinese ecommerce, social media and telecom space. Tencent, WeChat’s parent company, also had an easier time than similar global companies such as Facebook, in terms of data-privacy issues, as it strongly cooperates with the Chinese government. It also indirectly benefits from the fact that it is difficult to carry a civil case through the Chinese court system.

From the beginning, Tencent’s WeChat put the customer at the center of its platform; thanks to that, it reaped huge benefits. Interestingly, this is not a “rocket science idea. For many years, the biggest change in the field of marketing, accompanied by the use of the internet, has been the movement from a transaction-based approach to a customer-centric approach. WeChat's approach can be thought of as yet another extension of this very prevalent principle.

WeChat first dominated Chinese communications, then payments, and now it is moving into becoming a full-fledged mobile social-platform, including mobile advertisements. Its success with this will depend on two vital factors. The first is that mobile ad revenue may actually decrease in the long run, despite increasing traffic. The evidence of this potential decline is exemplified by Facebooks attempt to differentiate their offering the way WeChat already has, by incorporating payments and other services within its own application.

The second vital factor is to remain relevant to its users. WeChat’s platform cannot work if all its users decide to leave. Are people actually going to be receptive to seeing ads among their Moments? Historically, Chinese users have not been too friendly to over-advertising, as the case of WEIBO decline suggests. Plus, WeChat may have already started off on the wrong foot with its first campaign featuring BMW that targeted only WeChat’s affluent users. Furthermore, there may be growing privacy issues that the Chinese government and society have yet to tackle—for example, issues such as image mining. At what point will brands actually be infringing on user privacy?

The good news for WeChat is the fact that Chinese consumers seem to care mostly about the usefulness of their apps. Security and ease-of-use concerns do not influence their online behavior positively or negatively. The users who are already online understand the implications of engaging with online platforms, and giving up some private data does not discourage them from engaging and shopping online. As a result, WeChat must focus specifically on remaining useful to its user base—exactly how it was when it started out.

Mobile advertising is a potentially huge source of revenue, especially in the short term. To be sustainable in the long-run, however, WeChat must remember that mobile interaction is not just about the technology and the revenue. Rather, it’s also about the user and the utility the users are able to derive. Users are the ones who shape the market, by choosing to log-on to a given social or mobile platform. Since it is their choice, mobile platforms must keep in mind that their users needs and their experience on the platform is what matters most, or else they risk that their users may log-off forever.


附录B 外文翻译—译文部分

原文出处:https://doc.xuehai.net/bdc5b148a3c8c5ab962032f13ccdba6b154cc92b4.html

中国的移动营销:微信公众号广告营销转化为可持续的竞争优势吗?

摘要

在中国微信相当于是Facebook。一个应用抗震计算题/程序。在本文中,我们研究了中国的移动营销,特别是微信在公共平台方面的广告策略。Wei信的广告策略既有盈利潜力,但也暗含风险。我们全面分析了这一广告策略,比较了微信和Facebook的相关性,并强调了微信在发展过程中需要警惕的方面,以免重蹈微博的覆辙。本文讨论的核心问题包括差异化、个性化、客户感知以及中国消费者的独特性。

关键词:微信,移动营销,社交媒体,中国营销

1.介绍

       移动营销是最新备受好评的营销策略。在据说其他营销渠道正在失去效力的时候,“移动”已经成为接触消费者的最佳方式。北美的高管们正蜂拥而至,将移动作为最大的新解决方案。Android中心的Phil Nickinson宣称:“你的移动设备很快就成为了进入数字自我的最简单的门户。”。而谷歌的埃里克·施密特认为“移动是未来,不存在通信过载的问题”,总之,营销界目前热爱移动营销!然而,在被有关移动及其在每个人的未来中的地位的精彩引述所陶醉之前,人们可能会反思一下《移动营销:信息革命》一书作者马特•黑格(Matt Haig)的一句话:“最终用户而非技术塑造了市场。因此,营销人员不仅要跟上技术发展的步伐,还要跟上人们对技术发展的反应”(黑格,2002)。换言之,在谈论移动营销时,千万不要忘记用户以及他们在移动营销世界中所占据的位置。在某种程度上,这反映了通常应用于新产品和新服务的长期概念:技术推动和需求拉动之间的区别,以及两者的认可。

2.微信:中国“偷”手机应用

       微信出现于2011年,最初是腾讯控股创建的纯短信平台。到2015年,该平台每天拥有约6亿活跃用户(Bao,2015)。它在过去五年中的巨大增长通过取代发送短信的需求,甚至取代了电话号码的需求,扰乱了电信业务,因为人们共享他们的微信ID,而不是电话号码或电子邮件地址。此外,微信自推出以来,已经在自己的应用程序中开发了一系列应用程序。例如,它增加了一个与中国最大的在线商店之一JD.com连接的支付系统,确保人们越来越多地在微信自己的平台上购物。这反过来又伤害了中国的电子商务巨头阿里巴巴,阿里巴巴在此之前一直在电子商务领域占据主导地位(Rein,2015)。微信用户可以通过提供自己的微信ID、扫描个性化二维码或简单地摇动手机,让设备读取微信用户和该地区其他人的信息来加入网络。微信吸引的大量用户并没有被中国商业部门忽视。到处都有二维码:在桌子、电视和广告牌上,人们可以扫描二维码,然后立刻订阅他们最喜欢的(或者至少是有意思的)品牌。众所周知,企业通过制作自己的简介,成功地与使用该平台的成员建立联系。

3.差异化与收益

       据Juniper Research称,尽管流量不断增长,但移动通信公司仍难以维持收入(Juniper Research,2015年)。许多预测认为,仅仅因为交通量会增加,收入也会增加(例如,Su fang等人,2016年)。然而,刺柏表明,情况未必如此。根据他们的研究,通过与微信类似的应用程序发送的每条信息所产生的收入将低于短信和彩信所产生收入的1%(Juniper research,2015年)。他们预测,尽管移动通信流量翻了一番,免费信息平台将很难将流量转化为收入,即使是广告平台。鉴于手机短信平台的收入可能停滞,移动营销策略是否会削弱微信对用户的关注,从而损害微信的收入?首先,让我们来看看在本土广告方面取得成功的其他公司,以及它们未来的战略。

3.1Facebook:为什么移动需要与众不同

       Facebook最初是一个单一的基于美国的社交网站,后来扩展了它的应用范围,包括各种应用,如WhatsApp,一个文本通信应用,Instagram,一个照片分享应用,以及Facebook自己的短信应用Messenger。在竞争激烈的市场中,acebook最大的挑战是确保用户与他们的世界保持联系。收购WhatsApp和Instagram等应用程序是确保Facebook获得各种用户数据的一种方式,即使用户没有直接连接到Facebook(Johnson,2016)。当然,Facebook需要大量数据来维持其主要收入来源:本土广告。Facebook从2011年开始使用本地广告。虽然Facebook并没有完全发明这种做法,但它是完善这种做法的人,它让企业获得了一种前所未有的产品——一种彻底改变了沟通方式的社交媒体平台,从而变得根深蒂固、根深蒂固。Facebook的广告是按点击付费或按印象付费的,根据目标受众的类型,广告价格会有所不同。许多企业抓住了这个机会,不仅利用他们的社交资料或“页面”与客户建立联系,而且还直接给量身定制的受众留下深刻印象。事实上,Facebook仍然是拥有最详细目标选择的平台之一。尽管Facebook将其社区作为主要产品,但他们在保持社交媒体平台第一的地位方面非常成功,并稳步开始向移动领域的迁移。2014年,Facebook的Messenger在美国每月访问量排名第一,其次是Google+,然后是SnapChat,第四位是Facebook旗下的Instagram(Kokalicheva,2015)。然而,还有更多的变化即将到来。在快速的移动广告世界中,仅仅依靠用户登录网络已经不再有效。人们必须参与进来,否则他们在使用应用程序时没有任何用处。正因为如此,近年来,Facebook一直把大量精力放在将其信息平台发展成为一个全方位的通信平台上。它最新的挑战是整合服务和最终的支付,以确保用户能够获得持续的收益(Gottfried,2013)。

       虽然其产品的多样化看起来很自然,但同时Facebook公布广告收入下降(Johnson,2016)。收入下降表明,从长远来看,广告货币化可能不再足以维持增长,而其他商业模式可能是必要的。收入和差异化的下降支持了Juniper Research的发现,用户增长并不总是等于收入增长,尽管它在文献中受到了怀疑。

3.2新市场收益

       即使Juniper Research是错误的,而且短信业务将继续以目前的速度增长,将流量转化为收入,微信如何复制与Facebook一样的成功还不明显。最近,Facebook的广告收入主要来自国外,而不是来自其“本土”国家美国(Gottfried,2013)。这主要是因为如果不完全离开这个平台的话,美国人可能会对社交广告变得不敏感。

       如果微信的用户群变得同样不敏感,那么向国外市场的扩张将非常困难,因为其93%的业务集中在中国大陆。他们在美国、香港、欧洲和其他地方有少量的存在,但正如所指出的,这些市场仅占其影响力的7%(市场线,2013)。虽然微信可以将资源用于主导其他本地市场,但它们不太可能取代这些国家已经存在的竞争。事实上,微信最初的成功归功于它在本地市场的创新。例如,考虑到汉语的结构,通过添加语音备忘,它成为一个非常有用的工具(Rein,2015)。它要进入外国市场,就必须复制它们在本国市场上表现出的同样活力和本地化,这可能是困难和昂贵的,甚至可能需要当地合作伙伴的帮助。

4.顾客感知和个性化

4.1.中国消费者与移动营销

       随着时间的推移,中国消费者对移动营销的看法发生了变化。虽然铺天盖地的营销不再奏效,个性化、及时的广告,仍然可以有效。实用是关键。2006在台湾进行的研究表明,用户非常不喜欢移动广告的想法;大多数人认为移动广告“烦人、过度和冒犯”(苏芳等人,2016)。事实上,当人们收到手机广告时,大多数人都会把它放在一边待会儿阅读。移动不是一个有效的通信渠道。然而,从那时起,移动营销的实践和观念都发生了重大变化,移动营销变得更有针对性、本地化和优化。

当移动广告得到优化时,消费者往往会更好地容忍它们。

       “优化”意味着什么?它可能意味着安全性、市场本地化、提供易用性或服务于特定目的,例如通信或支付,或它们的任何组合。适应某个市场的作用是有限的,因为中国消费者会欣赏到一些特定的特点,例如在购物时能够很容易地比较产品和价格。然而,对于中国消费者在手机上花费时间和金钱的欲望来说,这并不是最有影响力的特征。事实上,对手机购买行为产生最积极影响的是感知有用性(Gong等人,2013)。因此,应用程序的独特用途越大,将有越多的人继续使用它。同样,服务在顾客满意度中起着中心作用。微信将如何通过广告来增加收入,同时又不损害它目前为自己创造的效用?

4.2过度广告的影响

       微信知道有可能失去一些用户群。因此,它开始非常谨慎地实施移动广告。与欧洲人和美国人相比,亚洲人对手机广告的接受度平均较低(Olson,2015)。因此,微信限制了用户的访问。事实上,一开始,只有与平台直接对话的供应商才能发起一场活动。微信意识到在做广告的时候要谨慎是有原因的,它是从几年前微博做手机营销的经验中学到的。微博是中国类似于推特的微博平台,在其连续无数的广告让用户不知所措之后,其用户基础迅速下降(Olson,2015)。微博最终失去了很多市场份额(微信),因为用户不满意。使用微博的服务对(以前的)用户来说就变得不那么有用了,这是因为人们努力摆脱广告的束缚。为了从广告中获得潜在收益,同时保持用户的信心,限制对其受众的访问是微信所能做的最好的事情之一。然而,随着程序的发展,对用户的保护可能会变得不那么重要,越来越多的广告将出现在用户订阅中。

4.3.数据保护

       数据安全将来可能成为一个问题。随着对目标受众信息需求的增加,许多社交媒体平台现在正转向挖掘人们个人资料中的图像作为信息来源(麦克米伦,2016)。考虑到微信相当基本的目标定位方案,他们似乎不太可能很快采用这项技术;但是,如果他们要与Facebook这样的公司竞争,他们也必须采用类似的技术来提供最透明的受众视角,这只是时间问题。所有这些都是为了保证用户不再是产品的中心,而是用户变成了产品。

       迄今为止,微信在猜测用户需求方面表现出色,并因此获得了巨大的增长。通过进入移动营销领域,它可能已经危及到自己的地位,只需将其主要用户群从使用该应用的人转移到将为其广告付费的公司。

4.4.市场营销

       除了短期收入外,微信进入移动广告领域的目的是推动这一进程,并立即从个性化营销开始。微信已经表明,它的广告将完全不同,通过提高其“优质”用户的需求。然而,目前还不清楚这种模式在未来会如何发展。微信会不会降低价格,成为中国Facebook广告的代名词?如果是这样,为什么不像Facebook那样从一开始就以低价开始呢?这一策略尤其不清楚,因为它进行的第一次竞选活动引起了一些不满,挫伤了一些自尊心。第一个活动是与宝马签约的。宝马只想瞄准那些在所谓的一、二线城市(北京、上海等大城市)受过良好教育的富人。不符合目标标准的人看到的是汽水和智能手机的广告。那些符合这一类别的人看到宝马广告弹出在他们的时刻页面。备受期待的微信平台开放受到了很多人的关注,很多人也注意到了这种公然的针对性。虽然宝马的品牌在竞选后立即飙升,但很快就受到了强烈反响,因为没有看到宝马广告出现在他们的新闻提要中的人开始称自己为刁,一个失败者的礼貌用语(Loras,2015)。微信很高兴这场运动收到了更多的压力;然而,它设法疏远了一些社区,作为回报,它获得了一个大胆进入移动营销世界的机会。显然,疏远对产生成功是没有用的。

5.总的来说,注重实用性

       由于幸运事件和中国社会文化需求和特点的结合,微信发展成为一个巨大的、成功的应用。作为中国市场的一个创新者,它开始成功地控制自己,为说汉语的人群创建了特别有用的新应用程序功能。此外,如前所述,微信在中国的私人生活和职业生活几乎没有什么区别,这有助于微信成为主宰中国电子商务、社交媒体和电信领域的一款应用程序。在数据隐私问题上,微信的母公司腾讯(Tencent)也比Facebook等类似的全球公司日子好过一些,因为腾讯与中国政府有着密切的合作关系。它还间接受益于中国法院系统难以审理民事案件。

       从一开始,腾讯微信就把客户放在了平台的中心,并因此获得了巨大的收益。有趣的是,这不是一个“火箭科学”的想法。多年来,伴随着互联网的使用,市场营销领域最大的变化是从基于交易的方式转变为以客户为中心的方式。微信的方法可以看作是这一非常普遍的原则的又一个延伸。

       微信首先主导了中国的通信,然后是支付,现在它正在成为一个成熟的移动社交平台,包括移动广告。它在这方面的成功将取决于两个重要因素。首先,尽管流量不断增加,但从长远来看,移动广告收入实际上可能会减少。Facebook试图通过将支付和其他服务整合到自己的应用程序中,以区别微信现有的服务方式,就证明了这种潜在的下降趋势。

       第二个重要因素是与用户保持联系。如果所有用户都决定离开,微信平台就无法工作。人们真的会接受在他们的时刻看到广告吗?从历史上看,中国用户对过度广告并不太友好,正如微博的衰落所表明的那样。另外,微信可能已经开始走错了一步,它的第一个活动是宝马(BMW),只针对微信的富裕用户。此外,中国政府和社会可能还没有解决越来越多的隐私问题,例如图像挖掘等问题。在什么情况下,品牌会真正侵犯用户隐私?

       微信的一个好消息是,中国消费者似乎主要关心他们的应用程序的有用性。安全性和易用性问题不会对他们的在线行为产生正面或负面影响。已经在线的用户了解与在线平台接触的含义,放弃一些私人数据并不妨碍他们在线参与和购物。因此,微信必须专注于保持对用户群的有用性,确切地说,微信刚起步时是怎样的。

       移动广告是潜在的巨大收入来源,尤其是在短期内。然而,要在长期内保持可持续性,微信必须记住,移动交互不仅仅是技术和收入的问题。相反,它还涉及用户和用户能够获得的实用程序。用户是通过选择登录给定的社交或移动平台来塑造市场的人。因为这是他们的选择,移动平台必须记住,他们的用户需求和他们在平台上的体验才是最重要的,否则他们的用户可能会永远注销。


附录C 软件使用说明书

用户使用自己微信进行登录界面,如图10-1所示

 

图10-1 用户登录

微信没有注册可以注册登录如图10-2所示:

 

图10-2 用户注册

进入不同用户进入相对应的用户首页,如图10-3所示:

 

图10-3 用户首页

项目法人对项目申请和项目信息查看,如图10-4所示:

 

图10-4 项目申请和项目信息查看

附录D 主要源代码

前端主要代码:

<div class="content">
    <div class="form sign-in">
        <h1 style="font-size: 5em;padding-top: 150px;color: darkviolet;">欢迎回来</h1>
        <label>
           <select id="chenqiwei">
                <option id="options">请选择登录类型</option>
                <option>项目法人</option>
                <option>主管部门</option>
                <option>发改部门</option>
            </select>
        </label>
        <label>
            <input type="text" placeholder="请输入您的邮箱号码" id="email1">
        </label>
        <label>
            <span></span>
            <input type="password" placeholder="请输入您的密码" id="password3">
        </label>
        <span class="forgetMe" id="forgetPassword">忘记密码?</span>
        <button type="button" class="submit" id="login">登 录</button>
        <button type="button" class="fb-btn" id="wechat" style="font-size: 2.7em;margin-top:60px;">使用 <span> 微信扫码</span> 帐号登录</button>
    </div>
    <div class="sub-cont">
        <div class="img">
            <div class="img__text m--up">
                <h2 style=" font-size: 2.7em;color: red;">还未注册?</h2>
                <p style="color: dodgerblue;font-size: 2.7em;">立即注册,发现机会!</p>
            </div>
            <div class="img__text m--in">
                <h2 style="font-size: 2.7em;color: red;">已有帐号?</h2>
                <p style="color: dodgerblue;font-size: 2.7em;">有帐号就登录吧,好久不见了!</p>
            </div>
            <div class="img__btn">
                <span class="m--up" style="font-size: 2.7em;">注 册</span>
                <span class="m--in" style="font-size: 2.7em;">登 录</span>
            </div>
        </div>
        <script src="Jquery/jquery.js"></script>
<%--<script src="UserLogin/js/script.js"></script>--%>
</body>
</html>
<script src="Jquery/jquery.js"></script>
<script>
    $(document).ready(function(){
        $("#chenqiwei").click(function(){
            $("#options").hide();
        });
        $("#cqw").click(function(){
            $("#optionss").hide();
        });
        $("#login").click(function () {
            var options=$("#select option:selected");
            $.ajax({
                url:'LoginServlet',
                type:'post',
                data:{
                    email:$("#email1").val(),
                    password:$("#password3").val(),
                    type:options.text()
                },
                success:function (result) {
                    alert(result)
                }
            });
        });
        $("#wechat").click(function () {
            // var src1="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+ticket;
           
if($(".showCode").is(':hidden')||$(".showCode").length==0){
                $("#login").after("<img class='showCode' src=\"UserLogin/images/wechat.png\"/>");
            }
            else {
                $(".showCode").remove();
            }
        });
        $(".showCode").click(function () {
            // var src1="https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket="+ticket;
           
if($(this).is(':hidden')||$(this).length==0){
                $("#login").after("<img class='showCode' src=\"UserLogin/images/wechat.png\"/>");
            }
            else {
                $(this).remove();
            }
        });
        $("#forgetPassword").click(function () {
            location.href="ForgetPasswordServlet";
        });
        //注册验证格式
       
$("#register").click(function () {
            var options=$("#select option:selected");
           var options=$("#select option:selected");
            $.ajax({
                url:"EmailLoginServlet",
                type:"POST",
                cache:false,
                async:false,
                data: {
                    username:$("#username").val(),
                    email: $("#email").val(),
                    password:$("#password").val(),
                    type:$("#cqw").find("option:selected").text(),
                    code:$("#code").val()
                },
                success:function () {
                    alert("注册成功");
                }
            })
        });
    });
    document.querySelector('.img__btn').addEventListener('click', function() {
        document.querySelector('.content').classList.toggle('s--signup')
    })
    var obj = document.getElementById("getCode");
    var flag = 10;
    //注册点击事件
   
obj.onclick=function(){
        if(flag<10){
            return;
        }
        //ajax引擎(浏览器内部的小型浏览器)
       
var xhr = new XMLHttpRequest();
        //相当于你打开浏览器输入需要访问的地址
       
xhr.open("post","EmailCheckServlet?email="+document.getElementById("email").value,true);
        //监控请求状态 判断是否请求完成,回调函数,事件监听函数
       
xhr.onreadystatechange=function(){
            if(xhr.readyState==4&&xhr.status==200){
                alert("验证码已发送,请注意查收!");
            }
        }
        xhr.send(null);
        timer();
    }
    function timer(){
        flag--;
        obj.innerHTML=flag+"秒重获";
        if(flag==0){
            obj.innerHTML="获验证码";
            flag =10;
        }else{
            setTimeout("timer()",1000);
        }
    }
</script>

 

 

后台主要代码:

    private static void getToken(){
        String url=GET_TOKEN_URL.replace("APPID",APPID).replace ("APPSECRET",APPSECRET);
        String tokenStr=Joke.get(url);
        JSONObject jsonObject=JSONObject.fromObject(tokenStr);
        String token=jsonObject.getString("access_token");
        String expiresIn=jsonObject.getString("expires_in");
        accessToken=new AccessToken(token,expiresIn);

    }
        public static String getAccessToken(){
        if (accessToken==null||accessToken.isExpired1()){
            getToken();
        }
        return accessToken.getAccessToken();
    }
    public static String getAccessToken2(){
        if (accessToken.getAccess_token().equals("")||accessToken.isExpired2()){
            getToken1();
        }
        return accessToken.getAccessToken();
    }
    @Override
    /*
     *
接受微信服务器的消息
     * */
   
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf8");
        response.setCharacterEncoding("utf8");
        Map<String,String> requestMap=ConnectWeChatServlet.parseRequest(request.getInputStream());
        String respXml =ConnectWeChatServlet.getResponse(requestMap);
        System.out.println("回复消息测试xml:"+respXml);
        PrintWriter out =response.getWriter();
        out.print(respXml);
        out.flush();
        out.close();
        //准备回复的数据包
   
}
    //用于处理所有事件的消息回复
   
private static String getResponse(Map<String, String> requestMap) {
        BaseMessage msg=null;
        String msgType=requestMap.get("MsgType");
        switch (msgType){
            case "text":
                msg=dealTextMessage(requestMap);
                break;
            case "image":
                msg=dealImageMessage(requestMap);
                break;
            case "voice":
                msg=dealVoiceMessage(requestMap);
                break;
            case "video":
                msg=dealTextMessage(requestMap);
                break;
            case "shortvideo":
                msg=dealTextMessage(requestMap);
                break;
            case "location":
                msg=dealLocationMessage(requestMap);
                break;
            case "link":
                msg=dealLinkMessage(requestMap);
                break;
            case "event":
                msg=dealEventMessage(requestMap);
                break;
            default:
                msg=dealTextMessage(requestMap);
                break;
        }
        //把消息对象处理为xml数据包
       
return DealMsg(msg);

    }

       public static String robotchat(String msg) throws Exception {
        String APIKEY = "a7ffa2f749b14faf999a22fb0273cb7c";
        String question = msg;//这是上传给云机器人的问题
        //String INFO = URLEncoder.encode("北京今日天气", "utf-8");
       
String INFO = URLEncoder.encode(question, "utf-8");
        String getURL = "http://www.tuling123.com/openapi/api?key=" + APIKEY + "&info=" + INFO;
        URL getUrl = new URL(getURL);
        HttpURLConnection connection = (HttpURLConnection) getUrl.openConnection();
        connection.connect();
        // 取得输入流,并使用Reader读取
       
BufferedReader reader = new BufferedReader(new InputStreamReader( connection.getInputStream(), "utf-8"));
        StringBuffer sb = new StringBuffer();
        String line = "";
        while ((line = reader.readLine()) != null) {
            sb.append(line);
        }
        reader.close();
        // 断开连接
       
connection.disconnect();
        System.out.println(sb);
        return sb.toString();

    }
    /**
     *
对msg处理
     * @param msg
     * @return
     */
   
public static String DealMsg(BaseMessage msg){
        if (msg!=null){
            System.out.println("转换成xml格式:"+beanToXml(msg));
            return beanToXml(msg);
        }
        else return null;
    }
    public static String Welcome(){
        return "感谢你的关注!\n如果有一天你离开了我,请记得我们相爱过!";
    }
    public static String beanToXml(BaseMessage msg) {
        XStream stream =new XStream();
        //把处理的Xstream注解类同微信服务器
       
stream.processAnnotations(TextMessage.class);
        stream.processAnnotations(imageMessage.class);
        stream.processAnnotations(musicMessage.class);
        stream.processAnnotations(NewsMessage.class);
        stream.processAnnotations(videoMessage.class);
        stream.processAnnotations(voiceMessage.class);
        String xml =stream.toXML(msg);
        System.out.println("xml"+xml);
        return xml;
    }

    //处理文本消息
   
private static BaseMessage dealTextMessage(Map<String, String> requestMap) {
        String msg =requestMap.get("Content");
        if (msg.indexOf("天气+")!=-1){
            msg=msg.replace("天气+","");
            String resp=Weather(msg);
            TextMessage tm =new TextMessage(requestMap,resp);
            return tm;
        }
        if (msg.equals("登录")){
            String url="https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect";
            url=url.replace("APPID","wxcea26c733963d889").replace("REDIRECT_URI","http://www.runwsh.com/chen/agreeMe").replace("SCOPE","snsapi_userinfo");
            msg="<a href=\""+url+"\">登录请击这里</a>";
            TextMessage tm =new TextMessage(requestMap,msg);
            return tm;
        }
        if(msg.equals("消息动态")){
            List<Article> articles=new ArrayList<>();
            articles.add(new Article("项目投资监管平台头条推荐","特朗普宣布暂停想世卫组织拨款,联合国秘书长表态!","https://dss3.baidu.com/9fo3dSag_xI4khGko9WTAnF6hhy/super/crop=144,0,1728,1080/sign=d190fab2ba4543a9e154a08c2326beb6/203fb80e7bec54e754583e58b4389b504fc26a3b.jpg","https://mp.weixin.qq.com/s?__biz=MjM5MjAxNDM4MA==&mid=2666309146&idx=1&sn=338c82dd3d13c42d30cf520e9041b1d0&scene=0"));
            NewsMessage newsMessage=new NewsMessage(requestMap,"1",articles);
            System.out.println("newMessage:"+newsMessage);
            return newsMessage;
        }
            //回复语音
   
private static BaseMessage dealVoiceMessage(Map<String, String> requestMap){
        System.out.println("【语音服务器传过来的requestMap】"+requestMap);
        String Content=requestMap.get("Recognition");
        System.out.println("【语音内容获取识别】"+Content);
        requestMap.remove("MediaId");
        requestMap.remove("Format");
        requestMap.remove("Recognition");
        requestMap.put("Content",Content);
        System.out.println("【提交给服务器的requestMap】"+requestMap);
        return dealTextMessage(requestMap);
    }
    //回复图片
   
private static BaseMessage dealImageMessage(Map<String, String> requestMap){
        String PicUrl=requestMap.get("PicUrl");
        // 初始化一个AipOcr
       
TextMessage tm=new TextMessage(requestMap,PicUrl);
        return tm;
    }
         //接受微信服务器xml并解析map
   
private static Map<String, String> parseRequest(ServletInputStream is) {
        Map<String,String> map=new HashMap<>();
        SAXReader reader =new SAXReader();
        try {
            Document document = reader.read(is);
            Element root =document.getRootElement();
            List<Element> elements=root.elements();
            for (Element e:elements){
                map.put(e.getName(),e.getStringValue());
            }

        } catch (DocumentException e) {
            e.printStackTrace();
        }

        return map;
    }

    /**
     *
进行验证是否身份匹配
     * @param request
     * @param response
     * @throws ServletException
     * @throws IOException
     */
   
@Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        String signature = request.getParameter("signature");
        String timestamp = request.getParameter("timestamp");
        String nonce = request.getParameter("nonce");
        String echostr = request.getParameter("echostr");
        System.out.println(""+signature +"@"+timestamp +"$"+nonce +"^"+echostr);
        PrintWriter out = response.getWriter();
        if(com.hnu.scw.utils.CheckConnectUtils.checkConncetWithWeChat(signature,timestamp,nonce)){
            out.print(echostr);
        }
    }

    /**
     *
上传素材
     * @param path
     * @param type
     * @return
     */
   
public static String upload(String path,String type){
        File file=new File(path);
        String url="https://api.weixin.qq.com/cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE";
        url=url.replace("ACCESS_TOKEN",getAccessToken()).replace("TYPE",type);
        try {
            URL url1=new URL(url);
            //强转连接
           
HttpURLConnection conn=(HttpURLConnection) url1.openConnection();
            conn.setDoInput(true);
            conn.setDoOutput(true);
            conn.setUseCaches(true);
            //设置请求头信息
           
conn.setRequestProperty("Connection","keep-alive");
            conn.setRequestProperty("Charset","utf8");
            String boundary ="-----"+System.currentTimeMillis();
            conn.setRequestProperty("Content-Type","multipart/form-data;boundary="+boundary);
            InputStream inputStream=new FileInputStream(file);
            OutputStream outputStream=conn.getOutputStream();
            StringBuilder sb=new StringBuilder();
            sb.append("--");
            sb.append(boundary);
            sb.append("\r\n");
            sb.append("Content-Disposition:form-data;name=\"media\";filename=\""+file.getName()+"\"\r\n");
            sb.append("content-type:application/octet-stream\r\n\r\n");
            outputStream.write(sb.toString().getBytes());
            System.out.println(sb.toString());
//            outputStream.flush();
//            outputStream.close();
           
byte[] b=new byte[1024];
            int len;
            while ((len=inputStream.read(b))!=-1){
                outputStream.write(b,0,len);
            }
            String foot="\r\n--"+boundary+"--\r\n";
            outputStream.write(foot.getBytes());
            outputStream.flush();
            outputStream.close();
            InputStream is2=conn.getInputStream();
            StringBuilder resp=new StringBuilder();
            while ((len=is2.read(b))!=-1){
                resp.append(new String(b,0,len));
            }
            return resp.toString();

        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }


       /**
     *
获取用户信息
     * @param openid
     * @return
     */
   
public static String getUserInfo(String openid){
        String url="https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN";
        url=url.replace("ACCESS_TOKEN",getAccessToken()).replace("OPENID",openid);
        String result= null;
        try {
            result = Joke.get(url);
        } catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println("result:"+ result);
        return result;
    }

 

 

标签:项目,发改,微信,固定资产,用户,项目法人,部门,互联网
来源: https://www.cnblogs.com/chenqiwei/p/RunWsh_wechat.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有