Commit 4eb8140c by guojuxing

添加工单上传附件接口

parent 3f51930e
package com.gic.udesk.dto.uploadfile;
import java.io.Serializable;
/**
* udesk工单上传附件
* @ClassName: UploadFileDTO

* @Description: 

* @author guojuxing

* @date 2019/12/26 9:52 AM

*/
public class UploadFileDTO implements Serializable{
private static final long serialVersionUID = -1110187452080769886L;
/**
* 执行结果码,1000表示成功
*/
private Integer code;
/**
* 结果说明
*/
private String message;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.gic.udesk.service;
import java.io.File;
import java.util.List;
import com.gic.api.base.commons.ServiceResponse;
......@@ -37,6 +38,14 @@ public interface UdeskBaseApiService {
* @return com.gic.api.base.commons.ServiceResponse<com.gic.udesk.dto.templates.UdeskResTemplatesDTO>


 */
ServiceResponse<List<UdeskResCustomFieldDataDTO>> getCustomFieldFromUdeskTemplates(Integer type);
/**
* gic基础服务字段的级联数据
* @Title: getGicServiceSelect

* @Description:

 * @author guojuxing 

* @return com.gic.api.base.commons.ServiceResponse<java.util.List<com.gic.udesk.dto.customfield.UdeskCustomFieldOptionDTO>>


 */
ServiceResponse<List<UdeskCustomFieldOptionDTO>> getGicServiceSelect();
ServiceResponse<String> ticketUploadFile(File file, String fileName, Integer ticketId);
}
......@@ -9,6 +9,7 @@ import com.gic.udesk.dto.customfield.UdeskResCustomFieldDataDTO;
import com.gic.udesk.dto.templates.UdeskResTemplatesDTO;
import com.gic.udesk.dto.templates.UdeskResTemplatesDataDTO;
import com.gic.udesk.dto.templates.UdeskTemplatesCustomFieldDTO;
import com.gic.udesk.dto.uploadfile.UploadFileDTO;
import com.gic.udesk.entity.TabUdeskException;
import com.gic.udesk.entity.TabUdeskTapdRel;
import com.gic.udesk.service.UdeskBaseApiService;
......@@ -24,6 +25,7 @@ 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;
......@@ -47,6 +49,8 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
private final static String CUSTOM_FIELD_URL = "/custom_fields";
private final static String UPLOAD_FILE = "/tickets/upload_file";
@PostConstruct
public void init() {
logger.info("初始化udeskTapdRelMap启动。。。。。。。。。。。。。。。");
......@@ -174,6 +178,19 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
return ServiceResponse.failure(ErrorCode.SYSTEM_ERROR.getCode(), "无数据");
}
@Override
public ServiceResponse<String> ticketUploadFile(File file, String fileName, Integer ticketId) {
logger.info("工单上传附件文件名:{}", file.getName());
logger.info("udesk工单上传附件");
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJsonForFile(UPLOAD_FILE, fileName, ticketId, file);
logger.info("desk工单上传附件返回为{}", replyRespStr);
UploadFileDTO result = JSON.parseObject(replyRespStr, UploadFileDTO.class);
if (result.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
return ServiceResponse.success();
}
return ServiceResponse.failure(ErrorCode.SYSTEM_ERROR.getCode(), result.getMessage());
}
private List<UdeskResCustomFieldDataDTO> queryUdeskCustomField(List<String> fieldNameList) {
Map<String, Object> params = new HashMap<>(4);
//枚举,取值范围:["ticket", "customer", "organization"]
......
package com.gic.udesk.utils;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.*;
import org.apache.http.client.utils.URIBuilder;
......@@ -12,6 +13,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.MultipartEntityBuilder;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
......@@ -20,6 +22,7 @@ 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;
......@@ -97,6 +100,28 @@ public class UdeskHttpClientUtil {
}
/**
* udesk的post请求,Request Body 上传文件参数天聪
*/
public static String postUdeskJsonFromJsonForFile(String url, String fileName, Integer ticketId, File file) {
long timeStamp = System.currentTimeMillis() / 1000;
url = UdeskConstant.UDESK_URI + url + "?email=" + UdeskConstant.EMAIL + "&timestamp=" + timeStamp + "&sign=" + UdeskUtils.getSign(timeStamp)
+ "&ticket_id=" + ticketId + "&fileName=" + fileName;
logger.info(url);
CloseableHttpResponse response = null;
try {
HttpPost httpPost = new HttpPost(url);
response = getResponseForFile(file, httpPost);
return EntityUtils.toString(response.getEntity(), "utf-8");
} catch (Exception e) {
logger.info("POST请求{}失败,参数fileName:{}-ticketId:{}", url, fileName, ticketId, e);
} finally {
closeResponse(response);
}
return null;
}
/**
* udesk的put请求,Request Body
*/
public static String putUdeskJsonFromJson(String url, String json) {
......@@ -255,4 +280,24 @@ public class UdeskHttpClientUtil {
response = httpClient.execute(httpPost);
return response;
}
/**
* 上传文件填充
* @param file
* @param httpPost
* @return
* @throws IOException
* @throws ClientProtocolException
*/
private static CloseableHttpResponse getResponseForFile(File file, HttpPost httpPost)
throws IOException, ClientProtocolException {
CloseableHttpResponse response;
MultipartEntityBuilder multipartEntityBuilder = MultipartEntityBuilder.create();
multipartEntityBuilder.addBinaryBody("file", file);
multipartEntityBuilder.addTextBody("comment", "this is comment");
HttpEntity httpEntity = multipartEntityBuilder.build();
httpPost.setEntity(httpEntity);
response = httpClient.execute(httpPost);
return response;
}
}
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 org.apache.commons.lang3.StringUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
......@@ -14,6 +16,12 @@ import com.gic.enterprise.ano.IgnoreLogin;
import com.gic.enterprise.utils.ResultControllerUtils;
import com.gic.udesk.constant.AgentPermissionEnum;
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 {
......@@ -39,6 +47,23 @@ public class GicTicketController {
return ResultControllerUtils.commonResult(udeskBaseApiService.getCustomFieldFromUdeskTemplates(type));
}
@RequestMapping("/ticket-upload-file")
@IgnoreLogin
public RestResponse getCustomFieldFromUdeskTemplates(HttpServletRequest request) {
String ticketId = request.getParameter("ticketId");
if (!StringUtils.isNumeric(ticketId)) {
return RestResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "工单ID错误,数值非法");
}
MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request;
//上传一个文件处理方式,如果是多个,用getFiles
MultipartFile file = multipartRequest.getFile("file");
if (file.isEmpty()) {
return RestResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "文件为空");
}
return ResultControllerUtils.commonResult(
udeskBaseApiService.ticketUploadFile((File) file, file.getOriginalFilename(), Integer.parseInt(ticketId)));
}
/**
* udesk自定义字段 客服权限
* @return
......
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