diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/flink/api/UploadApiController.java b/czsj-admin/src/main/java/com/czsj/web/controller/flink/api/UploadApiController.java
index 7410509..dd60361 100644
--- a/czsj-admin/src/main/java/com/czsj/web/controller/flink/api/UploadApiController.java
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/flink/api/UploadApiController.java
@@ -3,7 +3,7 @@ package com.czsj.web.controller.flink.api;
import com.czsj.bigdata.entity.BaseResource;
import com.czsj.bigdata.mapper.BaseResourceMapper;
-import com.czsj.common.config.czsjConfig;
+import com.czsj.common.config.CzsjConfig;
import com.czsj.common.utils.ReadYmlUtil;
import com.czsj.common.utils.file.FileUploadUtils;
import com.czsj.common.utils.file.FileUtils;
@@ -58,7 +58,7 @@ public class UploadApiController extends BaseController {
@RequestMapping(value = "/upload", method = RequestMethod.POST, consumes = "multipart/form-data")
public RestResult> upload(HttpServletRequest request, @RequestParam(value="resourceId") String resourceId,@RequestParam(value="remarks") String remarks,@RequestParam("file") MultipartFile file) {
try {
- String uploadPath = czsjConfig.getUploadPath();
+ String uploadPath = CzsjConfig.getUploadPath();
//通过ID查资源服务器信息
BaseResource baseResource = baseResourceMapper.getById(Integer.parseInt(resourceId));
log.info("uploadPath={}", uploadPath);
@@ -92,7 +92,7 @@ public class UploadApiController extends BaseController {
public RestResult> deleteFile(Long id) {
try {
UploadFileDTO uploadFileById = uploadFileService.getUploadFileById(id);
- String uploadPath = czsjConfig.getUploadPath();
+ String uploadPath = CzsjConfig.getUploadPath();
// String[] split = uploadFileById.getDownloadJarHttp().split("/");
// String filePath = uploadPath + "/" + split[split.length-4] + "/" + split[split.length-3] + "/" + split[split.length-2] + "/" + uploadFileById.getFilePath();
String filePath = uploadPath + "/" + uploadFileById.getFilePath();
diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/market/ApiLogController.java b/czsj-admin/src/main/java/com/czsj/web/controller/market/ApiLogController.java
new file mode 100644
index 0000000..97501ef
--- /dev/null
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/market/ApiLogController.java
@@ -0,0 +1,135 @@
+package com.czsj.web.controller.market;
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.czsj.common.core.controller.BaseController;
+import com.czsj.common.core.domain.AjaxResult;
+import com.czsj.core.database.core.JsonPage;
+import com.czsj.market.dto.ApiLogDto;
+import com.czsj.market.entity.ApiLogEntity;
+import com.czsj.market.mapstruct.ApiLogMapper;
+import com.czsj.market.query.ApiLogQuery;
+import com.czsj.market.service.ApiLogService;
+import com.czsj.market.vo.ApiLogVo;
+import com.czsj.metadata.validate.ValidationGroups;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * api调用日志信息表 前端控制器
+ *
+ *
+ * @author yuwei
+ * @since 2020-08-21
+ */
+@Api(tags = {"api调用日志信息表"})
+@RestController
+@RequestMapping("market/apiLogs")
+public class ApiLogController extends BaseController {
+
+ @Autowired
+ private ApiLogService apiLogService;
+
+ @Autowired
+ private ApiLogMapper apiLogMapper;
+
+ /**
+ * 通过ID查询信息
+ *
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @GetMapping("/{id}")
+ public AjaxResult getApiLogById(@PathVariable String id) {
+ ApiLogEntity apiLogEntity = apiLogService.getApiLogById(id);
+ return AjaxResult.success(apiLogMapper.toVO(apiLogEntity));
+ }
+
+ /**
+ * 分页查询信息
+ *
+ * @param apiLogQuery
+ * @return
+ */
+ @ApiOperation(value = "分页查询", notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "apiLogQuery", value = "查询实体apiLogQuery", required = true, dataTypeClass = ApiLogQuery.class)
+ })
+ @GetMapping("/page")
+ public AjaxResult getApiLogPage(ApiLogQuery apiLogQuery) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.like(StrUtil.isNotBlank(apiLogQuery.getApiName()), "api.api_name", apiLogQuery.getApiName());
+ IPage page = apiLogService.page(new Page<>(apiLogQuery.getPageNum(), apiLogQuery.getPageSize()), queryWrapper);
+ List collect = page.getRecords().stream().map(apiLogMapper::toVO).collect(Collectors.toList());
+ JsonPage jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
+ return AjaxResult.success(jsonPage);
+ }
+
+ /**
+ * 添加
+ * @param apiLog
+ * @return
+ */
+ @ApiOperation(value = "添加信息", notes = "根据apiLog对象添加信息")
+ @ApiImplicitParam(name = "apiLog", value = "详细实体apiLog", required = true, dataType = "ApiLogDto")
+ @PostMapping()
+ public AjaxResult saveApiLog(@RequestBody @Validated({ValidationGroups.Insert.class}) ApiLogDto apiLog) {
+ ApiLogEntity apiLogEntity = apiLogService.saveApiLog(apiLog);
+ return AjaxResult.success(apiLogMapper.toVO(apiLogEntity));
+ }
+
+ /**
+ * 修改
+ * @param apiLog
+ * @return
+ */
+ @ApiOperation(value = "修改信息", notes = "根据url的id来指定修改对象,并根据传过来的信息来修改详细信息")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path"),
+ @ApiImplicitParam(name = "apiLog", value = "详细实体apiLog", required = true, dataType = "ApiLogDto")
+ })
+ @PutMapping("/{id}")
+ public AjaxResult updateApiLog(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) ApiLogDto apiLog) {
+ ApiLogEntity apiLogEntity = apiLogService.updateApiLog(apiLog);
+ return AjaxResult.success(apiLogMapper.toVO(apiLogEntity));
+ }
+
+ /**
+ * 删除
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "删除", notes = "根据url的id来指定删除对象")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @DeleteMapping("/{id}")
+ public AjaxResult deleteApiLogById(@PathVariable String id) {
+ apiLogService.deleteApiLogById(id);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 批量删除
+ * @param ids
+ * @return
+ */
+ @ApiOperation(value = "批量删除角色", notes = "根据url的ids来批量删除对象")
+ @ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
+ @DeleteMapping("/batch/{ids}")
+ public AjaxResult deleteApiLogBatch(@PathVariable List ids) {
+ apiLogService.deleteApiLogBatch(ids);
+ return AjaxResult.success();
+ }
+}
diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/market/ApiMaskController.java b/czsj-admin/src/main/java/com/czsj/web/controller/market/ApiMaskController.java
new file mode 100644
index 0000000..773927b
--- /dev/null
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/market/ApiMaskController.java
@@ -0,0 +1,145 @@
+package com.czsj.web.controller.market;
+
+
+import cn.hutool.core.util.StrUtil;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.czsj.common.core.controller.BaseController;
+import com.czsj.common.core.domain.AjaxResult;
+import com.czsj.core.database.core.JsonPage;
+import com.czsj.market.dto.ApiMaskDto;
+import com.czsj.market.entity.ApiMaskEntity;
+import com.czsj.market.mapstruct.ApiMaskMapper;
+import com.czsj.market.query.ApiMaskQuery;
+import com.czsj.market.service.ApiMaskService;
+import com.czsj.market.vo.ApiMaskVo;
+import com.czsj.metadata.validate.ValidationGroups;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import java.util.List;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 数据API脱敏信息表 前端控制器
+ *
+ *
+ * @author yuwei
+ * @since 2020-04-14
+ */
+@Api(tags = {"数据API脱敏信息表"})
+@RestController
+@RequestMapping("market/apiMasks")
+public class ApiMaskController extends BaseController {
+
+ @Autowired
+ private ApiMaskService apiMaskService;
+
+ @Autowired
+ private ApiMaskMapper apiMaskMapper;
+
+ /**
+ * 通过ID查询信息
+ *
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @GetMapping("/{id}")
+ public AjaxResult getApiMaskById(@PathVariable String id) {
+ ApiMaskEntity apiMaskEntity = apiMaskService.getApiMaskById(id);
+ return AjaxResult.success(apiMaskMapper.toVO(apiMaskEntity));
+ }
+
+ /**
+ * 通过ID查询信息
+ *
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @GetMapping("/api/{id}")
+ public AjaxResult getApiMaskByApiId(@PathVariable String id) {
+ ApiMaskEntity apiMaskEntity = apiMaskService.getApiMaskByApiId(id);
+ return AjaxResult.success(apiMaskMapper.toVO(apiMaskEntity));
+ }
+
+ /**
+ * 分页查询信息
+ *
+ * @param apiMaskQuery
+ * @return
+ */
+ @ApiOperation(value = "分页查询", notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "apiMaskQuery", value = "查询实体apiMaskQuery", required = true, dataTypeClass = ApiMaskQuery.class)
+ })
+ @GetMapping("/page")
+ public AjaxResult getApiMaskPage(ApiMaskQuery apiMaskQuery) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.like(StrUtil.isNotBlank(apiMaskQuery.getMaskName()), "mask_name", apiMaskQuery.getMaskName());
+ IPage page = apiMaskService.page(new Page<>(apiMaskQuery.getPageNum(), apiMaskQuery.getPageSize()), queryWrapper);
+ List collect = page.getRecords().stream().map(apiMaskMapper::toVO).collect(Collectors.toList());
+ JsonPage jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
+ return AjaxResult.success(jsonPage);
+ }
+
+ /**
+ * 添加
+ * @param apiMask
+ * @return
+ */
+ @ApiOperation(value = "添加信息", notes = "根据apiMask对象添加信息")
+ @ApiImplicitParam(name = "apiMask", value = "详细实体apiMask", required = true, dataType = "ApiMaskDto")
+ @PostMapping()
+ public AjaxResult saveApiMask(@RequestBody @Validated({ValidationGroups.Insert.class}) ApiMaskDto apiMask) {
+ apiMaskService.saveApiMask(apiMask);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 修改
+ * @param apiMask
+ * @return
+ */
+ @ApiOperation(value = "修改信息", notes = "根据url的id来指定修改对象,并根据传过来的信息来修改详细信息")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path"),
+ @ApiImplicitParam(name = "apiMask", value = "详细实体apiMask", required = true, dataType = "ApiMaskDto")
+ })
+ @PutMapping("/{id}")
+ public AjaxResult updateApiMask(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) ApiMaskDto apiMask) {
+ apiMaskService.updateApiMask(apiMask);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 删除
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "删除", notes = "根据url的id来指定删除对象")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @DeleteMapping("/{id}")
+ public AjaxResult deleteApiMaskById(@PathVariable String id) {
+ apiMaskService.deleteApiMaskById(id);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
+ @ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
+ @DeleteMapping("/batch/{ids}")
+ public AjaxResult deleteApiMaskBatch(@PathVariable List ids) {
+ apiMaskService.deleteApiMaskBatch(ids);
+ return AjaxResult.success();
+ }
+}
diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/market/DataApiController.java b/czsj-admin/src/main/java/com/czsj/web/controller/market/DataApiController.java
new file mode 100644
index 0000000..9398e0e
--- /dev/null
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/market/DataApiController.java
@@ -0,0 +1,218 @@
+package com.czsj.web.controller.market;
+
+import cn.hutool.core.util.StrUtil;
+import com.aspose.words.Document;
+import com.aspose.words.SaveFormat;
+import com.aspose.words.SaveOptions;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import com.czsj.common.core.controller.BaseController;
+import com.czsj.common.core.domain.AjaxResult;
+import com.czsj.core.database.core.JsonPage;
+import com.czsj.market.dto.DataApiDto;
+import com.czsj.market.dto.SqlParseDto;
+import com.czsj.market.entity.DataApiEntity;
+import com.czsj.market.mapstruct.DataApiMapper;
+import com.czsj.market.query.DataApiQuery;
+import com.czsj.market.service.DataApiService;
+import com.czsj.market.vo.DataApiVo;
+import com.czsj.market.vo.SqlParseVo;
+import com.czsj.metadata.validate.ValidationGroups;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import net.sf.jsqlparser.JSQLParserException;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.annotation.Validated;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletResponse;
+import java.io.OutputStream;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ *
+ * 数据API信息表 前端控制器
+ *
+ *
+ * @author yuwei
+ * @since 2020-03-31
+ */
+@Api(tags = {"数据API信息表"})
+@RestController
+@RequestMapping("market/dataApis")
+public class DataApiController extends BaseController {
+
+ @Autowired
+ private DataApiService dataApiService;
+
+ @Autowired
+ private DataApiMapper dataApiMapper;
+
+ /**
+ * 通过ID查询信息
+ *
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "获取详细信息", notes = "根据url的id来获取详细信息")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @GetMapping("/{id}")
+ public AjaxResult getDataApiById(@PathVariable String id) {
+ DataApiEntity dataApiEntity = dataApiService.getDataApiById(id);
+ return AjaxResult.success(dataApiMapper.toVO(dataApiEntity));
+ }
+
+ @ApiOperation(value = "获取列表", notes = "")
+ @GetMapping("/list")
+ public AjaxResult getDataApiList() {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ List list = dataApiService.list(queryWrapper);
+ List collect = list.stream().map(dataApiMapper::toVO).collect(Collectors.toList());
+ return AjaxResult.success(collect);
+ }
+
+ /**
+ * 分页查询信息
+ *
+ * @param dataApiQuery
+ * @return
+ */
+ @ApiOperation(value = "分页查询", notes = "")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "dataApiQuery", value = "查询实体dataApiQuery", required = true, dataTypeClass = DataApiQuery.class)
+ })
+ @GetMapping("/page")
+ public AjaxResult getDataApiPage(DataApiQuery dataApiQuery) {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.like(StrUtil.isNotBlank(dataApiQuery.getApiName()), "api_name", dataApiQuery.getApiName());
+ IPage page = dataApiService.page(new Page<>(dataApiQuery.getPageNum(), dataApiQuery.getPageSize()), queryWrapper);
+ List collect = page.getRecords().stream().map(dataApiMapper::toVO).collect(Collectors.toList());
+ JsonPage jsonPage = new JsonPage<>(page.getCurrent(), page.getSize(), page.getTotal(), collect);
+ return AjaxResult.success(jsonPage);
+ }
+
+ /**
+ * 添加
+ * @param dataApi
+ * @return
+ */
+ @ApiOperation(value = "添加信息", notes = "根据dataApi对象添加信息")
+ @ApiImplicitParam(name = "dataApi", value = "详细实体dataApi", required = true, dataType = "DataApiDto")
+ @PostMapping()
+ public AjaxResult saveDataApi(@RequestBody @Validated({ValidationGroups.Insert.class}) DataApiDto dataApi) {
+ dataApiService.saveDataApi(dataApi);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 修改
+ * @param dataApi
+ * @return
+ */
+ @ApiOperation(value = "修改信息", notes = "根据url的id来指定修改对象,并根据传过来的信息来修改详细信息")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path"),
+ @ApiImplicitParam(name = "dataApi", value = "详细实体dataApi", required = true, dataType = "DataApiDto")
+ })
+ @PutMapping("/{id}")
+ public AjaxResult updateDataApi(@PathVariable String id, @RequestBody @Validated({ValidationGroups.Update.class}) DataApiDto dataApi) {
+ dataApiService.updateDataApi(dataApi);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 删除
+ * @param id
+ * @return
+ */
+ @ApiOperation(value = "删除", notes = "根据url的id来指定删除对象")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @DeleteMapping("/{id}")
+ public AjaxResult deleteDataApiById(@PathVariable String id) {
+ dataApiService.deleteDataApiById(id);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "批量删除", notes = "根据url的ids来批量删除对象")
+ @ApiImplicitParam(name = "ids", value = "ID集合", required = true, dataType = "List", paramType = "path")
+ @DeleteMapping("/batch/{ids}")
+ public AjaxResult deleteDataApiBatch(@PathVariable List ids) {
+ dataApiService.deleteDataApiBatch(ids);
+ return AjaxResult.success();
+ }
+
+ /**
+ * SQL解析
+ * @param sqlParseDto
+ * @return
+ */
+ @ApiOperation(value = "SQL解析")
+ @ApiImplicitParam(name = "sqlParseDto", value = "SQL解析实体sqlParseDto", required = true, dataType = "SqlParseDto")
+ @PostMapping("/sql/parse")
+ public AjaxResult sqlParse(@RequestBody @Validated SqlParseDto sqlParseDto) throws SQLException, JSQLParserException {
+ SqlParseVo sqlParseVo = dataApiService.sqlParse(sqlParseDto);
+ return AjaxResult.success(sqlParseVo);
+ }
+
+ /**
+ * 拷贝接口
+ * @param id
+ * @return
+ */
+ @PostMapping("/{id}/copy")
+ public AjaxResult copyDataApi(@PathVariable String id) {
+ dataApiService.copyDataApi(id);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 发布接口
+ * @param id
+ * @return
+ */
+ @PostMapping(value = "/{id}/release")
+ public AjaxResult releaseDataApi(@PathVariable String id){
+ dataApiService.releaseDataApi(id);
+ return AjaxResult.success();
+ }
+
+ /**
+ * 注销接口
+ * @param id
+ * @return
+ */
+ @PostMapping(value = "/{id}/cancel")
+ public AjaxResult cancelDataApi(@PathVariable String id){
+ dataApiService.cancelDataApi(id);
+ return AjaxResult.success();
+ }
+
+ @ApiOperation(value = "接口文档", notes = "根据url的id来指定生成接口文档对象")
+ @ApiImplicitParam(name = "id", value = "ID", required = true, dataType = "String", paramType = "path")
+ @PostMapping("/word/{id}")
+ public void wordDataApi(@PathVariable String id, HttpServletResponse response) throws Exception {
+ // 清空response
+ response.reset();
+ // 设置response的Header
+ response.setContentType("application/octet-stream;charset=utf-8");
+ // 设置content-disposition响应头控制浏览器以下载的形式打开文件
+ response.addHeader("Content-Disposition", "attachment;filename=" + new String("接口文档.docx".getBytes()));
+ Document doc = dataApiService.wordDataApi(id);
+ OutputStream out = response.getOutputStream();
+ doc.save(out, SaveOptions.createSaveOptions(SaveFormat.DOCX));
+ out.flush();
+ out.close();
+ }
+
+ @GetMapping("/detail/{id}")
+ public AjaxResult getDataApiDetailById(@PathVariable String id) {
+ Map map = dataApiService.getDataApiDetailById(id);
+ return AjaxResult.success(map);
+ }
+}
diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/market/GetApiLogAspect.java b/czsj-admin/src/main/java/com/czsj/web/controller/market/GetApiLogAspect.java
new file mode 100644
index 0000000..1d62f4f
--- /dev/null
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/market/GetApiLogAspect.java
@@ -0,0 +1,119 @@
+package com.czsj.web.controller.market;
+
+
+import cn.hutool.core.map.MapUtil;
+import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.czsj.async.AsyncTask;
+import com.czsj.common.core.data.R;
+import com.czsj.core.database.core.DataConstant;
+import com.czsj.core.database.core.PageResult;
+import com.czsj.core.util.IPUtil;
+import com.czsj.core.util.RequestHolder;
+import com.czsj.market.dto.ApiLogDto;
+import com.czsj.market.utils.MD5Util;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Aspect
+@Component
+public class GetApiLogAspect {
+
+ @Autowired
+ private AsyncTask asyncTask;
+
+ @Pointcut("execution(* com.czsj.web.controller.market.marketInnerController.getApiMaskByApiId(..))")
+ public void logPointCut() {
+ System.out.println(1111);
+ }
+
+ /**
+ * 通知方法会将目标方法封装起来
+ *
+ * @param joinPoint 切点
+ */
+ @Around(value = "logPointCut()")
+ public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ Object result = joinPoint.proceed();
+ long endTime = System.currentTimeMillis();
+ ApiLogDto log = getLog();
+ log.setTime(endTime - startTime);
+ R r = JSON.parseObject(JSON.toJSONString(result), R.class);
+ if (r != null) {
+ log.setCallerSize(JSON.parseObject(JSON.toJSONString(r.getData()), PageResult.class).getData().size());
+ }
+ handleLog(joinPoint,log);
+ return result;
+ }
+
+ /**
+ * 通知方法会在目标方法抛出异常后执行
+ *
+ * @param joinPoint
+ * @param e
+ */
+ @AfterThrowing(value = "logPointCut()", throwing = "e")
+ public void doAfterThrowing(JoinPoint joinPoint, Exception e) {
+ log.error("出错{}", e.getMessage());
+ ApiLogDto log = getLog();
+ log.setStatus(DataConstant.EnableState.DISABLE.getKey());
+ log.setMsg(e.getMessage());
+ handleLog(joinPoint, log);
+ }
+
+ private ApiLogDto getLog() {
+ ApiLogDto log = new ApiLogDto();
+ HttpServletRequest request = RequestHolder.getHttpServletRequest();
+ String apiKey = request.getHeader("api_key");
+ String secretKey = request.getHeader("secret_key");
+ try {
+ MD5Util mt = MD5Util.getInstance();
+ String apiId = mt.decode(apiKey);
+ String userId = mt.decode(secretKey);
+ log.setCallerId(userId);
+ log.setApiId(apiId);
+ } catch (Exception e) {}
+ String uri = request.getRequestURI();
+ log.setCallerUrl(uri);
+ String ipAddr = IPUtil.getIpAddr(request);
+ log.setCallerIp(ipAddr);
+ log.setCallerDate(LocalDateTime.now());
+ log.setStatus(DataConstant.EnableState.ENABLE.getKey());
+ return log;
+ }
+
+ protected void handleLog(final JoinPoint joinPoint, ApiLogDto log) {
+ Map pathVariables = (Map) joinPoint.getArgs()[2];
+ Map requestParams = (Map) joinPoint.getArgs()[3];
+ Map requestBodys = (Map) joinPoint.getArgs()[4];
+ Map params = new HashMap<>();
+ if (MapUtil.isNotEmpty(pathVariables)) {
+ params.putAll(pathVariables);
+ }
+ if (MapUtil.isNotEmpty(requestParams)) {
+ params.putAll(requestParams);
+ }
+ if (MapUtil.isNotEmpty(requestBodys)) {
+ params.putAll(requestBodys);
+ }
+ try {
+ log.setCallerParams(new ObjectMapper().writeValueAsString(params));
+ } catch (JsonProcessingException e) {}
+ asyncTask.doTask(log);
+ }
+}
diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/market/PostApiLogAspect.java b/czsj-admin/src/main/java/com/czsj/web/controller/market/PostApiLogAspect.java
new file mode 100644
index 0000000..7766c35
--- /dev/null
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/market/PostApiLogAspect.java
@@ -0,0 +1,119 @@
+package com.czsj.web.controller.market;
+
+
+import cn.hutool.core.map.MapUtil;
+import com.alibaba.fastjson.JSON;
+import com.fasterxml.jackson.core.JsonProcessingException;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.czsj.async.AsyncTask;
+import com.czsj.common.core.data.R;
+import com.czsj.core.database.core.DataConstant;
+import com.czsj.core.database.core.PageResult;
+import com.czsj.core.util.IPUtil;
+import com.czsj.core.util.RequestHolder;
+import com.czsj.market.dto.ApiLogDto;
+import com.czsj.market.utils.MD5Util;
+import lombok.extern.slf4j.Slf4j;
+import org.aspectj.lang.JoinPoint;
+import org.aspectj.lang.ProceedingJoinPoint;
+import org.aspectj.lang.annotation.AfterThrowing;
+import org.aspectj.lang.annotation.Around;
+import org.aspectj.lang.annotation.Aspect;
+import org.aspectj.lang.annotation.Pointcut;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import javax.servlet.http.HttpServletRequest;
+import java.time.LocalDateTime;
+import java.util.HashMap;
+import java.util.Map;
+
+@Slf4j
+@Aspect
+@Component
+public class PostApiLogAspect {
+
+ @Autowired
+ private AsyncTask asyncTask;
+
+ @Pointcut("execution(* com.czsj.web.controller.market.marketInnerController.postApiMaskByApiId(..))")
+ public void logPointCut() {
+ System.out.println(1111);
+ }
+
+ /**
+ * 通知方法会将目标方法封装起来
+ *
+ * @param joinPoint 切点
+ */
+ @Around(value = "logPointCut()")
+ public Object doAround(ProceedingJoinPoint joinPoint) throws Throwable {
+ long startTime = System.currentTimeMillis();
+ Object result = joinPoint.proceed();
+ long endTime = System.currentTimeMillis();
+ ApiLogDto log = getLog();
+ log.setTime(endTime - startTime);
+ R r = JSON.parseObject(JSON.toJSONString(result), R.class);
+ if (r != null) {
+ log.setCallerSize(JSON.parseObject(JSON.toJSONString(r.getData()), PageResult.class).getData().size());
+ }
+ handleLog(joinPoint,log);
+ return result;
+ }
+
+ /**
+ * 通知方法会在目标方法抛出异常后执行
+ *
+ * @param joinPoint
+ * @param e
+ */
+ @AfterThrowing(value = "logPointCut()", throwing = "e")
+ public void doAfterThrowing(JoinPoint joinPoint, Exception e) {
+ log.error("出错{}", e.getMessage());
+ ApiLogDto log = getLog();
+ log.setStatus(DataConstant.EnableState.DISABLE.getKey());
+ log.setMsg(e.getMessage());
+ handleLog(joinPoint, log);
+ }
+
+ private ApiLogDto getLog() {
+ ApiLogDto log = new ApiLogDto();
+ HttpServletRequest request = RequestHolder.getHttpServletRequest();
+ String apiKey = request.getHeader("api_key");
+ String secretKey = request.getHeader("secret_key");
+ try {
+ MD5Util mt = MD5Util.getInstance();
+ String apiId = mt.decode(apiKey);
+ String userId = mt.decode(secretKey);
+ log.setCallerId(userId);
+ log.setApiId(apiId);
+ } catch (Exception e) {}
+ String uri = request.getRequestURI();
+ log.setCallerUrl(uri);
+ String ipAddr = IPUtil.getIpAddr(request);
+ log.setCallerIp(ipAddr);
+ log.setCallerDate(LocalDateTime.now());
+ log.setStatus(DataConstant.EnableState.ENABLE.getKey());
+ return log;
+ }
+
+ protected void handleLog(final JoinPoint joinPoint, ApiLogDto log) {
+ Map pathVariables = (Map) joinPoint.getArgs()[2];
+ Map requestParams = (Map) joinPoint.getArgs()[3];
+ Map requestBodys = (Map) joinPoint.getArgs()[4];
+ Map params = new HashMap<>();
+ if (MapUtil.isNotEmpty(pathVariables)) {
+ params.putAll(pathVariables);
+ }
+ if (MapUtil.isNotEmpty(requestParams)) {
+ params.putAll(requestParams);
+ }
+ if (MapUtil.isNotEmpty(requestBodys)) {
+ params.putAll(requestBodys);
+ }
+ try {
+ log.setCallerParams(new ObjectMapper().writeValueAsString(params));
+ } catch (JsonProcessingException e) {}
+ asyncTask.doTask(log);
+ }
+}
diff --git a/czsj-admin/src/main/java/com/czsj/web/controller/market/marketInnerController.java b/czsj-admin/src/main/java/com/czsj/web/controller/market/marketInnerController.java
new file mode 100644
index 0000000..56b3c65
--- /dev/null
+++ b/czsj-admin/src/main/java/com/czsj/web/controller/market/marketInnerController.java
@@ -0,0 +1,128 @@
+package com.czsj.web.controller.market;
+
+import cn.hutool.core.map.MapUtil;
+import com.aspose.words.net.System.Data.DataException;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.czsj.common.core.controller.BaseController;
+import com.czsj.common.core.domain.AjaxResult;
+import com.czsj.core.database.core.DataConstant;
+import com.czsj.core.database.core.PageResult;
+import com.czsj.market.entity.ApiMaskEntity;
+import com.czsj.market.entity.DataApiEntity;
+import com.czsj.market.handler.MappingHandlerMapping;
+import com.czsj.market.handler.RequestHandler;
+import com.czsj.market.service.ApiMaskService;
+import com.czsj.market.service.DataApiService;
+import lombok.SneakyThrows;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.*;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+@RestController
+@RequestMapping("/inner")
+public class marketInnerController extends BaseController {
+
+ @Autowired
+ private DataApiService dataApiService;
+
+ @Autowired
+ private ApiMaskService apiMaskService;
+
+ @Autowired
+ private RequestHandler requestHandler;
+
+
+ @GetMapping("/apis/{id}")
+ public DataApiEntity getDataApiById(@PathVariable("id") String id) {
+ DataApiEntity dataApiEntity = dataApiService.getDataApiById(id);
+ return dataApiEntity;
+ }
+
+ @GetMapping("/apis/release/list")
+ public List getReleaseDataApiList() {
+ QueryWrapper queryWrapper = new QueryWrapper<>();
+ queryWrapper.eq("status", DataConstant.ApiState.RELEASE.getKey());
+ List dataApiEntityList = dataApiService.list(queryWrapper);
+ return dataApiEntityList;
+ }
+
+ @GetMapping("/apiMasks/api/{id}")
+ public ApiMaskEntity getApiMaskByApiId(@PathVariable("id") String id) {
+ ApiMaskEntity apiMaskEntity = apiMaskService.getApiMaskByApiId(id);
+ return apiMaskEntity;
+ }
+
+ @SneakyThrows
+ @ResponseBody
+ @GetMapping("/data/api")
+ public Object getApiMaskByApiId(HttpServletRequest request, HttpServletResponse response,
+ @PathVariable(required = false) Map pathVariables,
+ @RequestParam(required = false) Map requestParams,
+ @RequestBody(required = false) Map requestBodys) {
+
+ DataApiEntity api;
+ Map params = new HashMap<>();
+ if (MapUtil.isNotEmpty(pathVariables)) {
+ params.putAll(pathVariables);
+ }
+ if (MapUtil.isNotEmpty(requestParams)) {
+ params.putAll(requestParams);
+ }
+ if (MapUtil.isNotEmpty(requestBodys)) {
+ params.putAll(requestBodys);
+ }
+ api = MappingHandlerMapping.getMappingApiInfoA(params.get("apiCode").toString());
+ params.remove("apiCode");
+ if(null == api){
+ throw new DataException("api接口未发布或不存在!");
+ }
+ // 序列化
+ api = requestHandler.getObjectMapper().readValue(requestHandler.getObjectMapper().writeValueAsString(api), DataApiEntity.class);
+ // 执行前置拦截器
+ requestHandler.getRequestInterceptor().preHandle(request, response, api, params);
+ PageResult