# 服务平台
版本 |  创建时间   | 作者 |  备注信息
---|---|---|---
v1.0|2022-01-20|zxfei| 接口文档

## 数据类型
类型名称|类型描述|参考样例
---|---|---
String |字符串|A、a、ab
Integer|数字类型|1、12、-1
Long|长整型数字|1、12、-1
date|时间类型,单位纳秒数字|167988745573
BigDecimal|小数类型|545.256
object|对象类型|{"name":"zhang3"}
arrays|数组类型|[{"name":"zhang3"},{"name":"zhang2"}]


<#if (tableList?size > 1) >
## 系统服务
### 登录

**请求URL:** login/login

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 用户登录

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|用户名称|是|-
password|String|用户密码|是|-
securityCode|String|校验码|是|-

**请求样例:**
```

{
"loginName":"zhang3",
"password":"123456",
"securityCode":"5455"
}

```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
msg|String|消息|-


**响应消息样例:**
```

{
"msg":"登录成功",
"code":1,
"data":{

}
}

```

### 登出

**请求URL:** login/logout

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 用户退出注销

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---

**请求样例:**
```

```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
msg|String|消息|-


**响应消息样例:**
```


```

### 修改密码

**请求URL:** user/change/password

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 用户修改密码

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---
loginName|String|用户名称|是|-
oldPwd|String|用户加密后密码|是|-
newPwd|String|用户加密后新密码|是|-

**请求样例:**
```

{
"loginName":"zhang3",
"oldPwd":"123456",
"newPwd":"5455"
}

```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
msg|String|消息|-


**响应消息样例:**
```

{
"msg":"修改密码成功",
"code":1,
"data":{}
}

```



### 获取验证码

**请求URL:** securitycode/createCode

**请求方式:** GET

**内容类型:** image/gif

**简要描述:** 用户退出注销

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---

**请求样例:**
```

```
**响应参数:**



**响应消息样例:**
```

```


### 上传附件

**请求URL:** file/commonupload

**请求方式:** POST


**内容类型:** multipart/form-data

**简要描述:** 用户上传附件

**请求参数:**

参数名称|类型|备注|必填|其它
---|---|---|---|---
file|multipart|附件|是|-
prePath|String|附件存放相对路径|否|不填时候默认为/file/fileupload

**请求样例:**
```
http://127.0.0.1/file/commonupload?prePath=/file/fileupload
Content-Type: multipart/form-data; boundary=WebAppBoundary

--WebAppBoundary
Content-Disposition: form-data; name="file"; filename="1.excel"
Content-Type: multipart/form-data
```
**响应参数:**



**响应消息样例:**
```

```

</#if>

<#list tableList as table>
## ${table.functionName}

### 查询${table.functionName}列表

**请求URL:** ${table.path}/${table.requestMapping}/list

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 查询${table.functionName}

**请求参数:**

参数名称|类型|必填|描述
:---|:---|:---|:------
page|Integer|否|当前页
size|Integer|否|每页条数，值为-1，查询所有记录
<#list table.columns as column>
  <#if column.isQuery == 1>
       <#if column.javaType=="String" >
${column.javaField}|${column.javaType}|否|${column.columnComment},字段前后添加%%模糊查询
          <#else>
${column.javaField}|${column.javaType}|否|${column.columnComment}
       </#if>
  </#if>
</#list>

**请求样例:**
```
{
<#list table.columns as column>
  <#if column.isQuery == 1>
  <#if column.javaType=="String" ||column.javaType=="Date">
      <#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
  <#else>
      <#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
  </#if>
      "${column.javaField}":${fakeValue}<#sep>,</#sep>
  </#if>
</#list>
      "page":1,
      "size":10
}

```
**响应参数:**

