Commit fca1ce1c by guojuxing

添加工单上传附件接口

parent 4eb8140c
......@@ -7,6 +7,7 @@ import com.gic.api.base.commons.ServiceResponse;
import com.gic.udesk.dto.customfield.UdeskCustomFieldOptionDTO;
import com.gic.udesk.dto.customfield.UdeskResCustomFieldDataDTO;
import com.gic.udesk.dto.templates.UdeskResTemplatesDTO;
import org.springframework.web.multipart.MultipartFile;
public interface UdeskBaseApiService {
......@@ -47,5 +48,15 @@ public interface UdeskBaseApiService {

 */
ServiceResponse<List<UdeskCustomFieldOptionDTO>> getGicServiceSelect();
ServiceResponse<String> ticketUploadFile(File file, String fileName, Integer ticketId);
/**
* 上传附件
* @Title: ticketUploadFile

* @Description:

 * @author guojuxing
* @param bytes
* @param fileName
* @param ticketId
 工单ID
* @return com.gic.api.base.commons.ServiceResponse<java.lang.String>


 */
ServiceResponse<String> ticketUploadFile(byte[] bytes, String fileName, Integer ticketId);
}
package com.gic.udesk.service.outer.impl;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.enterprise.error.ErrorCode;
......@@ -17,19 +31,6 @@ import com.gic.udesk.service.UdeskExceptionService;
import com.gic.udesk.service.UdeskTapdRelService;
import com.gic.udesk.utils.UdeskConstant;
import com.gic.udesk.utils.UdeskHttpClientUtil;
import org.apache.commons.collections.CollectionUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.io.File;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Service("udeskBaseApiService")
public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
......@@ -179,10 +180,9 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
}
@Override
public ServiceResponse<String> ticketUploadFile(File file, String fileName, Integer ticketId) {
logger.info("工单上传附件文件名:{}", file.getName());
public ServiceResponse<String> ticketUploadFile(byte[] bytes, String fileName, Integer ticketId) {
logger.info("udesk工单上传附件");
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJsonForFile(UPLOAD_FILE, fileName, ticketId, file);
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJsonForFile(UPLOAD_FILE, ticketId, bytes, fileName);
logger.info("desk工单上传附件返回为{}", replyRespStr);
UploadFileDTO result = JSON.parseObject(replyRespStr, UploadFileDTO.class);
if (result.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
......
package com.gic.udesk.utils;
import java.io.ByteArrayInputStream;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import javax.net.ssl.SSLContext;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
......@@ -13,6 +23,7 @@ import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
......@@ -21,15 +32,6 @@ import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import javax.net.ssl.SSLContext;
import java.io.File;
import java.io.IOException;
import java.net.URISyntaxException;
import java.security.NoSuchAlgorithmException;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
public class UdeskHttpClientUtil {
private static final Logger logger = LogManager.getLogger(UdeskHttpClientUtil.class);
......@@ -102,18 +104,17 @@ public class UdeskHttpClientUtil {
/**
* udesk的post请求,Request Body 上传文件参数天聪
*/
public static String postUdeskJsonFromJsonForFile(String url, String fileName, Integer ticketId, File file) {
public static String postUdeskJsonFromJsonForFile(String url, Integer ticketId, byte[] bytes, String fileName) {
long timeStamp = System.currentTimeMillis() / 1000;
url = UdeskConstant.UDESK_URI + url + "?email=" + UdeskConstant.EMAIL + "&timestamp=" + timeStamp + "&sign=" + UdeskUtils.getSign(timeStamp)
+ "&ticket_id=" + ticketId + "&fileName=" + fileName;
url = UdeskConstant.UDESK_URI + url + "?email=" + UdeskConstant.EMAIL + "&timestamp=" + timeStamp + "&sign=" + UdeskUtils.getSign(timeStamp);
logger.info(url);
CloseableHttpResponse response = null;
try {
HttpPost httpPost = new HttpPost(url);
response = getResponseForFile(file, httpPost);
response = getResponseForFile(bytes, fileName, ticketId, httpPost);
return EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
logger.info("POST请求{}失败,参数fileName:{}-ticketId:{}", url, fileName, ticketId, e);
logger.info("POST请求{}失败,参数ticketId:{}", url, ticketId, e);
} finally {
closeResponse(response);
}
......@@ -283,18 +284,22 @@ public class UdeskHttpClientUtil {
/**
* 上传文件填充
* @param file
* @param bytes
* @param fileName
* @param ticketId
* @param httpPost
* @return
* @throws IOException
* @throws ClientProtocolException
*/
private static CloseableHttpResponse getResponseForFile(File file, HttpPost httpPost)
private static CloseableHttpResponse getResponseForFile(byte[] bytes, String fileName, Integer ticketId, HttpPost httpPost)
throws IOException, ClientProtocolException {
CloseableHttpResponse response;
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
multipartEntityBuilder.addTextBody("comment", "this is comment");
//解决乱码,设置mode
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create().setMode(HttpMultipartMode.RFC6532);
multipartEntityBuilder.addBinaryBody("file", new ByteArrayInputStream(bytes), ContentType.DEFAULT_BINARY, fileName);
multipartEntityBuilder.addTextBody("ticket_id", ticketId.toString());
multipartEntityBuilder.addTextBody("file_name", fileName);
HttpEntity httpEntity = multipartEntityBuilder.build();
httpPost.setEntity(httpEntity);
response = httpClient.execute(httpPost);
......
package com.gic.udesk.web.controller;
import com.gic.enterprise.error.ErrorCode;
import com.gic.udesk.constant.CalculateResultTypeEnum;
import com.gic.udesk.constant.CustomFieldContentTypeEnum;
import com.gic.udesk.constant.CustomerPermissionEnum;
import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.ano.IgnoreLogin;
import com.gic.enterprise.error.ErrorCode;
import com.gic.enterprise.utils.ResultControllerUtils;
import com.gic.udesk.constant.AgentPermissionEnum;
import com.gic.udesk.constant.CalculateResultTypeEnum;
import com.gic.udesk.constant.CustomFieldContentTypeEnum;
import com.gic.udesk.constant.CustomerPermissionEnum;
import com.gic.udesk.service.UdeskBaseApiService;
import org.springframework.web.multipart.MultipartFile;
import org.springframework.web.multipart.MultipartHttpServletRequest;
import javax.servlet.http.HttpServletRequest;
import java.io.File;
import java.util.List;
@RestController
public class GicTicketController {
......@@ -49,7 +48,7 @@ public class GicTicketController {
@RequestMapping("/ticket-upload-file")
@IgnoreLogin
public RestResponse getCustomFieldFromUdeskTemplates(HttpServletRequest request) {
public RestResponse getCustomFieldFromUdeskTemplates(HttpServletRequest request) throws Exception {
String ticketId = request.getParameter("ticketId");
if (!StringUtils.isNumeric(ticketId)) {
return RestResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "工单ID错误,数值非法");
......@@ -60,8 +59,9 @@ public class GicTicketController {
if (file.isEmpty()) {
return RestResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "文件为空");
}
return ResultControllerUtils.commonResult(
udeskBaseApiService.ticketUploadFile((File) file, file.getOriginalFilename(), Integer.parseInt(ticketId)));
ServiceResponse<String> result = udeskBaseApiService.ticketUploadFile(file.getBytes(), file.getOriginalFilename(),
Integer.parseInt(ticketId));
return ResultControllerUtils.commonResult(result);
}
/**
......@@ -103,4 +103,5 @@ public class GicTicketController {
public RestResponse customFieldContentTypeEnum() {
return RestResponse.success(CustomFieldContentTypeEnum.list());
}
}
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