CN112527289A - 一种基于Golang以及Mongodb的动态表单*** - Google Patents
一种基于Golang以及Mongodb的动态表单*** Download PDFInfo
- Publication number
- CN112527289A CN112527289A CN201910809292.6A CN201910809292A CN112527289A CN 112527289 A CN112527289 A CN 112527289A CN 201910809292 A CN201910809292 A CN 201910809292A CN 112527289 A CN112527289 A CN 112527289A
- Authority
- CN
- China
- Prior art keywords
- data
- module
- management
- golang
- api
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
- 238000007726 management method Methods 0.000 claims abstract description 56
- 238000013500 data storage Methods 0.000 claims abstract description 7
- 238000013523 data management Methods 0.000 claims description 8
- 238000013461 design Methods 0.000 claims description 7
- 239000008186 active pharmaceutical agent Substances 0.000 description 26
- 238000012795 verification Methods 0.000 description 7
- 238000011161 development Methods 0.000 description 4
- 238000000034 method Methods 0.000 description 4
- 238000012217 deletion Methods 0.000 description 2
- 230000037430 deletion Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000004888 barrier function Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- PCHJSUWPFVWCPO-UHFFFAOYSA-N gold Chemical compound [Au] PCHJSUWPFVWCPO-UHFFFAOYSA-N 0.000 description 1
- 239000010931 gold Substances 0.000 description 1
- 229910052737 gold Inorganic materials 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
- 238000010200 validation analysis Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
- G06F8/38—Creation or generation of source code for implementing user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开一种基于Golang以及Mongodb的动态表单***,包括后台管理UI模块,用于查看表单、设计表单、查看表单数据、下载表单数据以及管理第三方应用;后台管理API模块,用于提供表单管理API接口、表单数据管理API接口、表单数据导出API接口以及第三方集成应用管理API接口;数据存储层模块,用于存储表单配置信息、表单数据以及第三方应用数据;前端接入API模块,用于获取表单配置信息以及提交表单内容;前端UI模块,用于提供***默认的Web表单样式。本发明提供一种基于Golang和Mongodb,将数据放在企业自有***内且能通过较低成本满足高并发与海量数据存储要求的动态表单***。
Description
技术领域
本发明涉及计算机领域,尤其涉及一种基于Golang以及Mongodb的动态表单***。
背景技术
当前市场上已有一些在线表单***如:金数据、麦克CRM等。但市场上现有的***只适用于数据较少的场景,在用户数据量较大的时候往往收费昂贵或无发支持,不能满足海量数据场景的需求。大多现有***并不支持通过API提交数据,与其它集成应用(如移动APP或第三方***)集成困难。对于用户信息或用户调查反馈等作为重要的企业数据资产,并不适合存放在第三方***,当前市场上的产品不支持将直接数据存放到企业自己的***。
发明内容
本发明旨在提供一种基于Golang和Mongodb,将数据放在企业自有***内且能通过较低成本满足高并发与海量数据存储要求的动态表单***。
为达到上述目的,本发明是采用以下技术方案实现的:
一种基于Golang以及Mongodb的动态表单***,包括:
后台管理UI模块,用于查看表单、设计表单、查看表单数据、下载表单数据以及管理第三方应用;
后台管理API模块,用于提供表单管理API接口、表单数据管理API接口、表单数据导出API接口以及第三方集成应用管理API接口;
数据存储层模块,用于存储表单配置信息、表单数据以及第三方应用数据;
前端接入API模块,用于获取表单配置信息以及提交表单内容;
前端UI模块,用于提供***默认的Web表单样式;
优选的,所述后台管理UI模块提供***默认的后台管理界面。
进一步的,所述后台管理界面包括表单列表页、表单设计页、表单数据管理页以及第三方应用管理页。
优选的,所述后台管理UI模块还可用于根据需要基于后台管理API模块来开发移动App或桌面软件。
优选的,所述前端UI模块还可用于根据需要自定义Web表单或移动App表单,然后通过所述前端API模块提交数据到企业***。
本发明具有以下有益效果:
1、本发明可通过企业自有***的部署,将数据放于企业自有***内部,保障企业数据的安全,防止数据外泄;
2、本发明基于Golang和Mongodb开发,受益于Golang对高并发的支持、较低的资源占用及MongoDB的高性能、易扩展,该套***平时采用最小化部署即可满足公司日常需要,在节假日、有推广活动的时候通过***自动扩容亦可应付海量数据请求。在节省了运营成本的同时也能很好的支持公司特殊时期的海量请求;
3、通过本发明,当企业有表单方面的需求时,只需要直接在本发明上添加新的三方应用以及新的表单配置即可拥有整套表单方面的功能,在提高开发效率的同时也节省了开发成本。
附图说明
图1为本发明***架构图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图和具体实施例,对本发明进行进一步详细说明。
一种基于Golang以及Mongodb的动态表单***,包括:后台管理UI模块,用于查看表单、设计表单、查看表单数据、下载表单数据以及管理第三方应用;后台管理API模块,用于提供表单管理API接口、表单数据管理API接口、表单数据导出API接口以及第三方集成应用管理API接口;数据存储层模块,用于存储表单配置信息、表单数据以及第三方应用数据;前端接入API模块,用于获取表单配置信息以及提交表单内容;前端UI模块,用于提供***默认的Web表单样式。
所述后台管理UI模块提供***默认的后台管理界面,所述后台管理界面包括表单列表页、表单设计页、表单数据管理页以及第三方应用管理页。
所述表单列表页可以查看当前***中已有的表单及各表单的添加时间、修改时间、状态、包含数据条数等概要信息;同时也可以操作表单:启用、禁用、删除表单、跳转到表单数据管理页、跳转到表单修改页等操作。
所述表单设计页可以定义当前表单的名字、状态、包含的字段、字段标题、字段输入类型、字段验证规则、字段是否在表单数据管理页显示;其中,就字段输入配置而言,目前支持文本框、密码框、数字框、单选下拉框、单选按钮、多选下拉框、复选框、日期选择框、日期时间选择框、日期范围选择、日期时间范围选择、单文件上传、多文件上传、地图标记、经纬度等,也可根据需要随时添加所需的数据格式,不同的输入框不仅可以用来保证前端用户输入数据的格式正确,同时也提供了最基本的一层数据验证;可以通过表单设计页配置该字段是否在表单数据管理页列表中显示;可以配置当前字段的值是否唯一,唯一字段的值只能在数据中出现一次;还可以通过表单设计页验证配置用来对用户输入数据做最终验证,不符合验证规则的数据将会被拒绝保存,是保证用户输入数据正确的重要屏障。
所述表单数据管理页可用来查看表单的所有数据、导出数据、删除数据,搜索数据、查看数据详情。
所述第三方应用管理页管理与表单***集成的第三方应用,同时为确保交互数据的安全,对所有前端提交的数据需要进行签名验证,所有前端集成的应用都要求先申请签名Key,再根据特定算法对发送数据签名,提交数据时需要提交签名的结果以待前端接口验证。
并且,所有发送数据均采用POST方式发送JSON数据,以解决Web与Golang&Mongodb间的数据类型问题。
另还有,所述后台管理界面使用VUE.js+Element组件库实现界面与API分离,为后期添加其它管理界面预留足够的升级空间。同时借助于Element丰富的组件库,可以做到快速开发,节省时间。
后台管理API模块,用于提供表单管理API接口、表单数据管理API接口、表单数据导出API接口以及第三方集成应用管理API接口。
1、表单管理API接口:
a./form/manage/list表单列表
请求数据:{"page":1,"pageSize":10,"filter":{"搜索字段名":{"op":"$regex","value":".*mix.*"}},"sort":{"created_at":-1}}
b./form/manage/info表单详情
请求数据:{"id":1}
c./form/manage/add添加/编辑表单
请求数据示例:{"id":"","title":"用户注册表单
","status":1,"app":"Camera360","fields":[{"name":"username","label":"用户名
","validate":"email","unique":1,"index":false,"input_type":
"input","display_in_list":1,"options":"","required":true},{
"name":"password","label":"密码
","validate":"length","validateOptions":{"max":20,"min":8},"unique":0,"index":false,"input_type":"password","display_in_list":0,"options":"","required":true}]}
当请求数据中的id不为空的时候为修改已经存在的表单。
保存表单的时候会在数据库生成生成对应的一张表:
custom_table_TABLE_ID,并根据表单的设置添加上对应字段的索引的索引。
d./form/manage/delete删除表单
请求数据:{"id":[1,2]}
删除表单为软删,只是让期在后台看不到该表单,实际数据库中已经存在该表单,以便后期数据找回。
id为数组,当为多个值时可以一次性删除多个表单
e./form/manage/disable禁用表单
请求数据:{"id":[1,2]}
禁用id指定的表单
f./form/manage/enable启用表单
请求数据:{"id":[1,2]}
启用id指定的表单
g./form/manage/export导出表单配置
请求数据:{"id":[1,2,3]}
当id参数为空的时候为导出所有表单配置,不为空时为导出指定id对应的表单的配置
2、表单数据管理API接口
a./form/manage/dataList表单数据列表
在显示表单数据列表的时候,首先需要调用表单详情接口取得表单配置,根据表单配置显示列表字段及用于搜索的字段。
发送数据:
{"form_id":1,"pager":{"page":1,"pageSize":10,"filter":{"搜索字段名
":{"op":"$regex","value":".*mix.*"}},"sort":{"created_at":-1}}}
b./form/manage/dataInfo表单数据详情
发送数据:{"form_id":1,"id":10}
c./form/manage/dataDelete删除表单数据
发送数据:{"form_id":1,"id":[1,2]}
d./form/manage/dataExport导出表单数据
发送数据:{"form_id":1,id:[1,2,3]}
id:需要导出的数据id,为空则导出该表单的所有数据
如果表单数据过大,为防止管理接口卡死,会通过后台进程导出数据,在导出成功后发送下载链接地址给管理员,管理员可单独下载导出数据。
3、第三方集成应用管理API接口:
a./form/app/list应用列表
请求数据:{"page":1,"pageSize":10,"filter":{"搜索字段名":{"op":"$regex","value":".*camera360.*"}},"sort":{"created_at":-1}}
b./form/app/add添加/修改应用
请求数据:{"id":"","name":"","status":"","key":""}
当请求数据中的id不为空的时候,表示修改已经存在的对应的app
c./form/app/info应用详情
请求数据:{"id":1}
d./form/app/disable禁用应用
请求数据:{"id":1}
e./form/app/enable启用应用
请求数据:{"id":1}
f./form/app/delete删除应用
请求数据:{"id":1}
所述后台管理UI模块还可用于根据需要基于后台管理API模块来开发移动App或桌面软件。
所述前端开发API模块:
1、/api/form/info表单详情
前端UI需要根据该接口返回的表单配置信息绘制表单
请求数据:{"id":1}
2、/api/form/submit提交数据
提交的数据格式为:{"id":1,"data:{表单配置字段名1:字段值,表单配置字段名2:字段值}}
所述前端UI模块,默认提供一个web版的表单显示样例,通过传入的表单ID绘制表单需要显示的字段、对于一些特殊的个性化展示、APP里集成等需要单独实现;所述前端UI模块还可用于根据需要自定义Web表单或移动App表单,然后通过所述前端API模块提交数据到企业***。
另外还需要注意的是,前端所有API数据的提交均采用post方式提交JSON字符串,后台API接口收到之后再解码。
前端所有请求需要根据后台管理添加的应用Key生成sign并将签名结果发送到服务器端。
在本具体实施例中,签名算法如下:
params={username:“aaa”,password:”bbbb”}//为当前所有需要发送到服务端的参数
timestamp=1563863782//当前时间戳
key:e10adc3949ba59abbe56e057f20f883e//应用后台添加的key
先对params里的所有参数名按字母排序然后组成字符串:
“password=bbb&username=aaa×tamp=1563863782&key=e10adc3949ba59abbe56e057f20f883e”
最后对新生成的字符串做md5加密得到签名值:
sign=md5(“password=bbb&username=aaa×tamp=1563863782&key=e10adc3949ba59abbe56e057f20f883e”)
sign=581d492ace5dfe6e48a53c46566478b1
在发送请求到服务器时需要将sign及timestamp放在HTTP的请求header里发送到服务器端,服务端会根据收到的数据及header里的timestamp与***存在的key生成新的签名,如果HTTP请求header里收到的签名与服务端生成的签名不一样,则判定为非法请求。
同时,如果HTTP请求header里的timestamp减去当前时间的绝对值超过30秒,则判定为超时请求。
超时请求及非法请求都将拒绝处理。
1./api/form/info表单详情(HTTP POST请求)
请求数据:{"id":表单id}
2./api/form/submit提交数据(HTTP POST请求)
请求数据:{"id":1,"data:{表单配置字段名1:字段值,表单配置字段名2:字段值}}
对于提交的数据需要根据表单配置的数据格式、验证规则等进行服务端验证,只有通过验证的数据才能添加到数据库。
当然,本发明还可有其它多种实施例,在不背离本发明精神及其实质的情况下,熟悉本领域的技术人员可根据本发明作出各种相应的改变和变形,但这些相应的改变和变形都应属于本发明所附的权利要求的保护范围。
Claims (5)
1.一种基于Golang以及Mongodb的动态表单***,其特征在于,包括:
后台管理UI模块,用于查看表单、设计表单、查看表单数据、下载表单数据以及管理第三方应用;
后台管理API模块,用于提供表单管理API接口、表单数据管理API接口、表单数据导出API接口以及第三方集成应用管理API接口;
数据存储层模块,用于存储表单配置信息、表单数据以及第三方应用数据;
前端接入API模块,用于获取表单配置信息以及提交表单内容;
前端UI模块,用于提供***默认的Web表单样式。
2.根据权利要求1所述的一种基于Golang以及Mongodb的动态表单***,其特征在于:所述后台管理UI模块提供后台管理界面。
3.根据权利要求2所述的一种基于Golang以及Mongodb的动态表单***,其特征在于:所述后台管理界面包括表单列表页、表单设计页、表单数据管理页以及第三方应用管理页。
4.根据权利要求1所述的一种基于Golang以及Mongodb的动态表单***,其特征在于:所述后台管理UI模块还可用于根据需要基于后台管理API模块来开发移动App或桌面软件。
5.根据权利要求1所述的一种基于Golang以及Mongodb的动态表单***,其特征在于:所述前端UI模块还可用于根据需要自定义Web表单或移动App表单,然后通过所述前端API模块提交数据到企业***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910809292.6A CN112527289A (zh) | 2019-08-29 | 2019-08-29 | 一种基于Golang以及Mongodb的动态表单*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910809292.6A CN112527289A (zh) | 2019-08-29 | 2019-08-29 | 一种基于Golang以及Mongodb的动态表单*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112527289A true CN112527289A (zh) | 2021-03-19 |
Family
ID=74973998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910809292.6A Pending CN112527289A (zh) | 2019-08-29 | 2019-08-29 | 一种基于Golang以及Mongodb的动态表单*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112527289A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254011A (zh) * | 2021-06-01 | 2021-08-13 | 深圳博沃智慧科技有限公司 | 动态接口配置方法和电子政务*** |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122281A (zh) * | 2010-01-11 | 2011-07-13 | 腾讯科技(北京)有限公司 | 一种生成页面表单的方法、装置和*** |
CN102279884A (zh) * | 2011-08-05 | 2011-12-14 | 中国工商银行股份有限公司 | 基于Web页面进行数据采集和展现的方法、***及Web服务器 |
CN107391470A (zh) * | 2017-07-12 | 2017-11-24 | 成都优易数据有限公司 | 一种基于表单设计器的单数据库表操作方法 |
CN107615321A (zh) * | 2015-05-22 | 2018-01-19 | 贝宝公司 | 用于符合安全标准的托管的敏感数据表单字段 |
-
2019
- 2019-08-29 CN CN201910809292.6A patent/CN112527289A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102122281A (zh) * | 2010-01-11 | 2011-07-13 | 腾讯科技(北京)有限公司 | 一种生成页面表单的方法、装置和*** |
CN102279884A (zh) * | 2011-08-05 | 2011-12-14 | 中国工商银行股份有限公司 | 基于Web页面进行数据采集和展现的方法、***及Web服务器 |
CN107615321A (zh) * | 2015-05-22 | 2018-01-19 | 贝宝公司 | 用于符合安全标准的托管的敏感数据表单字段 |
CN107391470A (zh) * | 2017-07-12 | 2017-11-24 | 成都优易数据有限公司 | 一种基于表单设计器的单数据库表操作方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113254011A (zh) * | 2021-06-01 | 2021-08-13 | 深圳博沃智慧科技有限公司 | 动态接口配置方法和电子政务*** |
CN113254011B (zh) * | 2021-06-01 | 2024-02-27 | 深圳博沃智慧科技有限公司 | 动态接口配置方法和电子政务*** |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10956146B2 (en) | Content deployment system having a content publishing module for selectively extracting content items for integration into a specific release and methods for implementing the same | |
US11074396B2 (en) | Animating edits to documents | |
CN110268431B (zh) | 对消息内容的搜索和过滤 | |
US11016757B2 (en) | Content deployment system having a proxy for continuously providing selected content items to a content publishing engine for integration into a specific release and methods for implementing the same | |
CN108292231B (zh) | 从数据生成应用的方法和*** | |
US20180196665A1 (en) | Managing, using, and updating application resources | |
US10776501B2 (en) | Automatic augmentation of content through augmentation services | |
CN104471528A (zh) | 将文件类型与网络存储服务中的应用相关联 | |
CN101833467A (zh) | 一种在Android的菜单中添加菜单项的方法及设备 | |
CN110020358B (zh) | 用于生成动态页面的方法和装置 | |
CN112765102B (zh) | 一种文件***管理方法和装置 | |
WO2016091002A1 (zh) | 在网页上提供认证信息的方法及装置 | |
CN111563015A (zh) | 数据监控方法及装置、计算机可读介质及终端设备 | |
US20140330857A1 (en) | Suggested Search Based on a Content Item | |
WO2023216491A1 (zh) | 动画资源的信息处理方法及装置、设备、介质及产品 | |
US11882154B2 (en) | Template representation of security resources | |
CN109002337A (zh) | 一种应用导航方法及装置 | |
Sanderson | Programming Google App Engine with Python: Build and Run Scalable Python Apps on Google's Infrastructure | |
CN113282591B (zh) | 权限过滤方法、装置、计算机设备及存储介质 | |
CN112527289A (zh) | 一种基于Golang以及Mongodb的动态表单*** | |
US20200379786A1 (en) | Keyboard interaction model for software builder canvas nodes | |
EP3163475A1 (en) | Electronic device and method of searching data records | |
CN112328841A (zh) | 一种文档处理方法、装置、电子设备及存储介质 | |
Sanderson | Programming Google App Engine with Java: Build & Run Scalable Java Applications on Google's Infrastructure | |
US11269961B2 (en) | Systems and methods for App query driven results |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |