Commit 9b736699 by guojuxing

pmd

parent 55971329
......@@ -13,8 +13,17 @@ import java.util.Map;
* @date 2019/12/25 2:36 PM

*/
public enum AgentPermissionEnum {
/**
* 客服可见,但不可编辑
*/
READONLY("readonly", "客服可见,但不可编辑"),
/**
* 客服可编辑
*/
READWRITE("readwrite", "客服可编辑"),
/**
* 客服必填
*/
MUST("must", "客服必填");
private String code;
......
......@@ -13,8 +13,17 @@ import java.util.Map;
* @date 2019/12/25 2:36 PM

*/
public enum CalculateResultTypeEnum {
/**
* 数字
*/
NUMERIC("numeric", "数字"),
/**
* 时长
*/
DURATION("duration", "时长"),
/**
* 百分比
*/
PERCENTAGE("percentage", "百分比");
private String code;
......
......@@ -13,19 +13,61 @@ import java.util.Map;
* @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;
......
......@@ -13,9 +13,21 @@ import java.util.Map;
* @date 2019/12/25 2:36 PM

*/
public enum CustomerPermissionEnum {
/**
* 客户不可见
*/
NONE("none", "客户不可见"),
/**
* 客户可见,但不可编辑
*/
READONLY("readonly", "客户可见,但不可编辑"),
/**
* 客户可编辑
*/
READWRITE("readwrite", "客户可编辑"),
/**
* 客户必填
*/
MUST("must", "客户必填");
private String code;
......
......@@ -4,11 +4,29 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* udesk的客服工单状态
* @ClassName: UdeskStatusEnum

* @Description: 

* @author guojuxing

* @date 2020/9/18 9:51 AM

*/
public enum UdeskStatusEnum {
/**
* 开启
*/
OPEN("open", "开启", 1),
/**
* 解决中
*/
SOLVING("solving", "解决中", 4),
/**
* 已解决
*/
RESOLVED("resolved", "已解决", 2),
/**
* 已关闭
*/
CLOSED("closed", "已关闭", 3);
private String code;
......
package com.gic.udesk.dto;
import java.io.Serializable;
import com.gic.commons.annotation.SkipNamingCheck;
/**
* 附件
* @ClassName: AttachmentDTO

......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:05 PM

*/
@SkipNamingCheck
public class AttachmentDTO implements Serializable{
private static final long serialVersionUID = 6369929530568254062L;
......@@ -36,4 +39,12 @@ public class AttachmentDTO implements Serializable{
public void setUrl(String url) {
this.url = url;
}
@Override
public String toString() {
return "AttachmentDTO{" +
"file_name='" + file_name + '\'' +
", url='" + url + '\'' +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 关注者
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:06 PM

*/
@SkipNamingCheck
public class FollowerDTO implements Serializable{
private static final long serialVersionUID = -6806790410409455090L;
......@@ -36,4 +39,12 @@ public class FollowerDTO implements Serializable{
public void setNick_name(String nick_name) {
this.nick_name = nick_name;
}
@Override
public String toString() {
return "FollowerDTO{" +
"id=" + id +
", nick_name='" + nick_name + '\'' +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
import java.util.Map;
......@@ -10,6 +12,7 @@ import java.util.Map;
* @author guojuxing

* @date 2019/12/23 3:07 PM

*/
@SkipNamingCheck
public class OrganizationDTO implements Serializable{
private static final long serialVersionUID = -3042952127522207394L;
......@@ -90,4 +93,16 @@ public class OrganizationDTO implements Serializable{
public void setCustom_fields(Map<String, String> custom_fields) {
this.custom_fields = custom_fields;
}
@Override
public String toString() {
return "OrganizationDTO{" +
"id=" + id +
", name='" + name + '\'' +
", domains='" + domains + '\'' +
", description='" + description + '\'' +
", token='" + token + '\'' +
", custom_fields=" + custom_fields +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 缺陷基类
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:08 PM

*/
@SkipNamingCheck
public class TapdBugBaseDTO implements Serializable{
private static final long serialVersionUID = 996019256030454386L;
......@@ -261,4 +264,33 @@ public class TapdBugBaseDTO implements Serializable{
public void setWorkspace_id(String workspace_id) {
this.workspace_id = workspace_id;
}
@Override
public String toString() {
return "TapdBugBaseDTO{" +
"id='" + id + '\'' +
", title='" + title + '\'' +
", description='" + description + '\'' +
", priority='" + priority + '\'' +
", severity='" + severity + '\'' +
", status='" + status + '\'' +
", reporter='" + reporter + '\'' +
", bugtype='" + bugtype + '\'' +
", current_owner='" + current_owner + '\'' +
", originphase='" + originphase + '\'' +
", testtype='" + testtype + '\'' +
", frequency='" + frequency + '\'' +
", custom_field_one='" + custom_field_one + '\'' +
", custom_field_two='" + custom_field_two + '\'' +
", custom_field_three='" + custom_field_three + '\'' +
", custom_field_four='" + custom_field_four + '\'' +
", custom_field_five='" + custom_field_five + '\'' +
", custom_field_6='" + custom_field_6 + '\'' +
", custom_field_7='" + custom_field_7 + '\'' +
", custom_field_8='" + custom_field_8 + '\'' +
", custom_field_9='" + custom_field_9 + '\'' +
", custom_field_10='" + custom_field_10 + '\'' +
", workspace_id='" + workspace_id + '\'' +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
......@@ -9,6 +11,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:09 PM

*/
@SkipNamingCheck
public class TapdBugDTO extends TapdBugBaseDTO implements Serializable{
private static final long serialVersionUID = 1194893729619773267L;
......@@ -501,4 +504,60 @@ public class TapdBugDTO extends TapdBugBaseDTO implements Serializable{
public void setCustom_field_15(String custom_field_15) {
this.custom_field_15 = custom_field_15;
}
@Override
public String toString() {
return "TapdBugDTO{" +
"module='" + module + '\'' +
", deadline='" + deadline + '\'' +
", created='" + created + '\'' +
", resolved='" + resolved + '\'' +
", closed='" + closed + '\'' +
", modified='" + modified + '\'' +
", lastmodify='" + lastmodify + '\'' +
", auditer='" + auditer + '\'' +
", de='" + de + '\'' +
", version_test='" + version_test + '\'' +
", version_report='" + version_report + '\'' +
", version_close='" + version_close + '\'' +
", version_fix='" + version_fix + '\'' +
", baseline_find='" + baseline_find + '\'' +
", baseline_join='" + baseline_join + '\'' +
", baseline_close='" + baseline_close + '\'' +
", baseline_test='" + baseline_test + '\'' +
", sourcephase='" + sourcephase + '\'' +
", te='" + te + '\'' +
", iteration_id='" + iteration_id + '\'' +
", resolution='" + resolution + '\'' +
", source='" + source + '\'' +
", confirmer='" + confirmer + '\'' +
", milestone='" + milestone + '\'' +
", participator='" + participator + '\'' +
", closer='" + closer + '\'' +
", platform='" + platform + '\'' +
", os='" + os + '\'' +
", testphase='" + testphase + '\'' +
", cc='" + cc + '\'' +
", regression_number='" + regression_number + '\'' +
", flows='" + flows + '\'' +
", feature='" + feature + '\'' +
", testmode='" + testmode + '\'' +
", estimate='" + estimate + '\'' +
", issue_id='" + issue_id + '\'' +
", created_from='" + created_from + '\'' +
", in_progress_time='" + in_progress_time + '\'' +
", verify_time='" + verify_time + '\'' +
", reject_time='" + reject_time + '\'' +
", reopen_time='" + reopen_time + '\'' +
", audit_time='" + audit_time + '\'' +
", suspend_time='" + suspend_time + '\'' +
", due='" + due + '\'' +
", begin='" + begin + '\'' +
", custom_field_11='" + custom_field_11 + '\'' +
", custom_field_12='" + custom_field_12 + '\'' +
", custom_field_13='" + custom_field_13 + '\'' +
", custom_field_14='" + custom_field_14 + '\'' +
", custom_field_15='" + custom_field_15 + '\'' +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* @ClassName: TapdBugUpdateDTO

......@@ -7,6 +9,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:11 PM

*/
@SkipNamingCheck
public class TapdBugUpdateDTO extends TapdBugBaseDTO implements Serializable{
private static final long serialVersionUID = 2954842604288372658L;
......@@ -35,4 +38,12 @@ public class TapdBugUpdateDTO extends TapdBugBaseDTO implements Serializable{
public void setCurrent_user(String current_user) {
this.current_user = current_user;
}
@Override
public String toString() {
return "TapdBugUpdateDTO{" +
"project_id=" + project_id +
", current_user='" + current_user + '\'' +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* tapd自定义字段
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:12 PM

*/
@SkipNamingCheck
public class TapdCustomFieldConfig implements Serializable{
private static final long serialVersionUID = -6242431131348000720L;
......
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* tapd监听发送的消息参数
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:13 PM

*/
@SkipNamingCheck
public class TapdMessageDTO implements Serializable{
private static final long serialVersionUID = 1782405175563991216L;
......@@ -132,4 +135,20 @@ public class TapdMessageDTO implements Serializable{
public void setOld_title(String old_title) {
this.old_title = old_title;
}
@Override
public String toString() {
return "TapdMessageDTO{" +
"udeskId='" + udeskId + '\'' +
", id='" + id + '\'' +
", event='" + event + '\'' +
", created='" + created + '\'' +
", event_from='" + event_from + '\'' +
", event_id='" + event_id + '\'' +
", current_user='" + current_user + '\'' +
", workspace_id='" + workspace_id + '\'' +
", change_fields='" + change_fields + '\'' +
", old_title='" + old_title + '\'' +
'}';
}
}
......@@ -40,4 +40,13 @@ public class TapdRespBugDTO implements Serializable{
public void setData(TapdRespBugDataDTO data) {
this.data = data;
}
@Override
public String toString() {
return "TapdRespBugDTO{" +
"status=" + status +
", info='" + info + '\'' +
", data=" + data +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 接收新增TAPD的bug返回data
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:28 PM

*/
@SkipNamingCheck
public class TapdRespBugDataDTO implements Serializable{
private static final long serialVersionUID = 9113924195626824396L;
......@@ -20,4 +23,11 @@ public class TapdRespBugDataDTO implements Serializable{
public void setBug(TapdBugDTO bug) {
Bug = bug;
}
@Override
public String toString() {
return "TapdRespBugDataDTO{" +
"Bug=" + Bug +
'}';
}
}
......@@ -42,4 +42,13 @@ public class TapdRespCustomFieldDTO implements Serializable{
public void setData(List<TapdRespCustomFieldDataDTO> data) {
this.data = data;
}
@Override
public String toString() {
return "TapdRespCustomFieldDTO{" +
"status=" + status +
", info='" + info + '\'' +
", data=" + data +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* TAPD自定义字段返回data
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:29 PM

*/
@SkipNamingCheck
public class TapdRespCustomFieldDataDTO implements Serializable{
private static final long serialVersionUID = 6070115012514102123L;
......@@ -20,4 +23,11 @@ public class TapdRespCustomFieldDataDTO implements Serializable{
public void setCustomFieldConfig(TapdCustomFieldConfig customFieldConfig) {
CustomFieldConfig = customFieldConfig;
}
@Override
public String toString() {
return "TapdRespCustomFieldDataDTO{" +
"CustomFieldConfig=" + CustomFieldConfig +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
import java.util.List;
import java.util.Map;
......@@ -11,6 +13,7 @@ import java.util.Map;
* @author guojuxing

* @date 2019/12/23 3:32 PM

*/
@SkipNamingCheck
public class TicketDTO implements Serializable{
private static final long serialVersionUID = 1316075989331518774L;
......@@ -494,4 +497,47 @@ public class TicketDTO implements Serializable{
public void setIm_sub_session_id(Integer im_sub_session_id) {
this.im_sub_session_id = im_sub_session_id;
}
@Override
public String toString() {
return "TicketDTO{" +
"id=" + id +
", field_num='" + field_num + '\'' +
", subject='" + subject + '\'' +
", content='" + content + '\'' +
", content_type='" + content_type + '\'' +
", user_id=" + user_id +
", user_name='" + user_name + '\'' +
", user_email='" + user_email + '\'' +
", user_cellphone='" + user_cellphone + '\'' +
", organization_id=" + organization_id +
", assignee_id=" + assignee_id +
", assignee_name='" + assignee_name + '\'' +
", assignee_avatar='" + assignee_avatar + '\'' +
", user_group_id=" + user_group_id +
", user_group_name='" + user_group_name + '\'' +
", template_id=" + template_id +
", priority='" + priority + '\'' +
", status='" + status + '\'' +
", status_en='" + status_en + '\'' +
", platform='" + platform + '\'' +
", satisfaction='" + satisfaction + '\'' +
", custom_fields=" + custom_fields +
", tags='" + tags + '\'' +
", followers=" + followers +
", creator_id=" + creator_id +
", created_at='" + created_at + '\'' +
", updated_at='" + updated_at + '\'' +
", solving_at='" + solving_at + '\'' +
", resolved_at='" + resolved_at + '\'' +
", closed_at='" + closed_at + '\'' +
", solved_deadline='" + solved_deadline + '\'' +
", replied_at='" + replied_at + '\'' +
", agent_replied_at='" + agent_replied_at + '\'' +
", customer_replied_at='" + customer_replied_at + '\'' +
", replied_by='" + replied_by + '\'' +
", attachments=" + attachments +
", im_sub_session_id=" + im_sub_session_id +
'}';
}
}
package com.gic.udesk.dto;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* udesk客户回复
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/23 3:34 PM

*/
@SkipNamingCheck
public class UdeskAgentReplyDTO implements Serializable{
private static final long serialVersionUID = -4964133303321416857L;
......@@ -75,4 +78,15 @@ public class UdeskAgentReplyDTO implements Serializable{
public void setNew_reply(String new_reply) {
this.new_reply = new_reply;
}
@Override
public String toString() {
return "UdeskAgentReplyDTO{" +
"id=" + id +
", num='" + num + '\'' +
", agent_id=" + agent_id +
", function_type='" + function_type + '\'' +
", new_reply='" + new_reply + '\'' +
'}';
}
}
......@@ -36,4 +36,12 @@ public class UdeskCompanyDTO implements Serializable{
public void setOrganization(OrganizationDTO organization) {
this.organization = organization;
}
@Override
public String toString() {
return "UdeskCompanyDTO{" +
"code=" + code +
", organization=" + organization +
'}';
}
}
......@@ -36,4 +36,12 @@ public class UdeskRespReplyDTO implements Serializable{
public void setData(Object data) {
this.data = data;
}
@Override
public String toString() {
return "UdeskRespReplyDTO{" +
"code=" + code +
", data=" + data +
'}';
}
}
......@@ -49,4 +49,13 @@ public class UdeskTicketDetailDTO implements Serializable{
public void setTicket(TicketDTO ticket) {
this.ticket = ticket;
}
@Override
public String toString() {
return "UdeskTicketDetailDTO{" +
"code=" + code +
", message='" + message + '\'' +
", ticket=" + ticket +
'}';
}
}
......@@ -42,4 +42,13 @@ public class UdeskCustomFieldOptionDTO implements Serializable{
public void setSubs(List<UdeskCustomFieldOptionDTO> subs) {
this.subs = subs;
}
@Override
public String toString() {
return "UdeskCustomFieldOptionDTO{" +
"title='" + title + '\'' +
", value='" + value + '\'' +
", subs=" + subs +
'}';
}
}
......@@ -35,4 +35,12 @@ public class UdeskResCustomFieldDTO implements Serializable{
public void setFields(List<UdeskResCustomFieldDataDTO> fields) {
this.fields = fields;
}
@Override
public String toString() {
return "UdeskResCustomFieldDTO{" +
"code=" + code +
", fields=" + fields +
'}';
}
}
package com.gic.udesk.dto.customfield;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
import java.util.List;
......@@ -10,6 +12,7 @@ import java.util.List;
* @author guojuxing

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

*/
@SkipNamingCheck
public class UdeskResCustomFieldDataDTO implements Serializable{
private static final long serialVersionUID = -831985526535468454L;
......@@ -121,4 +124,19 @@ public class UdeskResCustomFieldDataDTO implements Serializable{
public void setCalculate_result_type(String calculate_result_type) {
this.calculate_result_type = calculate_result_type;
}
@Override
public String toString() {
return "UdeskResCustomFieldDataDTO{" +
"id=" + id +
", field_name='" + field_name + '\'' +
", field_label='" + field_label + '\'' +
", content_type='" + content_type + '\'' +
", comment='" + comment + '\'' +
", options=" + options +
", customer_permission='" + customer_permission + '\'' +
", agent_permission='" + agent_permission + '\'' +
", calculate_result_type='" + calculate_result_type + '\'' +
'}';
}
}
package com.gic.udesk.dto.gic;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
import java.util.Map;
......@@ -10,6 +12,7 @@ import java.util.Map;
* @author guojuxing

* @date 2019/12/26 4:11 PM

*/
@SkipNamingCheck
public class GicTicketDTO implements Serializable{
private static final long serialVersionUID = -478265380664580136L;
......@@ -166,4 +169,23 @@ public class GicTicketDTO implements Serializable{
public void setType_content(String type_content) {
this.type_content = type_content;
}
@Override
public String toString() {
return "GicTicketDTO{" +
"businessModuleType=" + businessModuleType +
", type='" + type + '\'' +
", type_content='" + type_content + '\'' +
", subject='" + subject + '\'' +
", content='" + content + '\'' +
", status='" + status + '\'' +
", template_id=" + template_id +
", ticketFieldJsonStr='" + ticketFieldJsonStr + '\'' +
", ticket_field=" + ticket_field +
", gicEnterpriseId=" + gicEnterpriseId +
", gicUserId=" + gicUserId +
", gicUserName='" + gicUserName + '\'' +
", gicEnterpriseName='" + gicEnterpriseName + '\'' +
'}';
}
}
package com.gic.udesk.dto.gic;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 工单创建返回信息
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/26 4:48 PM

*/
@SkipNamingCheck
public class TicketCreateResDTO implements Serializable{
private static final long serialVersionUID = 5033595896326990325L;
......@@ -49,4 +52,13 @@ public class TicketCreateResDTO implements Serializable{
public void setTicket_id(Integer ticket_id) {
this.ticket_id = ticket_id;
}
@Override
public String toString() {
return "TicketCreateResDTO{" +
"code=" + code +
", message='" + message + '\'' +
", ticket_id=" + ticket_id +
'}';
}
}
package com.gic.udesk.dto.gic;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 附件相关内容
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/26 5:55 PM

*/
@SkipNamingCheck
public class TicketRepliesAttachmentsDTO implements Serializable{
private static final long serialVersionUID = 3349387219138928011L;
......@@ -47,4 +50,13 @@ public class TicketRepliesAttachmentsDTO implements Serializable{
public void setFile_size(Integer file_size) {
this.file_size = file_size;
}
@Override
public String toString() {
return "TicketRepliesAttachmentsDTO{" +
"url='" + url + '\'' +
", file_name='" + file_name + '\'' +
", file_size=" + file_size +
'}';
}
}
package com.gic.udesk.dto.gic;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 回复者信息
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/26 5:57 PM

*/
@SkipNamingCheck
public class TicketRepliesAuthorDTO implements Serializable{
private static final long serialVersionUID = 6306676280816731296L;
......@@ -71,4 +74,15 @@ public class TicketRepliesAuthorDTO implements Serializable{
public void setNick_name(String nick_name) {
this.nick_name = nick_name;
}
@Override
public String toString() {
return "TicketRepliesAuthorDTO{" +
"id=" + id +
", user_type='" + user_type + '\'' +
", email='" + email + '\'' +
", avatar='" + avatar + '\'' +
", nick_name='" + nick_name + '\'' +
'}';
}
}
......@@ -49,4 +49,13 @@ public class TicketRepliesDTO implements Serializable{
public void setReplies(List<TicketRepliesDataDTO> replies) {
this.replies = replies;
}
@Override
public String toString() {
return "TicketRepliesDTO{" +
"code=" + code +
", meta=" + meta +
", replies=" + replies +
'}';
}
}
package com.gic.udesk.dto.gic;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
import java.util.Date;
import java.util.List;
......@@ -11,6 +13,7 @@ import java.util.List;
* @author guojuxing

* @date 2019/12/26 5:52 PM

*/
@SkipNamingCheck
public class TicketRepliesDataDTO implements Serializable{
private static final long serialVersionUID = -4610262435451102033L;
......@@ -114,4 +117,18 @@ public class TicketRepliesDataDTO implements Serializable{
public void setAuthor(TicketRepliesAuthorDTO author) {
this.author = author;
}
@Override
public String toString() {
return "TicketRepliesDataDTO{" +
"id=" + id +
", content='" + content + '\'' +
", content_format='" + content_format + '\'' +
", created_at=" + created_at +
", function_type='" + function_type + '\'' +
", cc='" + cc + '\'' +
", attachments=" + attachments +
", author=" + author +
'}';
}
}
......@@ -2,7 +2,13 @@ package com.gic.udesk.dto.gic;
import java.io.Serializable;
import java.util.Date;
/**
* gic提交工单
* @ClassName: UdeskEnterpriseDTO

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:06 AM

*/
public class UdeskEnterpriseDTO implements Serializable{
private static final long serialVersionUID = -727703112120773752L;
......@@ -136,4 +142,20 @@ public class UdeskEnterpriseDTO implements Serializable{
public void setUpdateTime(Date updateTime) {
this.updateTime = updateTime;
}
@Override
public String toString() {
return "UdeskEnterpriseDTO{" +
"id=" + id +
", businessModule='" + businessModule + '\'' +
", businessModuleName='" + businessModuleName + '\'' +
", businessType=" + businessType +
", ticketId=" + ticketId +
", ticketNum='" + ticketNum + '\'' +
", ticketTitle='" + ticketTitle + '\'' +
", ticketStatus='" + ticketStatus + '\'' +
", createTime=" + createTime +
", updateTime=" + updateTime +
'}';
}
}
......@@ -63,4 +63,14 @@ public class UdeskResTemplatesDTO implements Serializable{
public void setTemplates(List<UdeskResTemplatesDataDTO> templates) {
this.templates = templates;
}
@Override
public String toString() {
return "UdeskResTemplatesDTO{" +
"code=" + code +
", message='" + message + '\'' +
", count=" + count +
", templates=" + templates +
'}';
}
}
package com.gic.udesk.dto.templates;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
import java.util.List;
......@@ -10,6 +12,7 @@ import java.util.List;
* @author guojuxing

* @date 2019/12/24 5:56 PM

*/
@SkipNamingCheck
public class UdeskResTemplatesDataDTO implements Serializable{
private static final long serialVersionUID = 9123464445959278485L;
......@@ -63,4 +66,14 @@ public class UdeskResTemplatesDataDTO implements Serializable{
public void setCustom_fields(List<UdeskTemplatesCustomFieldDTO> custom_fields) {
this.custom_fields = custom_fields;
}
@Override
public String toString() {
return "UdeskResTemplatesDataDTO{" +
"id=" + id +
", name='" + name + '\'' +
", description='" + description + '\'' +
", custom_fields=" + custom_fields +
'}';
}
}
package com.gic.udesk.dto.templates;
import com.gic.commons.annotation.SkipNamingCheck;
import java.io.Serializable;
/**
* 工单模板中的自定义字段
......@@ -8,6 +10,7 @@ import java.io.Serializable;
* @author guojuxing

* @date 2019/12/24 5:58 PM

*/
@SkipNamingCheck
public class UdeskTemplatesCustomFieldDTO implements Serializable{
private static final long serialVersionUID = -7814797970459011762L;
/**
......@@ -72,4 +75,15 @@ public class UdeskTemplatesCustomFieldDTO implements Serializable{
public void setField_comment(String field_comment) {
this.field_comment = field_comment;
}
@Override
public String toString() {
return "UdeskTemplatesCustomFieldDTO{" +
"field_id='" + field_id + '\'' +
", field_name='" + field_name + '\'' +
", field_title='" + field_title + '\'' +
", field_type='" + field_type + '\'' +
", field_comment='" + field_comment + '\'' +
'}';
}
}
......@@ -34,4 +34,12 @@ public class UploadFileDTO implements Serializable{
public void setMessage(String message) {
this.message = message;
}
@Override
public String toString() {
return "UploadFileDTO{" +
"code=" + code +
", message='" + message + '\'' +
'}';
}
}
package com.gic.udesk.service;
import com.gic.api.base.commons.ServiceResponse;
/**
* 监听tapd消息
* @ClassName: TapdMessageApiService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:01 AM

*/
public interface TapdMessageApiService {
/**
* tapd监听消息处理
......
......@@ -8,7 +8,13 @@ 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;
/**
* 异常接口
* @ClassName: UdeskBaseApiService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:07 AM

*/
public interface UdeskBaseApiService {
/**
......
......@@ -2,7 +2,13 @@ package com.gic.udesk.service;
import com.gic.api.base.commons.ServiceResponse;
import com.gic.udesk.dto.UdeskMessageDTO;
/**
* 监听udesk消息
* @ClassName: UdeskMessageApiService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:00 AM

*/
public interface UdeskMessageApiService {
/**
......@@ -15,5 +21,13 @@ public interface UdeskMessageApiService {

 */
ServiceResponse<String> saveUdeskMessage(UdeskMessageDTO messageDTO);
/**
* 监听处理udesk消息(不同步到tapd)
* @Title: saveUdeskMessageNoTapd

* @Description:

* @author guojuxing
* @param messageDTO

* @return com.gic.api.base.commons.ServiceResponse<java.lang.String>


*/
ServiceResponse<String> saveUdeskMessageNoTapd(UdeskMessageDTO messageDTO);
}
......@@ -2,7 +2,13 @@ package com.gic.udesk.dao.mapper;
import com.gic.udesk.entity.TabUdeskCustomers;
import org.apache.ibatis.annotations.Param;
/**
* gic客户工单
* @ClassName: TabUdeskCustomersMapper

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:25 AM

*/
public interface TabUdeskCustomersMapper {
/**
* 根据主键删除
......@@ -52,5 +58,11 @@ public interface TabUdeskCustomersMapper {
*/
int updateByPrimaryKey(TabUdeskCustomers record);
/**
* countCustomerId
* @param enterpriseId
* @param userId
* @return
*/
TabUdeskCustomers countCustomerId(@Param("enterpriseId") Integer enterpriseId, @Param("userId") Integer userId);
}
\ No newline at end of file
......@@ -5,7 +5,13 @@ import com.gic.udesk.qo.TicketListQO;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* gic客户工单
* @ClassName: TabUdeskEnterpriseMapper

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:28 AM

*/
public interface TabUdeskEnterpriseMapper {
/**
* 根据主键删除
......@@ -31,6 +37,12 @@ public interface TabUdeskEnterpriseMapper {
*/
int insertSelective(TabUdeskEnterprise record);
/**
* 更新udesk工单状态
* @param ticketId
* @param status
* @return
*/
int updateStatus(@Param("ticketId") Integer ticketId, @Param("status") String status);
/**
......
package com.gic.udesk.dao.mapper;
import com.gic.udesk.entity.TabUdeskException;
/**
* 客服工单异常消息
* @ClassName: TabUdeskExceptionMapper

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:28 AM

*/
public interface TabUdeskExceptionMapper {
/**
* 根据主键删除
......
package com.gic.udesk.dao.mapper;
import com.gic.udesk.entity.TabUdeskMessage;
/**
* udesk消息
* @ClassName: TabUdeskMessageMapper

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:28 AM

*/
public interface TabUdeskMessageMapper {
/**
* 根据主键删除
......
......@@ -4,7 +4,13 @@ import com.gic.udesk.entity.TabUdeskTapdRel;
import org.apache.ibatis.annotations.Param;
import java.util.List;
/**
* udesk和tapd关联字段接口
* @ClassName: TabUdeskTapdRelMapper

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:12 AM

*/
public interface TabUdeskTapdRelMapper {
/**
* 根据主键删除
......@@ -64,5 +70,14 @@ public interface TabUdeskTapdRelMapper {

 */
List<TabUdeskTapdRel> list(TabUdeskTapdRel record);
int deleteByWorkspaceId(@Param("relType") int relType, @Param("workspace_id") String workspace_id);
/**
* 根据项目删除
* @Title: deleteByWorkspaceId

* @Description:

* @author guojuxing
* @param relType
* @param workspaceId

* @return int


*/
int deleteByWorkspaceId(@Param("relType") int relType, @Param("workspace_id") String workspaceId);
}
\ No newline at end of file
......@@ -3,7 +3,13 @@ package com.gic.udesk.dao.mapper;
import com.gic.udesk.entity.TabUdeskTicket;
import java.util.List;
/**
* 客服工单
* @ClassName: TabUdeskTicketMapper

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:28 AM

*/
public interface TabUdeskTicketMapper {
/**
* 根据主键删除
......@@ -53,5 +59,10 @@ public interface TabUdeskTicketMapper {
*/
int updateByPrimaryKey(TabUdeskTicket record);
/**
* 查询客服工单
* @param params
* @return
*/
List<TabUdeskTicket> list(TabUdeskTicket params);
}
\ No newline at end of file
......@@ -3,7 +3,11 @@ package com.gic.udesk.entity;
import java.util.Date;
/**
* tab_udesk_customers
* gic客户工单
* @ClassName: TabUdeskCustomers

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:35 AM

*/
public class TabUdeskCustomers {
/**
......
......@@ -3,7 +3,11 @@ package com.gic.udesk.entity;
import java.util.Date;
/**
* tab_udesk_enterprise
* gic客户工单
* @ClassName: TabUdeskEnterprise

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:29 AM

*/
public class TabUdeskEnterprise {
/**
......
......@@ -3,7 +3,11 @@ package com.gic.udesk.entity;
import java.util.Date;
/**
* tab_udesk_exception
* udesk接口异常信息
* @ClassName: TabUdeskException

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:29 AM

*/
public class TabUdeskException {
/**
......
......@@ -3,7 +3,11 @@ package com.gic.udesk.entity;
import java.util.Date;
/**
* tab_udesk_message
* udesk消息
* @ClassName: TabUdeskMessage

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:34 AM

*/
public class TabUdeskMessage {
/**
......
......@@ -5,7 +5,11 @@ import com.gic.udesk.utils.UdeskConstant;
import java.util.Date;
/**
* tab_udesk_tapd_rel
* udesk和tapd关联字典
* @ClassName: TabUdeskTapdRel

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:33 AM

*/
public class TabUdeskTapdRel {
/**
......
......@@ -3,7 +3,11 @@ package com.gic.udesk.entity;
import java.util.Date;
/**
* tab_udesk_ticket
* 客服工单
* @ClassName: TabUdeskTicket

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:29 AM

*/
public class TabUdeskTicket {
/**
......
package com.gic.udesk.service;
import com.gic.udesk.entity.TabUdeskCustomers;
/**
*
* @ClassName: UdeskCustomersService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:21 AM

*/
public interface UdeskCustomersService {
/**
* save
* @Title: save

* @Description:

* @author guojuxing
* @param enterpriseId
* @param customerId
* @param userId

* @return int


*/
int save(Integer enterpriseId, Integer customerId, Integer userId);
/**
* hasCustomerId
* @Title: hasCustomerId

* @Description:

* @author guojuxing
* @param enterpriseId
* @param userId

* @return com.gic.udesk.entity.TabUdeskCustomers


*/
TabUdeskCustomers hasCustomerId(Integer enterpriseId, Integer userId);
}
......@@ -3,7 +3,13 @@ package com.gic.udesk.service;
import com.gic.udesk.entity.TabUdeskEnterprise;
import com.gic.udesk.qo.TicketListQO;
import com.github.pagehelper.Page;
/**
* gic客户工单
* @ClassName: UdeskEnterpriseService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:26 AM

*/
public interface UdeskEnterpriseService {
/**
......@@ -26,7 +32,12 @@ public interface UdeskEnterpriseService {

*/
int close(Integer ticketId);
/**
* 更新gic客户工单状态
* @param ticketId
* @param status
* @return
*/
int updateStatus(Integer ticketId, String status);
/**
......
package com.gic.udesk.service;
import com.gic.udesk.entity.TabUdeskException;
/**
* 客服工单异常信息
* @ClassName: UdeskExceptionService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:29 AM

*/
public interface UdeskExceptionService {
/**
......
package com.gic.udesk.service;
import com.gic.udesk.entity.TabUdeskMessage;
/**
* udesk消息
* @ClassName: UdeskMessageService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:30 AM

*/
public interface UdeskMessageService {
/**
* 新增消息
......@@ -13,5 +19,10 @@ public interface UdeskMessageService {

 */
int save(TabUdeskMessage record);
/**
* 更新消息
* @param record
* @return
*/
int update(TabUdeskMessage record);
}
......@@ -3,7 +3,13 @@ package com.gic.udesk.service;
import com.gic.udesk.entity.TabUdeskTapdRel;
import java.util.List;
/**
* udesk和tapd关联字典
* @ClassName: UdeskTapdRelService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:17 AM

*/
public interface UdeskTapdRelService {
/**
......@@ -11,6 +17,7 @@ public interface UdeskTapdRelService {
* @Title: list

* @Description:

 * @author guojuxing 

* @param record
* @return java.util.List<com.gic.udesk.entity.TabUdeskTapdRel>


 */
List<TabUdeskTapdRel> list(TabUdeskTapdRel record);
......@@ -31,8 +38,8 @@ public interface UdeskTapdRelService {
* @Description:

 * @author guojuxing
* @param relType 关联类型
* @param workspace_id
 tapd项目id
* @param workspaceId
 tapd项目id
* @return int


 */
int deleteByWorkspaceId(int relType, String workspace_id);
int deleteByWorkspaceId(int relType, String workspaceId);
}
......@@ -3,10 +3,32 @@ package com.gic.udesk.service;
import com.gic.udesk.entity.TabUdeskTicket;
import java.util.List;
/**
* 客服工单接口
* @ClassName: UdeskTicketService

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:19 AM

*/
public interface UdeskTicketService {
/**
* save

* @Title: save

* @Description:

* @author guojuxing
* @param record

* @return int


*/
int save(TabUdeskTicket record);
/**
* update
* @Title: update

* @Description:

* @author guojuxing
* @param record

* @return int


*/
int update(TabUdeskTicket record);
/**
......@@ -18,6 +40,13 @@ public interface UdeskTicketService {
* @return com.gic.udesk.entity.TabUdeskTicket


 */
TabUdeskTicket getById(Integer id);
/**
* list

* @Title: list

* @Description:

* @author guojuxing
* @param params

* @return java.util.List<com.gic.udesk.entity.TabUdeskTicket>


*/
List<TabUdeskTicket> list(TabUdeskTicket params);
}
......@@ -7,7 +7,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* gic客户工单
* @ClassName: UdeskCustomersServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:35 AM

*/
@Service("udeskCustomersService")
public class UdeskCustomersServiceImpl implements UdeskCustomersService{
@Autowired
......
......@@ -12,7 +12,13 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* gic工单
* @ClassName: UdeskEnterpriseServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:36 AM

*/
@Service("udeskEnterpriseService")
public class UdeskEnterpriseServiceImpl implements UdeskEnterpriseService{
@Autowired
......
......@@ -7,7 +7,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* 客服工单异常信息
* @ClassName: UdeskExceptionServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:30 AM

*/
@Service("udeskExceptionService")
public class UdeskExceptionServiceImpl implements UdeskExceptionService{
@Autowired
......
......@@ -7,7 +7,13 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Date;
/**
* udesk消息
* @ClassName: UdeskMessageServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:30 AM

*/
@Service("udeskMessageService")
public class UdeskMessageServiceImpl implements UdeskMessageService{
@Autowired
......
......@@ -8,7 +8,13 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* udesk和tapd关联字典
* @ClassName: UdeskTapdRelServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:35 AM

*/
@Service("udeskTapdRelService")
public class UdeskTapdRelServiceImpl implements UdeskTapdRelService{
@Autowired
......@@ -28,7 +34,7 @@ public class UdeskTapdRelServiceImpl implements UdeskTapdRelService{
}
@Override
public int deleteByWorkspaceId(int relType, String workspace_id) {
return tabUdeskTapdRelMapper.deleteByWorkspaceId(relType, workspace_id);
public int deleteByWorkspaceId(int relType, String workspaceId) {
return tabUdeskTapdRelMapper.deleteByWorkspaceId(relType, workspaceId);
}
}
......@@ -8,7 +8,13 @@ import org.springframework.stereotype.Service;
import java.util.Date;
import java.util.List;
/**
* 客服工单
* @ClassName: UdeskTicketServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:35 AM

*/
@Service("udeskTicketService")
public class UdeskTicketServiceImpl implements UdeskTicketService{
@Autowired
......
......@@ -30,7 +30,13 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* gic工单
* @ClassName: GicTicketApiServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:41 AM

*/
@Service("gicTicketApiService")
public class GicTicketApiServiceImpl implements GicTicketApiService{
private static final Logger LOGGER = LogManager.getLogger(GicTicketApiServiceImpl.class);
......@@ -74,7 +80,6 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
} else {
gicTicketDTO.setTemplate_id(UdeskConstant.APP_MODULE_TEMPLATE_ID);
}
//查询有无客户ID
Integer gicEnterpriseId = gicTicketDTO.getGicEnterpriseId();
Integer gicUserId = gicTicketDTO.getGicUserId();
......@@ -92,8 +97,7 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
customerSub.put("nick_name", gicUserName);
customer.put("customer", customerSub);
LOGGER.info("gic新建udesk客户,内容为:{}", customer.toJSONString());
String customerStr = UdeskHttpClientUtil
.postUdeskJsonFromJson(CUSTOMERS, customer.toJSONString());
String customerStr = UdeskHttpClientUtil.postUdeskJsonFromJson(CUSTOMERS, customer.toJSONString());
LOGGER.info("gic新建udesk客户,返回为:{}", customerStr);
JSONObject customerRes = JSONObject.parseObject(customerStr);
if (customerRes != null) {
......@@ -101,10 +105,8 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
JSONObject customerObj = customerRes.getJSONObject("customer");
if (code == UdeskConstant.UDESK_SUCCESS_CODE) {
int customerId = customerObj.getIntValue("id");
gicTicketDTO.setType("customer_id");
gicTicketDTO.setType_content(customerId + "");
//保存到
udeskCustomersService.save(gicEnterpriseId, customerId, gicUserId);
} else {
......@@ -112,13 +114,11 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
}
}
}
Map<String, Object> paramMap = new HashMap<>(4);
paramMap.put("ticket", gicTicketDTO);
String params = JSON.toJSONString(paramMap);
LOGGER.info("gic新建udesk工单,内容为:{}", params);
String respStr = UdeskHttpClientUtil
.postUdeskJsonFromJson(UDESK_CREATE_TICKET, params);
String respStr = UdeskHttpClientUtil.postUdeskJsonFromJson(UDESK_CREATE_TICKET, params);
LOGGER.info("gic新建udesk工单,工单返回为:{}", respStr);
TicketCreateResDTO createResDTO = JSON.parseObject(respStr, TicketCreateResDTO.class);
if (createResDTO != null && createResDTO.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
......@@ -127,26 +127,7 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
String detailStr = this.getUdeskTicketDetail(ticketId.toString());
UdeskTicketDetailDTO detail = JSON.parseObject(detailStr, UdeskTicketDetailDTO.class);
if (detail.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
TabUdeskEnterprise record = new TabUdeskEnterprise();
//工单ID
record.setTicketId(ticketId);
record.setEnterpriseId(gicEnterpriseId);
//工单编号
record.setTicketNum(detail.getTicket().getField_num());
//工单标题
record.setTicketTitle(gicTicketDTO.getSubject());
//业务模块类型 1:基础模块 2:应用模块
record.setBusinessType(gicTicketDTO.getBusinessModuleType());
//业务模块ID
if (businessModuleType.intValue() == 1) {
String businessModuleValue = gicTicketDTO.getTicket_field().get(UdeskConstant.GIC_BASE_MODULE_SELECT);
record.setBusinessModule(businessModuleValue);
record.setBusinessModuleName(getBusinessModuleName(businessModuleValue));
} else {
record.setBusinessModule(gicTicketDTO.getTicket_field().get(UdeskConstant.APP_MODULE_NAME));
record.setBusinessModuleName(gicTicketDTO.getTicket_field().get(UdeskConstant.APP_MODULE_NAME));
}
udeskEnterpriseService.save(record);
udeskEnterpriseService.save(setUdeskEnterprise(ticketId, gicEnterpriseId, detail, gicTicketDTO));
return ServiceResponse.success(ticketId);
} else {
return ServiceResponse.failure(ErrorCode.SYSTEM_ERROR.getCode(), detail.getMessage());
......@@ -156,6 +137,30 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
}
}
private TabUdeskEnterprise setUdeskEnterprise(Integer ticketId, Integer gicEnterpriseId, UdeskTicketDetailDTO detail, GicTicketDTO gicTicketDTO) {
Integer businessModuleType = gicTicketDTO.getBusinessModuleType();
TabUdeskEnterprise record = new TabUdeskEnterprise();
//工单ID
record.setTicketId(ticketId);
record.setEnterpriseId(gicEnterpriseId);
//工单编号
record.setTicketNum(detail.getTicket().getField_num());
//工单标题
record.setTicketTitle(gicTicketDTO.getSubject());
//业务模块类型 1:基础模块 2:应用模块
record.setBusinessType(gicTicketDTO.getBusinessModuleType());
//业务模块ID
if (businessModuleType.intValue() == 1) {
String businessModuleValue = gicTicketDTO.getTicket_field().get(UdeskConstant.GIC_BASE_MODULE_SELECT);
record.setBusinessModule(businessModuleValue);
record.setBusinessModuleName(getBusinessModuleName(businessModuleValue));
} else {
record.setBusinessModule(gicTicketDTO.getTicket_field().get(UdeskConstant.APP_MODULE_NAME));
record.setBusinessModuleName(gicTicketDTO.getTicket_field().get(UdeskConstant.APP_MODULE_NAME));
}
return record;
}
@Override
public ServiceResponse<Page<UdeskEnterpriseDTO>> page(TicketListQO params) {
com.github.pagehelper.Page<TabUdeskEnterprise> page = udeskEnterpriseService.page(params);
......@@ -245,20 +250,20 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
private String getBusinessModuleName(String businessModule) {
String[] arr = businessModule.split(",");
//第一层级
String name1 = "";
String nameOfFirstMenu = "";
//第二层级
String name2 = "";
String nameOfSecondMenu = "";
ServiceResponse<List<UdeskCustomFieldOptionDTO>> result = udeskBaseApiService.getGicServiceSelect();
if (result.isSuccess()) {
List<UdeskCustomFieldOptionDTO> list = result.getResult();
if (CollectionUtils.isNotEmpty(list)) {
for (UdeskCustomFieldOptionDTO optionDTO : list) {
if (optionDTO.getValue().equals(arr[0])) {
name1 = optionDTO.getTitle();
nameOfFirstMenu = optionDTO.getTitle();
if (CollectionUtils.isNotEmpty(optionDTO.getSubs())) {
for (UdeskCustomFieldOptionDTO subDTO : optionDTO.getSubs()) {
if (subDTO.getValue().equals(arr[1])) {
name2 = subDTO.getTitle();
nameOfSecondMenu = subDTO.getTitle();
break;
}
}
......@@ -266,7 +271,7 @@ public class GicTicketApiServiceImpl implements GicTicketApiService{
break;
}
}
return name1 + "/" + name2;
return nameOfFirstMenu + "/" + nameOfSecondMenu;
}
}
return null;
......
......@@ -20,7 +20,13 @@ import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* tapd字典
* @ClassName: TapdConfigApiServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:34 AM

*/
@Service("tapdConfigApiService")
public class TapdConfigApiServiceImpl implements TapdConfigApiService {
private static Logger logger = LogManager.getLogger(TapdConfigApiServiceImpl.class);
......@@ -52,29 +58,29 @@ public class TapdConfigApiServiceImpl implements TapdConfigApiService {
for (TapdRespCustomFieldDataDTO customField : customFieldData) {
TapdCustomFieldConfig customFieldConfig = customField.getCustomFieldConfig();
String name = customFieldConfig.getName();
String custom_field = customFieldConfig.getCustom_field();
String customFieldToCapture = customFieldConfig.getCustom_field();
TabUdeskTapdRel tabUdeskTapdRel = null;
//tapd返回的自定义字段数据,没有不变化的ID,所以用名称来匹配
//tapd不同项目建立如录入客服这个自定义字段的时候,对应的key是不确定的,所以用名称来匹配,且用反射来获取值
switch (name) {
case "提报人":
tabUdeskTapdRel = new TabUdeskTapdRel(workspaceId, 9, "getUserName", "客户姓名",
"set" + captureName(custom_field), "提报人");
"set" + captureName(customFieldToCapture), "提报人");
break;
case "录入客服":
tabUdeskTapdRel = new TabUdeskTapdRel(workspaceId, 9, "getServiceStaff", "录入客服",
"set" + captureName(custom_field), "录入客服");
"set" + captureName(customFieldToCapture), "录入客服");
break;
case "UDESK工单编号":
tabUdeskTapdRel = new TabUdeskTapdRel(workspaceId, 9, "getFieldNum", "UDESK工单编号",
"set" + captureName(custom_field), "UDESK工单编号");
"set" + captureName(customFieldToCapture), "UDESK工单编号");
break;
case "公司信息":
tabUdeskTapdRel = new TabUdeskTapdRel(workspaceId, 9, "getOrganizationName", "公司",
"set" + captureName(custom_field), "公司信息");
"set" + captureName(customFieldToCapture), "公司信息");
break;
case "是否客服内部已审核":
tabUdeskTapdRel = new TabUdeskTapdRel(workspaceId, 9, UdeskConstant.UDESK_SERVICE_AUDIT, "是否客服内部已审核", "set" + captureName(custom_field), "是否客服内部已审核");
tabUdeskTapdRel = new TabUdeskTapdRel(workspaceId, 9, UdeskConstant.UDESK_SERVICE_AUDIT, "是否客服内部已审核", "set" + captureName(customFieldToCapture), "是否客服内部已审核");
break;
default:
break;
......
......@@ -21,7 +21,13 @@ import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.*;
/**
* tapd消息监听
* @ClassName: TapdMessageApiServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:42 AM

*/
@Service("tapdMessageApiService")
public class TapdMessageApiServiceImpl implements TapdMessageApiService {
private static Logger logger = LogManager.getLogger(TapdMessageApiServiceImpl.class);
......@@ -95,30 +101,30 @@ public class TapdMessageApiServiceImpl implements TapdMessageApiService {
Integer msgId = udeskMessageService.save(tabTapdMessage);
logger.info("消息{}保存成功", tabTapdMessage);
// 获取缺陷最新的内容
TapdBugDTO latestBugFromTAPD = this.getLatestBugFromTAPD(tapdMessage);
if (latestBugFromTAPD == null) {
TapdBugDTO latestBugFromTapd = this.getLatestBugFromTapd(tapdMessage);
if (latestBugFromTapd == null) {
return msgId.toString();
}
// 数据转换一下. priorityEN,取值: "",high-高 ..
String priorityEN = this.ensureFieldValueIsEn(latestBugFromTAPD.getPriority(), TAPD_FIELD_NAME_PRIORITY,
String priorityEn = this.ensureFieldValueIsEn(latestBugFromTapd.getPriority(), TAPD_FIELD_NAME_PRIORITY,
tapdMessage);
if (priorityEN == null) {
if (priorityEn == null) {
return msgId.toString();
}
String priorityCN = udeskTapdRelMap.get(priorityEN + UdeskConstant.MAP_UDESK_NAME_SUFFIX);
String priorityCn = udeskTapdRelMap.get(priorityEn + UdeskConstant.MAP_UDESK_NAME_SUFFIX);
// severityEN,取值: "",advice-建议
String severityEN = this.ensureFieldValueIsEn(latestBugFromTAPD.getSeverity(), TAPD_FIELD_NAME_SEVERITY,
String severityEn = this.ensureFieldValueIsEn(latestBugFromTapd.getSeverity(), TAPD_FIELD_NAME_SEVERITY,
tapdMessage);
if (severityEN == null) {
if (severityEn == null) {
return msgId.toString();
}
String severityCN = udeskTapdRelMap.get(severityEN + UdeskConstant.MAP_UDESK_NAME_SUFFIX);
String severityCn = udeskTapdRelMap.get(severityEn + UdeskConstant.MAP_UDESK_NAME_SUFFIX);
// 是否要更新中间件的数据库. 根据数据库表设计,数据库中ticket的status不会为null,priority、severity可能为null.
if ((dataBaseTicket.getStatusTapd().equals(latestBugFromTAPD.getStatus()))
if ((dataBaseTicket.getStatusTapd().equals(latestBugFromTapd.getStatus()))
&& ((dataBaseTicket.getPriority() == null ? "" : dataBaseTicket.getPriority())
.equals(priorityCN == null ? "" : priorityCN))
.equals(priorityCn == null ? "" : priorityCn))
&& ((dataBaseTicket.getSeverity() == null ? "" : dataBaseTicket.getSeverity())
.equals((severityCN == null ? "" : severityCN)))) {
.equals((severityCn == null ? "" : severityCn)))) {
// 如果tapd最新的数据和数据库中的数据相同就不操作了,再完成消息处理
tabTapdMessage.setStatus(UdeskConstant.DELETED);
udeskMessageService.update(tabTapdMessage);
......@@ -128,20 +134,13 @@ public class TapdMessageApiServiceImpl implements TapdMessageApiService {
JSONObject updateTicketRequestBody = new JSONObject();
JSONObject udeskTicketUpdate = new JSONObject();
JSONObject customFields = new JSONObject();
// //suspended:跟踪 PM_audited:pm审核 变成已处理状态
// boolean needToBeResolved = "suspended".equals(latestBugFromTAPD.getStatus()) || "PM_audited".equals(latestBugFromTAPD.getStatus());
// if (needToBeResolved) {
// udeskTicketUpdate.put("status_id", udeskTapdRelMap.get("resolved" + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
// } else {
// udeskTicketUpdate.put("status_id", udeskTapdRelMap.get(latestBugFromTAPD.getStatus() + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
// }
udeskTicketUpdate.put("status_id", udeskTapdRelMap.get(getUdeskStatusEnByTapdStatus(latestBugFromTAPD.getStatus()) + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
udeskTicketUpdate.put("status_id", udeskTapdRelMap.get(getUdeskStatusEnByTapdStatus(latestBugFromTapd.getStatus()) + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
udeskTicketUpdate.put("priority_id", udeskTapdRelMap.get(priorityEN + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
udeskTicketUpdate.put("priority_id", udeskTapdRelMap.get(priorityEn + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
// key:value,value为null的话,不会被序列化. 为了防止误操作,如果TAPD的缺陷的严重程度为空,并不会去更新udesk中的严重程度.
customFields.put(UdeskConstant.UDESK_FIELD_SEVERITY,
udeskTapdRelMap.get(severityEN + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
udeskTapdRelMap.get(severityEn + UdeskConstant.MAP_UDESK_ID_VALUE_SUFFIX));
udeskTicketUpdate.put("custom_fields", customFields);
updateTicketRequestBody.put("ticket", udeskTicketUpdate);
// 更新udesk的工单
......@@ -150,23 +149,16 @@ public class TapdMessageApiServiceImpl implements TapdMessageApiService {
return msgId.toString();
}
//同步到gic工单状态
String statusEn = udeskTapdRelMap.get(latestBugFromTAPD.getStatus() + UdeskConstant.MAP_UDESK_NAME_SUFFIX);
String statusEn = udeskTapdRelMap.get(latestBugFromTapd.getStatus() + UdeskConstant.MAP_UDESK_NAME_SUFFIX);
if (!UdeskStatusEnum.CLOSED.getCode().equals(statusEn)) {
udeskEnterpriseService.updateStatus(dataBaseTicket.getId(), statusEn);
}
// 更新数据库中的数据 注: 放在udesk操作完成之后
// if (needToBeResolved) {
// dataBaseTicket.setStatusEn(udeskTapdRelMap.get("resolved" + UdeskConstant.MAP_UDESK_NAME_SUFFIX));
// } else {
// dataBaseTicket
// .setStatusEn(udeskTapdRelMap.get(latestBugFromTAPD.getStatus() + UdeskConstant.MAP_UDESK_NAME_SUFFIX));
// }
dataBaseTicket.setStatusEn(udeskTapdRelMap.get(getUdeskStatusEnByTapdStatus(latestBugFromTAPD.getStatus()) + UdeskConstant.MAP_UDESK_NAME_SUFFIX));
dataBaseTicket.setStatusEn(udeskTapdRelMap.get(getUdeskStatusEnByTapdStatus(latestBugFromTapd.getStatus()) + UdeskConstant.MAP_UDESK_NAME_SUFFIX));
dataBaseTicket.setPriority(priorityCN);
dataBaseTicket.setSeverity(severityCN);
dataBaseTicket.setStatusTapd(latestBugFromTAPD.getStatus());
dataBaseTicket.setPriority(priorityCn);
dataBaseTicket.setSeverity(severityCn);
dataBaseTicket.setStatusTapd(latestBugFromTapd.getStatus());
udeskTicketService.update(dataBaseTicket);
//消息处理完成
tabTapdMessage.setStatus(UdeskConstant.DELETED);
......@@ -271,7 +263,7 @@ public class TapdMessageApiServiceImpl implements TapdMessageApiService {
* @param tapdMessage tapd的消息
* @return TapdBugDTO
*/
private TapdBugDTO getLatestBugFromTAPD(TapdMessageDTO tapdMessage) {
private TapdBugDTO getLatestBugFromTapd(TapdMessageDTO tapdMessage) {
Map<String, Object> queryBugParamsMap = new HashMap<>(4);
queryBugParamsMap.put("id", tapdMessage.getId());
queryBugParamsMap.put("workspace_id", tapdMessage.getWorkspace_id());
......
......@@ -31,7 +31,13 @@ import com.gic.udesk.service.UdeskExceptionService;
import com.gic.udesk.service.UdeskTapdRelService;
import com.gic.udesk.utils.UdeskConstant;
import com.gic.udesk.utils.UdeskHttpClientUtil;
/**
* 工单
* @ClassName: UdeskBaseApiServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:34 AM

*/
@Service("udeskBaseApiService")
public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
private static Logger logger = LogManager.getLogger(UdeskBaseApiServiceImpl.class);
......
......@@ -28,7 +28,13 @@ import com.gic.udesk.entity.TabUdeskMessage;
import com.gic.udesk.entity.TabUdeskTicket;
import com.gic.udesk.utils.UdeskConstant;
import com.gic.udesk.utils.UdeskHttpClientUtil;
/**
* udesk消息监听
* @ClassName: UdeskMessageApiServiceImpl

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:43 AM

*/
@Service("udeskMessageApiService")
public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
private static Logger logger = LogManager.getLogger(UdeskMessageApiServiceImpl.class);
......@@ -84,245 +90,274 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
logger.info("消息为{}已经保存成功", messageDTO);
//创建工单消息
if (UdeskConstant.TICKET_CREATE.equals(messageDTO.getEvent())) {
//udesk工单ID
String id = messageDTO.getMsgBody();
//udesk工单详情接口
String detailStr = this.getUdeskTicketDetail(id);
UdeskTicketDetailDTO detail = JSON.parseObject(detailStr, UdeskTicketDetailDTO.class);
if (detail.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
//usesk工单信息
TicketDTO ticket = detail.getTicket();
//udesk自定义字段信息
Map<String, String> customFields = ticket.getCustom_fields();
//udesk工单表实体
TabUdeskTicket tabUdeskTicket = new TabUdeskTicket();
TapdBugDTO tapdBug = new TapdBugDTO();
if (customFields != null) {
//udesk客服名称--tapd创建人
String staffValue = customFields.get(UdeskConstant.UDESK_FIELD_STAFF);
tabUdeskTicket
.setServiceStaff(udeskTapdRelMap.get(UdeskConstant.UDESK_FIELD_STAFF + ":" + staffValue));
//tapd项目ID
String workspaceValue = customFields.get(UdeskConstant.UDESK_FIELD_WORKSPACE);
tabUdeskTicket.setWorkspaceId(
udeskTapdRelMap.get(UdeskConstant.UDESK_FIELD_WORKSPACE + ":" + workspaceValue));
//TPAD当前处理人
tabUdeskTicket.setCurrentOwner(getCurrentOwner(customFields));
//发现版本添加
String versionReportCode = customFields.get(UdeskConstant.UDESK_FIELD_VERSION_3);
tapdBug.setVersion_report(VersionReport3Enum.getMessage(versionReportCode));
//填充部分自定义字段值
this.setUdeskCostomFields(tabUdeskTicket, tapdBug, customFields);
}
//受理客服id
tabUdeskTicket.setAssigneeId(ticket.getAssignee_id());
//受理客服姓名
tabUdeskTicket.setAssigneeName(ticket.getAssignee_name());
//创建人id
tabUdeskTicket.setCreatorId(ticket.getCreator_id());
//工单编号
tabUdeskTicket.setFieldNum(ticket.getField_num());
//工单id
tabUdeskTicket.setId(ticket.getId());
//客户所属公司id
Integer organizationId = ticket.getOrganization_id();
if (organizationId != null) {
this.setOrganizationIdAndName(tabUdeskTicket, organizationId);
}
//填充工单优先级中文名称
this.setPriority(ticket, tabUdeskTicket, tapdBug);
tabUdeskTicket.setStatus(UdeskConstant.UNDELETED);
//状态英文名称
tabUdeskTicket.setStatusEn(ticket.getStatus_en());
//tapd状态值
tabUdeskTicket.setStatusTapd(udeskTapdRelMap.get(ticket.getStatus_en()));
//标题
tabUdeskTicket.setSubject(ticket.getSubject());
//客户id
tabUdeskTicket.setUserId(ticket.getUser_id());
//客户姓名
tabUdeskTicket.setUserName(ticket.getUser_name());
try {
udeskTicketService.save(tabUdeskTicket);
updateGicTicketStatus(Integer.parseInt(id), ticket.getStatus_en());
logger.info("工单id为{}已经保存成功", ticket.getId());
} catch (DataIntegrityViolationException | ConstraintViolationException e) {
logger.info("工单id为{}已经保存失败,重复插入", ticket.getId(), e);
return null;
}
tapdBug.setTitle(ticket.getSubject());
tapdBug.setCurrent_owner(tabUdeskTicket.getCurrentOwner());
tapdBug.setReporter(UdeskConstant.TPAD_REPORTER);
String workspaceId = tabUdeskTicket.getWorkspaceId();
tapdBug.setWorkspace_id(workspaceId);
this.setTapdCustomField(workspaceId, tapdBug, tabUdeskTicket, customFields);
tapdBug.setStatus(tabUdeskTicket.getStatusTapd());
this.setDescription(ticket, tapdBug);
//udesk创建到tapd的缺陷,发现阶段值写死
tapdBug.setOriginphase("生产环境");
String bugStr = JSON.toJSONString(tapdBug);
logger.info("添加TAPDbug入参为{}", bugStr);
String bugReturnStr = UdeskHttpClientUtil.postTapdJsonFromJson(TAPD_BUGS, bugStr);
logger.info("添加TAPDbug返回为{}", bugReturnStr);
TapdRespBugDTO tapdRespBug = JSON.parseObject(bugReturnStr, TapdRespBugDTO.class);
if (tapdRespBug.getStatus() == UdeskConstant.TAPD_RESP_SUCCESS_STATUS) {
//tapd缺陷ID
String bugId = tapdRespBug.getData().getBug().getId();
tabUdeskTicket.setBugId(bugId);
udeskTicketService.update(tabUdeskTicket);
String bugUrl = UdeskConstant.TAPD_HOST + workspaceId + TAPD_BUGS_URL_PART + bugId;
//客服回复对象
UdeskAgentReplyDTO reply = new UdeskAgentReplyDTO();
//客服id
reply.setAgent_id(Integer.valueOf(udeskTapdRelMap.get(UdeskConstant.UDESK_DEFAULT_AGENT)));
//回复类型,"internal"内部备注/"external"外部评论
reply.setFunction_type(UdeskConstant.INTERNAL);
//工单ID
reply.setId(ticket.getId());
//回复内容
reply.setNew_reply("TAPD的bug链接为:<a href=\""+ bugUrl +"\" target=\"_blank\">" + bugUrl + "</a>");
//客服回复对象转为接口入参数
String replyStr = JSON.toJSONString(reply);
logger.info("回复udesk工单bug链接入参为{}", replyStr);
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJson(AGENT_REPLY, replyStr);
logger.info("回复udesk工单bug链接返回为{}", replyRespStr);
UdeskRespReplyDTO replyDetail = JSON.parseObject(replyRespStr, UdeskRespReplyDTO.class);
if (replyDetail.getCode() != UdeskConstant.UDESK_SUCCESS_CODE) {
String exceptionRecord = "工单id为" + id + "回复udesk工单bug链接失败,返回为" + replyRespStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveUdeskException(exceptionRecord);
} else {
//消息删除status = 0
this.updateTabUdeskMessage(tabUdeskMessage, id, bugId);
}
if(!"new".equals(tapdBug.getStatus())){
this.reSetTapdStatus(id, ticket, tapdBug, workspaceId, bugId);
}
return ServiceResponse.success(bugId);
} else {
String exceptionRecord = "工单id为" + id + "创建TAPDbug失败,返回为" + bugReturnStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveTapdException(exceptionRecord);
}
} else {
String exceptionRecord = "工单id为" + id + "请求udesk工单详情异常,返回为" + detailStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveUdeskException(exceptionRecord);
ServiceResponse<String> udeskMessageOfCreateResult = udeskMessageOfCreate(messageDTO, tabUdeskMessage);
if (udeskMessageOfCreateResult != null) {
return udeskMessageOfCreateResult;
}
} else if (UdeskConstant.TICKET_UPDATE.equals(messageDTO.getEvent())) {
//更新消息
String id = messageDTO.getMsgBody();
String detailStr = this.getUdeskTicketDetail(id);
UdeskTicketDetailDTO detail = JSON.parseObject(detailStr, UdeskTicketDetailDTO.class);
logger.info("工单详情{}", detail != null ? JSON.toJSONString(detail) : null);
if (detail.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
//udesk接口查询的工单信息
TicketDTO ticket = detail.getTicket();
//数据库查询的工单记录信息
TabUdeskTicket tabUdeskTicket = udeskTicketService.getById(Integer.parseInt(id));
if (tabUdeskTicket == null) {
UdeskMessageDTO createMessage = new UdeskMessageDTO();
//事件类型 创建/更新
createMessage.setEvent(UdeskConstant.TICKET_CREATE);
//工单ID
createMessage.setMsgBody(id);
createMessage.setSource(UdeskConstant.UDESK_UPDATE_CREATE);
//消息主题
createMessage.setTopic(UdeskConstant.UDESK_TICKET_TOPIC);
ServiceResponse<String> saveResult = this.saveUdeskMessage(createMessage);
String bugId = saveResult.getResult();
//删除消息status = 0
this.updateTabUdeskMessage(tabUdeskMessage, id, bugId);
return ServiceResponse.success(bugId);
}
TapdBugUpdateDTO tapdBug = new TapdBugUpdateDTO();
//防止创建工单误触发更新
String bugId = tabUdeskTicket.getBugId();
if (StringUtils.isBlank(bugId)) {
return null;
}
tapdBug.setId(bugId);
tapdBug.setTitle(ticket.getSubject());
tapdBug.setCurrent_user(UdeskConstant.TPAD_REPORTER);
this.setDescription(ticket, tapdBug);
//tapd项目ID
String workspaceId = tabUdeskTicket.getWorkspaceId();
tapdBug.setProject_id(Integer.valueOf(workspaceId));
tapdBug.setWorkspace_id(workspaceId);
tapdBug.setReporter(UdeskConstant.TPAD_REPORTER);
//工单状态英文名称
String statusEn = ticket.getStatus_en();
ServiceResponse<String> udeskMessageOfUpdateResult = udeskMessageOfUpdate(messageDTO, tabUdeskMessage);
if (udeskMessageOfUpdateResult != null) {
return udeskMessageOfUpdateResult;
}
}
logger.info("udesk同步数据到tapd所花时间:{}", System.currentTimeMillis() - starTime);
return null;
}
//同步到gic工单状态
logger.info("同步gic工单状态,ID:{}, 状态:{}", Integer.parseInt(id), statusEn);
updateGicTicketStatus(Integer.parseInt(id), statusEn);
//如果udesk工单状态不等于本地数据库对应的工单状态
if (StringUtils.isNotBlank(statusEn) && !statusEn.equals(tabUdeskTicket.getStatusEn())) {
if (UdeskConstant.CLOSED.equals(tabUdeskTicket.getStatusEn())) {
//本地工单状态如果是关闭状态,设置tapd缺陷 更新人(操作人)
tapdBug.setCurrent_owner(tabUdeskTicket.getCurrentOwner());
}
//获取字典的状态值
String tapdStatus = udeskTapdRelMap.get(statusEn);
tabUdeskTicket.setStatusEn(statusEn);
tabUdeskTicket.setStatusTapd(tapdStatus);
//同步tapd缺陷状态
tapdBug.setStatus(tapdStatus);
}
tabUdeskTicket.setSubject(ticket.getSubject());
private ServiceResponse<String> udeskMessageOfCreate(UdeskMessageDTO messageDTO, TabUdeskMessage tabUdeskMessage) {
//udesk工单ID
String id = messageDTO.getMsgBody();
//udesk工单详情接口
String detailStr = this.getUdeskTicketDetail(id);
UdeskTicketDetailDTO detail = JSON.parseObject(detailStr, UdeskTicketDetailDTO.class);
if (detail.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
//usesk工单信息
TicketDTO ticket = detail.getTicket();
//udesk工单表实体
TabUdeskTicket tabUdeskTicket = new TabUdeskTicket();
TapdBugDTO tapdBug = new TapdBugDTO();
setTicket(ticket, tabUdeskTicket, tapdBug, id);
try {
udeskTicketService.save(tabUdeskTicket);
this.setPriority(ticket, tabUdeskTicket, tapdBug);
Integer organizationId = ticket.getOrganization_id();
if(organizationId != null && !organizationId.equals(tabUdeskTicket.getOrganizationId())){
this.setOrganizationIdAndName(tabUdeskTicket, organizationId);
updateGicTicketStatus(Integer.parseInt(id), ticket.getStatus_en());
logger.info("工单id为{}已经保存成功", ticket.getId());
} catch (DataIntegrityViolationException | ConstraintViolationException e) {
logger.info("工单id为{}已经保存失败,重复插入", ticket.getId(), e);
return null;
}
String workspaceId = tabUdeskTicket.getWorkspaceId();
setTabBug(ticket, tabUdeskTicket, tapdBug);
String bugStr = JSON.toJSONString(tapdBug);
logger.info("添加TAPDbug入参为{}", bugStr);
String bugReturnStr = UdeskHttpClientUtil.postTapdJsonFromJson(TAPD_BUGS, bugStr);
logger.info("添加TAPDbug返回为{}", bugReturnStr);
TapdRespBugDTO tapdRespBug = JSON.parseObject(bugReturnStr, TapdRespBugDTO.class);
if (tapdRespBug.getStatus() == UdeskConstant.TAPD_RESP_SUCCESS_STATUS) {
//tapd缺陷ID
String bugId = tapdRespBug.getData().getBug().getId();
tabUdeskTicket.setBugId(bugId);
udeskTicketService.update(tabUdeskTicket);
String bugUrl = UdeskConstant.TAPD_HOST + workspaceId + TAPD_BUGS_URL_PART + bugId;
//客服回复对象
UdeskAgentReplyDTO reply = new UdeskAgentReplyDTO();
//客服id
reply.setAgent_id(Integer.valueOf(udeskTapdRelMap.get(UdeskConstant.UDESK_DEFAULT_AGENT)));
//回复类型,"internal"内部备注/"external"外部评论
reply.setFunction_type(UdeskConstant.INTERNAL);
//工单ID
reply.setId(ticket.getId());
//回复内容
reply.setNew_reply("TAPD的bug链接为:<a href=\""+ bugUrl +"\" target=\"_blank\">" + bugUrl + "</a>");
//客服回复对象转为接口入参数
String replyStr = JSON.toJSONString(reply);
logger.info("回复udesk工单bug链接入参为{}", replyStr);
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJson(AGENT_REPLY, replyStr);
logger.info("回复udesk工单bug链接返回为{}", replyRespStr);
UdeskRespReplyDTO replyDetail = JSON.parseObject(replyRespStr, UdeskRespReplyDTO.class);
if (replyDetail.getCode() != UdeskConstant.UDESK_SUCCESS_CODE) {
String exceptionRecord = "工单id为" + id + "回复udesk工单bug链接失败,返回为" + replyRespStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveUdeskException(exceptionRecord);
} else {
//消息删除status = 0
this.updateTabUdeskMessage(tabUdeskMessage, id, bugId);
}
Map<String, String> customFields = ticket.getCustom_fields();
if(customFields != null){
this.setUdeskCostomFields(tabUdeskTicket, tapdBug, customFields);
boolean isNotNewTapdBug = !"new".equals(tapdBug.getStatus());
if(isNotNewTapdBug){
this.reSetTapdStatus(id, ticket, tapdBug, workspaceId, bugId);
}
tabUdeskTicket.setUserName(ticket.getUser_name());
this.setTapdCustomField(workspaceId, tapdBug, tabUdeskTicket, customFields);
return ServiceResponse.success(bugId);
} else {
String exceptionRecord = "工单id为" + id + "创建TAPDbug失败,返回为" + bugReturnStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveTapdException(exceptionRecord);
}
} else {
String exceptionRecord = "工单id为" + id + "请求udesk工单详情异常,返回为" + detailStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveUdeskException(exceptionRecord);
}
return null;
}
udeskTicketService.update(tabUdeskTicket);
private void setTicket(TicketDTO ticket, TabUdeskTicket tabUdeskTicket, TapdBugDTO tapdBug, String id) {
//udesk自定义字段信息
Map<String, String> customFields = ticket.getCustom_fields();
if (customFields != null) {
//udesk客服名称--tapd创建人
String staffValue = customFields.get(UdeskConstant.UDESK_FIELD_STAFF);
tabUdeskTicket
.setServiceStaff(udeskTapdRelMap.get(UdeskConstant.UDESK_FIELD_STAFF + ":" + staffValue));
//tapd项目ID
String workspaceValue = customFields.get(UdeskConstant.UDESK_FIELD_WORKSPACE);
tabUdeskTicket.setWorkspaceId(
udeskTapdRelMap.get(UdeskConstant.UDESK_FIELD_WORKSPACE + ":" + workspaceValue));
//TPAD当前处理人
tabUdeskTicket.setCurrentOwner(getCurrentOwner(customFields));
//发现版本添加
String versionReportCode = customFields.get(UdeskConstant.UDESK_FIELD_VERSION_3);
tapdBug.setVersion_report(VersionReport3Enum.getMessage(versionReportCode));
//填充部分自定义字段值
this.setUdeskCostomFields(tabUdeskTicket, tapdBug, customFields);
}
//受理客服id
tabUdeskTicket.setAssigneeId(ticket.getAssignee_id());
//受理客服姓名
tabUdeskTicket.setAssigneeName(ticket.getAssignee_name());
//创建人id
tabUdeskTicket.setCreatorId(ticket.getCreator_id());
//工单编号
tabUdeskTicket.setFieldNum(ticket.getField_num());
//工单id
tabUdeskTicket.setId(ticket.getId());
//客户所属公司id
Integer organizationId = ticket.getOrganization_id();
if (organizationId != null) {
this.setOrganizationIdAndName(tabUdeskTicket, organizationId);
}
//填充工单优先级中文名称
this.setPriority(ticket, tabUdeskTicket, tapdBug);
tabUdeskTicket.setStatus(UdeskConstant.UNDELETED);
//状态英文名称
tabUdeskTicket.setStatusEn(ticket.getStatus_en());
//tapd状态值
tabUdeskTicket.setStatusTapd(udeskTapdRelMap.get(ticket.getStatus_en()));
//标题
tabUdeskTicket.setSubject(ticket.getSubject());
//客户id
tabUdeskTicket.setUserId(ticket.getUser_id());
//客户姓名
tabUdeskTicket.setUserName(ticket.getUser_name());
}
JSONObject bugJson = (JSONObject) JSONObject.toJSON(tapdBug);
if (customFields != null) {
//发现版本添加
String versionReportCode = customFields.get(UdeskConstant.UDESK_FIELD_VERSION_3);
bugJson.put("version_report", VersionReport3Enum.getMessage(versionReportCode));
}
private void setTabBug(TicketDTO ticket, TabUdeskTicket tabUdeskTicket, TapdBugDTO tapdBug) {
//udesk自定义字段信息
Map<String, String> customFields = ticket.getCustom_fields();
String workspaceId = tabUdeskTicket.getWorkspaceId();
tapdBug.setTitle(ticket.getSubject());
tapdBug.setCurrent_owner(tabUdeskTicket.getCurrentOwner());
tapdBug.setReporter(UdeskConstant.TPAD_REPORTER);
tapdBug.setWorkspace_id(workspaceId);
this.setTapdCustomField(workspaceId, tapdBug, tabUdeskTicket, customFields);
tapdBug.setStatus(tabUdeskTicket.getStatusTapd());
this.setDescription(ticket, tapdBug);
//udesk创建到tapd的缺陷,发现阶段值写死
tapdBug.setOriginphase("生产环境");
}
String bugStr = bugJson.toJSONString();
logger.info("更新TAPDbug入参为{}", bugStr);
String bugReturnStr = UdeskHttpClientUtil.postTapdJsonFromJson(TAPD_BUGS, bugStr);
logger.info("更新TAPDbug返回为{}", bugReturnStr);
TapdRespBugDTO tapdRespBug = JSON.parseObject(bugReturnStr, TapdRespBugDTO.class);
if (tapdRespBug.getStatus() == UdeskConstant.TAPD_RESP_SUCCESS_STATUS) {
this.updateTabUdeskMessage(tabUdeskMessage, id, bugId);
return ServiceResponse.success(bugId);
} else {
String exceptionRecord = "工单id为" + id + "更新TAPDbug失败,返回为" + bugReturnStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveTapdException(exceptionRecord);
private ServiceResponse<String> udeskMessageOfUpdate(UdeskMessageDTO messageDTO, TabUdeskMessage tabUdeskMessage) {
String id = messageDTO.getMsgBody();
String detailStr = this.getUdeskTicketDetail(id);
UdeskTicketDetailDTO detail = JSON.parseObject(detailStr, UdeskTicketDetailDTO.class);
logger.info("工单详情{}", detail != null ? JSON.toJSONString(detail) : null);
if (detail.getCode() == UdeskConstant.UDESK_SUCCESS_CODE) {
TicketDTO ticket = detail.getTicket();
//数据库查询的工单记录信息
TabUdeskTicket tabUdeskTicket = udeskTicketService.getById(Integer.parseInt(id));
ServiceResponse<String> whenTicketIsNullResult = whenTicketIsNull(id, tabUdeskTicket, tabUdeskMessage);
if (whenTicketIsNullResult != null) {
return whenTicketIsNullResult;
}
TapdBugUpdateDTO tapdBug = new TapdBugUpdateDTO();
//防止创建工单误触发更新
String bugId = tabUdeskTicket.getBugId();
if (StringUtils.isBlank(bugId)) {
return null;
}
tapdBug.setId(bugId);
tapdBug.setTitle(ticket.getSubject());
tapdBug.setCurrent_user(UdeskConstant.TPAD_REPORTER);
this.setDescription(ticket, tapdBug);
//tapd项目ID
String workspaceId = tabUdeskTicket.getWorkspaceId();
tapdBug.setProject_id(Integer.valueOf(workspaceId));
tapdBug.setWorkspace_id(workspaceId);
tapdBug.setReporter(UdeskConstant.TPAD_REPORTER);
//工单状态英文名称
String statusEn = ticket.getStatus_en();
//同步到gic工单状态
logger.info("同步gic工单状态,ID:{}, 状态:{}", Integer.parseInt(id), statusEn);
updateGicTicketStatus(Integer.parseInt(id), statusEn);
//如果udesk工单状态不等于本地数据库对应的工单状态
if (StringUtils.isNotBlank(statusEn) && !statusEn.equals(tabUdeskTicket.getStatusEn())) {
if (UdeskConstant.CLOSED.equals(tabUdeskTicket.getStatusEn())) {
//本地工单状态如果是关闭状态,设置tapd缺陷 更新人(操作人)
tapdBug.setCurrent_owner(tabUdeskTicket.getCurrentOwner());
}
//获取字典的状态值
String tapdStatus = udeskTapdRelMap.get(statusEn);
tabUdeskTicket.setStatusEn(statusEn);
tabUdeskTicket.setStatusTapd(tapdStatus);
//同步tapd缺陷状态
tapdBug.setStatus(tapdStatus);
}
tabUdeskTicket.setSubject(ticket.getSubject());
this.setPriority(ticket, tabUdeskTicket, tapdBug);
Integer organizationId = ticket.getOrganization_id();
if(organizationId != null && !organizationId.equals(tabUdeskTicket.getOrganizationId())){
this.setOrganizationIdAndName(tabUdeskTicket, organizationId);
}
Map<String, String> customFields = ticket.getCustom_fields();
if(customFields != null){
this.setUdeskCostomFields(tabUdeskTicket, tapdBug, customFields);
}
tabUdeskTicket.setUserName(ticket.getUser_name());
this.setTapdCustomField(workspaceId, tapdBug, tabUdeskTicket, customFields);
udeskTicketService.update(tabUdeskTicket);
JSONObject bugJson = (JSONObject) JSONObject.toJSON(tapdBug);
if (customFields != null) {
//发现版本添加
String versionReportCode = customFields.get(UdeskConstant.UDESK_FIELD_VERSION_3);
bugJson.put("version_report", VersionReport3Enum.getMessage(versionReportCode));
}
String bugStr = bugJson.toJSONString();
logger.info("更新TAPDbug入参为{}", bugStr);
String bugReturnStr = UdeskHttpClientUtil.postTapdJsonFromJson(TAPD_BUGS, bugStr);
logger.info("更新TAPDbug返回为{}", bugReturnStr);
TapdRespBugDTO tapdRespBug = JSON.parseObject(bugReturnStr, TapdRespBugDTO.class);
if (tapdRespBug.getStatus() == UdeskConstant.TAPD_RESP_SUCCESS_STATUS) {
this.updateTabUdeskMessage(tabUdeskMessage, id, bugId);
return ServiceResponse.success(bugId);
} else {
String exceptionRecord = "工单id为" + id + "更新工单请求udesk工单详情异常,返回为" + detailStr;
logger.info(exceptionRecord);
udeskBaseApiService.saveUdeskException(exceptionRecord);
saveException("工单id为" + id + "更新TAPDbug失败,返回为" + bugReturnStr);
}
} else {
saveException("工单id为" + id + "更新工单请求udesk工单详情异常,返回为" + detailStr);
}
return null;
}
private ServiceResponse<String> whenTicketIsNull(String id, TabUdeskTicket tabUdeskTicket, TabUdeskMessage tabUdeskMessage) {
if (tabUdeskTicket == null) {
UdeskMessageDTO createMessage = new UdeskMessageDTO();
//事件类型 创建/更新
createMessage.setEvent(UdeskConstant.TICKET_CREATE);
//工单ID
createMessage.setMsgBody(id);
createMessage.setSource(UdeskConstant.UDESK_UPDATE_CREATE);
//消息主题
createMessage.setTopic(UdeskConstant.UDESK_TICKET_TOPIC);
ServiceResponse<String> saveResult = this.saveUdeskMessage(createMessage);
String bugId = saveResult.getResult();
//删除消息status = 0
this.updateTabUdeskMessage(tabUdeskMessage, id, bugId);
return ServiceResponse.success(bugId);
}
logger.info("udesk同步数据到tapd所花时间:{}", System.currentTimeMillis() - starTime);
return null;
}
private void saveException(String exceptionMessage) {
logger.info(exceptionMessage);
udeskBaseApiService.saveTapdException(exceptionMessage);
}
@Override
public ServiceResponse<String> saveUdeskMessageNoTapd(UdeskMessageDTO messageDTO) {
//创建工单消息
......
......@@ -31,7 +31,13 @@ import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
/**
* udesk http链接工具
* @ClassName: UdeskHttpClientUtil

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:40 AM

*/
public class UdeskHttpClientUtil {
private static final Logger logger = LogManager.getLogger(UdeskHttpClientUtil.class);
......@@ -65,7 +71,7 @@ public class UdeskHttpClientUtil {
param.put("email", UdeskConstant.EMAIL);
param.put("timestamp", timeStamp);
param.put("sign", UdeskUtils.getSign(timeStamp));
url = UdeskConstant.UDESK_URI + getURL(url, param);
url = UdeskConstant.UDESK_URI + getUrl(url, param);
logger.info(url);
CloseableHttpResponse response = null;
try {
......@@ -158,7 +164,7 @@ public class UdeskHttpClientUtil {
param.put("email", UdeskConstant.EMAIL);
param.put("timestamp", timeStamp);
param.put("sign", UdeskUtils.getSign(timeStamp));
url = UdeskConstant.UDESK_URI + getURL(url, param);
url = UdeskConstant.UDESK_URI + getUrl(url, param);
logger.info(url);
CloseableHttpResponse response = null;
try {
......@@ -179,7 +185,7 @@ public class UdeskHttpClientUtil {
public static String getTapdJsonFromParam(String url, Map<String, Object> param) {
CloseableHttpResponse response = null;
try {
url = UdeskConstant.TAPD_URI +getURIBuilder(url, param);
url = UdeskConstant.TAPD_URI +getUriBuilder(url, param);
logger.info(url);
HttpGet httpGet = new HttpGet(url);
httpGet.setHeader("Authorization", UdeskConstant.TAPD_AUTH);
......@@ -220,7 +226,7 @@ public class UdeskHttpClientUtil {
* @return String
* @throws URISyntaxException
*/
private static String getURIBuilder(String uri, Map<String, Object> requestParams) throws URISyntaxException {
private static String getUriBuilder(String uri, Map<String, Object> requestParams) throws URISyntaxException {
URIBuilder uriBuilder = new URIBuilder( uri);
if (requestParams != null && requestParams.size() > 0) {
for (Map.Entry<String, Object> entry : requestParams.entrySet()) {
......@@ -236,21 +242,21 @@ public class UdeskHttpClientUtil {
/**
* 拼接URL
*/
private static String getURL(String url, Map<String, Object> param) {
private static String getUrl(String url, Map<String, Object> param) {
if (param != null && param.size() > 0) {
StringBuilder urlSB = new StringBuilder(url);
StringBuilder urlStringBuilder = new StringBuilder(url);
Set<Map.Entry<String, Object>> paramSet = param.entrySet();
boolean isFirst = true;
for (Map.Entry<String, Object> entry : paramSet) {
if (isFirst) {
urlSB.append("?");
urlStringBuilder.append("?");
isFirst = false;
} else {
urlSB.append("&");
urlStringBuilder.append("&");
}
urlSB.append(entry.getKey()).append("=").append(entry.getValue());
urlStringBuilder.append(entry.getKey()).append("=").append(entry.getValue());
}
return urlSB.toString();
return urlStringBuilder.toString();
}
return url;
}
......@@ -302,7 +308,6 @@ public class UdeskHttpClientUtil {
multipartEntityBuilder.addTextBody("file_name", fileName);
HttpEntity httpEntity = multipartEntityBuilder.build();
httpPost.setEntity(httpEntity);
// httpPost.setHeader("Content-Type", "application/octet-stream");
response = httpClient.execute(httpPost);
return response;
}
......
package com.gic.udesk.utils;
import org.apache.commons.codec.digest.DigestUtils;
/**
* udesk密钥
* @ClassName: UdeskUtils

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:34 AM

*/
public class UdeskUtils {
public static String getSign(long timeStamp){
return DigestUtils.sha1Hex(UdeskConstant.EMAIL + "&" + UdeskConstant.API_TOKEN + "&" +timeStamp);
......
......@@ -7,14 +7,41 @@ package com.gic.udesk.utils.field;
* @date 2020/5/21 10:23 AM

*/
public enum VersionReport3Enum {
/**
* 0_生产_会员
*/
MEMBER_3("0", "3.0_生产_会员"),
/**
* 0_生产_企业
*/
ENTERPRISE_3("1", "3.0_生产_企业"),
/**
* 0_生产_商品
*/
GOODS_3("7", "3.0_生产_商品"),
/**
* 0_生产_营销
*/
MARKETING_E("3", "3.0_生产_营销"),
/**
* 0_生产_商城
*/
MALL_3("2", "3.0_生产_商城"),
/**
* 0_生产_运维
*/
OPERATION_3("4", "3.0_生产_运维"),
/**
* 0_生产_数据
*/
DATA_3("5", "3.0_生产_数据"),
/**
* 0_生产_移动
*/
MOBILE_3("6", "3.0_生产_移动"),
/**
* 0_生产_微盟商城
*/
WM_MALL_3("8", "3.0_生产_微盟商城");
private String code;
......
......@@ -8,15 +8,45 @@ package com.gic.udesk.utils.field;
* @date 2020/5/21 10:21 AM

*/
public enum VersionReportEnum {
/**
* 4.0_测试_商品
*/
TEST_GOODS_4("0", "4.0_测试_商品"),
/**
* 4.0_生产_商品
*/
GOODS_4("1", "4.0_生产_商品"),
/**
* 0_生产_会员
*/
MEMBER_4("2", "4.0_生产_会员"),
/**
* 0_测试_会员
*/
TEST_MEMBER_3("3", "3.0_测试_会员"),
/**
* 0_生产_会员
*/
MEMBER_3("4", "3.0_生产_会员"),
/**
* 0_测试_会员
*/
TEST_MEMBER_4("5", "4.0_测试_会员"),
/**
* 0_测试_企业
*/
TEST_ENTERPRISE_4("6", "4.0_测试_企业"),
/**
* 0_生产_企
*/
ENTERPRISE_4("7", "4.0_生产_企"),
/**
* 0_测试_企业
*/
TEST_ENTERPRISE_3("8", "3.0_测试_企业"),
/**
* 0_生产_企业
*/
ENTERPRISE_3("9", "3.0_生产_企业");
private String code;
......
......@@ -27,7 +27,13 @@ import com.gic.udesk.qo.TicketListQO;
import com.gic.udesk.service.GicTicketApiService;
import com.gic.udesk.service.UdeskBaseApiService;
import com.gic.udesk.web.utils.UdeskHttpClientUtil;
/**
* gic工单
* @ClassName: GicTicketController

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:39 AM

*/
@RestController
public class GicTicketController {
private static final Logger LOGGER = LogManager.getLogger(GicTicketController.class);
......@@ -37,6 +43,11 @@ public class GicTicketController {
@Autowired
private GicTicketApiService gicTicketApiService;
/**
* udesk请求返回正确码
*/
public static final int UDESK_SUCCESS_CODE = 1000;
@RequestMapping("/get-gic-service-select")
@IgnoreLogin
public RestResponse getGicServiceSelect() {
......@@ -113,7 +124,7 @@ public class GicTicketController {
String replyRespStr = UdeskHttpClientUtil.postUdeskJsonFromJsonForFile("/tickets/upload_file", Integer.parseInt(ticketId), file);
LOGGER.info("desk工单上传附件返回为{}", replyRespStr);
UploadFileDTO result = JSON.parseObject(replyRespStr, UploadFileDTO.class);
if (result.getCode() == 1000) {
if (result.getCode() == UDESK_SUCCESS_CODE) {
return RestResponse.success();
}
return RestResponse.failure(ErrorCode.SYSTEM_ERROR.getCode(), result.getMessage());
......
......@@ -15,7 +15,13 @@ import com.gic.udesk.constant.UdeskSharedConstant;
import com.gic.udesk.dto.UdeskMessageDTO;
import com.gic.udesk.service.TapdMessageApiService;
import com.gic.udesk.service.UdeskMessageApiService;
/**
* 监听消息
* @ClassName: MessageController

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:38 AM

*/
@RestController
public class MessageController {
private static final Logger logger = LogManager.getLogger(MessageController.class);
......
......@@ -11,7 +11,13 @@ import com.gic.commons.webapi.reponse.RestResponse;
import com.gic.enterprise.ano.IgnoreLogin;
import com.gic.enterprise.utils.ResultControllerUtils;
import com.gic.udesk.service.TapdConfigApiService;
/**
* tapd字典
* @ClassName: TapdConfigController

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:38 AM

*/
@RestController
public class TapdConfigController {
......
......@@ -32,7 +32,13 @@ import org.apache.http.util.EntityUtils;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.web.multipart.MultipartFile;
/**
* 链接工具
* @ClassName: UdeskHttpClientUtil

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:39 AM

*/
public class UdeskHttpClientUtil {
private static final Logger logger = LogManager.getLogger(UdeskHttpClientUtil.class);
......@@ -87,7 +93,7 @@ public class UdeskHttpClientUtil {
* @return String
* @throws URISyntaxException
*/
private static String getURIBuilder(String uri, Map<String, Object> requestParams) throws URISyntaxException {
private static String getUriBuilder(String uri, Map<String, Object> requestParams) throws URISyntaxException {
URIBuilder uriBuilder = new URIBuilder( uri);
if (requestParams != null && requestParams.size() > 0) {
for (Map.Entry<String, Object> entry : requestParams.entrySet()) {
......@@ -103,21 +109,21 @@ public class UdeskHttpClientUtil {
/**
* 拼接URL
*/
private static String getURL(String url, Map<String, Object> param) {
private static String getUrl(String url, Map<String, Object> param) {
if (param != null && param.size() > 0) {
StringBuilder urlSB = new StringBuilder(url);
StringBuilder urlStringBuilder = new StringBuilder(url);
Set<Map.Entry<String, Object>> paramSet = param.entrySet();
boolean isFirst = true;
for (Map.Entry<String, Object> entry : paramSet) {
if (isFirst) {
urlSB.append("?");
urlStringBuilder.append("?");
isFirst = false;
} else {
urlSB.append("&");
urlStringBuilder.append("&");
}
urlSB.append(entry.getKey()).append("=").append(entry.getValue());
urlStringBuilder.append(entry.getKey()).append("=").append(entry.getValue());
}
return urlSB.toString();
return urlStringBuilder.toString();
}
return url;
}
......
package com.gic.udesk.web.utils;
import org.apache.commons.codec.digest.DigestUtils;
/**
* udesk密钥
* @ClassName: UdeskUtils

* @Description: 

* @author guojuxing

* @date 2020/9/18 10:39 AM

*/
public class UdeskUtils {
public static String getSign(long timeStamp){
return DigestUtils.sha1Hex("jingjiawei@demogic.com&2a83c020-2309-4064-b4eb-af1367425c99&" +timeStamp);
......
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