Commit 77e8de6b authored by zhangc's avatar zhangc

修改部分代码

parent 30c66f80
......@@ -223,7 +223,7 @@ public class OrganizationManageImpl implements OrganizationManageService {
public ApiOrg getAuthOrganization(Long apiOrgId) {
QueryWrapper<ApiOrg> query = new QueryWrapper<>();
query.eq("id", apiOrgId);
query.eq("status", OrgStatusEnum.NORMAL.name());
query.eq("status",1);
query.eq("is_deleted", 0);
return apiOrgMapper.selectOne(query);
}
......
......@@ -87,19 +87,21 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
@ApiLogAspect(description = "API请求日志")
@AccessLimit(limit = 10000, sec = 1)
@SentinelResource(value = "api.gateway", fallback = "fallbackGateway")
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRES_NEW)
@Transactional(rollbackFor = Exception.class, propagation = Propagation.REQUIRED)
public void doService(OpenApiRequest request, OpenApiResponse response) {
boolean bResult = false;
JSONObject parameter = JSONObject.parseObject(request.getOpenApiParams());
ApiInterface apiInterface = apiInterfaceService.getApiInfo(request.getApiKey());
ApiAuth apiAuth = null;
JSONObject jsonParams =null;
try {
Boolean isTest = parameter.getBoolean("isTest");
String reqParams = parameter.getString("reqParams");
parameter.put("is_test", isTest);
Map paramMap = null;
if (StringUtils.isNotBlank(reqParams)) {
paramMap = (Map) JSONObject.parseObject(reqParams);
paramMap.put("is_test",isTest);
jsonParams = JSONObject.parseObject(reqParams);
paramMap = JSONObject.parseObject(jsonParams.getString("request_fileds"), Map.class);
}
if (!isTest) {//如果不是测试
String authCode = parameter.getString("authCode");
......@@ -110,17 +112,19 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
apiAuth = authService.getAuthInfo(authCode);
verifyAuth(apiAuth);
//取出缓存数据
String redisReqParam = redisUtils.get(request.getApiKey());
/* String redisReqParam = redisUtils.get(request.getApiKey());*/
String redisReqParam = null;
if (StringUtils.isNotBlank(redisReqParam)) {//redis中存在
//解析出API制作成功时的参数配置
JSONObject jsonObject = JSONObject.parseObject(redisReqParam);
String targetUrl = jsonObject.getString("targetUrl");
String outputType = jsonObject.getString("outputType");
String joinType = jsonObject.getString("joinType");
bResult = rangRequestTarget(outputType, targetUrl,false, paramMap, joinType, apiInterface, response);
bResult = rangRequestTarget(outputType, targetUrl, false, paramMap,
jsonParams, joinType, apiInterface, response);
} else {//不存在查询数据库
bResult = rangRequestTarget(apiInterface.getOutputType(),
apiInterface.getTargetUrl(),false, paramMap, apiInterface.getJoinType(), apiInterface, response);
apiInterface.getTargetUrl(), false, paramMap,jsonParams, apiInterface.getJoinType(), apiInterface, response);
}
//调用成功请求数据银行扣款
if (AuthModeEnum.POWER_CALL_MODE.name().equals(apiAuth.getAuthMode())) {
......@@ -130,7 +134,7 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
}
} else {
bResult = rangRequestTarget(ApiInfoOutTypeEnum.JSON.name(), apiInterface.getTargetUrl(),
true,paramMap, apiInterface.getJoinType(), apiInterface, response);
true, paramMap,jsonParams,apiInterface.getJoinType(), apiInterface, response);
}
} catch (Exception ex) {
if (ex instanceof GatewayException) {
......@@ -154,12 +158,12 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
* @param outputType
* @param targetUrl
* @param param
* @param isTest 是否是测试
* @param isTest 是否是测试
* @param joinType
* @param response
*/
private boolean rangRequestTarget(String outputType, String targetUrl,Boolean isTest,
Map<String, String> param, String joinType,
private boolean rangRequestTarget(String outputType, String targetUrl, Boolean isTest,
Map<String, String> param, JSONObject jsonParams,String joinType,
ApiInterface apiInterface, OpenApiResponse response) {
if (StringUtils.isBlank(outputType)) {
outputType = ApiInfoOutTypeEnum.JSON.name();
......@@ -170,9 +174,9 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
if (StringUtils.isBlank(joinType)) {
throw new GatewayException(GatewayResultCode.API_TYPE_ERROR);
}
if (!isTest){
if (!isTest) {
if ("10002".equals(joinType) || "10009".equals(joinType)) {//数据表查询
return dataTableSelect(outputType, targetUrl, param, apiInterface, response);
return dataTableSelect(outputType, targetUrl, param,jsonParams, apiInterface, response);
} else if ("10004".equals(joinType) || "10008".equals(joinType)) {//三方查询
return thirdSelect(targetUrl, apiInterface, response);
} else if ("10005".equals(joinType) || "10007".equals(joinType)) {//数据包查询
......@@ -180,8 +184,8 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
} else {
throw new GatewayException(GatewayResultCode.API_TYPE_ERROR);
}
}else {
return dataTableSelect(outputType, targetUrl, param, apiInterface, response);
} else {
return dataTableSelect(outputType, targetUrl, param,jsonParams, apiInterface, response);
}
}
......@@ -232,12 +236,12 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
* @param response
* @return
*/
private boolean dataTableSelect(String outputType, String targetUrl, Map<String, String> param, ApiInterface apiInterface, OpenApiResponse response) {
private boolean dataTableSelect(String outputType, String targetUrl, Map<String, String> param,JSONObject jsonParams, ApiInterface apiInterface, OpenApiResponse response) {
ApiInterfaceCustom apiCustomInfo = checkParamLegal(param, apiInterface);
if (ApiInfoOutTypeEnum.FLOW.name().equals(outputType)) {//文件流形式请求
return flowRequestMethod(targetUrl, param, response, apiCustomInfo);
} else if (ApiInfoOutTypeEnum.JSON.name().equals(outputType)) { //json格式请求
return jsonRequestMethod(targetUrl, param, response, apiCustomInfo);
return jsonRequestMethod(targetUrl, param,jsonParams, response, apiCustomInfo);
} else {
throw new GatewayException(GatewayResultCode.OUTPUT_TYPE_EXCEPTION);
}
......@@ -259,7 +263,8 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
for (Map map : mapList) {
if ((Boolean) map.get("required")) {
String name = (String) map.get("name");
if (null == param.get(name)) {
String field = param.get(name);
if (null == field) {
tag = true;
}
}
......@@ -316,24 +321,29 @@ public class ApiQueryService extends ApiParamVerify implements OpenApiService {
* @param apiCustomInfo
* @return
*/
private boolean jsonRequestMethod(String targetUrl, Map<String, String> param,
private boolean jsonRequestMethod(String targetUrl, Map<String, String> param,JSONObject jsonParams,
OpenApiResponse response, ApiInterfaceCustom apiCustomInfo) {
JSONObject params = new JSONObject();
params.put("datasourceId", apiCustomInfo.getEsDataSource());//数据源id
params.put("query_database", apiCustomInfo.getEsDataBase());//数据源库名称
params.put("query_table", apiCustomInfo.getEsTable());//数据源库表
net.sf.json.JSONObject reqParams = net.sf.json.JSONObject.fromObject(param);
params.put("request_fileds", reqParams);//请求参数
params.put("response_fields", assembleResponseParams(apiCustomInfo.getResponseParam()));//响应参数
Integer pageNum = Integer.valueOf(param.get("pageNum"));
Integer pageSize = Integer.valueOf(param.get("pageSize"));
params.put("page_size", apiCustomInfo.getPageSize());
params.put("page_num", apiCustomInfo.getPageNum());
if (null != pageNum) {
params.put("page_num", pageNum);
}
if (null != pageSize) {
params.put("page_size", pageSize);
try {
params.put("datasourceId", apiCustomInfo.getEsDataSource());//数据源id
params.put("query_database", apiCustomInfo.getEsDataBase());//数据源库名称
params.put("query_table", apiCustomInfo.getEsTable());//数据源库表
net.sf.json.JSONObject reqParams = net.sf.json.JSONObject.fromObject(param);
params.put("request_fileds", reqParams);//请求参数
params.put("response_fields", assembleResponseParams(apiCustomInfo.getResponseParam()));//响应参数
Integer pageNum = jsonParams.getInteger("page_num");
Integer pageSize = jsonParams.getInteger("page_size");
params.put("page_size", apiCustomInfo.getPageSize());
params.put("page_num", apiCustomInfo.getPageNum());
if (null != pageNum) {
params.put("page_num", pageNum);
}
if (null != pageSize) {
params.put("page_size", pageSize);
}
} catch (Exception ex) {
log.error("数据转换异常:{}",ex.getMessage());
ex.printStackTrace();
}
String respResult = httpsUtils.submitPost(targetUrl, params.toString());
return callMethodResponse(respResult, response);
......
......@@ -69,7 +69,6 @@ public class SystemLogAspect {
}
@Around("aroundAspect()")
public void doAround(ProceedingJoinPoint joinPoint) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
......@@ -81,8 +80,9 @@ public class SystemLogAspect {
params += JsonUtils.objectToJson(joinPoint.getArgs()[i]) + ";";
}
}
if (StringUtils.isNotBlank(params)){
params= params.substring(0,params.length()-1).split(";")[0];;
if (StringUtils.isNotBlank(params)) {
params = params.substring(0, params.length() - 1).split(";")[0];
;
}
//获取请求路径
String url = UrlUtil.getServerUrl(request);
......@@ -95,33 +95,37 @@ public class SystemLogAspect {
String paramsList = jsonObject.getString("openApiParams");
com.alibaba.fastjson.JSONObject jsonParamsList = com.alibaba.fastjson.JSONObject.parseObject(paramsList);
ApiReqLog reqLog = new ApiReqLog();
JSONObject jsonResult =null;
try {
reqLog.setRequestIp(ip);
reqLog.setApiKey(jsonObject.getString("apiKey"));
reqLog.setRequestParams(params);
reqLog.setResponseParams("");//响应参数
reqLog.setRequestUrl(url);
reqLog.setRequestMethod(contextPath);
reqLog.setEncryMode(jsonObject.getString("signType")); //加密方式:MD5,RSA
reqLog.setEncryMode("MD5"); //加密方式暂时写死MD5
reqLog.setTransMode(request.getMethod());//传输方式 GET POST
reqLog.setRequestToken(jsonParamsList.getString("authCode"));
reqLog.setRequestStartTime(new Date());
reqLog.setRemark(getServiceMethodDescription(joinPoint));
log.info("请求参数:",reqLog);
if (null != reqLog) {
apiReqLogMapper.insert(reqLog);
JSONObject jsonResult = null;
Boolean isTest = jsonParamsList.getBoolean("isTest");
//不保存测试数据
if (!isTest) {
try {
reqLog.setRequestIp(ip);
reqLog.setApiKey(jsonObject.getString("apiKey"));
reqLog.setRequestParams(params);
reqLog.setResponseParams("");//响应参数
reqLog.setRequestUrl(url);
reqLog.setRequestMethod(contextPath);
reqLog.setEncryMode(jsonObject.getString("signType")); //加密方式:MD5,RSA
//reqLog.setEncryMode("MD5"); //加密方式暂时写死MD5
reqLog.setTransMode(request.getMethod());//传输方式 GET POST
reqLog.setRequestToken(jsonParamsList.getString("authCode"));
reqLog.setRequestStartTime(new Date());
reqLog.setRemark(getServiceMethodDescription(joinPoint));
log.info("请求参数:", reqLog);
if (null != reqLog) {
apiReqLogMapper.insert(reqLog);
}
Object result = joinPoint.proceed(joinPoint.getArgs());
jsonResult = JSONObject.fromObject(result);
log.info("around响应结果为{}", jsonResult);
apiLogService.updateLog(reqLog.getId(), jsonResult);
} catch (GatewayException ex) {
log.info("切面处理保存异常信息:{}", ex.getMessage());
apiLogService.updateLog(reqLog.getId(), jsonResult);
} catch (Throwable throwable) {
throwable.printStackTrace();
}
Object result = joinPoint.proceed(joinPoint.getArgs());
jsonResult = JSONObject.fromObject(result);
log.info("around响应结果为{}", jsonResult);
apiLogService.updateLog(reqLog.getId(), jsonResult);
} catch (GatewayException ex) {
log.info("切面处理保存异常信息:{}",ex.getMessage());
apiLogService.updateLog(reqLog.getId(), jsonResult);
}catch (Throwable throwable){
throwable.printStackTrace();
}
}
/*@Before("beforeAspect()")
......@@ -204,7 +208,7 @@ public class SystemLogAspect {
// log.error("异常信息{}", e.getMessage());
// }
// }
// }
/**
* 获取注解中对方法的描述信息 用于service层注解
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment