前端需要的返回数据格式
数据库查询内容
SELECT
t.id,
c.id as template_component_id,
c.component_id,
c.com_sequence as componentIndex,
c.is_required,
cc.title,
cc.`value`,
cc.field_required
FROM
tin_template_component_content cc
LEFT JOIN tin_template_component c ON cc.template_component_id = c.id
LEFT JOIN tin_template t ON c.template_id = t.id
WHERE
t.id = 106989454
AND t.is_usable = 0
AND c.is_usable = 0
ORDER BY c.com_sequence ASC,cc.field_required Asc
代码如下
controller
controller层使用JSONObject接收service数据,传递templateId参数
@ApiOperation("根据templateId查询页面数据Test")
@GetMapping(value = {"/queryTemplateByIdTestTrue/{templateId}"})
public ItooResult queryTemplateByIdTestTrue(@PathVariable String templateId){
JSONObject temComLoadModel = templateContentService.queryTemplateByIdTestTrue(templateId);
if(temComLoadModel == null){
return ItooResult.build(CodeEnumUtils.SELECT_FINISH.getCode(), CodeEnumUtils.SELECT_FINISH.getMessage());
}
return ItooResult.build(CodeEnumUtils.SELECT_SUCCESS.getCode(), CodeEnumUtils.SELECT_SUCCESS.getMessage(), temComLoadModel);
}
service
service层创建JSONObject接口
JSONObject queryTemplateByIdTestTrue(String templateId);
serviceImpl
serviceImpl层创建返回值为JSONObject类型,并且使用JSONArray 和JSONObject进行存储并做为返回对象
@Override
public JSONObject queryTemplateByIdTestTrue(String templateId){
List<queryTemplateByIdModel> list = templateContentDao.queryTemplateByIdTestTrue(templateId);
// 第一层json数组
JSONArray jsonArray = new JSONArray();
// 第一层对象
JSONObject jsonObject = new JSONObject();
//对templateId去重
ArrayList<queryTemplateByIdModel> listTemplateId = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(queryTemplateByIdModel::getTemplateId))), ArrayList::new));
//对listTemplateComId去重
ArrayList<queryTemplateByIdModel> listTemplateComId = list.stream().collect(Collectors.collectingAndThen(Collectors.toCollection(() -> new TreeSet<>(Comparator.comparing(queryTemplateByIdModel::getTemplateComId))), ArrayList::new));
// 第一层数据
for (queryTemplateByIdModel temComLoadModel : listTemplateId) {
jsonObject.put("templateId", temComLoadModel.getTemplateId());
jsonObject.put("templateContent", jsonArray);
}
// 第二层数据数组
for (queryTemplateByIdModel queryTemplateByIdModelId : listTemplateComId) {
// 第2层对象
JSONObject obj2 = new JSONObject();
JSONArray list2 = new JSONArray();
obj2.put("templateComId", queryTemplateByIdModelId.getTemplateComId());
obj2.put("componentId",queryTemplateByIdModelId.getComponentID());
obj2.put("componentIndex",queryTemplateByIdModelId.getComponentIndex());
obj2.put("isRequired",queryTemplateByIdModelId.getIsRequired());
// 第三层数据数组
for (queryTemplateByIdModel queryTemplateByIdModelInfo : list) {
if (queryTemplateByIdModelId.getTemplateComId().equals(queryTemplateByIdModelInfo.getTemplateComId())) {
// 第3层对象
JSONObject obj3 = new JSONObject();
obj3.put("title", queryTemplateByIdModelInfo.getTitle());
obj3.put("value", queryTemplateByIdModelInfo.getValue());
obj3.put("fieldRequired",queryTemplateByIdModelInfo.getFieldRequired());
list2.add(obj3);
}
// 将第二层数据存放到componentInfo名字的数组中
obj2.put("componentInfo", list2);
}
// json对象数组添加第二层数据
jsonArray.add(obj2);
}
return jsonObject;
}
DAO
DAO还是使用list接收即可
List<queryTemplateByIdModel> queryTemplateByIdTestTrue(@Param("templateId")String templateId);
mapper
<select id="queryTemplateByIdTestTrue" resultType="com.tfjybj.physical.model.queryTemplateByIdModel">
SELECT
t.id as templateId,
c.id as templateComId,
c.component_id as componentID,
c.com_sequence as componentIndex,
c.is_required,
cc.title,
cc.`value`,
cc.field_required
FROM
tin_template_component_content cc
LEFT JOIN tin_template_component c ON cc.template_component_id = c.id
LEFT JOIN tin_template t ON c.template_id = t.id
WHERE
t.id = #{templateId}
AND t.is_usable = 0
AND c.is_usable = 0
ORDER BY c.com_sequence ASC,cc.field_required Asc
</select>
结果如下:
{
"code": "0000",
"message": "查询成功!",
"data": {
"templateContent": [
{
"componentIndex": "3",
"isRequired": "0",
"componentId": "0445946",
"templateComId": "937440734",
"componentInfo": [
{
"fieldRequired": "0",
"title": "单行输入框0",
"value": "请输入0"
},
{
"fieldRequired": "1",
"title": "单行输入框1",
"value": "请输入1"
}
]
},
{
"componentIndex": "4",
"isRequired": "0",
"componentId": "0445946",
"templateComId": "960421401",
"componentInfo": [
{
"fieldRequired": "0",
"title": "345",
"value": "2342esrg"
}
]
}
],
"templateId": "106989454"
}
}
备注:
这里使用了ITOOResult封装了返回对象类型将不在使用HashMap进行返回,会重复的哦!