【高级查询】表格高级查询配置功能迁移,方便微服务拆分

This commit is contained in:
weizhiqiang 2022-08-02 11:27:40 +08:00
parent ab67182eca
commit 436f4bbe23
6 changed files with 320 additions and 2 deletions

View file

@ -5,6 +5,7 @@
package com.skyeye.eve.controller;
import com.skyeye.annotation.api.Api;
import com.skyeye.annotation.api.ApiImplicitParam;
import com.skyeye.annotation.api.ApiImplicitParams;
import com.skyeye.annotation.api.ApiOperation;
import com.skyeye.common.object.InputObject;
@ -30,6 +31,36 @@ public class SearchConfigController {
@Autowired
private SearchConfigService searchConfigService;
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于前台使用
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@ApiOperation(id = "querySearchParamsConfigToHtml", value = "根据urlId以及appId获取高级查询的参数配置信息----用于前台使用", method = "POST", allUse = "0")
@ApiImplicitParams({
@ApiImplicitParam(id = "urlId", name = "urlId", value = "接口的urlId", required = "required"),
@ApiImplicitParam(id = "appId", name = "appId", value = "微服务的APPID", required = "required")})
@RequestMapping("/post/SearchConfigController/querySearchParamsConfigToHtml")
public void querySearchParamsConfigToHtml(InputObject inputObject, OutputObject outputObject) {
searchConfigService.querySearchParamsConfigToHtml(inputObject, outputObject);
}
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于后台使用
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@ApiOperation(id = "querySearchParamsConfig", value = "根据urlId以及appId获取高级查询的参数配置信息----用于后台使用", method = "POST", allUse = "0")
@ApiImplicitParams({
@ApiImplicitParam(id = "urlId", name = "urlId", value = "接口的urlId", required = "required"),
@ApiImplicitParam(id = "appId", name = "appId", value = "微服务的APPID", required = "required")})
@RequestMapping("/post/SearchConfigController/querySearchParamsConfig")
public void querySearchParamsConfig(InputObject inputObject, OutputObject outputObject) {
searchConfigService.querySearchParamsConfig(inputObject, outputObject);
}
/**
* 新增/编辑高级查询配置
*
@ -43,5 +74,4 @@ public class SearchConfigController {
searchConfigService.writeSearchConfigMation(inputObject, outputObject);
}
}

View file

@ -0,0 +1,18 @@
/*******************************************************************************
* Copyright 卫志强 QQ598748873@qq.com Inc. All rights reserved. 开源地址https://gitee.com/doc_wei01/skyeye
******************************************************************************/
package com.skyeye.eve.dao;
import com.skyeye.eve.entity.search.SearchMation;
/**
* @ClassName: SearchDao
* @Description: 高级查询属性配置管理数据交互层
* @author: skyeye云系列--卫志强
* @date: 2022/6/30 22:31
* @Copyright: 2022 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved.
* 注意本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的
*/
public interface SearchDao extends SkyeyeBaseMapper<SearchMation> {
}

View file

@ -0,0 +1,53 @@
/*******************************************************************************
* Copyright 卫志强 QQ598748873@qq.com Inc. All rights reserved. 开源地址https://gitee.com/doc_wei01/skyeye
******************************************************************************/
package com.skyeye.eve.entity.search;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.skyeye.annotation.api.ApiModel;
import com.skyeye.annotation.api.ApiModelProperty;
import com.skyeye.common.entity.CommonOperatorUserInfo;
import lombok.Data;
import java.io.Serializable;
import java.util.Map;
/**
* @ClassName: SearchMation
* @Description: 高级查询配置实体类
* @author: skyeye云系列--卫志强
* @date: 2022/7/12 11:01
* @Copyright: 2022 https://gitee.com/doc_wei01/skyeye Inc. All rights reserved.
* 注意本内容仅限购买后使用.禁止私自外泄以及用于其他的商业目的
*/
@Data
@TableName(value = "sys_search")
@ApiModel("高级查询配置实体类")
public class SearchMation extends CommonOperatorUserInfo implements Serializable {
@TableId("id")
@ApiModelProperty(value = "主键id。为空时新增不为空时编辑")
private String id;
@TableField("app_id")
@ApiModelProperty(value = "APPID", required = "required")
private String appId;
@TableField("url_id")
@ApiModelProperty(value = "接口对应的url的id", required = "required")
private String urlId;
@TableField(exist = false)
@ApiModelProperty(value = "参数配置信息", required = "required")
private Map<String, SearchParamsConfigMation> paramsConfig;
/**
* 参数配置信息json字符串
*/
@TableField("params_config")
private String paramsConfigStr;
}

View file

@ -0,0 +1,48 @@
/*******************************************************************************
* Copyright 卫志强 QQ598748873@qq.com Inc. All rights reserved. 开源地址https://gitee.com/doc_wei01/skyeye
******************************************************************************/
package com.skyeye.eve.service;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.eve.entity.search.SearchMation;
import java.util.Map;
public interface SearchConfigService {
void querySearchParamsConfigToHtml(InputObject inputObject, OutputObject outputObject);
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于前台使用
*
* @param urlId urlId
* @param appId appId
* @return 高级查询的参数配置信息
*/
Map<String, Object> querySearchParamsConfigToHtml(String urlId, String appId);
void querySearchParamsConfig(InputObject inputObject, OutputObject outputObject);
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于后台使用
*
* @param urlId urlId
* @param appId appId
* @return 高级查询的参数配置信息
*/
Map<String, Object> querySearchParamsConfig(String urlId, String appId);
void writeSearchConfigMation(InputObject inputObject, OutputObject outputObject);
/**
* 根据urlId以及appId获取高级查询信息
*
* @param urlId urlId
* @param appId appId
* @return 高级查询信息
*/
SearchMation querySearchMation(String urlId, String appId);
}

View file

@ -0,0 +1,169 @@
/*******************************************************************************
* Copyright 卫志强 QQ598748873@qq.com Inc. All rights reserved. 开源地址https://gitee.com/doc_wei01/skyeye
******************************************************************************/
package com.skyeye.eve.service.impl;
import cn.hutool.json.JSONUtil;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.skyeye.common.constans.CommonConstants;
import com.skyeye.common.constans.CommonNumConstants;
import com.skyeye.common.object.InputObject;
import com.skyeye.common.object.OutputObject;
import com.skyeye.common.util.DataCommonUtil;
import com.skyeye.common.util.mybatisplus.MybatisPlusUtil;
import com.skyeye.eve.dao.SearchDao;
import com.skyeye.eve.entity.search.SearchMation;
import com.skyeye.eve.entity.search.SearchOperatorMation;
import com.skyeye.eve.entity.search.SearchParamsConfigMation;
import com.skyeye.eve.service.SearchConfigService;
import net.sf.json.JSONObject;
import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import org.springframework.util.ObjectUtils;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service
public class SearchConfigServiceImpl implements SearchConfigService {
private static final Logger LOGGER = LoggerFactory.getLogger(SearchConfigServiceImpl.class);
@Autowired
private SearchDao searchDao;
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于前台使用
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@Override
public void querySearchParamsConfigToHtml(InputObject inputObject, OutputObject outputObject) {
Map<String, Object> params = inputObject.getParams();
String urlId = params.get("urlId").toString();
String appId = params.get("appId").toString();
Map<String, Object> result = this.querySearchParamsConfigToHtml(urlId, appId);
outputObject.setBean(result);
outputObject.settotal(CommonNumConstants.NUM_ONE);
}
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于前台使用
*
* @param urlId urlId
* @param appId appId
* @return 高级查询的参数配置信息
*/
@Override
public Map<String, Object> querySearchParamsConfigToHtml(String urlId, String appId) {
Map<String, Object> result = querySearchParamsConfig(urlId, appId);
if (result != null) {
result.forEach((key, value) -> {
Map classMap = new HashMap();
classMap.put("searchCondition", SearchOperatorMation.class);
SearchParamsConfigMation searchParamsConfigMation = (SearchParamsConfigMation) JSONObject.toBean((JSONObject) value,
SearchParamsConfigMation.class, classMap);
// 获取筛选条件
List<SearchOperatorMation> searchCondition = searchParamsConfigMation.getSearchCondition();
if (CollectionUtils.isNotEmpty(searchCondition)) {
searchCondition.forEach(bean -> {
bean.setMySql(null);
bean.setOracle(null);
bean.setPgSql(null);
bean.setSqlServer(null);
});
}
result.put(key, searchParamsConfigMation);
});
return result;
}
return null;
}
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于后台使用
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@Override
public void querySearchParamsConfig(InputObject inputObject, OutputObject outputObject) {
Map<String, Object> params = inputObject.getParams();
String urlId = params.get("urlId").toString();
String appId = params.get("appId").toString();
Map<String, Object> result = this.querySearchParamsConfig(urlId, appId);
outputObject.setBean(result);
outputObject.settotal(CommonNumConstants.NUM_ONE);
}
/**
* 根据urlId以及appId获取高级查询的参数配置信息----用于后台使用
*
* @param urlId urlId
* @param appId appId
* @return 高级查询的参数配置信息
*/
@Override
public Map<String, Object> querySearchParamsConfig(String urlId, String appId) {
SearchMation searchMation = querySearchMation(urlId, appId);
if (searchMation != null) {
Map<String, Object> result = JSONObject.fromObject(searchMation.getParamsConfigStr());
return result;
}
return null;
}
/**
* 新增/编辑高级查询配置
*
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@Override
@Transactional(value = "transactionManager", rollbackFor = Exception.class)
public void writeSearchConfigMation(InputObject inputObject, OutputObject outputObject) {
SearchMation searchMation = inputObject.getParams(SearchMation.class);
// 1.根据appId和urlId进行校验
QueryWrapper<SearchMation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.getDeclaredFieldsInfo2(SearchMation.class, "appId"), searchMation.getAppId());
queryWrapper.eq(MybatisPlusUtil.getDeclaredFieldsInfo2(SearchMation.class, "urlId"), searchMation.getUrlId());
if (StringUtils.isNotEmpty(searchMation.getId())) {
queryWrapper.ne(CommonConstants.ID, searchMation.getId());
}
SearchMation checkSearchMation = searchDao.selectOne(queryWrapper);
if (ObjectUtils.isEmpty(checkSearchMation)) {
String userId = inputObject.getLogParams().get("id").toString();
searchMation.setParamsConfigStr(JSONUtil.toJsonStr(searchMation.getParamsConfig()));
// 2.新增/编辑数据
if (StringUtils.isNotEmpty(searchMation.getId())) {
LOGGER.info("update searchConfig data, id is {}", searchMation.getId());
DataCommonUtil.setCommonLastUpdateDataByGenericity(searchMation, userId);
searchDao.updateById(searchMation);
} else {
DataCommonUtil.setCommonDataByGenericity(searchMation, userId);
LOGGER.info("insert searchConfig data, id is {}", searchMation.getId());
searchDao.insert(searchMation);
}
outputObject.setBean(searchMation);
} else {
outputObject.setreturnMessage("this data is non-existent.");
}
}
@Override
public SearchMation querySearchMation(String urlId, String appId) {
QueryWrapper<SearchMation> queryWrapper = new QueryWrapper<>();
queryWrapper.eq(MybatisPlusUtil.getDeclaredFieldsInfo2(SearchMation.class, "urlId"), urlId);
queryWrapper.eq(MybatisPlusUtil.getDeclaredFieldsInfo2(SearchMation.class, "appId"), appId);
return searchDao.selectOne(queryWrapper);
}
}

View file

@ -116,7 +116,7 @@ public class ScheduleDayController {
* @param inputObject 入参以及用户信息等获取对象
* @param outputObject 出参以及提示信息的返回值对象
*/
@ApiOperation(id = "insertScheduleMationByOtherModule", value = "其他模块同步到日程", method = "POST", allUse = "2")
@ApiOperation(id = "insertScheduleMationByOtherModule", value = "其他模块同步到日程", method = "POST", allUse = "0")
@ApiImplicitParams(classBean = OtherModuleScheduleMation.class)
@RequestMapping("/post/ScheduleDayController/insertScheduleMationByOtherModule")
public void insertScheduleMationByOtherModule(InputObject inputObject, OutputObject outputObject) {