Commit fea857733e27db326236342737088fe04fa82c04

Authored by Liu Haoyu
1 parent ace728ed

可视化功能完善;

Linux服务器监听运维功能.md
@@ -310,6 +310,92 @@ @@ -310,6 +310,92 @@
310 } 310 }
311 ``` 311 ```
312 312
  313 +### 1.5.5 获取配置服务支持的所有接口信息
  314 +
  315 +| 调用方式 | 接口地址 |
  316 +| ------------ | :-------------------------------------------------- |
  317 +| POST | http://ip:port/background/findAllAvailableInterface |
  318 +| Content-Type | application/json;charset=UTF-8 |
  319 +
  320 +| 请求参数 | | | | |
  321 +| -------- | -------- | ------- | ---- | ------------------ |
  322 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  323 +| configId | 服务主键 | Integer | 是 | 主键(formdata形式) |
  324 +```
  325 +请求示例
  326 +"configId": 1
  327 +```
  328 +
  329 +| 返回结果 | | | |
  330 +| ------------ | -------------------- | ------ | --------------------------------- |
  331 +| 参数项 | 名称 | 类型 | 描述 |
  332 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  333 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  334 +| data | 返回信息 | | |
  335 +| +id | 主键 | int | 主键 |
  336 +| +mouldId | 模板id | int | 模板id |
  337 +| +methodType | 请求方式类型 | string | 请求方式类型 |
  338 +| +contentType | 请求头参数类型 | string | 请求头参数类型 |
  339 +| +uri | 请求地址 | string | 请求地址 |
  340 +| +defaultJson | 默认请求参数(json串) | string | 默认请求参数(json串) |
  341 +| +sort | 排序 | int | 排序 |
  342 +
  343 +```
  344 +响应示例
  345 +{
  346 + "code": 200,
  347 + "message": "操作成功",
  348 + "data": [
  349 + {
  350 + "id": 1,
  351 + "mouldId": 1,
  352 + "methodType": "post",
  353 + "contentType": "application/json;charset=UTF-8",
  354 + "uri": "/vehicle/base64",
  355 + "defaultJson": "{"TPXX":"#base64#"}",
  356 + "sort": 1
  357 + }
  358 + ]
  359 +}
  360 +```
  361 +### 1.5.6 根据配置明细项id获取请求http的返回值信息
  362 +
  363 +| 调用方式 | 接口地址 |
  364 +| ------------ | :----------------------------------------------- |
  365 +| POST | http://ip:port/background/getServiceHttpResponse |
  366 +| Content-Type | application/json;charset=UTF-8 |
  367 +
  368 +| 请求参数 | | | | |
  369 +| ---------------- | ------------ | ------- | ---- | ------------------------------------------ |
  370 +| 参数项 | 名称 | 类型 | 必选 | 描述 |
  371 +| configId | 配置服务id | Integer | 是 | 配置服务id (param格式) |
  372 +| interfaceMouldId | 接口id | Integer | 是 | 接口id (param格式) |
  373 +| params | 请求参数信息 | string | 否 | 如果是需要文件传入对应参数部分写入"#file#" |
  374 +| multipartFile | 文件信息 | string | 否 | 文件信息 (param格式) |
  375 +```
  376 +请求示例
  377 +"configId": 1
  378 +"interfaceMouldId": "start",
  379 +"params": "{"TPXX":"#file#"}",
  380 +"multipartFile": xxx
  381 +```
  382 +
  383 +| 返回结果 | | | |
  384 +| -------- | -------- | ------ | --------------------------------- |
  385 +| 参数项 | 名称 | 类型 | 描述 |
  386 +| code | 响应码 | int | 200为操作成功,其他code表示失败 |
  387 +| message | 提示信息 | string | 200为操作成功, 其他为对应错误信息 |
  388 +| data | 返回信息 | | |
  389 +| result | 操作结果 | string | 操作成功信息或者失败原因 |
  390 +
  391 +```
  392 +响应示例
  393 +{
  394 + "code": 200,
  395 + "message": "操作成功",
  396 + "data": {}
  397 +}
  398 +```
