mirror of https://gitee.com/stylefeng/guns
Merge remote-tracking branch 'origin/master'
commit
f8d5db215a
|
@ -0,0 +1,30 @@
|
||||||
|
package cn.stylefeng.guns.modular.api;
|
||||||
|
|
||||||
|
import cn.stylefeng.roses.kernel.resource.api.annotation.ApiResource;
|
||||||
|
import cn.stylefeng.roses.kernel.resource.api.annotation.GetResource;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.stereotype.Controller;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* API文档管理
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2021/1/14 21:05
|
||||||
|
*/
|
||||||
|
@Controller
|
||||||
|
@Slf4j
|
||||||
|
@ApiResource(name = "API文档管理")
|
||||||
|
public class ApiViewController {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 编辑应用界面
|
||||||
|
*
|
||||||
|
* @author fengshuonan
|
||||||
|
* @date 2021/1/6 13:37
|
||||||
|
*/
|
||||||
|
@GetResource(name = "API文档界面", path = "/view/api")
|
||||||
|
public String apiIndex() {
|
||||||
|
return "/modular/api/api.html";
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -36,7 +36,7 @@
|
||||||
border-top: 3px solid #d2d6de;
|
border-top: 3px solid #d2d6de;
|
||||||
margin-bottom: 20px;
|
margin-bottom: 20px;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
box-shadow: 0 1px 1px rgba(0,0,0,0.1)
|
box-shadow: 0 1px 1px rgba(0, 0, 0, 0.1)
|
||||||
}
|
}
|
||||||
|
|
||||||
.box-main {
|
.box-main {
|
||||||
|
@ -44,5 +44,21 @@
|
||||||
border: 0;
|
border: 0;
|
||||||
padding-top: 2px;
|
padding-top: 2px;
|
||||||
border-radius: 0;
|
border-radius: 0;
|
||||||
box-shadow: none
|
box-shadow: none;
|
||||||
}
|
overflow: scroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wide-layui-form-label {
|
||||||
|
float: left;
|
||||||
|
display: block;
|
||||||
|
padding: 9px 15px;
|
||||||
|
width: 130px;
|
||||||
|
font-weight: 400;
|
||||||
|
line-height: 20px;
|
||||||
|
text-align: right;
|
||||||
|
}
|
||||||
|
|
||||||
|
.wide-layui-input-block {
|
||||||
|
margin-left: 160px;
|
||||||
|
min-height: 36px;
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,88 @@
|
||||||
|
layui.use(['layer', 'form', 'table', 'HttpRequest', 'func', 'tree'], function () {
|
||||||
|
var $ = layui.jquery;
|
||||||
|
var form = layui.form;
|
||||||
|
var table = layui.table;
|
||||||
|
var HttpRequest = layui.HttpRequest;
|
||||||
|
var func = layui.func;
|
||||||
|
var tree = layui.tree;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Api管理的参数
|
||||||
|
*/
|
||||||
|
var ApiManager = {
|
||||||
|
condition: {
|
||||||
|
resourceCode: "",
|
||||||
|
resourceName: ""
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 选择api树上的接口时
|
||||||
|
ApiManager.onClickApi = function (obj) {
|
||||||
|
ApiManager.condition.resourceCode = obj.data.id;
|
||||||
|
|
||||||
|
// 如果是具体接口,则查看接口详情
|
||||||
|
if (obj.data.resourceFlag === true) {
|
||||||
|
ApiManager.search();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// 点击查询按钮
|
||||||
|
ApiManager.search = function () {
|
||||||
|
var detailRequest = new HttpRequest(Feng.ctxPath + "/resource/getDetail", 'get', function (data) {
|
||||||
|
form.val('apiDetailForm', data.data);
|
||||||
|
}, function (data) {
|
||||||
|
Feng.error("查询失败!" + data.message);
|
||||||
|
});
|
||||||
|
detailRequest.set("resourceCode", ApiManager.condition.resourceCode);
|
||||||
|
var detailResult = detailRequest.start(false);
|
||||||
|
|
||||||
|
// 参数的表头
|
||||||
|
var columns = [[
|
||||||
|
{field: 'chineseName', title: '中文名称', width: 150},
|
||||||
|
{field: 'fieldClassType', title: '字段类型', width: 150},
|
||||||
|
{field: 'fieldName', title: '字段名称', width: 200},
|
||||||
|
{
|
||||||
|
field: 'groupAnnotations', title: '按校验组分的注解集合', templet: function (data) {
|
||||||
|
return JSON.stringify(data.groupAnnotations);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
]];
|
||||||
|
|
||||||
|
// 渲染请求参数列表
|
||||||
|
table.render({
|
||||||
|
elem: '#requestParamsTable',
|
||||||
|
cols: columns,
|
||||||
|
data: detailResult.data.paramFieldDescriptions,
|
||||||
|
even: true
|
||||||
|
});
|
||||||
|
|
||||||
|
// 渲染请求参数列表
|
||||||
|
table.render({
|
||||||
|
elem: '#responseParamsTable',
|
||||||
|
cols: columns,
|
||||||
|
data: detailResult.data.responseFieldDescriptions,
|
||||||
|
even: true
|
||||||
|
});
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
// 初始化api树
|
||||||
|
var request = new HttpRequest(Feng.ctxPath + '/resource/getTree', 'get', function (data) {
|
||||||
|
tree.render({
|
||||||
|
elem: '#apiTree',
|
||||||
|
data: data.data,
|
||||||
|
click: ApiManager.onClickApi,
|
||||||
|
onlyIconControl: true
|
||||||
|
});
|
||||||
|
});
|
||||||
|
request.start();
|
||||||
|
|
||||||
|
});
|
||||||
|
|
||||||
|
$(function () {
|
||||||
|
var panehHidden = false;
|
||||||
|
if ($(this).width() < 769) {
|
||||||
|
panehHidden = true;
|
||||||
|
}
|
||||||
|
$('#myContiner').layout({initClosed: panehHidden, west__size: 330});
|
||||||
|
});
|
|
@ -0,0 +1,109 @@
|
||||||
|
@layout("/layout/_tree_container.html", {plugins:["jquery-layout"], js:["/assets/modular/api/api.js"]}){
|
||||||
|
|
||||||
|
<div class="layui-body-header">
|
||||||
|
<span class="layui-body-header-title">API接口文档</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div id="myContiner" style="height: 100%">
|
||||||
|
<div class="ui-layout-west">
|
||||||
|
<div class="box box-main">
|
||||||
|
<div class="ui-layout-content">
|
||||||
|
<div id="apiTree"></div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="ui-layout-center" style="height: 97%;overflow: scroll">
|
||||||
|
<div class="layui-fluid">
|
||||||
|
<div class="layui-row">
|
||||||
|
<div class="layui-col-md12">
|
||||||
|
<div class="layui-card">
|
||||||
|
<div class="layui-card-body">
|
||||||
|
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 20px;">
|
||||||
|
<legend>接口详情</legend>
|
||||||
|
</fieldset>
|
||||||
|
<form class="layui-form" lay-filter="apiDetailForm">
|
||||||
|
<div class="layui-row">
|
||||||
|
<div class="layui-col-xs2">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">http请求方法</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="httpMethod" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-col-xs10">
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">资源的请求路径</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="url" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">API名称</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="resourceName" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">控制器类名称</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="className" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">控制器中的方法名称</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="methodName" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">是否是视图类型</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="viewFlag" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">是否需要登录</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="requiredLoginFlag" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">是否需要鉴权</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="requiredPermissionFlag" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="layui-form-item">
|
||||||
|
<label class="wide-layui-form-label">参数校验分组</label>
|
||||||
|
<div class="wide-layui-input-block">
|
||||||
|
<input type="text" name="validateGroups" autocomplete="off" class="layui-input layui-disabled" disabled="disabled">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
</form>
|
||||||
|
|
||||||
|
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
|
||||||
|
<legend>请求参数</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<table class="layui-hide" id="requestParamsTable"></table>
|
||||||
|
|
||||||
|
<fieldset class="layui-elem-field layui-field-title" style="margin-top: 10px;">
|
||||||
|
<legend>响应参数</legend>
|
||||||
|
</fieldset>
|
||||||
|
|
||||||
|
<table class="layui-hide" id="responseParamsTable"></table>
|
||||||
|
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
@}
|
Loading…
Reference in New Issue