adminCarousel - TimYi/FengHuang GitHub Wiki

请求URL

http://101.200.229.135:8080/api/admin/carousel

字段说明

字段分为显示和保存两部分。
保存字段会有一些关联实体的id,显示字段会把一些关联实体的内容扁平化显示。

显示字段

id:id
page:所属页面 {
    id:id
    type:菜单类型
    ordernum:序号
    title:标题
    url:链接地址
}
ordernum:排序字段
pic:背景图片 {
    id
    url
}
fragment:模板配置 {
    id:id
    template:模板信息,详见模板管理的展示字段
    values:已配置变量数组 [
        {
            id
            name
            type:TEXT,IMG
            text:type=TEXT时展示此字段
            pic:type=IMG时,展示图片信息{id,url}
        }
    ]
    templateContent:模板注入变量后,生成的html
}

传参字段

id:id
pageId:页面id(导航菜单id)
ordernum:排序字段
picFile:图片,input type=file
fragmentInfo:模板配置信息 {
    templateId:传参时,传fragmentInfo.templateId,模板id
    values:变量数组,传参时,传fragmentInfo.values[i] {
        id:fragmentInfo.values[i].id,如果是更新已有变量,需要传id,比如图片类型变量,
        可能不需要传新的图片,更新时附带id即可。
        name:fragmentInfo.values[i].name,对应模板中的变量名
        type:fragmentInfo.values[i].type,变量类型
        text:fragmentInfo.values[i].text,文本变量值
        picFile:图片变量值
    }
}
参数限制:fragmentInfo中的values,name必须和templateId对应模板的definitions中的name对应
type也必须和definitions中的type对应,后台会检查。

后台管理如何动态展示

获取模板之后,列出模板definitions中的所有字段。展现模式伪代码:
<label>definition.name</label>
if(definition.type=TEXT) {
    <input type="text" name=definition.name>
} else {
    <input type="file" name=definition.name>
}
<!-- 后附加描述信息 -->
<p>definition.description</p>
同时,获取fragment中的values,通过name的匹配,为能够匹配上名称的input赋予初始值
<input value="value.TEXT"/>
或者在旁边展示图片(判断type类型)
并且在input中加上<input value=value.id name=id>

返回示例

{
"result": {
    "totalCount": 1,
    "totalPages": 1,
    "page": 1,
    "size": 8,
    "result": [
        {
            "id": "8aac48364e86c3f8014e86ca70170000",
            "page": null,
            "ordernum": 0,
            "pic": null,
            "title": "test",
            "content": "test",
            "buttonText": null,
            "buttonUrl": null,
            "rightArea": null
        }
    ]
},
"status": "OK"
}

按照导航菜单id获取导航

url:http://101.200.229.135:8080/api/admin/carousel/bypage/{pageId}
method:GET
参数:路径参数,pageId
返回:改pageId下所有轮播

排序接口

url:http://101.200.229.135:8080/api/admin/carousel/order
method:POST
参数:id-ordernum键值对组成的map
请求参考:一下为通过测试的请求参数,请求方式为application/json
{
    "404040e64e866c94014e866ca4110000": 1,
    "404040e64e866c94014e866ca4980001": 0
}

输入举例

举个例子,比如一个模板的definitions是这样的:
name=text,type=TEXT,description=文本
name=img,type=IMG,description=图片
那你在添加的时候,是这样的:
<input type="hidden" name="fragmentInfo.values[0].name" value="text">
<input type="hidden" name="fragmentInfo.values[0].type" value="TEXT">
<input type="text" name="fragmentInfo.values[0].text">

<input type="hidden" name="fragmentInfo.values[1].name" value="img">
<input type="hidden" name="fragmentInfo.values[1].type" value="IMG">
<input type="file" name="fragmentInfo.values[1].picFile">

对于同一个模板,如果在修改的时候,对应的fragment,它的values是这样的:
id=1,name=text,type=TEXT,text="已录入文本",pic=null
id=2,name=img,type=IMG,text="null",pic={id,url}
那么你在更新的时候,input应该是这样的:
<input type="hidden" name="fragmentInfo.values[0].id" value="1">
<input type="hidden" name="fragmentInfo.values[0].name" value="text">
<input type="hidden" name="fragmentInfo.values[0].type" value="TEXT">
<input type="text" name="fragmentInfo.values[0].text" value="已录入文本">

<input type="hidden" name="fragmentInfo.values[1].id" value="2">
<input type="hidden" name="fragmentInfo.values[1].name" value="img">
<input type="hidden" name="fragmentInfo.values[1].type" value="IMG">
<input type="file" name="fragmentInfo.values[1].picFile">
⚠️ **GitHub.com Fallback** ⚠️