313 399
314 ## 1.6 查询配置好的服务运行情况 400 ## 1.6 查询配置好的服务运行情况
315 401
src/main/java/com/objecteye/controller/BackGroundController.java
@@ -89,7 +89,8 @@ public class BackGroundController extends BasicController { @@ -89,7 +89,8 @@ public class BackGroundController extends BasicController {
89 @ApiOperation("根据配置明细项id获取请求http的返回值信息") 89 @ApiOperation("根据配置明细项id获取请求http的返回值信息")
90 @RequestMapping(value = "getServiceHttpResponse", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"}) 90 @RequestMapping(value = "getServiceHttpResponse", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
91 public CommonResult<String> getServiceHttpResponse(@RequestParam Integer configId, @RequestParam Integer interfaceMouldId, 91 public CommonResult<String> getServiceHttpResponse(@RequestParam Integer configId, @RequestParam Integer interfaceMouldId,
92 - @RequestParam String params, @RequestParam(required = false) MultipartFile multipartFile) { 92 + @RequestParam(required = false) String params,
  93 + @RequestParam(required = false) MultipartFile multipartFile) {
93 return CommonResult.success(iBackGroundService.getServiceHttpResponse(configId, interfaceMouldId, params, multipartFile)); 94 return CommonResult.success(iBackGroundService.getServiceHttpResponse(configId, interfaceMouldId, params, multipartFile));
94 } 95 }
95 96
src/main/java/com/objecteye/service/impl/BackGroundServiceImpl.java
@@ -18,19 +18,23 @@ import com.objecteye.utils.LinuxUtils; @@ -18,19 +18,23 @@ import com.objecteye.utils.LinuxUtils;
18 import com.objecteye.vo.VSyServiceMainTable; 18 import com.objecteye.vo.VSyServiceMainTable;
19 import lombok.extern.slf4j.Slf4j; 19 import lombok.extern.slf4j.Slf4j;
20 import org.apache.commons.io.FileUtils; 20 import org.apache.commons.io.FileUtils;
  21 +import org.apache.http.Consts;
  22 +import org.apache.http.client.methods.CloseableHttpResponse;
  23 +import org.apache.http.client.methods.HttpPost;
  24 +import org.apache.http.entity.StringEntity;
  25 +import org.apache.http.entity.mime.MultipartEntityBuilder;
  26 +import org.apache.http.entity.mime.content.FileBody;
  27 +import org.apache.http.entity.mime.content.StringBody;
  28 +import org.apache.http.impl.client.CloseableHttpClient;
  29 +import org.apache.http.impl.client.HttpClients;
  30 +import org.apache.http.util.EntityUtils;
21 import org.springframework.beans.factory.annotation.Autowired; 31 import org.springframework.beans.factory.annotation.Autowired;
22 -import org.springframework.core.io.FileSystemResource;  
23 import org.springframework.data.redis.core.RedisTemplate; 32 import org.springframework.data.redis.core.RedisTemplate;
24 -import org.springframework.http.HttpEntity;  
25 -import org.springframework.http.HttpHeaders;  
26 -import org.springframework.http.MediaType;  
27 import org.springframework.http.ResponseEntity; 33 import org.springframework.http.ResponseEntity;
28 import org.springframework.scheduling.annotation.Async; 34 import org.springframework.scheduling.annotation.Async;
29 import org.springframework.scheduling.annotation.Scheduled; 35 import org.springframework.scheduling.annotation.Scheduled;
30 import org.springframework.stereotype.Component; 36 import org.springframework.stereotype.Component;
31 import org.springframework.transaction.annotation.Transactional; 37 import org.springframework.transaction.annotation.Transactional;
32 -import org.springframework.util.LinkedMultiValueMap;  
33 -import org.springframework.util.MultiValueMap;  
34 import org.springframework.web.client.RestTemplate; 38 import org.springframework.web.client.RestTemplate;
35 import org.springframework.web.multipart.MultipartFile; 39 import org.springframework.web.multipart.MultipartFile;
36 40
@@ -593,32 +597,49 @@ public class BackGroundServiceImpl implements IBackGroundService { @@ -593,32 +597,49 @@ public class BackGroundServiceImpl implements IBackGroundService {
593 throw new CustomXException("201", "请求路径信息异常"); 597 throw new CustomXException("201", "请求路径信息异常");
594 } 598 }
595 JSONObject paramJson = JSON.parseObject(paramsStr); 599 JSONObject paramJson = JSON.parseObject(paramsStr);
596 - MultiValueMap<String, Object> multiValueMap = new LinkedMultiValueMap<>();  
597 - for (String key : paramJson.keySet()) {  
598 - String value = paramJson.getString(key);  
599 - if ("#file#".equals(value)) {  
600 - if (multipartFile != null && multipartFile.getOriginalFilename() != null) {  
601 - try {  
602 - FileUtils.writeByteArrayToFile(new File(multipartFile.getOriginalFilename()), multipartFile.getBytes());  
603 - } catch (IOException e) {  
604 - e.printStackTrace(); 600 + CloseableHttpResponse response = null;
  601 + String resultString = "";
  602 + CloseableHttpClient httpClient = HttpClients.createDefault();
  603 + HttpPost httpPost = new HttpPost("http://" + ip + ":" + port + uri);
  604 + MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
  605 + try {
  606 + if (paramsStr != null && paramsStr.contains("#file#")) {
  607 + for (String key : paramJson.keySet()) {
  608 + String value = paramJson.getString(key);
  609 + if ("#file#".equals(value)) {
  610 + if (multipartFile != null && multipartFile.getOriginalFilename() != null) {
  611 + FileUtils.writeByteArrayToFile(new File(multipartFile.getOriginalFilename()), multipartFile.getBytes());
  612 + FileBody fileBody = new FileBody(new File(multipartFile.getOriginalFilename()), org.apache.http.entity.ContentType.create("image/png", Consts.UTF_8));
  613 + multipartEntityBuilder.addPart(key, fileBody);
  614 + } else {
  615 + throw new CustomXException("201", "参数为空");
  616 + }
  617 + } else {
  618 + multipartEntityBuilder.addPart(key, new StringBody(value));
605 } 619 }
606 - FileSystemResource fileSystemResource = new FileSystemResource(new File(multipartFile.getOriginalFilename()));  
607 - multiValueMap.add(key, fileSystemResource);  
608 - } else {  
609 - throw new CustomXException("201", "参数为空");  
610 } 620 }
611 - } else {  
612 - multiValueMap.add(key, value); 621 + httpPost.setEntity(multipartEntityBuilder.build());
  622 + } else if (paramsStr != null) {
  623 + StringEntity stringEntity = new StringEntity(paramsStr, "utf-8");
  624 + httpPost.addHeader("Content-Type", syServiceInterfaceMould.getContentType());
  625 + httpPost.setEntity(stringEntity);
  626 + }
  627 + response = httpClient.execute(httpPost);
  628 + resultString = EntityUtils.toString(response.getEntity(), "utf-8");
  629 + } catch (IOException e) {
  630 + e.printStackTrace();
  631 + } finally {
  632 + if (response != null) {
  633 + try {
  634 + response.close();
  635 + } catch (IOException e) {
  636 + e.printStackTrace();
  637 + }
613 } 638 }
614 } 639 }
615 640
616 - HttpHeaders httpHeaders = new HttpHeaders();  
617 - httpHeaders.setContentType(MediaType.parseMediaType(syServiceInterfaceMould.getContentType()));  
618 - HttpEntity<MultiValueMap<String, Object>> httpEntity = new HttpEntity<>(multiValueMap, httpHeaders);  
619 if ("post".equals(syServiceInterfaceMould.getMethodType().toLowerCase())) { 641 if ("post".equals(syServiceInterfaceMould.getMethodType().toLowerCase())) {
620 - ResponseEntity<String> responseEntity = restTemplate.postForEntity("http://" + ip + ":" + port + uri, httpEntity, String.class);  
621 - return responseEntity.getBody(); 642 + return resultString;
622 } else { 643 } else {
623 return "其他请求方式暂不支持"; 644 return "其他请求方式暂不支持";
624 } 645 }
@@ -639,7 +660,7 @@ public class BackGroundServiceImpl implements IBackGroundService { @@ -639,7 +660,7 @@ public class BackGroundServiceImpl implements IBackGroundService {
639 .andItemNameIn(Arrays.asList("serviceInterface", "interfaceMould")).example()); 660 .andItemNameIn(Arrays.asList("serviceInterface", "interfaceMould")).example());
640 661
641 List<Integer> interfaceMouldIdList = new ArrayList<>(); 662 List<Integer> interfaceMouldIdList = new ArrayList<>();
642 - Integer mouldId = null; 663 + List<Integer> mouldIdList = new ArrayList<>();
643 for (SyServiceConfigItem syServiceConfigItem : syServiceConfigItems) { 664 for (SyServiceConfigItem syServiceConfigItem : syServiceConfigItems) {
644 if (syServiceConfigItem == null) { 665 if (syServiceConfigItem == null) {
645 continue; 666 continue;
@@ -647,16 +668,19 @@ public class BackGroundServiceImpl implements IBackGroundService { @@ -647,16 +668,19 @@ public class BackGroundServiceImpl implements IBackGroundService {
647 if ("serviceInterface".equals(syServiceConfigItem.getItemName())) { 668 if ("serviceInterface".equals(syServiceConfigItem.getItemName())) {
648 interfaceMouldIdList.add(Integer.valueOf(syServiceConfigItem.getItemValue())); 669 interfaceMouldIdList.add(Integer.valueOf(syServiceConfigItem.getItemValue()));
649 } else if ("interfaceMould".equals(syServiceConfigItem.getItemName())) { 670 } else if ("interfaceMould".equals(syServiceConfigItem.getItemName())) {
650 - mouldId = Integer.valueOf(syServiceConfigItem.getItemValue()); 671 + mouldIdList.add(Integer.valueOf(syServiceConfigItem.getItemValue()));
651 } 672 }
652 } 673 }
653 SyServiceInterfaceMouldExample syServiceInterfaceMouldExample = new SyServiceInterfaceMouldExample(); 674 SyServiceInterfaceMouldExample syServiceInterfaceMouldExample = new SyServiceInterfaceMouldExample();
  675 + boolean hasCondition = false;
654 if (interfaceMouldIdList.size() > 0) { 676 if (interfaceMouldIdList.size() > 0) {
  677 + hasCondition = true;
655 syServiceInterfaceMouldExample.or(SyServiceInterfaceMouldExample.newAndCreateCriteria().andIdIn(interfaceMouldIdList)); 678 syServiceInterfaceMouldExample.or(SyServiceInterfaceMouldExample.newAndCreateCriteria().andIdIn(interfaceMouldIdList));
656 } 679 }
657 - if (mouldId != null) {  
658 - syServiceInterfaceMouldExample.or(SyServiceInterfaceMouldExample.newAndCreateCriteria().andMouldIdEqualTo(mouldId)); 680 + if (mouldIdList.size() > 0) {
  681 + hasCondition = true;
  682 + syServiceInterfaceMouldExample.or(SyServiceInterfaceMouldExample.newAndCreateCriteria().andMouldIdIn(mouldIdList));
659 } 683 }
660 - return syServiceInterfaceMouldMapper.selectByExample(syServiceInterfaceMouldExample); 684 + return hasCondition ? syServiceInterfaceMouldMapper.selectByExample(syServiceInterfaceMouldExample) : new ArrayList<>();
661 } 685 }
662 } 686 }