Online表单对外接口
===
**目录索引:**
- 秘钥配置
- 请求参数示例与说明
- 表单信息查询接口
- 表单信息删除接口
- 表单信息添加接口
- 表单信息更新接口
# Online表单对外接口
## 一、秘钥配置
org.jeecgframework.web.cgform.controller.build.CgFormDataController.SIGN_KEY
说明: 暂时代码写死,后期可扩展
---
## 二、请求参数示例与说明
请求参数分为两个部分 第一部分是参数
| 参数名| 是否必须| 类型| 描述| 示例|
| -------- | ----- | ---- |----- | ---- |
| body| 是| JSONString| 请求内容参数以json形式存储| body: { "id": "40281381537e969401537eb9902d0006", "tableName": "jform_contact", "data": { "sex": "0", "name": "张山丰" }}|
| X-JEECG-SIGN| 是| String| 在请求头里面添加,用于验证签名| “X-JEECG-SIGN”:” 735CE07A2AB9C1872983B09C85A770D9”|
http://地址:端口/项目名称/api/cgFormDataController.do?addFormInfo
请求代码示例
Header 添加签名
“X-JEECG-SIGN”:” 735CE07A2AB9C1872983B09C85A770D9”
请求参数名为body 内容为json字符串
```
body: {
"id": "40281381537e969401537eb9902d0006",
"tableName": "jform_contact",
"data": {
"sex": "0",
"name": "张山丰"
}
}
```
返回
```
{
"msg": "新增表单数据成功",
"success": true
}
```
签名规则:
将body对象转换为json字符串传入map 里对数据body进行签名。并将签名结果放在请求头中 X-JEECG-SIGN
签名示例代码:
```
String key="26F72780372E84B6CFAED6F7B19139CC47B1912B6CAED753";
JSONObject jsonObject=new JSONObject();
jsonObject.put("id","40281381537e969401537eb9902d0006");
jsonObject.put("tableName","jform_contact");
JSONObject data=new JSONObject();
data.put("name","张山丰");
data.put("sex","0");
jsonObject.put("data",data);
String body=jsonObject.toJSONString();
Map param=new HashMap();
param.put("body",body);
String sign=SignatureUtil.sign(param,key);
```
代码示例如下:
```
package test;
import com.alibaba.fastjson.JSONObject;
import org.jeecgframework.web.cgform.util.SignatureUtil;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.ConnectException;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class HttpUtil {
/**
* 发起https请求并获取结果
*
* @param requestUrl
* 请求地址
* @param requestMethod
* 请求方式(GET、POST)
* @param outputStr
* 提交的数据
* @return JSONObject(通过JSONObject.get(key)的方式获取json对象的属性值)
*/
public static JSONObject httpRequest(String requestUrl,
String requestMethod, String outputStr,String sign) {
JSONObject jsonObject = null;
StringBuffer buffer = new StringBuffer();
HttpURLConnection httpUrlConn = null;
try {
// 创建SSLContext对象,并使用我们指定的信任管理器初始化
URL url = new URL(requestUrl);
httpUrlConn = (HttpURLConnection) url.openConnection();
httpUrlConn.setDoOutput(true);
httpUrlConn.setDoInput(true);
httpUrlConn.setUseCaches(false);
httpUrlConn.setRequestProperty("X-JEECG-SIGN",sign);
// httpUrlConn.setRequestProperty("content-type", "text/html");
// 设置请求方式(GET/POST)
httpUrlConn.setRequestMethod(requestMethod);
if ("GET".equalsIgnoreCase(requestMethod))
httpUrlConn.connect();
// 当有数据需要提交时
if (null != outputStr) {
OutputStream outputStream = httpUrlConn.getOutputStream();
// 注意编码格式,防止中文乱码
outputStream.write(outputStr.getBytes("UTF-8"));
outputStream.close();
}
// 将返回的输入流转换成字符串
InputStream inputStream = httpUrlConn.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(
inputStream, "utf-8");
BufferedReader bufferedReader = new BufferedReader(
inputStreamReader);
String str = null;
while ((str = bufferedReader.readLine()) != null) {
buffer.append(str);
}
bufferedReader.close();
inputStreamReader.close();
// 释放资源
inputStream.close();
inputStream = null;
httpUrlConn.disconnect();
jsonObject = JSONObject.parseObject(buffer.toString());
// jsonObject = JSONObject.fromObject(buffer.toString());
} catch (ConnectException ce) {
org.jeecgframework.core.util.LogUtil
.info("Weixin server connection timed out.");
} catch (Exception e) {
//e.printStackTrace();
org.jeecgframework.core.util.LogUtil.info("https request error:{}"
+ e.getMessage());
}finally{
try {
httpUrlConn.disconnect();
}catch (Exception e) {
e.printStackTrace();
org.jeecgframework.core.util.LogUtil.info("http close error:{}"+ e.getMessage());
}
}
return jsonObject;
}
public static void main(String args[]){
String key="26F72780372E84B6CFAED6F7B19139CC47B1912B6CAED753";
JSONObject jsonObject=new JSONObject();
jsonObject.put("id","40281381537e969401537eb9902d0006");
jsonObject.put("tableName","jform_contact");
JSONObject data=new JSONObject();
data.put("name","张山丰");
data.put("sex","0");
jsonObject.put("data",data);
String body=jsonObject.toJSONString();
Map param=new HashMap();
param.put("body",body);
String sign=SignatureUtil.sign(param,key);
JSONObject resp=HttpUtil.httpRequest("http://localhost:8080/jeecg/api/cgFormDataController.do?addFormInfo","POST","body="+body,sign);
System.out.println(resp.toJSONString());
}
}
```
---
## 三、表单信息查询接口
### 1.请求地址
http://地址:端口/项目名称/api/cgFormDataController.do?getFormInfo
具体参考请求参数说明
请求方式:get/post请求
编码:utf-8
### 2.求参数说明
| 参数名| 是否必须| 类型| 描述| 示例|
| -------- | ----- | ---- |----- | ---- |
| tableName| 是| String| Online表名| jfrom_le_demo|
| id| 是| String| 数据id(单表id/主表id)| 40281381537e969401537eb9902d0005|
### 3.返回结果
##### 3.1.单表模型
单表返回josn格式:
```
{
"success": true,
"tableData": {
"id": "40281381537e969401537eb9902d0005",
"create_name": "管理员",
"create_by": "admin",
"create_date": 1458112595000,
"update_name": null,
"update_by": null,
"update_date": null,
"sys_org_code": "A02",
"sys_company_code": "A0",
"name": "1",
"age": 1,
"job": "",
"job_desc": "1",
"bpm_status": null,
"sex": ""
},
"msg": "操作成功",
"subTableDate": null,
"tableType": 1
}
```
#### 3.2.主子表模型
主子表返回josn格式:
```
{
"success": true,
"tableData": {
"id": "402813815384ba04015384c5c3e00001",
"create_name": null,
"create_by": null,
"create_date": null,
"update_name": "管理员",
"update_by": "admin",
"update_date": 1458576000000,
"sys_org_code": null,
"sys_company_code": null,
"name": "1",
"sex": "1",
"remark": "1",
"bpm_status": null
},
"msg": "操作成功",
"subTableDate": {
"jform_le_submany": [
{
"id": "402813815384e2df015384e39a270001",
"create_name": "管理员",
"create_by": "admin",
"create_date": 1458144000000,
"update_name": "管理员",
"update_by": "admin",
"update_date": 1458576000000,
"sys_org_code": "A02",
"sys_company_code": "A0",
"name": "1",
"sex": "1",
"remark": "1",
"bpm_status": "1",
"main_id": "402813815384ba04015384c5c3e00001"
}
],
"jform_le_subone": [
{
"id": "402813815384ba04015384c5c4320002",
"create_name": "管理员",
"create_by": "admin",
"create_date": 1458144000000,
"update_name": "管理员",
"update_by": "admin",
"update_date": 1458576000000,
"sys_org_code": "A02",
"sys_company_code": "A0",
"name": "1",
"sex": "1",
"remark": "1",
"bpm_status": "1",
"main_id": "402813815384ba04015384c5c3e00001"
}
]
},
"tableType": 2
}
```
#### 3.3.返回结果JSON参数说明
![](https://img.kancloud.cn/06/5d/065d69394e0b7ebc8b7bfe74b9c890c3_918x273.png)
---
## 四、表单信息删除接口
### 1.请求地址
http://地址:端口/项目名称/api/ cgFormDataController.do?deleteFormInfo
请求方式:get/post请求
编码:utf-8
### 2.请求参数说明
| 参数名| 是否必须| 类型| 描述| 示例|
| -------- | ----- | ---- |
| tableName| 是| String| Online表名| jfrom_le_demo|
| id| 是| String| 数据id(单表id/主表id)| 40281381537e969401537eb9902d0005|
### 3.返回结果
返回josn格式
```
{
"success": true,
"msg": "删除成功"
}
```
json参数说明
| 参数名| 是否必须| 描述| 示例|
| -------- | ----- | ---- |
| success| 是| 删除状态true:成功;false:失败| TRUE|
| msg| 是| 返回的信息| 删除成功|
---
## 五、表单信息添加接口
### 1.请求地址
http://地址:端口/项目名称/api/cgFormDataController.do?addFormInfo
请求方式:get/post请求
编码:utf-8
### 2.请求参数说明
| 参数名| 是否必须| 类型| 描述| 示例|
| -------- | ----- | ---- |
| tableName| 是| String| Online表名| jfrom_le_demo|
| id| 是| String| 数据id(单表id/主表id)| 40281381537e969401537eb9902d0005|
| data| 是| String| 单表数据json格式/主表附表json数据格式| |
#### 2.1.单表DATA数据json格式:
```
{
"name": "ceshi",
"age": 10,
"job": "java developer"
}
```
#### 2.2.主表附表data 数据json格式
```
{
jform_le_main:[{id="402813815398698b015398698b710000",
name:"ceshi111111",
age:10,
job:"java developer"
}],
jform_le_subone:[{main_id="402813815398698b015398698b710000",
name:"ceshi111111",
age:10,
job:"java developer"
}],
jform_le_submany:[{main_id="402813815398698b015398698b710000",
name:"ceshi111111",
age:10,job:"java developer"
},
{name:"ceshi111111",
age:10,
job:"java developer"}
]
}
```
### 3.返回结果
返回josn格式:
```
{"success":true,
"msg":"新增表单数据成功"
}
```
json参数说明
| 参数名| 是否必须| 描述| 示例|
| -------- | ----- | ---- |
| success| 是| 处理状态true:成功;false:失败| TRUE|
| msg| 是| 返回的信息| 新增表单数据成功|
---
## 六、表单信息更新接口
### 1.请求地址
http://地址:端口/项目名称/api/cgFormDataController.do?updateFormInfo
请求方式:get/post请求
编码:utf-8
### 2.请求参数说明
| 参数名| 是否必须| 类型| 描述| 示例|
| -------- | ----- | ---- |
| tableName| 是| String| Online表名| jfrom_le_demo|
| id| 是| String| 数据id(单表id/主表id)| 40281381537e969401537eb9902d0005|
| data| 是| String| 单表数据json格式/主表附表json数据格式| | |
#### 2.1.单表DATA数据json格式
```
{
"name": "ceshi",
"age": 10,
"job": "java developer"
}
```
### 3.返回结果
返回josn格式:
```
{
"success": true,
"msg": "更新表单数据成功"
}
```
json参数说明
| 参数名| 是否必须| 描述| 示例|
| -------- | ----- | ---- |----- | ---- |
| success| 是| 处理状态true:成功;false:失败| TRUE|
| msg| 是| 返回的信息| 更新表单数据成功|
- 总体介绍
- 快速了解
- 平台优势
- 技术支持
- 社区荣誉
- 开发环境准备
- JEECG私服Maven
- 代码结构说明
- 入门开发环境搭建
- 开发工具
- 代码生成器使用
- GUI代码生成器
- Online代码生成器
- P3插件代码生成器
- 代码生成器配置
- 功能介绍
- 权限开发手册
- Online开发权限
- Online表单访问规则
- 列表按钮权限控制
- 列表数据权限控制
- 页面表单权限控制(一对多表)
- 页面表单权限控制(单表)
- 其他
- 二级管理员手册
- 接口权限配置
- 平台权限设计总览
- 编码开发方式
- 列表按钮权限用法
- 列表数据权限用法
- 数据权限自定义SQL
- 表单权限用法
- UI标签库文档
- AuthFilter(页面权限标签)
- Autocomplete(自动补全标签)
- BaseTag(样式和JS引入标签)
- Choose(弹出选择标签)
- ComboTree(下拉树形选择框)
- Datagrid(数据列表标签)
- DepartSelectTag(部门树选择标签)
- DictSelect(数据字典下拉选择框)
- FormValidation(表单提交及验证标签)
- HasPermissionTag(页面权限标签)
- Menu(左侧菜单生成标签)
- MutiLang(国际化标签)
- OrgSelectTag(部门树列表选择标签)
- SelectZTree(Ztree树控件)
- Tabs(选项卡父标签)
- TreeSelectTag树分类标签
- Upload(上传标签)
- UserSelectTag(用户选择标签)
- WebUploader(上传标签)
- 查询构造器
- 查询过滤器
- 高级查询构造器
- 专题功能介绍
- 国际化使用
- 多数据源使用
- 定时任务
- 平台JWT接口文档
- 消息中心
- Online在线开发
- Online二次开发
- Online代码生成
- Online唯一性校验配置
- Online查询机制(数据权限)
- Online树形表单配置
- Online表单填值规则
- Online表单对外接口
- Online表单控件
- Online表单配置
- Online表单高级应用
- Online报表开发
- Online图形报表配置
- Online数据报表配置
- Online移动报表配置
- 自定义表单设计
- 自定义表单权限
- 列表空间权限控制
- 功能介绍
- 常规控件权限控制
- 自定义表单配置
- 自定义表单二次开发
- 自定义表单控件
- 自定义表单数据源
- 自定义表单模板
- 自定义表单配置
- 自定义表单高级应用
- 表单数据维护
- 附录小技巧
- datagrid扩展属性用法
- Formvalid新增属性tiptype的使用
- JEECG单点集成文档
- Jeecg定时任务开发
- JEECG常见问题贴
- Redis与Ehcache切换文档
- Toolbar自定义js参数规则
- UI标签规则
- 列表多表头的设计
- 列表拓展字段展示
- 列表自定义查询条件
- 员工入职开发规范文档V1.0
- 数据列表合计功能
- 登录权限拦截器排除方法
- 组织机构导入功能使用说明
- 表单字段重复校验方法
- JEECG新技术
- 新版UI技术方案