Commit e3f6001d by guojuxing

udesk模板自定义字段查询

parent d0cf404d
package com.gic.udesk.constant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* udesk自定义字段 客服权限
* @ClassName: CalculateResultTypeEnum

* @Description: 

* @author guojuxing

* @date 2019/12/25 2:36 PM

*/
public enum AgentPermissionEnum {
READONLY("readonly", "客服可见,但不可编辑"),
READWRITE("readwrite", "客服可编辑"),
MUST("must", "客服必填");
private String code;
private String message;
private AgentPermissionEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static List<Map<String, Object>> list() {
List<Map<String, Object>> result = new ArrayList<>();
for (AgentPermissionEnum permissionEnum : values()) {
Map<String, Object> temp = new HashMap<>(4);
temp.put("key", permissionEnum.getCode());
temp.put("value", permissionEnum.getMessage());
result.add(temp);
}
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.gic.udesk.constant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* udesk自定义字段 计算字段的计算结果类型
* @ClassName: CalculateResultTypeEnum

* @Description: 

* @author guojuxing

* @date 2019/12/25 2:36 PM

*/
public enum CalculateResultTypeEnum {
NUMERIC("numeric", "数字"),
DURATION("duration", "时长"),
PERCENTAGE("percentage", "百分比");
private String code;
private String message;
private CalculateResultTypeEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static List<Map<String, Object>> list() {
List<Map<String, Object>> result = new ArrayList<>();
for (CalculateResultTypeEnum permissionEnum : values()) {
Map<String, Object> temp = new HashMap<>(4);
temp.put("key", permissionEnum.getCode());
temp.put("value", permissionEnum.getMessage());
result.add(temp);
}
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.gic.udesk.constant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* udesk自定义字段 字段类型
* @ClassName: CustomFieldContentTypeEnum

* @Description: 

* @author guojuxing

* @date 2019/12/25 2:34 PM

*/
public enum CustomFieldContentTypeEnum {
TEXT("text", "单行文本"),
AREA_TEXT("area_text", "多行文本"),
DATE("date", "日期"),
TIME("time", "时间"),
DATE_TIME("datetime", "日期时间"),
LINK("link", "超链接"),
LOCATION("location", "地理位置"),
NUMBER("number", "正整数"),
NUMERIC("numeric", "数值"),
DROPLIST("droplist", "下拉列表"),
RADIO("radio", "单选"),
CHECKBOX("checkbox", "多选"),
CHAINED_DROPLIST("chained_droplist", "级联"),
CALCULATE("calculate", "计算字段");
private String code;
private String message;
private CustomFieldContentTypeEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static List<Map<String, Object>> list() {
List<Map<String, Object>> result = new ArrayList<>();
for (CustomFieldContentTypeEnum permissionEnum : values()) {
Map<String, Object> temp = new HashMap<>(4);
temp.put("key", permissionEnum.getCode());
temp.put("value", permissionEnum.getMessage());
result.add(temp);
}
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.gic.udesk.constant;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* udesk自定义字段 客户权限
* @ClassName: CalculateResultTypeEnum

* @Description: 

* @author guojuxing

* @date 2019/12/25 2:36 PM

*/
public enum CustomerPermissionEnum {
NONE("none", "客户不可见"),
READONLY("readonly", "客户可见,但不可编辑"),
READWRITE("readwrite", "客户可编辑"),
MUST("must", "客户必填");
private String code;
private String message;
private CustomerPermissionEnum(String code, String message) {
this.code = code;
this.message = message;
}
public static List<Map<String, Object>> list() {
List<Map<String, Object>> result = new ArrayList<>();
for (CustomerPermissionEnum permissionEnum : values()) {
Map<String, Object> temp = new HashMap<>(4);
temp.put("key", permissionEnum.getCode());
temp.put("value", permissionEnum.getMessage());
result.add(temp);
}
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
package com.gic.udesk.dto.customfield;
import java.io.Serializable;
import java.util.List;
/**
* 自定义字段,级联选项值
* @ClassName: UdeskCustomFieldOptionDTO

* @Description: 

* @author guojuxing

* @date 2019/12/25 10:14 AM

*/
public class UdeskCustomFieldOptionDTO implements Serializable{
private static final long serialVersionUID = -5864719910960739518L;
/**
* 选项文字描述
*/
private String title;
private String value;
private List<UdeskCustomFieldOptionDTO> subs;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public List<UdeskCustomFieldOptionDTO> getSubs() {
return subs;
}
public void setSubs(List<UdeskCustomFieldOptionDTO> subs) {
this.subs = subs;
}
}
package com.gic.udesk.dto.customfield;
import java.io.Serializable;
import java.util.List;
/**
* 自定义字段
* @ClassName: UdeskResCustomFieldDTO

* @Description: 

* @author guojuxing

* @date 2019/12/25 10:10 AM

*/
public class UdeskResCustomFieldDTO implements Serializable{
private static final long serialVersionUID = 91651103459824362L;
/**
* 执行结果码,1000代表成功
*/
private Integer code;
private List<UdeskResCustomFieldDataDTO> fields;
public Integer getCode() {
return code;
}
public void setCode(Integer code) {
this.code = code;
}
public List<UdeskResCustomFieldDataDTO> getFields() {
return fields;
}
public void setFields(List<UdeskResCustomFieldDataDTO> fields) {
this.fields = fields;
}
}
package com.gic.udesk.dto.customfield;
import java.io.Serializable;
import java.util.List;
/**
* 自定义字段返回 数据
* @ClassName: UdeskResCustomFieldDataDTO

* @Description: 

* @author guojuxing

* @date 2019/12/25 10:11 AM

*/
public class UdeskResCustomFieldDataDTO implements Serializable{
private static final long serialVersionUID = -831985526535468454L;
private Integer id;
/**
* 字段标识
*/
private String field_name;
/**
* 字段显示名称
*/
private String field_label;
/**
* 字段类型
*/
private String content_type;
/**
* 字段备注
*/
private String comment;
/**
* 字段选项,仅选择类型字段返回
*/
private List<UdeskCustomFieldOptionDTO> options;
/**
* 客户权限
*/
private String customer_permission;
/**
* 客服权限
*/
private String agent_permission;
/**
* 计算字段的计算结果类型
*/
private String calculate_result_type;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getField_name() {
return field_name;
}
public void setField_name(String field_name) {
this.field_name = field_name;
}
public String getField_label() {
return field_label;
}
public void setField_label(String field_label) {
this.field_label = field_label;
}
public String getContent_type() {
return content_type;
}
public void setContent_type(String content_type) {
this.content_type = content_type;
}
public String getComment() {
return comment;
}
public void setComment(String comment) {
this.comment = comment;
}
public List<UdeskCustomFieldOptionDTO> getOptions() {
return options;
}
public void setOptions(List<UdeskCustomFieldOptionDTO> options) {
this.options = options;
}
}
package com.gic.udesk.service;
import java.util.List;
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;
public interface UdeskBaseApiService {
......@@ -24,6 +28,15 @@ public interface UdeskBaseApiService {

 */
ServiceResponse<Void> saveTapdException(String exceptionRecord);
/**
* 获取工单模板的自定义字段
* @Title: getCustomFieldFromUdeskTemplates

* @Description:

 * @author guojuxing
* @param type
 1:gic基础业务 2:应用
* @return com.gic.api.base.commons.ServiceResponse<com.gic.udesk.dto.templates.UdeskResTemplatesDTO>


 */
ServiceResponse<List<UdeskResCustomFieldDataDTO>> getCustomFieldFromUdeskTemplates(Integer type);
ServiceResponse<UdeskResTemplatesDTO> getUdeskTemplates();
ServiceResponse<List<UdeskCustomFieldOptionDTO>> getGicServiceSelect();
}
......@@ -2,7 +2,13 @@ package com.gic.udesk.service.outer.impl;
import com.alibaba.fastjson.JSON;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.enterprise.error.ErrorCode;
import com.gic.udesk.dto.customfield.UdeskCustomFieldOptionDTO;
import com.gic.udesk.dto.customfield.UdeskResCustomFieldDTO;
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.entity.TabUdeskException;
import com.gic.udesk.entity.TabUdeskTapdRel;
import com.gic.udesk.service.UdeskBaseApiService;
......@@ -18,6 +24,8 @@ import org.springframework.stereotype.Service;
import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
......@@ -37,6 +45,8 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
*/
private final static String UDESK_TEMPLATE = "/tickets/ticket_templates";
private final static String CUSTOM_FIELD_URL = "/custom_fields";
@PostConstruct
public void init() {
logger.info("初始化udeskTapdRelMap启动。。。。。。。。。。。。。。。");
......@@ -98,12 +108,95 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
}
@Override
public ServiceResponse<UdeskResTemplatesDTO> getUdeskTemplates() {
logger.info("回复udesk工单bug链接");
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJson(UDESK_TEMPLATE, null);
logger.info("回复udesk工单bug链接返回为{}", replyRespStr);
public ServiceResponse<List<UdeskResCustomFieldDataDTO>> getCustomFieldFromUdeskTemplates(Integer type) {
boolean isNotRightType = type == null || (type.intValue() != 1 && type.intValue() != 2);
if (isNotRightType) {
return ServiceResponse.failure(ErrorCode.PARAMETER_ERROR.getCode(), "参数错误,数值非法");
}
logger.info("udesk工单模板链接");
String replyRespStr = UdeskHttpClientUtil.getUdeskJsonFromParam(UDESK_TEMPLATE, null);
logger.info("desk工单模板链接返回为{}", replyRespStr);
UdeskResTemplatesDTO result = JSON.parseObject(replyRespStr, UdeskResTemplatesDTO.class);
return ServiceResponse.success(result);
if (result.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
List<UdeskTemplatesCustomFieldDTO> customFieldList = null;
for (UdeskResTemplatesDataDTO templatesDataDTO : result.getTemplates()) {
if (type == 1) {
//gic基础业务模板
if (templatesDataDTO.getId().intValue() == 97811) {
customFieldList = templatesDataDTO.getCustom_fields();
break;
}
} else {
//应用模板
if (templatesDataDTO.getId().intValue() == 99311) {
customFieldList = templatesDataDTO.getCustom_fields();
break;
}
}
}
if (CollectionUtils.isNotEmpty(customFieldList)) {
List<String> fieldNameList = new ArrayList<>(customFieldList.size());
for (UdeskTemplatesCustomFieldDTO customFieldDTO : customFieldList) {
fieldNameList.add(customFieldDTO.getField_name());
}
return ServiceResponse.success(queryUdeskCustomField(fieldNameList));
}
} else {
String exceptionRecord = "udesk工单模板查询异常,返回为" + replyRespStr;
logger.info(exceptionRecord);
this.saveUdeskException(exceptionRecord);
}
return ServiceResponse.success();
}
@Override
public ServiceResponse<List<UdeskCustomFieldOptionDTO>> getGicServiceSelect() {
Map<String, Object> params = new HashMap<>(4);
//枚举,取值范围:["ticket", "customer", "organization"]
params.put("category", "ticket");
logger.info("udesk工单gic基础服务级联链接");
String replyRespStr = UdeskHttpClientUtil.getUdeskJsonFromParam(CUSTOM_FIELD_URL, params);
logger.info("desk工工单gic基础服务级联返回为{}", replyRespStr);
UdeskResCustomFieldDTO result = JSON.parseObject(replyRespStr, UdeskResCustomFieldDTO.class);
if (result.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
//成功
for (UdeskResCustomFieldDataDTO dataDTO : result.getFields()) {
if ("SelectField_56661".equals(dataDTO.getField_name())) {
//gic基础服务级联数据
return ServiceResponse.success(dataDTO.getOptions());
}
}
} else {
String exceptionRecord = "udesk工单gic基础服务级联查询异常,返回为" + replyRespStr;
logger.info(exceptionRecord);
this.saveUdeskException(exceptionRecord);
}
return ServiceResponse.failure(ErrorCode.SYSTEM_ERROR.getCode(), "无数据");
}
private List<UdeskResCustomFieldDataDTO> queryUdeskCustomField(List<String> fieldNameList) {
Map<String, Object> params = new HashMap<>(4);
//枚举,取值范围:["ticket", "customer", "organization"]
params.put("category", "ticket");
logger.info("udesk工单自定义字段链接");
String replyRespStr = UdeskHttpClientUtil.getUdeskJsonFromParam(CUSTOM_FIELD_URL, params);
logger.info("desk工单自定义字段返回为{}", replyRespStr);
UdeskResCustomFieldDTO result = JSON.parseObject(replyRespStr, UdeskResCustomFieldDTO.class);
if (result.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
//成功
List<UdeskResCustomFieldDataDTO> resultList = new ArrayList<>();
for (UdeskResCustomFieldDataDTO dataDTO : result.getFields()) {
if (fieldNameList.contains(dataDTO.getField_name())) {
resultList.add(dataDTO);
}
}
return resultList;
} else {
String exceptionRecord = "udesk工单gic基础服务级联查询异常,返回为" + replyRespStr;
logger.info(exceptionRecord);
this.saveUdeskException(exceptionRecord);
}
return null;
}
}
package com.gic.udesk.web.controller;
import com.gic.udesk.constant.CalculateResultTypeEnum;
import com.gic.udesk.constant.CustomFieldContentTypeEnum;
import com.gic.udesk.constant.CustomerPermissionEnum;
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 com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.ano.IgnoreLogin;
import com.gic.enterprise.utils.ResultControllerUtils;
import com.gic.udesk.constant.AgentPermissionEnum;
import com.gic.udesk.service.UdeskBaseApiService;
@RestController
public class GicTicketController {
private static final Logger LOGGER = LogManager.getLogger(GicTicketController.class);
@Autowired
private UdeskBaseApiService udeskBaseApiService;
@RequestMapping("/get-gic-service-select")
@IgnoreLogin
public RestResponse getGicServiceSelect() {
return ResultControllerUtils.commonResult(udeskBaseApiService.getGicServiceSelect());
}
/**
* 获取工单模板的自定义字段
* @param type 1:gic基础业务 2:应用
* @return
*/
@RequestMapping("/get-custom-field-by-type")
@IgnoreLogin
public RestResponse getCustomFieldFromUdeskTemplates(Integer type) {
return ResultControllerUtils.commonResult(udeskBaseApiService.getCustomFieldFromUdeskTemplates(type));
}
/**
* udesk自定义字段 客服权限
* @return
*/
@RequestMapping("/agent-permission-enum")
@IgnoreLogin
public RestResponse agentPermissionEnum() {
return RestResponse.success(AgentPermissionEnum.list());
}
/**
* udesk自定义字段 计算字段的计算结果类型
* @return
*/
@RequestMapping("/calculate-result-type-enum")
@IgnoreLogin
public RestResponse calculateResultTypeEnum() {
return RestResponse.success(CalculateResultTypeEnum.list());
}
/**
* udesk自定义字段 客户权限
* @return
*/
@RequestMapping("/custom-permission-enum")
@IgnoreLogin
public RestResponse customPermissionEnum() {
return RestResponse.success(CustomerPermissionEnum.list());
}
/**
* udesk自定义字段 字段类型
* @return
*/
@RequestMapping("/custom-field-content-type-enum")
@IgnoreLogin
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