import cn.hutool.core.bean.BeanUtil;
import com.alibaba.fastjson.JSONObject;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 模型应用管理Service业务层处理
*/
@Service
public class InterfaceAuthManageServiceImpl extends ServiceImpl<SysSignAuthMapper, SysSignAuth> implements IIntertfaceAuthManageService {
private static final Logger logger = LoggerFactory.getLogger(InterfaceAuthManageServiceImpl.class);
@Autowired
private ModelManageResponseGroupMapper modelManageResponseGroupMapper;
@Autowired
private ModelManageResponseGroupConfigMapper modelManageResponseGroupConfigMapper;
/**
* 查询接口权限实体列表
*
* @param id 接口权限实体
* @return 接口权限实体列表
*/
@Override
public Map<String,Object> selectSysSignAuthList(String id) {
String jsonString = "{\"total\":35,\"rows\":[{\"role_id\":\"1531808334833913856\",\"role_name\":\"猜测是\",\"menu_id\":\"1\",\"menu_name\":\"系统管理\"},{\"role_id\":\"1531808334833913856\",\"role_name\":\"猜测是\",\"menu_id\":\"100\",\"menu_name\":\"用户管理\"},{\"role_id\":\"1531808334833913856\",\"role_name\":\"猜测是\",\"menu_id\":\"1001\",\"menu_name\":\"用户查询\"}],\"code\":200,\"msg\":\"查询成功\"}";
return generateResponseBody("ad459e90012b4eb88b24a59fdb1f285b",jsonString);
}
@Override
public Map<String, Object> generateResponseBody(String id, String jsonString) {
//输出
List<Map<String, Object>> resultList = new ArrayList<>();
Map<String, Object> resultMap = new HashMap<>();
//输入
JSONObject requestJsonObj = JSONObject.parseObject(jsonString);
List<Map<String, Object>> params = (List<Map<String, Object>>) requestJsonObj.get("rows");
//取主表数据-groupId
ModelManageResponseGroup modelManageResponseGroup = modelManageResponseGroupMapper.selectModelManageResponseGroupByModelId(id);
//未配置出参转换时直接返回原数据
if (modelManageResponseGroup != null) {
List<ModelManageResponseGroupConfig> modelManageResponseGroupConfigs = modelManageResponseGroupConfigMapper.selectModelManageResponseGroupConfigByGroupId(modelManageResponseGroup.getGroupId());
if (modelManageResponseGroupConfigs.size() > 0) {
for (Map<String, Object> param : params) {
resultList.add(paramTransfor(param, modelManageResponseGroupConfigs));
}
resultMap = delRepeat(resultList);
requestJsonObj.put("rows", resultMap);
}
}
logger.info("转换结果:" + requestJsonObj.toJSONString());
return requestJsonObj;
}
public Map<String, Object> paramTransfor(Map<String, Object> param,List<ModelManageResponseGroupConfig> tAiInterAttrDOList) {
Map<String, Object> transforParam = new HashMap<String, Object>();
// 递归转换请求数据
recursion("0", tAiInterAttrDOList, param, transforParam,param);
return transforParam;
}
private void recursion(String parentTempltId, List<ModelManageResponseGroupConfig> tAiInterAttrDOList, Map<String, Object> paramMap,Map<String, Object> newMap, Map<String, Object> originMap) {
for (int i = 0; i < tAiInterAttrDOList.size(); i++) {
ModelManageResponseGroupConfig attrDO = tAiInterAttrDOList.get(i);
if (!StringUtils.equals(String.valueOf(parentTempltId), String.valueOf(attrDO.getParentId()))) {
continue;
}
String type = attrDO.getFieldType();
if (FieldTypeConstant.STRING.equals(type)) {
String value = paramMap.get(attrDO.getFieldName()) == null ? null : paramMap.get(attrDO.getFieldName()).toString();
newMap.put(attrDO.getFieldNameTrsfm(), value);
} else if (FieldTypeConstant.LIST.equals(type)) {
List<Map<String, Object>> list = (List<Map<String, Object>>)paramMap.get(attrDO.getFieldName());
List<Map<String, Object>> newList = (List<Map<String, Object>>)newMap.get(attrDO.getFieldNameTrsfm());
if (null == newList) {
newList = new ArrayList<>();
}
if(list==null){
List<ModelManageResponseGroupConfig> modelManageResponseGroupConfigs = modelManageResponseGroupConfigMapper.selectModelManageResponseGroupConfigByGroupIdAndParentId(attrDO.getGroupId(),attrDO.getConfigId());
for (int j = 0;j < modelManageResponseGroupConfigs.size(); j++) {
Map<String, Object> tempMap = new HashMap<>();
Map<String, Object> childrenMap = BeanUtil.beanToMap(modelManageResponseGroupConfigs.get(j));
recursion(attrDO.getConfigId(), tAiInterAttrDOList, childrenMap, tempMap,originMap);
newList.add(tempMap);
}
newMap.put(attrDO.getFieldNameTrsfm(), newList);
}
} else if (FieldTypeConstant.MAP.equals(type)) {
HashMap<String, Object> childMap = (HashMap<String, Object>)newMap.get(attrDO.getFieldNameTrsfm());
if (null == childMap) {
childMap = new HashMap<String, Object>();
List<ModelManageResponseGroupConfig> modelManageResponseGroupConfigs = modelManageResponseGroupConfigMapper.selectModelManageResponseGroupConfigByGroupIdAndParentId(attrDO.getGroupId(),attrDO.getConfigId());
Map<String, Object> tempMap = new HashMap<>();
for (int j = 0;j < modelManageResponseGroupConfigs.size(); j++) {
ModelManageResponseGroupConfig tempModel = modelManageResponseGroupConfigs.get(j);
Map<String, Object> childrenMap = BeanUtil.beanToMap(modelManageResponseGroupConfigs.get(j));
tempMap.put(tempModel.getFieldName(),originMap.get(tempModel.getFieldName()));
}
recursion(attrDO.getConfigId(), modelManageResponseGroupConfigs, tempMap, childMap,originMap);
}
newMap.put(attrDO.getFieldNameTrsfm(), childMap);
}
}
}
/**
* 根据模板得到转换后的key
*
* @param key
* @param tAiInterAttrDOList
* @return
*/
private String getTransfKey(String key, List<ModelManageResponseGroupConfig> tAiInterAttrDOList) {
for (ModelManageResponseGroupConfig tAiInterAttrDO : tAiInterAttrDOList) {
if (key.equals(tAiInterAttrDO.getFieldName())) {
return tAiInterAttrDO.getFieldNameTrsfm();
}
}
return key;
}
/**
* 遍历后判断赋给另一个list集合,保持原来顺序
*
* @param list
* @return listNew
*/
public static Map<String,Object> delRepeat(List<Map<String,Object>> list) {
Map<String,Object> mapNew = new HashMap<String,Object>();
for (Map<String,Object> paramMap : list) {
recursionRsp(paramMap,mapNew);
}
return mapNew ;
}
private static void recursionRsp(Map<String, Object> map, Map<String, Object> newMaps) {
for (Object objEntry : map.entrySet()) {
Map.Entry<String, Object> entry = (Map.Entry<String, Object>)objEntry;
String key = entry.getKey();
if (entry.
评论0