CN112527289A - 一种基于Golang以及Mongodb的动态表单系统 - Google Patents

一种基于Golang以及Mongodb的动态表单系统 Download PDF

Info

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
Application number
CN201910809292.6A
Other languages
English (en)
Inventor
古忠志
徐滢
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Chengdu Pinguo Technology Co Ltd
Original Assignee
Chengdu Pinguo Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Chengdu Pinguo Technology Co Ltd filed Critical Chengdu Pinguo Technology Co Ltd
Priority to CN201910809292.6A priority Critical patent/CN112527289A/zh
Publication of CN112527289A publication Critical patent/CN112527289A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/38Creation 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的动态表单系统
技术领域
本发明涉及计算机领域,尤其涉及一种基于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&timestamp=1563863782&key=e10adc3949ba59abbe56e057f20f883e”
最后对新生成的字符串做md5加密得到签名值:
sign=md5(“password=bbb&username=aaa&timestamp=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模块提交数据到企业系统。
CN201910809292.6A 2019-08-29 2019-08-29 一种基于Golang以及Mongodb的动态表单系统 Pending CN112527289A (zh)

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)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113254011A (zh) * 2021-06-01 2021-08-13 深圳博沃智慧科技有限公司 动态接口配置方法和电子政务系统

Cited By (2)

* Cited by examiner, † Cited by third party
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
US10846071B2 (en) Data model API for live applications in a cloud collaboration platform
US11074396B2 (en) Animating edits to documents
CN109154935B (zh) 一种用于分析用于任务完成的捕获的信息的方法、系统及可读存储设备
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) 从数据生成应用的方法和系统
CN105531700B (zh) 通过扩充服务的内容的自动扩充
CN101833467A (zh) 一种在Android的菜单中添加菜单项的方法及设备
CN110020358B (zh) 用于生成动态页面的方法和装置
US10152538B2 (en) Suggested search based on a content item
WO2016091002A1 (zh) 在网页上提供认证信息的方法及装置
CN111563015A (zh) 数据监控方法及装置、计算机可读介质及终端设备
WO2023216491A1 (zh) 动画资源的信息处理方法及装置、设备、介质及产品
US11882154B2 (en) Template representation of security resources
CN111666383A (zh) 信息处理方法、装置、电子设备及计算机可读存储介质
Sanderson Programming Google App Engine with Python: Build and Run Scalable Python Apps on Google's Infrastructure
CN113282591B (zh) 权限过滤方法、装置、计算机设备及存储介质
CN112765102B (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