Commit 6330de54 by yuwei

2.0.0项目初始化

parent 4aba1a96
......@@ -6,11 +6,30 @@ import javax.servlet.http.HttpServletRequest;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
@Slf4j
public class HttpUtil {
public static final String METHOD_POST = "POST";
public static final String METHOD_GET = "GET";
public static String getBodyString(HttpServletRequest request) {
String method = request.getMethod();
String bodyString;
if (METHOD_GET.equals(method)) {
bodyString = doGet(request);
} else if (METHOD_POST.equals(method)) {
bodyString = doPost(request);
} else {
// 其他请求方式暂不处理
return null;
}
return bodyString;
}
private static String doPost(HttpServletRequest request) {
StringBuffer sb = new StringBuffer();
InputStream inputStream;
BufferedReader bufferedReader;
......@@ -19,7 +38,7 @@ public class HttpUtil {
inputStream = request.getInputStream();
//将字节数组当做输出的目的地
//字节流转换为字符流(处理流)
bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
bufferedReader = new BufferedReader(new InputStreamReader(inputStream, "UTF-8"));
String line = "";
while ((line = bufferedReader.readLine()) != null) {
sb.append(line);
......@@ -29,4 +48,8 @@ public class HttpUtil {
}
return sb.toString();
}
private static String doGet(HttpServletRequest request) {
return null;
}
}
package cn.datax.common.log.aspectj;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Map;
import cn.datax.common.log.annotation.LogAop;
import cn.datax.common.utils.RequestHolder;
......@@ -9,9 +11,10 @@ import cn.datax.service.system.api.dto.LogDto;
import cn.datax.service.system.api.feign.LogServiceFeign;
import cn.hutool.core.util.URLUtil;
import cn.hutool.extra.servlet.ServletUtil;
import cn.hutool.http.HttpUtil;
import cn.hutool.http.useragent.UserAgent;
import cn.hutool.http.useragent.UserAgentUtil;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;
import org.aspectj.lang.JoinPoint;
import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.Signature;
......@@ -20,6 +23,7 @@ import org.aspectj.lang.reflect.MethodSignature;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.multipart.MultipartFile;
import javax.servlet.http.HttpServletRequest;
......@@ -30,6 +34,9 @@ public class LogAspect {
@Autowired
private LogServiceFeign logServiceFeign;
@Autowired
private ObjectMapper objectMapper;
// 配置织入点
@Pointcut("@annotation(cn.datax.common.log.annotation.LogAop)")
public void logPointCut() {}
......@@ -73,7 +80,6 @@ public class LogAspect {
UserAgent ua = UserAgentUtil.parse(request.getHeader("User-Agent"));
log.setBrowser(ua.getBrowser().toString());
log.setOs(ua.getOs().toString());
log.setParams(HttpUtil.toParams(request.getParameterMap()));
return log;
}
......@@ -88,7 +94,10 @@ public class LogAspect {
String methodName = joinPoint.getSignature().getName();
logDto.setModule(logAop.module()).setTitle(logAop.value())
.setClassName(className).setMethodName(methodName);
try {
logDto.setParams(objectMapper.writeValueAsString(getRequestParams(joinPoint)));
} catch (JsonProcessingException e) {
}
// 保存数据库
logServiceFeign.saveLog(logDto);
}
......@@ -105,5 +114,27 @@ public class LogAspect {
}
return null;
}
/**
* 获取入参
* */
private Map<String, Object> getRequestParams(JoinPoint joinPoint) {
Map<String, Object> requestParams = new HashMap<>();
// 参数名
String[] paramNames = ((MethodSignature)joinPoint.getSignature()).getParameterNames();
// 参数值
Object[] paramValues = joinPoint.getArgs();
for (int i = 0; i < paramNames.length; i++) {
Object value = paramValues[i];
// 如果是文件对象
if (value instanceof MultipartFile) {
MultipartFile file = (MultipartFile) value;
// 获取文件名
value = file.getOriginalFilename();
}
requestParams.put(paramNames[i], value);
}
return requestParams;
}
}
......@@ -98,6 +98,8 @@ public class ApiInterceptor implements HandlerInterceptor {
}
}
}
Map<String, String[]> parameterMap = request.getParameterMap();
System.out.println("parameterMap:" + objectMapper.writeValueAsString(parameterMap));
// 接收参数
String bodyString = HttpUtil.getBodyString(request);
Map<String, Object> params = null;
......
......@@ -159,9 +159,11 @@ export default {
getApiMask(id).then(response => {
if (response.success) {
this.form = response.data
this.resParamList = this.apiOptions.filter(item => item.id === this.form.apiId).map(function (item) {
return item.resParams
})
console.log(this.form)
console.log(this.apiOptions)
this.resParamList = this.apiOptions.find(function (item) {
return item.id === this.form.apiId
}).resParams
this.form.rules.forEach(rule => {
let fieldParamIndex = this.resParamList.findIndex((param) => {
return param.fieldName === rule.fieldName
......
......@@ -165,7 +165,7 @@
<el-button size="mini" type="primary" @click="sqlParse">SQL解析</el-button>
</el-form-item>
</el-form>
<el-form ref="form3" :model="form3" :rules="rules3" label-width="80px" v-if="active == 3">
<el-form ref="form3" :model="form3" label-width="80px" v-if="active == 3">
<el-divider content-position="left">请求参数</el-divider>
<el-table :data="form3.reqParams" stripe border
:max-height="300"
......@@ -186,44 +186,36 @@
</el-table-column>
<el-table-column prop="paramType" label="参数类型" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.paramType' " :rules="rules3.paramType">
<el-select v-model="scope.row.paramType" placeholder="请选择参数类型">
<el-option
v-for="dict in paramTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</el-form-item>
<el-select v-model="scope.row.paramType" placeholder="请选择参数类型">
<el-option
v-for="dict in paramTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="whereType" label="操作符" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.whereType' " :rules="rules3.whereType">
<el-select v-model="scope.row.whereType" placeholder="请选择操作符">
<el-option
v-for="dict in whereTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</el-form-item>
<el-select v-model="scope.row.whereType" placeholder="请选择操作符">
<el-option
v-for="dict in whereTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="exampleValue" label="示例值" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.exampleValue' " :rules="rules3.exampleValue">
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</el-form-item>
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</template>
</el-table-column>
<el-table-column prop="defaultValue" label="默认值" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.defaultValue' " :rules="rules3.defaultValue">
<el-input v-model="scope.row.defaultValue" placeholder="请输入默认值" />
</el-form-item>
<el-input v-model="scope.row.defaultValue" placeholder="请输入默认值" />
</template>
</el-table-column>
</el-table>
......@@ -244,9 +236,7 @@
</el-table-column>
<el-table-column prop="exampleValue" label="示例值" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'resParams.' + scope.$index + '.exampleValue' " :rules="rules3.exampleValue">
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</el-form-item>
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</template>
</el-table-column>
</el-table>
......@@ -354,20 +344,6 @@ export default {
reqParams: [],
resParams: []
},
rules3: {
paramType: [
{ required: true, message: '参数类型不能为空', trigger: 'change' }
],
whereType: [
{ required: true, message: '操作符不能为空', trigger: 'change' }
],
exampleValue: [
{ required: true, message: '示例值不能为空', trigger: 'blur' }
],
defaultValue: [
{ required: true, message: '默认值不能为空', trigger: 'blur' }
]
},
// 请求方式数据字典
reqMethodOptions: [],
// 返回格式数据字典
......
......@@ -326,7 +326,6 @@ export default {
reqParams: [],
resParams: []
},
rules3: {},
// 请求方式数据字典
reqMethodOptions: [],
// 返回格式数据字典
......
......@@ -165,7 +165,7 @@
<el-button size="mini" type="primary" @click="sqlParse">SQL解析</el-button>
</el-form-item>
</el-form>
<el-form ref="form3" :model="form3" :rules="rules3" label-width="80px" v-if="active == 3">
<el-form ref="form3" :model="form3" label-width="80px" v-if="active == 3">
<el-divider content-position="left">请求参数</el-divider>
<el-table :data="form3.reqParams" stripe border
:max-height="300"
......@@ -186,44 +186,36 @@
</el-table-column>
<el-table-column prop="paramType" label="参数类型" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.paramType' " :rules="rules3.paramType">
<el-select v-model="scope.row.paramType" placeholder="请选择参数类型">
<el-option
v-for="dict in paramTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</el-form-item>
<el-select v-model="scope.row.paramType" placeholder="请选择参数类型">
<el-option
v-for="dict in paramTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="whereType" label="操作符" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.whereType' " :rules="rules3.whereType">
<el-select v-model="scope.row.whereType" placeholder="请选择操作符">
<el-option
v-for="dict in whereTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</el-form-item>
<el-select v-model="scope.row.whereType" placeholder="请选择操作符">
<el-option
v-for="dict in whereTypeOptions"
:key="dict.id"
:label="dict.itemValue"
:value="dict.itemText"
></el-option>
</el-select>
</template>
</el-table-column>
<el-table-column prop="exampleValue" label="示例值" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.exampleValue' " :rules="rules3.exampleValue">
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</el-form-item>
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</template>
</el-table-column>
<el-table-column prop="defaultValue" label="默认值" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'reqParams.' + scope.$index + '.defaultValue' " :rules="rules3.defaultValue">
<el-input v-model="scope.row.defaultValue" placeholder="请输入默认值" />
</el-form-item>
<el-input v-model="scope.row.defaultValue" placeholder="请输入默认值" />
</template>
</el-table-column>
</el-table>
......@@ -244,9 +236,7 @@
</el-table-column>
<el-table-column prop="exampleValue" label="示例值" align="center" show-overflow-tooltip >
<template slot-scope="scope">
<el-form-item :prop=" 'resParams.' + scope.$index + '.exampleValue' " :rules="rules3.exampleValue">
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</el-form-item>
<el-input v-model="scope.row.exampleValue" placeholder="请输入示例值" />
</template>
</el-table-column>
</el-table>
......@@ -354,20 +344,6 @@ export default {
reqParams: [],
resParams: []
},
rules3: {
paramType: [
{ required: true, message: '参数类型不能为空', trigger: 'change' }
],
whereType: [
{ required: true, message: '操作符不能为空', trigger: 'change' }
],
exampleValue: [
{ required: true, message: '示例值不能为空', trigger: 'blur' }
],
defaultValue: [
{ required: true, message: '默认值不能为空', trigger: 'blur' }
]
},
// 请求方式数据字典
reqMethodOptions: [],
// 返回格式数据字典
......
......@@ -345,11 +345,11 @@ export default {
/** 刷新缓存 */
handleDictRefresh () {
refreshDict().then(response => {
if (response.success) {
this.$message.success('刷新缓存成功')
} else {
this.$message.error('刷新缓存失败')
}
if (response.success) {
this.$message.success('刷新缓存成功')
} else {
this.$message.error('刷新缓存失败')
}
})
},
/** 删除按钮操作 */
......
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