You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
203 lines
8.0 KiB
Java
203 lines
8.0 KiB
Java
package com.glxp.api.idc.controller;
|
|
|
|
import java.io.UnsupportedEncodingException;
|
|
import java.net.URLEncoder;
|
|
import java.util.Enumeration;
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.servlet.http.HttpServletRequest;
|
|
import javax.servlet.http.HttpServletResponse;
|
|
|
|
import org.springframework.http.HttpEntity;
|
|
import org.springframework.http.HttpHeaders;
|
|
import org.springframework.http.HttpMethod;
|
|
import org.springframework.http.ResponseEntity;
|
|
import org.springframework.web.bind.annotation.RequestBody;
|
|
import org.springframework.web.bind.annotation.RequestMapping;
|
|
import org.springframework.web.bind.annotation.RequestParam;
|
|
import org.springframework.web.bind.annotation.ResponseBody;
|
|
import org.springframework.web.bind.annotation.RestController;
|
|
import org.springframework.web.client.RestTemplate;
|
|
import org.springframework.web.multipart.MultipartFile;
|
|
|
|
import com.alibaba.fastjson.JSON;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.glxp.api.common.res.BaseResponse;
|
|
import com.glxp.api.dao.idc.DbDao;
|
|
import com.glxp.api.idc.service.IdcService;
|
|
import com.glxp.api.idc.utils.UriUtils;
|
|
import com.glxp.api.service.system.SystemParamConfigService;
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
|
/**
|
|
* 中继服务接口
|
|
*/
|
|
@Slf4j
|
|
@RestController
|
|
public class IdcController {
|
|
@Resource
|
|
IdcService idcService;
|
|
@Resource
|
|
DbDao dbDao;
|
|
@Resource
|
|
UriUtils uriUtils;
|
|
|
|
/*通用上传接口*/
|
|
//@Log("中继服务数据接收,下级往上级上传")
|
|
@RequestMapping(value = "/spssync/common/upload")
|
|
public BaseResponse upload(HttpServletRequest request,
|
|
@RequestParam("content") String content,
|
|
@RequestParam(value = "files", required = false) MultipartFile[] files) {
|
|
//
|
|
return idcService.receive(request, content, files);
|
|
}
|
|
|
|
|
|
//@Log("数据同步测试")
|
|
@RequestMapping(value = "/spssync/common/test")
|
|
public BaseResponse test(HttpServletRequest request, @RequestBody Map<String, Object> params) {
|
|
//
|
|
return idcService.send(params);
|
|
}
|
|
|
|
//@Log("数据同步任务列表拉取")
|
|
@RequestMapping(value = "/spssync/common/list")
|
|
@ResponseBody
|
|
public BaseResponse list(HttpServletRequest request, @RequestBody(required = false) Map<String, Object> params) {
|
|
return idcService.taskList(request, params);
|
|
}
|
|
|
|
//@Log("数据同步任务根据任务ID下载数据")
|
|
@RequestMapping(value = "/spssync/common/download")
|
|
@ResponseBody
|
|
public BaseResponse download(HttpServletRequest request, @RequestBody Map<String, Object> params) {
|
|
return idcService.download(request, params);
|
|
}
|
|
@RequestMapping(value = "/spssync/common/uploadStatus")
|
|
@ResponseBody
|
|
public BaseResponse uploadStatus(HttpServletRequest request, @RequestBody Map<String, Object> params) {
|
|
return idcService.uploadStatus(request, params);
|
|
}
|
|
|
|
@RequestMapping(value = "/spssync/common/downloadStatus")
|
|
@ResponseBody
|
|
public BaseResponse downloadStatus(HttpServletRequest request, @RequestBody Map<String, Object> params) {
|
|
return idcService.downloadStatus(request, params);
|
|
}
|
|
//@Log("数据同步任务根据任务ID,返回下载成功标记")
|
|
@RequestMapping(value = "/spssync/common/success")
|
|
@ResponseBody
|
|
public BaseResponse success(HttpServletRequest request, @RequestBody Map<String, Object> params) {
|
|
return idcService.downlaodSuccess(request, params);
|
|
}
|
|
|
|
@RequestMapping(value = "/spssync/common/downloadFile")
|
|
public void downloadFile(HttpServletResponse response,@RequestParam String fileName) throws UnsupportedEncodingException {
|
|
if (fileName != null) {
|
|
response.setHeader("Content-disposition", "attachment; filename=" + URLEncoder.encode(fileName, "UTF-8"));
|
|
response.setContentType("application/force-download");
|
|
idcService.downloadFile(fileName, response);
|
|
}
|
|
|
|
}
|
|
|
|
|
|
@RequestMapping("/mapi/**")
|
|
public Object mapi(HttpServletRequest request, HttpServletResponse httpServletResponse) {
|
|
String uri = uriUtils.parseUri(request.getRequestURL().toString());
|
|
|
|
log.info(uri);
|
|
String isTopService = systemParamConfigService.selectValueByParamKey("is_top_service");
|
|
if (StrUtil.isNotEmpty(isTopService) && isTopService.equals("1")) {
|
|
uri = uri.replace("mapi/", "");
|
|
}
|
|
String upperServerHost = systemParamConfigService.selectValueByParamKey("upper_server_host");
|
|
if (StrUtil.isNotEmpty(upperServerHost)) {
|
|
uri = upperServerHost + "/" + uri;
|
|
}
|
|
log.info(uri);
|
|
if (uri.contains("getImage")) {
|
|
return redirectIamge(request, httpServletResponse, uri);
|
|
} else {
|
|
return redirect(request, uri);
|
|
}
|
|
}
|
|
|
|
|
|
private byte[] redirectIamge(HttpServletRequest request, HttpServletResponse httpServletResponse, String uri) {
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
// HttpEntity<String> httpEntity = buildHeader(request);
|
|
log.info(request.getMethod());
|
|
Map<String, Object> headerParam = new HashMap<>();
|
|
Map<String, Object> bodyParam = new HashMap<String, Object>();
|
|
Enumeration pNames = request.getParameterNames();
|
|
String parm = "";
|
|
while (pNames.hasMoreElements()) {
|
|
String name = (String) pNames.nextElement();
|
|
String value = request.getParameter(name);
|
|
bodyParam.put(name, value);
|
|
parm = parm + name + "=" + value + "&";
|
|
}
|
|
uri = uri + "?" + parm.substring(0, parm.length() - 1);
|
|
HttpHeaders headers = new HttpHeaders();
|
|
Enumeration<String> enumeration = request.getHeaderNames();
|
|
while (enumeration.hasMoreElements()) {
|
|
String name = enumeration.nextElement();
|
|
String value = request.getHeader(name);
|
|
headerParam.put(name, value);
|
|
headers.add(name, value);
|
|
}
|
|
//headers.add("Content-Type", "application/json;charset=UTF-8");
|
|
HttpEntity<String> http = new HttpEntity<>(JSON.toJSONString(bodyParam), headers);
|
|
|
|
|
|
log.info(uri);
|
|
// ResponseEntity<Resource> entity = restTemplate.exchange(uri, HttpMethod.GET, httpEntity, Resource.class);
|
|
// ResponseEntity<Resource> responseEntity = restTemplate.exchange(uri,
|
|
// HttpMethod.GET, http, Resource.class, new Object[0]);
|
|
// ResponseEntity<HttpServletResponse> responseEntity = restTemplate.exchange(uri, HttpMethod.GET, http, HttpServletResponse.class);
|
|
|
|
ResponseEntity<byte[]> rsp = restTemplate.getForEntity(uri, byte[].class);
|
|
// String targetPath = "D:\\wmslog\\splash-down.png";
|
|
// try {
|
|
// Files.write(Paths.get(targetPath), Objects.requireNonNull(rsp.getBody(),
|
|
// "未获取到下载文件"));
|
|
// } catch (IOException e) {
|
|
// e.printStackTrace();
|
|
// }
|
|
|
|
return rsp.getBody();
|
|
|
|
}
|
|
|
|
|
|
@Resource
|
|
SystemParamConfigService systemParamConfigService;
|
|
|
|
private JSONObject redirect(HttpServletRequest request, String uri) {
|
|
|
|
RestTemplate restTemplate = new RestTemplate();
|
|
HttpEntity<String> httpEntity = uriUtils.buildHeader(request);
|
|
|
|
ResponseEntity<JSONObject> responseBody = null;
|
|
if (request.getMethod().equals("POST"))
|
|
responseBody = restTemplate.postForEntity(uri, httpEntity, JSONObject.class);
|
|
else if (request.getMethod().equals("GET")) {
|
|
responseBody = restTemplate.exchange(uri, HttpMethod.GET, httpEntity, JSONObject.class);
|
|
} else if (request.getMethod().equals("PUT")) {
|
|
responseBody = restTemplate.exchange(uri, HttpMethod.PUT, httpEntity, JSONObject.class);
|
|
} else if (request.getMethod().equals("DELETE")) {
|
|
responseBody = restTemplate.exchange(uri, HttpMethod.DELETE, httpEntity, JSONObject.class);
|
|
}
|
|
JSONObject result = responseBody.getBody();
|
|
return result;
|
|
}
|
|
|
|
|
|
}
|