参数名称|参数类型|描述
:---|:---|:------
code|Integer|结果码（-1.失败，1.成功）
msg|String|消息
data|object|数据对象
&emsp;per_page|Integer|每页条数
&emsp;total|Integer|总条数
&emsp;last_page|Integer|总页数
&emsp;current_page|Integer|当前页
&emsp;data|array|结果集列表|数组
<#list table.columns as column>
&emsp;&emsp;${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
dict|object|字典对象
<#list table.columns as column>
  <#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
&emsp;${column.javaField}|object|字典属性对象，详见附录
  </#if>
</#list>

**响应消息样例:**
```
{
  "code":1,
  "data":{
  }
}
```

### 查看${table.functionName}

**请求URL:** ${table.path}/${table.requestMapping}/info

**请求方式:** GET

**内容类型:** application/json;charset=utf-8

**简要描述:** 查看${table.functionName}，返回实例详细信息

**请求参数:**

参数名称|类型|必填|描述
:---|:---|:---|:------
${table.pkColumn.javaField}|${table.pkColumn.javaType}|是|ID

**请求样例:**
```
  http://localhost/${table.path}/${table.requestMapping}/info?id=549
```
**响应参数:**

参数名称 |参数类型|描述
:---|:---|:-------
code|Integer|结果码（-1.失败，1.成功）
msg|String|消息
data|object|数据对象
<#list table.columns as column>
&emsp;${column.javaField}|${column.javaType}|${column.columnComment}
</#list>
dict|object|字典对象
<#list table.columns as column>
  <#if column.dict??&&(column.columnType?contains("tinyint") ||column.htmlType==3||column.htmlType==5)>
&emsp;${column.javaField}|object|字典属性对象，详见附录
  </#if>
</#list>

**响应消息样例:**
```
{
  "code": 1,
  "data": {
      <#list table.columns as column>
          <#if column.javaType=="String" ||column.javaType=="Date">
              <#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
              <#else>
              <#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
          </#if>
          "${column.javaField}":${fakeValue}<#sep>,</#sep>
      </#list>
      }
}
```

### 保存更新${table.functionName}

**请求URL:** ${table.path}/${table.requestMapping}/save

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 保存或更新${table.functionName}：id为空时为新增保存，否则为更新提交

**请求参数:**

参数名称|类型|必填|描述
:---|:---|:---|:-------
<#list table.columns as column>
<#if !column.isSuperColumn(column.javaField)>
<#if column.isRequired == 1>
${column.javaField}|${column.javaType}|是|${column.columnComment}
<#else>
${column.javaField}|${column.javaType}|否|${column.columnComment}
</#if>
</#if>
</#list>

**请求样例:**
```
{
<#list table.columns as column>
  <#if !column.isSuperColumn(column.javaField)>
      <#if column.javaType=="String" ||column.javaType=="Date">
          <#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
          <#else>
          <#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
      </#if>
  "${column.javaField}":${fakeValue}<#sep>,</#sep>
  </#if>
</#list>
}

```
**响应参数:**

参数名称 |参数类型|描述
:---|:---|:------
code|Integer|结果码（-1.失败，1.成功）
msg|String|消息
data|object|数据对象
&emsp;id|Long|保存后主键id
&emsp;entity|object|保存更新实体
<#list table.columns as column>
&emsp;&emsp;${column.javaField}|${column.javaType}|${column.columnComment}
</#list>

**响应消息样例:**
```
{
  "msg":"新增模块成功",
  "code":1,
  "data":{}
  }
}

```

### 删除${table.functionName}

**请求URL:** ${table.path}/${table.requestMapping}/delete

**请求方式:** GET

**内容类型:** application/json;charset=utf-8

**简要描述:** 删除${table.functionName}

**请求参数:**

参数名称|类型|必填|描述
:---|:---|:---|:------
${table.pkColumn.javaField}|String|是|数组

**请求样例:**
```
  http://localhost:8080/${table.path}/${table.requestMapping}/delete?id=1&id=2'
```
**响应参数:**

参数名称 |参数类型|备注|其它
---|---|---|---
code|Integer|结果码（-1.失败，1.成功）|-
msg|String|消息|-

**响应消息样例:**
```
{
  "code":1,
  "msg":"成功"
}

```
<#if table.isGenExport==1 >

### 导入${table.functionName}模板下载

**请求URL:** ${table.path}/${table.requestMapping}/downloadTemplate

**请求方式:** POST

**内容类型:** application/octet-stream;charset=utf-8

**简要描述:** ${table.functionName}导入模板下载

**请求样例:**
```
  http://localhost/${table.path}/${table.requestMapping}/downloadTemplate
```

**Response-example:**
```
...

```

### 导入${table.functionName}

**请求URL:** ${table.path}/${table.requestMapping}/importData

**请求方式:** POST

**内容类型:** multipart/form-data

**简要描述:** 导入${table.functionName}

**请求参数:**

参数名称|类型|必填|描述
:---|:---|:---|:------
file|file|是|文件流

**请求样例:**
```
  http://localhost/${table.path}/${table.requestMapping}/importData --data 'updateSupport=true'

```

**Response-example:**
```
...

```

### 导出${table.functionName}

**请求URL:** ${table.path}/${table.requestMapping}/exportExcel

**请求方式:** POST

**内容类型:** application/json;charset=utf-8

**简要描述:** 导出${table.functionName}

**请求参数:**

参数名称|类型|必填|描述
:---|:---|:---|:------
idList|Arrays|否|id数组
<#list table.columns as column>
  <#if column.isQuery == 1>
      ${column.javaField}|${column.javaType}|${column.columnComment}|否|参数查询条件
  </#if>
</#list>

**请求样例:**
```
{
  idList:[1,2],
<#list table.columns as column>
  <#if column.isQuery == 1>
      <#if column.javaType=="String" ||column.javaType=="Date">
          <#assign fakeValue>"${column.randomStr(column.javaType)}"</#assign>
      <#else>
          <#assign fakeValue>${column.randomStr(column.javaType)}</#assign>
      </#if>
      "${column.javaField}":${fakeValue}<#sep>,</#sep>
  </#if>
</#list>

}

```

**Response-example:**
```
...

```
</#if>
</#list>
## 字典附录
<#list tableList as table>
<#list table.columns as column>
<#if column.dict??>
  <#assign comment=column.subComment(column.columnComment) />
### ${column.javaField}
字典参数key|字典参数值|其它
:---|:---|:---
<#list column.dict as dict>
${dict.num}|${dict.value}|-
</#list>
</#if>
</#list>
</#list>