Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
G
gic-platform-udesk
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
base_platform_enterprise
gic-platform-udesk
Commits
e59d7e99
Commit
e59d7e99
authored
Apr 14, 2020
by
陶光胜
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'developer' into 'master'
Developer See merge request
!1
parents
3f4fb2b2
0ba0024d
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
50 changed files
with
2664 additions
and
39 deletions
+2664
-39
AgentPermissionEnum.java
...main/java/com/gic/udesk/constant/AgentPermissionEnum.java
+55
-0
CalculateResultTypeEnum.java
.../java/com/gic/udesk/constant/CalculateResultTypeEnum.java
+55
-0
CustomFieldContentTypeEnum.java
...va/com/gic/udesk/constant/CustomFieldContentTypeEnum.java
+66
-0
CustomerPermissionEnum.java
...n/java/com/gic/udesk/constant/CustomerPermissionEnum.java
+56
-0
UdeskStatusEnum.java
...src/main/java/com/gic/udesk/constant/UdeskStatusEnum.java
+60
-0
UdeskCustomFieldOptionDTO.java
.../gic/udesk/dto/customfield/UdeskCustomFieldOptionDTO.java
+45
-0
UdeskResCustomFieldDTO.java
...com/gic/udesk/dto/customfield/UdeskResCustomFieldDTO.java
+38
-0
UdeskResCustomFieldDataDTO.java
...gic/udesk/dto/customfield/UdeskResCustomFieldDataDTO.java
+124
-0
GicTicketDTO.java
...api/src/main/java/com/gic/udesk/dto/gic/GicTicketDTO.java
+169
-0
TicketCreateResDTO.java
...c/main/java/com/gic/udesk/dto/gic/TicketCreateResDTO.java
+52
-0
TicketRepliesAttachmentsDTO.java
...va/com/gic/udesk/dto/gic/TicketRepliesAttachmentsDTO.java
+50
-0
TicketRepliesAuthorDTO.java
...in/java/com/gic/udesk/dto/gic/TicketRepliesAuthorDTO.java
+74
-0
TicketRepliesDTO.java
...src/main/java/com/gic/udesk/dto/gic/TicketRepliesDTO.java
+52
-0
TicketRepliesDataDTO.java
...main/java/com/gic/udesk/dto/gic/TicketRepliesDataDTO.java
+117
-0
UdeskEnterpriseDTO.java
...c/main/java/com/gic/udesk/dto/gic/UdeskEnterpriseDTO.java
+139
-0
UdeskResTemplatesDTO.java
...ava/com/gic/udesk/dto/templates/UdeskResTemplatesDTO.java
+66
-0
UdeskResTemplatesDataDTO.java
...com/gic/udesk/dto/templates/UdeskResTemplatesDataDTO.java
+66
-0
UdeskTemplatesCustomFieldDTO.java
...gic/udesk/dto/templates/UdeskTemplatesCustomFieldDTO.java
+75
-0
UploadFileDTO.java
...main/java/com/gic/udesk/dto/uploadfile/UploadFileDTO.java
+37
-0
TicketListQO.java
...desk-api/src/main/java/com/gic/udesk/qo/TicketListQO.java
+74
-0
GicTicketApiService.java
.../main/java/com/gic/udesk/service/GicTicketApiService.java
+71
-0
UdeskBaseApiService.java
.../main/java/com/gic/udesk/service/UdeskBaseApiService.java
+37
-0
UdeskMessageApiService.java
...in/java/com/gic/udesk/service/UdeskMessageApiService.java
+2
-0
pom.xml
gic-platform-udesk-service/pom.xml
+1
-1
TabUdeskCustomersMapper.java
...ava/com/gic/udesk/dao/mapper/TabUdeskCustomersMapper.java
+57
-0
TabUdeskEnterpriseMapper.java
...va/com/gic/udesk/dao/mapper/TabUdeskEnterpriseMapper.java
+16
-0
TabUdeskCustomers.java
...src/main/java/com/gic/udesk/entity/TabUdeskCustomers.java
+74
-0
UdeskCustomersService.java
...ain/java/com/gic/udesk/service/UdeskCustomersService.java
+10
-0
UdeskEnterpriseService.java
...in/java/com/gic/udesk/service/UdeskEnterpriseService.java
+38
-0
UdeskCustomersServiceImpl.java
...com/gic/udesk/service/impl/UdeskCustomersServiceImpl.java
+31
-0
UdeskEnterpriseServiceImpl.java
...om/gic/udesk/service/impl/UdeskEnterpriseServiceImpl.java
+45
-0
GicTicketApiServiceImpl.java
...gic/udesk/service/outer/impl/GicTicketApiServiceImpl.java
+0
-0
TapdMessageApiServiceImpl.java
...c/udesk/service/outer/impl/TapdMessageApiServiceImpl.java
+8
-0
UdeskBaseApiServiceImpl.java
...gic/udesk/service/outer/impl/UdeskBaseApiServiceImpl.java
+136
-10
UdeskMessageApiServiceImpl.java
.../udesk/service/outer/impl/UdeskMessageApiServiceImpl.java
+66
-2
UdeskConstant.java
...vice/src/main/java/com/gic/udesk/utils/UdeskConstant.java
+19
-0
UdeskHttpClientUtil.java
...rc/main/java/com/gic/udesk/utils/UdeskHttpClientUtil.java
+59
-8
applicationContext-conf.xml
...sk-service/src/main/resources/applicationContext-conf.xml
+10
-1
dubbo-gic-platform-udesk-service.xml
...e/src/main/resources/dubbo-gic-platform-udesk-service.xml
+4
-3
TabUdeskCustomersMapper.xml
...ice/src/main/resources/mapper/TabUdeskCustomersMapper.xml
+101
-0
TabUdeskEnterpriseMapper.xml
...ce/src/main/resources/mapper/TabUdeskEnterpriseMapper.xml
+33
-1
TabUdeskTapdRelMapper.xml
...rvice/src/main/resources/mapper/TabUdeskTapdRelMapper.xml
+4
-4
TabUdeskTicketMapper.xml
...ervice/src/main/resources/mapper/TabUdeskTicketMapper.xml
+3
-2
pom.xml
gic-platform-udesk-web/pom.xml
+2
-7
GicTicketController.java
...ava/com/gic/udesk/web/controller/GicTicketController.java
+167
-0
MessageController.java
.../java/com/gic/udesk/web/controller/MessageController.java
+13
-0
TapdConfigController.java
...va/com/gic/udesk/web/controller/TapdConfigController.java
+1
-0
UdeskHttpClientUtil.java
...ain/java/com/gic/udesk/web/utils/UdeskHttpClientUtil.java
+174
-0
UdeskUtils.java
...web/src/main/java/com/gic/udesk/web/utils/UdeskUtils.java
+9
-0
dubbo-gic-platform-udesk-web.xml
...k-web/src/main/resources/dubbo-gic-platform-udesk-web.xml
+3
-0
No files found.
gic-platform-udesk-api/src/main/java/com/gic/udesk/constant/AgentPermissionEnum.java
0 → 100644
View file @
e59d7e99
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
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/constant/CalculateResultTypeEnum.java
0 → 100644
View file @
e59d7e99
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
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/constant/CustomFieldContentTypeEnum.java
0 → 100644
View file @
e59d7e99
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
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/constant/CustomerPermissionEnum.java
0 → 100644
View file @
e59d7e99
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
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/constant/UdeskStatusEnum.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
constant
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
public
enum
UdeskStatusEnum
{
OPEN
(
"open"
,
"开启"
,
1
),
SOLVING
(
"solving"
,
"解决中"
,
4
),
RESOLVED
(
"resolved"
,
"已解决"
,
2
),
CLOSED
(
"closed"
,
"已关闭"
,
3
);
private
String
code
;
private
String
message
;
private
int
value
;
private
UdeskStatusEnum
(
String
code
,
String
message
,
int
value
)
{
this
.
code
=
code
;
this
.
message
=
message
;
this
.
value
=
value
;
}
public
static
List
<
Map
<
String
,
Object
>>
list
()
{
List
<
Map
<
String
,
Object
>>
result
=
new
ArrayList
<>();
for
(
UdeskStatusEnum
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
;
}
public
int
getValue
()
{
return
value
;
}
public
void
setValue
(
int
value
)
{
this
.
value
=
value
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/customfield/UdeskCustomFieldOptionDTO.java
0 → 100644
View file @
e59d7e99
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
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/customfield/UdeskResCustomFieldDTO.java
0 → 100644
View file @
e59d7e99
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
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/customfield/UdeskResCustomFieldDataDTO.java
0 → 100644
View file @
e59d7e99
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
;
}
public
String
getCustomer_permission
()
{
return
customer_permission
;
}
public
void
setCustomer_permission
(
String
customer_permission
)
{
this
.
customer_permission
=
customer_permission
;
}
public
String
getAgent_permission
()
{
return
agent_permission
;
}
public
void
setAgent_permission
(
String
agent_permission
)
{
this
.
agent_permission
=
agent_permission
;
}
public
String
getCalculate_result_type
()
{
return
calculate_result_type
;
}
public
void
setCalculate_result_type
(
String
calculate_result_type
)
{
this
.
calculate_result_type
=
calculate_result_type
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/GicTicketDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
import
java.util.Map
;
/**
* gic提交工单所提交的对象
* @ClassName: GicTicketDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 4:11 PM
*/
public
class
GicTicketDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
478265380664580136L
;
/**
* 1:gic基础服务 2:应用服务
*/
private
Integer
businessModuleType
;
/**
* 查找客户时使用的类型
*/
private
String
type
;
/**
* 与类型type对应的值
*/
private
String
type_content
;
/**
* 标题 必填
*/
private
String
subject
;
/**
* 内容 必填
*/
private
String
content
;
/**
* 状态中文
*/
private
String
status
;
/**
* 工单模板id
*/
private
Integer
template_id
;
/**
* 自定义字段的json字符串接收
*/
private
String
ticketFieldJsonStr
;
/**
* 自定义字段
*/
private
Map
<
String
,
String
>
ticket_field
;
private
Integer
gicEnterpriseId
;
private
Integer
gicUserId
;
private
String
gicUserName
;
private
String
gicEnterpriseName
;
public
String
getSubject
()
{
return
subject
;
}
public
void
setSubject
(
String
subject
)
{
this
.
subject
=
subject
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
Map
<
String
,
String
>
getTicket_field
()
{
return
ticket_field
;
}
public
void
setTicket_field
(
Map
<
String
,
String
>
ticket_field
)
{
this
.
ticket_field
=
ticket_field
;
}
public
String
getStatus
()
{
return
status
;
}
public
void
setStatus
(
String
status
)
{
this
.
status
=
status
;
}
public
Integer
getBusinessModuleType
()
{
return
businessModuleType
;
}
public
void
setBusinessModuleType
(
Integer
businessModuleType
)
{
this
.
businessModuleType
=
businessModuleType
;
}
public
Integer
getTemplate_id
()
{
return
template_id
;
}
public
void
setTemplate_id
(
Integer
template_id
)
{
this
.
template_id
=
template_id
;
}
public
String
getTicketFieldJsonStr
()
{
return
ticketFieldJsonStr
;
}
public
void
setTicketFieldJsonStr
(
String
ticketFieldJsonStr
)
{
this
.
ticketFieldJsonStr
=
ticketFieldJsonStr
;
}
public
Integer
getGicEnterpriseId
()
{
return
gicEnterpriseId
;
}
public
void
setGicEnterpriseId
(
Integer
gicEnterpriseId
)
{
this
.
gicEnterpriseId
=
gicEnterpriseId
;
}
public
Integer
getGicUserId
()
{
return
gicUserId
;
}
public
void
setGicUserId
(
Integer
gicUserId
)
{
this
.
gicUserId
=
gicUserId
;
}
public
String
getGicUserName
()
{
return
gicUserName
;
}
public
void
setGicUserName
(
String
gicUserName
)
{
this
.
gicUserName
=
gicUserName
;
}
public
String
getGicEnterpriseName
()
{
return
gicEnterpriseName
;
}
public
void
setGicEnterpriseName
(
String
gicEnterpriseName
)
{
this
.
gicEnterpriseName
=
gicEnterpriseName
;
}
public
String
getType
()
{
return
type
;
}
public
void
setType
(
String
type
)
{
this
.
type
=
type
;
}
public
String
getType_content
()
{
return
type_content
;
}
public
void
setType_content
(
String
type_content
)
{
this
.
type_content
=
type_content
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/TicketCreateResDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
/**
* 工单创建返回信息
* @ClassName: TicketCreateResDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 4:48 PM
*/
public
class
TicketCreateResDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
5033595896326990325L
;
/**
* 执行结果码,1000代表成功
*/
private
Integer
code
;
/**
* 执行结果说明
*/
private
String
message
;
/**
* 新建工单的id
*/
private
Integer
ticket_id
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
Integer
getTicket_id
()
{
return
ticket_id
;
}
public
void
setTicket_id
(
Integer
ticket_id
)
{
this
.
ticket_id
=
ticket_id
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/TicketRepliesAttachmentsDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
/**
* 附件相关内容
* @ClassName: TicketRepliesAttachmentsDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 5:55 PM
*/
public
class
TicketRepliesAttachmentsDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3349387219138928011L
;
/**
* 附件链接
*/
private
String
url
;
private
String
file_name
;
/**
* 附件大小
*/
private
Integer
file_size
;
public
String
getUrl
()
{
return
url
;
}
public
void
setUrl
(
String
url
)
{
this
.
url
=
url
;
}
public
String
getFile_name
()
{
return
file_name
;
}
public
void
setFile_name
(
String
file_name
)
{
this
.
file_name
=
file_name
;
}
public
Integer
getFile_size
()
{
return
file_size
;
}
public
void
setFile_size
(
Integer
file_size
)
{
this
.
file_size
=
file_size
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/TicketRepliesAuthorDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
/**
* 回复者信息
* @ClassName: TicketRepliesAuthorDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 5:57 PM
*/
public
class
TicketRepliesAuthorDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
6306676280816731296L
;
private
Integer
id
;
/**
* 回复人员类型
*/
private
String
user_type
;
/**
* 回复人员邮箱
*/
private
String
email
;
/**
* 回复人员头像url
*/
private
String
avatar
;
/**
* 回复人员昵称
*/
private
String
nick_name
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getUser_type
()
{
return
user_type
;
}
public
void
setUser_type
(
String
user_type
)
{
this
.
user_type
=
user_type
;
}
public
String
getEmail
()
{
return
email
;
}
public
void
setEmail
(
String
email
)
{
this
.
email
=
email
;
}
public
String
getAvatar
()
{
return
avatar
;
}
public
void
setAvatar
(
String
avatar
)
{
this
.
avatar
=
avatar
;
}
public
String
getNick_name
()
{
return
nick_name
;
}
public
void
setNick_name
(
String
nick_name
)
{
this
.
nick_name
=
nick_name
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/TicketRepliesDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
import
java.util.List
;
import
java.util.Map
;
/**
* 获取工单回复
* @ClassName: TicketRepliesDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 5:50 PM
*/
public
class
TicketRepliesDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
243231508063277717L
;
/**
* 执行结果码,1000代表成功
*/
private
Integer
code
;
/**
* 分页相关
*/
private
Map
<
String
,
Object
>
meta
;
private
List
<
TicketRepliesDataDTO
>
replies
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
Map
<
String
,
Object
>
getMeta
()
{
return
meta
;
}
public
void
setMeta
(
Map
<
String
,
Object
>
meta
)
{
this
.
meta
=
meta
;
}
public
List
<
TicketRepliesDataDTO
>
getReplies
()
{
return
replies
;
}
public
void
setReplies
(
List
<
TicketRepliesDataDTO
>
replies
)
{
this
.
replies
=
replies
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/TicketRepliesDataDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
/**
* 回复列表
* @ClassName: TicketRepliesDataDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 5:52 PM
*/
public
class
TicketRepliesDataDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
4610262435451102033L
;
private
Integer
id
;
/**
* 回复内容
*/
private
String
content
;
/**
* 内容的类型,"text"/"html"
*/
private
String
content_format
;
private
Date
created_at
;
/**
* 回复类型,"internat"内部备注/"external"外部评论
*/
private
String
function_type
;
/**
* 抄送对象邮箱
*/
private
String
cc
;
/**
* 附件相关内容
*/
private
List
<
TicketRepliesAttachmentsDTO
>
attachments
;
/**
* 回复者信息
*/
private
TicketRepliesAuthorDTO
author
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getContent
()
{
return
content
;
}
public
void
setContent
(
String
content
)
{
this
.
content
=
content
;
}
public
String
getContent_format
()
{
return
content_format
;
}
public
void
setContent_format
(
String
content_format
)
{
this
.
content_format
=
content_format
;
}
public
Date
getCreated_at
()
{
return
created_at
;
}
public
void
setCreated_at
(
Date
created_at
)
{
this
.
created_at
=
created_at
;
}
public
String
getFunction_type
()
{
return
function_type
;
}
public
void
setFunction_type
(
String
function_type
)
{
this
.
function_type
=
function_type
;
}
public
String
getCc
()
{
return
cc
;
}
public
void
setCc
(
String
cc
)
{
this
.
cc
=
cc
;
}
public
List
<
TicketRepliesAttachmentsDTO
>
getAttachments
()
{
return
attachments
;
}
public
void
setAttachments
(
List
<
TicketRepliesAttachmentsDTO
>
attachments
)
{
this
.
attachments
=
attachments
;
}
public
TicketRepliesAuthorDTO
getAuthor
()
{
return
author
;
}
public
void
setAuthor
(
TicketRepliesAuthorDTO
author
)
{
this
.
author
=
author
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/gic/UdeskEnterpriseDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
gic
;
import
java.io.Serializable
;
import
java.util.Date
;
public
class
UdeskEnterpriseDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
727703112120773752L
;
/**
* id
*/
private
Integer
id
;
/**
* 业务模块ID
*/
private
String
businessModule
;
/**
* 业务模块名称
*/
private
String
businessModuleName
;
/**
* 业务模块类型 1:基础模块 2:应用模块
*/
private
Integer
businessType
;
/**
* 工单ID
*/
private
Integer
ticketId
;
/**
* 工单编号
*/
private
String
ticketNum
;
/**
* 工单标题
*/
private
String
ticketTitle
;
/**
* 工单状态
*/
private
String
ticketStatus
;
/**
*
*/
private
Date
createTime
;
/**
*
*/
private
Date
updateTime
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getBusinessModule
()
{
return
businessModule
;
}
public
void
setBusinessModule
(
String
businessModule
)
{
this
.
businessModule
=
businessModule
;
}
public
String
getBusinessModuleName
()
{
return
businessModuleName
;
}
public
void
setBusinessModuleName
(
String
businessModuleName
)
{
this
.
businessModuleName
=
businessModuleName
;
}
public
Integer
getBusinessType
()
{
return
businessType
;
}
public
void
setBusinessType
(
Integer
businessType
)
{
this
.
businessType
=
businessType
;
}
public
Integer
getTicketId
()
{
return
ticketId
;
}
public
void
setTicketId
(
Integer
ticketId
)
{
this
.
ticketId
=
ticketId
;
}
public
String
getTicketNum
()
{
return
ticketNum
;
}
public
void
setTicketNum
(
String
ticketNum
)
{
this
.
ticketNum
=
ticketNum
;
}
public
String
getTicketTitle
()
{
return
ticketTitle
;
}
public
void
setTicketTitle
(
String
ticketTitle
)
{
this
.
ticketTitle
=
ticketTitle
;
}
public
String
getTicketStatus
()
{
return
ticketStatus
;
}
public
void
setTicketStatus
(
String
ticketStatus
)
{
this
.
ticketStatus
=
ticketStatus
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
public
Date
getUpdateTime
()
{
return
updateTime
;
}
public
void
setUpdateTime
(
Date
updateTime
)
{
this
.
updateTime
=
updateTime
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/templates/UdeskResTemplatesDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
templates
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 所有工单模板列表信息
* @ClassName: UdeskResTemplatesDTO
* @Description:
* @author guojuxing
* @date 2019/12/24 5:54 PM
*/
public
class
UdeskResTemplatesDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
4541627488626734665L
;
/**
* 执行结果码,1000代表成功
*/
private
Integer
code
;
/**
* 执行结果说明
*/
private
String
message
;
/**
* 数据数量
*/
private
Integer
count
;
/**
* 工单模板列表详情
*/
private
List
<
UdeskResTemplatesDataDTO
>
templates
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
public
Integer
getCount
()
{
return
count
;
}
public
void
setCount
(
Integer
count
)
{
this
.
count
=
count
;
}
public
List
<
UdeskResTemplatesDataDTO
>
getTemplates
()
{
return
templates
;
}
public
void
setTemplates
(
List
<
UdeskResTemplatesDataDTO
>
templates
)
{
this
.
templates
=
templates
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/templates/UdeskResTemplatesDataDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
templates
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* 所有工单模板列表数据信息
* @ClassName: UdeskResTemplatesDataDTO
* @Description:
* @author guojuxing
* @date 2019/12/24 5:56 PM
*/
public
class
UdeskResTemplatesDataDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
9123464445959278485L
;
/**
* 模板id
*/
private
Integer
id
;
/**
* 模板名称
*/
private
String
name
;
/**
* 模板描述
*/
private
String
description
;
/**
* 模板下的自定义字段
*/
private
List
<
UdeskTemplatesCustomFieldDTO
>
custom_fields
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
String
getName
()
{
return
name
;
}
public
void
setName
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getDescription
()
{
return
description
;
}
public
void
setDescription
(
String
description
)
{
this
.
description
=
description
;
}
public
List
<
UdeskTemplatesCustomFieldDTO
>
getCustom_fields
()
{
return
custom_fields
;
}
public
void
setCustom_fields
(
List
<
UdeskTemplatesCustomFieldDTO
>
custom_fields
)
{
this
.
custom_fields
=
custom_fields
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/templates/UdeskTemplatesCustomFieldDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
templates
;
import
java.io.Serializable
;
/**
* 工单模板中的自定义字段
* @ClassName: UdeskTemplatesCustomFieldDTO
* @Description:
* @author guojuxing
* @date 2019/12/24 5:58 PM
*/
public
class
UdeskTemplatesCustomFieldDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
7814797970459011762L
;
/**
* 模板下某一字段的id
*/
private
String
field_id
;
/**
* 模板下某一字段的名称
*/
private
String
field_name
;
/**
* 模板下某一字段的标题
*/
private
String
field_title
;
/**
* 模板下某一字段的类型
*/
private
String
field_type
;
/**
* 模板下某一字段的描述
*/
private
String
field_comment
;
public
String
getField_id
()
{
return
field_id
;
}
public
void
setField_id
(
String
field_id
)
{
this
.
field_id
=
field_id
;
}
public
String
getField_name
()
{
return
field_name
;
}
public
void
setField_name
(
String
field_name
)
{
this
.
field_name
=
field_name
;
}
public
String
getField_title
()
{
return
field_title
;
}
public
void
setField_title
(
String
field_title
)
{
this
.
field_title
=
field_title
;
}
public
String
getField_type
()
{
return
field_type
;
}
public
void
setField_type
(
String
field_type
)
{
this
.
field_type
=
field_type
;
}
public
String
getField_comment
()
{
return
field_comment
;
}
public
void
setField_comment
(
String
field_comment
)
{
this
.
field_comment
=
field_comment
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/dto/uploadfile/UploadFileDTO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dto
.
uploadfile
;
import
java.io.Serializable
;
/**
* udesk工单上传附件
* @ClassName: UploadFileDTO
* @Description:
* @author guojuxing
* @date 2019/12/26 9:52 AM
*/
public
class
UploadFileDTO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1110187452080769886L
;
/**
* 执行结果码,1000表示成功
*/
private
Integer
code
;
/**
* 结果说明
*/
private
String
message
;
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getMessage
()
{
return
message
;
}
public
void
setMessage
(
String
message
)
{
this
.
message
=
message
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/qo/TicketListQO.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
qo
;
import
com.gic.enterprise.qo.PageQO
;
import
java.io.Serializable
;
/**
* 工单列表查询参数
* @ClassName: TicketListQO
* @Description:
* @author guojuxing
* @date 2019/12/26 5:23 PM
*/
public
class
TicketListQO
extends
PageQO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
404555085326787735L
;
/**
* 支持搜索应用名称/工单编号/问题标题
*/
private
String
search
;
/**
* UdeskStatusEnum枚举
*/
private
String
ticketStatus
;
/**
* 业务模块ID, 英文逗号隔开
*/
private
String
businessModule
;
private
String
startTime
;
/**
* yyyy-MM-dd格式
*/
private
String
endTime
;
public
String
getSearch
()
{
return
search
;
}
public
void
setSearch
(
String
search
)
{
this
.
search
=
search
;
}
public
String
getTicketStatus
()
{
return
ticketStatus
;
}
public
void
setTicketStatus
(
String
ticketStatus
)
{
this
.
ticketStatus
=
ticketStatus
;
}
public
String
getBusinessModule
()
{
return
businessModule
;
}
public
void
setBusinessModule
(
String
businessModule
)
{
this
.
businessModule
=
businessModule
;
}
public
String
getStartTime
()
{
return
startTime
;
}
public
void
setStartTime
(
String
startTime
)
{
this
.
startTime
=
startTime
;
}
public
String
getEndTime
()
{
return
endTime
;
}
public
void
setEndTime
(
String
endTime
)
{
this
.
endTime
=
endTime
;
}
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/service/GicTicketApiService.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
;
import
com.gic.api.base.commons.Page
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.udesk.dto.UdeskTicketDetailDTO
;
import
com.gic.udesk.dto.gic.GicTicketDTO
;
import
com.gic.udesk.dto.gic.TicketRepliesDTO
;
import
com.gic.udesk.dto.gic.UdeskEnterpriseDTO
;
import
com.gic.udesk.qo.TicketListQO
;
/**
* gic商户udesk工单接口
* @ClassName: GicTicketApiService
* @Description:
* @author guojuxing
* @date 2019/12/26 4:27 PM
*/
public
interface
GicTicketApiService
{
/**
* gic商户新建工单
* @Title: saveTicket
* @Description:
* @author guojuxing
* @param gicTicketDTO
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Integer>
*/
ServiceResponse
<
Integer
>
saveTicket
(
GicTicketDTO
gicTicketDTO
);
/**
* 分页查询
* @Title: page
* @Description:
* @author guojuxing
* @param params
* @return com.gic.api.base.commons.ServiceResponse<com.gic.api.base.commons.Page<com.gic.udesk.dto.gic.UdeskEnterpriseDTO>>
*/
ServiceResponse
<
Page
<
UdeskEnterpriseDTO
>>
page
(
TicketListQO
params
);
/**
* 查询工单回复信息
* @Title: getTicketReplies
* @Description:
* @author guojuxing
* @param ticketId 工单ID
* @param currentPage 第几页
* @param pageSize 每页多少条
* @return com.gic.api.base.commons.ServiceResponse<com.gic.udesk.dto.gic.TicketRepliesDTO>
*/
ServiceResponse
<
TicketRepliesDTO
>
getTicketReplies
(
Integer
ticketId
,
Integer
currentPage
,
Integer
pageSize
);
/**
* 关闭工单
* @Title: closeTicket
* @Description:
* @author guojuxing
* @param ticketId
* @return com.gic.api.base.commons.ServiceResponse<java.lang.String>
*/
ServiceResponse
<
String
>
closeTicket
(
Integer
ticketId
);
/**
* 工单详情
* @Title: getTicketDetailById
* @Description:
* @author guojuxing
* @param ticketId
* @return com.gic.api.base.commons.ServiceResponse<com.gic.udesk.dto.UdeskTicketDetailDTO>
*/
ServiceResponse
<
UdeskTicketDetailDTO
>
getTicketDetailById
(
Integer
ticketId
);
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/service/UdeskBaseApiService.java
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
;
import
java.io.File
;
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
;
import
org.springframework.web.multipart.MultipartFile
;
public
interface
UdeskBaseApiService
{
...
...
@@ -22,4 +29,34 @@ public interface UdeskBaseApiService {
* @return com.gic.api.base.commons.ServiceResponse<java.lang.Void>
*/
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
);
/**
* gic基础服务字段的级联数据
* @Title: getGicServiceSelect
* @Description:
* @author guojuxing
* @return com.gic.api.base.commons.ServiceResponse<java.util.List<com.gic.udesk.dto.customfield.UdeskCustomFieldOptionDTO>>
*/
ServiceResponse
<
List
<
UdeskCustomFieldOptionDTO
>>
getGicServiceSelect
();
/**
* 上传附件
* @Title: ticketUploadFile
* @Description:
* @author guojuxing
* @param bytes
* @param fileName
* @param ticketId 工单ID
* @return com.gic.api.base.commons.ServiceResponse<java.lang.String>
*/
ServiceResponse
<
String
>
ticketUploadFile
(
byte
[]
bytes
,
String
fileName
,
Integer
ticketId
);
}
gic-platform-udesk-api/src/main/java/com/gic/udesk/service/UdeskMessageApiService.java
View file @
e59d7e99
...
...
@@ -14,4 +14,6 @@ public interface UdeskMessageApiService {
* @return com.gic.api.base.commons.ServiceResponse<java.lang.String>
*/
ServiceResponse
<
String
>
saveUdeskMessage
(
UdeskMessageDTO
messageDTO
);
ServiceResponse
<
String
>
saveUdeskMessageNoTapd
(
UdeskMessageDTO
messageDTO
);
}
gic-platform-udesk-service/pom.xml
View file @
e59d7e99
...
...
@@ -56,7 +56,7 @@
<dependency>
<groupId>
com.gic
</groupId>
<artifactId>
gic-platform-udesk-api
</artifactId>
<version>
${gic-platform-
enterprise
-api}
</version>
<version>
${gic-platform-
udesk
-api}
</version>
</dependency>
<dependency>
...
...
gic-platform-udesk-service/src/main/java/com/gic/udesk/dao/mapper/TabUdeskCustomersMapper.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dao
.
mapper
;
import
com.gic.udesk.entity.TabUdeskCustomers
;
import
org.apache.ibatis.annotations.Param
;
public
interface
TabUdeskCustomersMapper
{
/**
* 根据主键删除
*
* @param id 主键
* @return 更新条目数
*/
int
deleteByPrimaryKey
(
Integer
id
);
/**
* 插入一条记录
*
* @param record 实体对象
* @return 更新条目数
*/
int
insert
(
TabUdeskCustomers
record
);
/**
* 动态插入一条记录
*
* @param record 实体对象
* @return 更新条目数
*/
int
insertSelective
(
TabUdeskCustomers
record
);
/**
* 根据主键查询
*
* @param id 主键
* @return 实体对象
*/
TabUdeskCustomers
selectByPrimaryKey
(
Integer
id
);
/**
* 根据主键动态更新记录
*
* @param record 实体对象
* @return 更新条目数
*/
int
updateByPrimaryKeySelective
(
TabUdeskCustomers
record
);
/**
* 根据主键更新记录
*
* @param record 实体对象
* @return 更新条目数
*/
int
updateByPrimaryKey
(
TabUdeskCustomers
record
);
TabUdeskCustomers
countCustomerId
(
@Param
(
"enterpriseId"
)
Integer
enterpriseId
,
@Param
(
"userId"
)
Integer
userId
);
}
\ No newline at end of file
gic-platform-udesk-service/src/main/java/com/gic/udesk/dao/mapper/TabUdeskEnterpriseMapper.java
View file @
e59d7e99
package
com
.
gic
.
udesk
.
dao
.
mapper
;
import
com.gic.udesk.entity.TabUdeskEnterprise
;
import
com.gic.udesk.qo.TicketListQO
;
import
org.apache.ibatis.annotations.Param
;
import
java.util.List
;
public
interface
TabUdeskEnterpriseMapper
{
/**
...
...
@@ -27,6 +31,8 @@ public interface TabUdeskEnterpriseMapper {
*/
int
insertSelective
(
TabUdeskEnterprise
record
);
int
updateStatus
(
@Param
(
"ticketId"
)
Integer
ticketId
,
@Param
(
"status"
)
String
status
);
/**
* 根据主键查询
*
...
...
@@ -50,4 +56,13 @@ public interface TabUdeskEnterpriseMapper {
* @return 更新条目数
*/
int
updateByPrimaryKey
(
TabUdeskEnterprise
record
);
/**
* 分页查询
* @Title: page
* @Description:
* @author guojuxing
* @param params
* @return java.util.List<com.gic.udesk.entity.TabUdeskEnterprise>
*/
List
<
TabUdeskEnterprise
>
page
(
TicketListQO
params
);
}
\ No newline at end of file
gic-platform-udesk-service/src/main/java/com/gic/udesk/entity/TabUdeskCustomers.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
entity
;
import
java.util.Date
;
/**
* tab_udesk_customers
*/
public
class
TabUdeskCustomers
{
/**
* 主键id
*/
private
Integer
id
;
/**
* 商户ID
*/
private
Integer
enterpriseId
;
/**
* gic用户id
*/
private
Integer
userId
;
/**
* udesk客户ID
*/
private
Integer
customerId
;
/**
*
*/
private
Date
createTime
;
public
Integer
getId
()
{
return
id
;
}
public
void
setId
(
Integer
id
)
{
this
.
id
=
id
;
}
public
Integer
getEnterpriseId
()
{
return
enterpriseId
;
}
public
void
setEnterpriseId
(
Integer
enterpriseId
)
{
this
.
enterpriseId
=
enterpriseId
;
}
public
Integer
getUserId
()
{
return
userId
;
}
public
void
setUserId
(
Integer
userId
)
{
this
.
userId
=
userId
;
}
public
Integer
getCustomerId
()
{
return
customerId
;
}
public
void
setCustomerId
(
Integer
customerId
)
{
this
.
customerId
=
customerId
;
}
public
Date
getCreateTime
()
{
return
createTime
;
}
public
void
setCreateTime
(
Date
createTime
)
{
this
.
createTime
=
createTime
;
}
}
\ No newline at end of file
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/UdeskCustomersService.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
;
import
com.gic.udesk.entity.TabUdeskCustomers
;
public
interface
UdeskCustomersService
{
int
save
(
Integer
enterpriseId
,
Integer
customerId
,
Integer
userId
);
TabUdeskCustomers
hasCustomerId
(
Integer
enterpriseId
,
Integer
userId
);
}
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/UdeskEnterpriseService.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
;
import
com.gic.udesk.entity.TabUdeskEnterprise
;
import
com.gic.udesk.qo.TicketListQO
;
import
com.github.pagehelper.Page
;
public
interface
UdeskEnterpriseService
{
/**
* 新增gic工单数据
* @Title: save
* @Description:
* @author guojuxing
* @param record
* @return int
*/
int
save
(
TabUdeskEnterprise
record
);
/**
* 关闭工单
* @Title: close
* @Description:
* @author guojuxing
* @param ticketId
* @return int
*/
int
close
(
Integer
ticketId
);
int
updateStatus
(
Integer
ticketId
,
String
status
);
/**
* 分页查询
* @param params
* @return
*/
Page
<
TabUdeskEnterprise
>
page
(
TicketListQO
params
);
}
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/impl/UdeskCustomersServiceImpl.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
.
impl
;
import
com.gic.udesk.dao.mapper.TabUdeskCustomersMapper
;
import
com.gic.udesk.entity.TabUdeskCustomers
;
import
com.gic.udesk.service.UdeskCustomersService
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
@Service
(
"udeskCustomersService"
)
public
class
UdeskCustomersServiceImpl
implements
UdeskCustomersService
{
@Autowired
private
TabUdeskCustomersMapper
tabUdeskCustomersMapper
;
@Override
public
int
save
(
Integer
enterpriseId
,
Integer
customerId
,
Integer
userId
)
{
TabUdeskCustomers
record
=
new
TabUdeskCustomers
();
record
.
setCreateTime
(
new
Date
());
record
.
setCustomerId
(
customerId
);
record
.
setUserId
(
userId
);
record
.
setEnterpriseId
(
enterpriseId
);
return
tabUdeskCustomersMapper
.
insert
(
record
);
}
@Override
public
TabUdeskCustomers
hasCustomerId
(
Integer
enterpriseId
,
Integer
userId
)
{
TabUdeskCustomers
obj
=
tabUdeskCustomersMapper
.
countCustomerId
(
enterpriseId
,
userId
);
return
obj
;
}
}
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/impl/UdeskEnterpriseServiceImpl.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
.
impl
;
import
com.gic.udesk.constant.UdeskStatusEnum
;
import
com.gic.udesk.dao.mapper.TabUdeskEnterpriseMapper
;
import
com.gic.udesk.entity.TabUdeskEnterprise
;
import
com.gic.udesk.qo.TicketListQO
;
import
com.gic.udesk.service.UdeskEnterpriseService
;
import
com.github.pagehelper.Page
;
import
com.github.pagehelper.PageHelper
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Date
;
import
java.util.List
;
@Service
(
"udeskEnterpriseService"
)
public
class
UdeskEnterpriseServiceImpl
implements
UdeskEnterpriseService
{
@Autowired
private
TabUdeskEnterpriseMapper
tabUdeskEnterpriseMapper
;
@Override
public
int
save
(
TabUdeskEnterprise
record
)
{
record
.
setCreateTime
(
new
Date
());
record
.
setUpdateTime
(
new
Date
());
record
.
setTicketStatus
(
UdeskStatusEnum
.
OPEN
.
getCode
());
return
tabUdeskEnterpriseMapper
.
insertSelective
(
record
);
}
@Override
public
int
close
(
Integer
ticketId
)
{
return
tabUdeskEnterpriseMapper
.
updateStatus
(
ticketId
,
UdeskStatusEnum
.
CLOSED
.
getCode
());
}
@Override
public
int
updateStatus
(
Integer
ticketId
,
String
status
)
{
return
tabUdeskEnterpriseMapper
.
updateStatus
(
ticketId
,
status
);
}
@Override
public
Page
<
TabUdeskEnterprise
>
page
(
TicketListQO
params
)
{
PageHelper
.
startPage
(
params
.
getCurrentPage
(),
params
.
getPageSize
());
List
<
TabUdeskEnterprise
>
list
=
tabUdeskEnterpriseMapper
.
page
(
params
);
return
(
Page
<
TabUdeskEnterprise
>)
list
;
}
}
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/outer/impl/GicTicketApiServiceImpl.java
0 → 100644
View file @
e59d7e99
This diff is collapsed.
Click to expand it.
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/outer/impl/TapdMessageApiServiceImpl.java
View file @
e59d7e99
...
...
@@ -4,6 +4,7 @@ import com.alibaba.fastjson.JSON;
import
com.alibaba.fastjson.JSONObject
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.udesk.constant.UdeskSharedConstant
;
import
com.gic.udesk.constant.UdeskStatusEnum
;
import
com.gic.udesk.dto.*
;
import
com.gic.udesk.entity.TabUdeskMessage
;
import
com.gic.udesk.entity.TabUdeskTapdRel
;
...
...
@@ -37,6 +38,8 @@ public class TapdMessageApiServiceImpl implements TapdMessageApiService {
private
UdeskBaseApiService
udeskBaseApiService
;
@Autowired
private
UdeskTapdRelService
udeskTapdRelService
;
@Autowired
private
UdeskEnterpriseService
udeskEnterpriseService
;
/**
* tapd缺陷接口
...
...
@@ -137,6 +140,11 @@ public class TapdMessageApiServiceImpl implements TapdMessageApiService {
if
(!
updateUdeskTicketSuccess
)
{
return
msgId
.
toString
();
}
//同步到gic工单状态
String
statusEn
=
udeskTapdRelMap
.
get
(
latestBugFromTAPD
.
getStatus
()
+
UdeskConstant
.
MAP_UDESK_NAME_SUFFIX
);
if
(!
UdeskStatusEnum
.
CLOSED
.
getCode
().
equals
(
statusEn
))
{
udeskEnterpriseService
.
updateStatus
(
dataBaseTicket
.
getId
(),
statusEn
);
}
// 更新数据库中的数据 注: 放在udesk操作完成之后
dataBaseTicket
.
setStatusEn
(
udeskTapdRelMap
.
get
(
latestBugFromTAPD
.
getStatus
()
+
UdeskConstant
.
MAP_UDESK_NAME_SUFFIX
));
...
...
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/outer/impl/UdeskBaseApiServiceImpl.java
View file @
e59d7e99
package
com
.
gic
.
udesk
.
service
.
outer
.
impl
;
import
java.util.ArrayList
;
import
java.util.HashMap
;
import
java.util.List
;
import
java.util.Map
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.Resource
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.api.base.commons.ServiceResponse
;
import
com.gic.enterprise.error.ErrorCode
;
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.dto.uploadfile.UploadFileDTO
;
import
com.gic.udesk.entity.TabUdeskException
;
import
com.gic.udesk.entity.TabUdeskTapdRel
;
import
com.gic.udesk.service.UdeskBaseApiService
;
import
com.gic.udesk.service.UdeskExceptionService
;
import
com.gic.udesk.service.UdeskTapdRelService
;
import
com.gic.udesk.utils.UdeskConstant
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
javax.annotation.Resource
;
import
java.util.List
;
import
java.util.Map
;
import
com.gic.udesk.utils.UdeskHttpClientUtil
;
@Service
(
"udeskBaseApiService"
)
public
class
UdeskBaseApiServiceImpl
implements
UdeskBaseApiService
{
...
...
@@ -30,6 +43,14 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
@Resource
(
name
=
"udeskTapdRelMap"
)
private
Map
<
String
,
String
>
udeskTapdRelMap
;
/**
* 取工单模板列表
*/
private
final
static
String
UDESK_TEMPLATE
=
"/tickets/ticket_templates"
;
private
final
static
String
CUSTOM_FIELD_URL
=
"/custom_fields"
;
private
final
static
String
UPLOAD_FILE
=
"/tickets/upload_file"
;
@PostConstruct
public
void
init
()
{
...
...
@@ -90,4 +111,109 @@ public class UdeskBaseApiServiceImpl implements UdeskBaseApiService {
udeskExceptionService
.
save
(
exception
);
return
ServiceResponse
.
success
();
}
@Override
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
);
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
(),
"无数据"
);
}
@Override
public
ServiceResponse
<
String
>
ticketUploadFile
(
byte
[]
bytes
,
String
fileName
,
Integer
ticketId
)
{
logger
.
info
(
"udesk工单上传附件"
);
String
replyRespStr
=
UdeskHttpClientUtil
.
postUdeskJsonFromJsonForFile
(
UPLOAD_FILE
,
ticketId
,
bytes
,
fileName
);
logger
.
info
(
"desk工单上传附件返回为{}"
,
replyRespStr
);
UploadFileDTO
result
=
JSON
.
parseObject
(
replyRespStr
,
UploadFileDTO
.
class
);
if
(
result
.
getCode
()
==
UdeskConstant
.
UDESK_SUCCESS_CODE
)
{
return
ServiceResponse
.
success
();
}
return
ServiceResponse
.
failure
(
ErrorCode
.
SYSTEM_ERROR
.
getCode
(),
result
.
getMessage
());
}
private
List
<
UdeskResCustomFieldDataDTO
>
queryUdeskCustomField
(
List
<
String
>
fieldNameList
)
{
Map
<
String
,
Object
>
params
=
new
HashMap
<>(
4
);
//枚举,取值范围:["ticket", "customer", "organization"]
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
;
}
}
gic-platform-udesk-service/src/main/java/com/gic/udesk/service/outer/impl/UdeskMessageApiServiceImpl.java
View file @
e59d7e99
...
...
@@ -8,6 +8,7 @@ import java.util.Map;
import
javax.annotation.Resource
;
import
javax.validation.ConstraintViolationException
;
import
com.gic.udesk.constant.UdeskStatusEnum
;
import
com.gic.udesk.entity.TabUdeskTapdRel
;
import
com.gic.udesk.service.*
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -37,6 +38,8 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
private
UdeskTicketService
udeskTicketService
;
@Autowired
private
UdeskTapdRelService
udeskTapdRelService
;
@Autowired
private
UdeskEnterpriseService
udeskEnterpriseService
;
@Resource
(
name
=
"udeskTapdRelMap"
)
private
Map
<
String
,
String
>
udeskTapdRelMap
;
...
...
@@ -70,7 +73,9 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
tabUdeskMessage
.
setSource
(
messageDTO
.
getSource
());
tabUdeskMessage
.
setStatus
(
UdeskConstant
.
UNDELETED
);
tabUdeskMessage
.
setTopic
(
messageDTO
.
getTopic
());
udeskMessageService
.
save
(
tabUdeskMessage
);
int
messageId
=
udeskMessageService
.
save
(
tabUdeskMessage
);
//设置主键,用于update
tabUdeskMessage
.
setId
(
messageId
);
logger
.
info
(
"消息为{}已经保存成功"
,
messageDTO
);
//创建工单消息
if
(
UdeskConstant
.
TICKET_CREATE
.
equals
(
messageDTO
.
getEvent
()))
{
...
...
@@ -140,6 +145,8 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
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
);
...
...
@@ -210,6 +217,7 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
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
();
...
...
@@ -248,6 +256,10 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
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
()))
{
...
...
@@ -299,6 +311,49 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
return
null
;
}
@Override
public
ServiceResponse
<
String
>
saveUdeskMessageNoTapd
(
UdeskMessageDTO
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
();
//只修改gic状态,不生成本地工单数据,因为和同步到tapd触发器会冲突
updateGicTicketStatus
(
Integer
.
parseInt
(
id
),
ticket
.
getStatus_en
());
}
else
{
String
exceptionRecord
=
"工单id为"
+
id
+
"请求udesk工单详情异常,返回为"
+
detailStr
;
logger
.
info
(
exceptionRecord
);
udeskBaseApiService
.
saveUdeskException
(
exceptionRecord
);
}
}
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
();
//工单状态英文名称
String
statusEn
=
ticket
.
getStatus_en
();
//同步到gic工单状态
logger
.
info
(
"同步gic工单状态,ID:{}, 状态:{}"
,
Integer
.
parseInt
(
id
),
statusEn
);
updateGicTicketStatus
(
Integer
.
parseInt
(
id
),
statusEn
);
}
else
{
String
exceptionRecord
=
"工单id为"
+
id
+
"更新工单请求udesk工单详情异常,返回为"
+
detailStr
;
logger
.
info
(
exceptionRecord
);
udeskBaseApiService
.
saveUdeskException
(
exceptionRecord
);
}
}
return
ServiceResponse
.
success
();
}
/**
* udesk工单详情接口
* @param id
...
...
@@ -393,7 +448,7 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
List
<
TabUdeskTapdRel
>
udeskTapdRelList
=
udeskTapdRelService
.
list
(
params
);
for
(
TabUdeskTapdRel
tabUdeskTapdRel
:
udeskTapdRelList
)
{
try
{
Method
udeskMethod
=
TabUdeskT
apdRel
.
class
.
getMethod
(
tabUdeskTapdRel
.
getUdeskIdKey
());
Method
udeskMethod
=
TabUdeskT
icket
.
class
.
getMethod
(
tabUdeskTapdRel
.
getUdeskIdKey
());
String
value
=
(
String
)
udeskMethod
.
invoke
(
tabUdeskTicket
);
Method
tapdMethod
=
TapdBugDTO
.
class
.
getMethod
(
tabUdeskTapdRel
.
getTapdId
(),
String
.
class
);
tapdMethod
.
invoke
(
tapdBug
,
value
);
...
...
@@ -495,4 +550,13 @@ public class UdeskMessageApiServiceImpl implements UdeskMessageApiService {
udeskBaseApiService
.
saveTapdException
(
exceptionRecord
);
}
}
private
void
updateGicTicketStatus
(
Integer
ticketId
,
String
status
)
{
//同步到gic工单状态
logger
.
info
(
"同步gic工单状态,ID:{}, 状态:{}"
,
ticketId
,
status
);
//添加逻辑:如果是关闭状态,则不同步到gic侧
if
(!
UdeskStatusEnum
.
CLOSED
.
getCode
().
equals
(
status
))
{
udeskEnterpriseService
.
updateStatus
(
ticketId
,
status
);
}
}
}
gic-platform-udesk-service/src/main/java/com/gic/udesk/utils/UdeskConstant.java
View file @
e59d7e99
...
...
@@ -131,6 +131,25 @@ public class UdeskConstant {
public
static
final
String
UDESK_FIELD_TRANSACTOR
=
"SelectField_23591"
;
/**
* GIC后台对应的基础模块 级联字段
*/
public
static
final
String
GIC_BASE_MODULE_SELECT
=
"SelectField_56661"
;
/**
* GIC后台对应的基础模块 模板ID
*/
public
static
final
Integer
GIC_BASE_MODULE_TEMPLATE_ID
=
97811
;
/**
* GIC应用模块工单 应用模块名称
*/
public
static
final
String
APP_MODULE_NAME
=
"TextField_101931"
;
/**
* GIC应用模块工单 模板ID
*/
public
static
Integer
APP_MODULE_TEMPLATE_ID
=
99311
;
/**
* udesk来源的类型异常
*/
public
static
final
String
UDESK_EXP_TYPE
=
"udesk"
;
...
...
gic-platform-udesk-service/src/main/java/com/gic/udesk/utils/UdeskHttpClientUtil.java
View file @
e59d7e99
package
com
.
gic
.
udesk
.
utils
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.net.URISyntaxException
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
import
javax.net.ssl.SSLContext
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.ClientProtocolException
;
import
org.apache.http.client.methods.*
;
import
org.apache.http.client.utils.URIBuilder
;
...
...
@@ -12,6 +23,8 @@ import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.entity.mime.HttpMultipartMode
;
import
org.apache.http.entity.mime.MultipartEntityBuilder
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
...
...
@@ -19,14 +32,6 @@ import org.apache.http.util.EntityUtils;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
javax.net.ssl.SSLContext
;
import
java.io.IOException
;
import
java.net.URISyntaxException
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
public
class
UdeskHttpClientUtil
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
UdeskHttpClientUtil
.
class
);
...
...
@@ -97,6 +102,27 @@ public class UdeskHttpClientUtil {
}
/**
* udesk的post请求,Request Body 上传文件参数天聪
*/
public
static
String
postUdeskJsonFromJsonForFile
(
String
url
,
Integer
ticketId
,
byte
[]
bytes
,
String
fileName
)
{
long
timeStamp
=
System
.
currentTimeMillis
()
/
1000
;
url
=
UdeskConstant
.
UDESK_URI
+
url
+
"?email="
+
UdeskConstant
.
EMAIL
+
"×tamp="
+
timeStamp
+
"&sign="
+
UdeskUtils
.
getSign
(
timeStamp
);
logger
.
info
(
url
);
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
httpPost
=
new
HttpPost
(
url
);
response
=
getResponseForFile
(
bytes
,
fileName
,
ticketId
,
httpPost
);
return
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"POST请求{}失败,参数ticketId:{}"
,
url
,
ticketId
,
e
);
}
finally
{
closeResponse
(
response
);
}
return
null
;
}
/**
* udesk的put请求,Request Body
*/
public
static
String
putUdeskJsonFromJson
(
String
url
,
String
json
)
{
...
...
@@ -255,4 +281,29 @@ public class UdeskHttpClientUtil {
response
=
httpClient
.
execute
(
httpPost
);
return
response
;
}
/**
* 上传文件填充
* @param bytes
* @param fileName
* @param ticketId
* @param httpPost
* @return
* @throws IOException
* @throws ClientProtocolException
*/
private
static
CloseableHttpResponse
getResponseForFile
(
byte
[]
bytes
,
String
fileName
,
Integer
ticketId
,
HttpPost
httpPost
)
throws
IOException
,
ClientProtocolException
{
CloseableHttpResponse
response
;
//解决乱码,设置mode
MultipartEntityBuilder
multipartEntityBuilder
=
MultipartEntityBuilder
.
create
().
setMode
(
HttpMultipartMode
.
RFC6532
);
multipartEntityBuilder
.
addBinaryBody
(
"file"
,
new
ByteArrayInputStream
(
bytes
),
ContentType
.
DEFAULT_BINARY
,
fileName
);
multipartEntityBuilder
.
addTextBody
(
"ticket_id"
,
ticketId
.
toString
());
multipartEntityBuilder
.
addTextBody
(
"file_name"
,
fileName
);
HttpEntity
httpEntity
=
multipartEntityBuilder
.
build
();
httpPost
.
setEntity
(
httpEntity
);
// httpPost.setHeader("Content-Type", "application/octet-stream");
response
=
httpClient
.
execute
(
httpPost
);
return
response
;
}
}
gic-platform-udesk-service/src/main/resources/applicationContext-conf.xml
View file @
e59d7e99
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:context=
"http://www.springframework.org/schema/context"
xmlns:util=
"http://www.springframework.org/schema/util"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd"
>
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd"
>
<import
resource=
"classpath:applicationContext-init.xml"
/>
<import
resource=
"classpath:dubbo-gic-platform-udesk-service.xml"
/>
...
...
@@ -11,4 +17,6 @@
<import
resource=
"classpath*:redis-init.xml"
/>
<util:map
id=
"udeskTapdRelMap"
map-class=
"java.util.HashMap"
></util:map>
<context:component-scan
base-package=
"com.gic.udesk.*"
/>
</beans>
\ No newline at end of file
gic-platform-udesk-service/src/main/resources/dubbo-gic-platform-udesk-service.xml
View file @
e59d7e99
...
...
@@ -3,20 +3,21 @@
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo=
"http://code.alibabatech.com/schema/dubbo"
xmlns:context=
"http://www.springframework.org/schema/context"
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
xsi:schemaLocation=
"http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"
>
<context:component-scan
base-package=
"com.gic.udesk.*"
/>
<!-- 应用名称 -->
<dubbo:application
name=
"gic-platform-udesk-service"
/>
<dubbo:protocol
name=
"dubbo"
port=
"203
2
0"
/>
<dubbo:protocol
name=
"dubbo"
port=
"203
4
0"
/>
<dubbo:service
interface=
"com.gic.udesk.service.UdeskMessageApiService"
ref=
"udeskMessageApiService"
retries=
"0"
/>
<dubbo:service
interface=
"com.gic.udesk.service.TapdConfigApiService"
ref=
"tapdConfigApiService"
retries=
"0"
/>
<dubbo:service
interface=
"com.gic.udesk.service.TapdMessageApiService"
ref=
"tapdMessageApiService"
retries=
"0"
/>
<dubbo:service
interface=
"com.gic.udesk.service.UdeskBaseApiService"
ref=
"udeskBaseApiService"
retries=
"0"
/>
<dubbo:service
interface=
"com.gic.udesk.service.GicTicketApiService"
ref=
"gicTicketApiService"
retries=
"0"
/>
</beans>
gic-platform-udesk-service/src/main/resources/mapper/TabUdeskCustomersMapper.xml
0 → 100644
View file @
e59d7e99
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper
namespace=
"com.gic.udesk.dao.mapper.TabUdeskCustomersMapper"
>
<resultMap
id=
"BaseResultMap"
type=
"com.gic.udesk.entity.TabUdeskCustomers"
>
<id
column=
"id"
jdbcType=
"INTEGER"
property=
"id"
/>
<result
column=
"enterprise_id"
jdbcType=
"INTEGER"
property=
"enterpriseId"
/>
<result
column=
"user_id"
jdbcType=
"INTEGER"
property=
"userId"
/>
<result
column=
"customer_id"
jdbcType=
"INTEGER"
property=
"customerId"
/>
<result
column=
"create_time"
jdbcType=
"TIMESTAMP"
property=
"createTime"
/>
</resultMap>
<sql
id=
"Base_Column_List"
>
id, enterprise_id, user_id, customer_id, create_time
</sql>
<select
id=
"selectByPrimaryKey"
parameterType=
"java.lang.Integer"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
/>
from tab_udesk_customers
where id = #{id,jdbcType=INTEGER}
</select>
<delete
id=
"deleteByPrimaryKey"
parameterType=
"java.lang.Integer"
>
delete from tab_udesk_customers
where id = #{id,jdbcType=INTEGER}
</delete>
<insert
id=
"insert"
parameterType=
"com.gic.udesk.entity.TabUdeskCustomers"
>
insert into tab_udesk_customers (id, enterprise_id, user_id,
customer_id, create_time)
values (#{id,jdbcType=INTEGER}, #{enterpriseId,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER},
#{customerId,jdbcType=INTEGER}, #{createTime,jdbcType=TIMESTAMP})
</insert>
<insert
id=
"insertSelective"
parameterType=
"com.gic.udesk.entity.TabUdeskCustomers"
>
insert into tab_udesk_customers
<trim
prefix=
"("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
id,
</if>
<if
test=
"enterpriseId != null"
>
enterprise_id,
</if>
<if
test=
"userId != null"
>
user_id,
</if>
<if
test=
"customerId != null"
>
customer_id,
</if>
<if
test=
"createTime != null"
>
create_time,
</if>
</trim>
<trim
prefix=
"values ("
suffix=
")"
suffixOverrides=
","
>
<if
test=
"id != null"
>
#{id,jdbcType=INTEGER},
</if>
<if
test=
"enterpriseId != null"
>
#{enterpriseId,jdbcType=INTEGER},
</if>
<if
test=
"userId != null"
>
#{userId,jdbcType=INTEGER},
</if>
<if
test=
"customerId != null"
>
#{customerId,jdbcType=INTEGER},
</if>
<if
test=
"createTime != null"
>
#{createTime,jdbcType=TIMESTAMP},
</if>
</trim>
</insert>
<update
id=
"updateByPrimaryKeySelective"
parameterType=
"com.gic.udesk.entity.TabUdeskCustomers"
>
update tab_udesk_customers
<set>
<if
test=
"enterpriseId != null"
>
enterprise_id = #{enterpriseId,jdbcType=INTEGER},
</if>
<if
test=
"userId != null"
>
user_id = #{userId,jdbcType=INTEGER},
</if>
<if
test=
"customerId != null"
>
customer_id = #{customerId,jdbcType=INTEGER},
</if>
<if
test=
"createTime != null"
>
create_time = #{createTime,jdbcType=TIMESTAMP},
</if>
</set>
where id = #{id,jdbcType=INTEGER}
</update>
<update
id=
"updateByPrimaryKey"
parameterType=
"com.gic.udesk.entity.TabUdeskCustomers"
>
update tab_udesk_customers
set enterprise_id = #{enterpriseId,jdbcType=INTEGER},
user_id = #{userId,jdbcType=INTEGER},
customer_id = #{customerId,jdbcType=INTEGER},
create_time = #{createTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<select
id=
"countCustomerId"
resultMap=
"BaseResultMap"
>
select
<include
refid=
"Base_Column_List"
></include>
from tab_udesk_customers
where enterprise_id = #{enterpriseId}
and user_id = #{userId}
</select>
</mapper>
\ No newline at end of file
gic-platform-udesk-service/src/main/resources/mapper/TabUdeskEnterpriseMapper.xml
View file @
e59d7e99
...
...
@@ -18,7 +18,7 @@
ticket_title, ticket_status, create_time, update_time
</sql>
<select
id=
"selectByPrimaryKey"
parameterType=
"java.lang.Integer"
resultMap=
"BaseResultMap"
>
select
select
<include
refid=
"Base_Column_List"
/>
from tab_udesk_enterprise
where id = #{id,jdbcType=INTEGER}
...
...
@@ -150,4 +150,35 @@
update_time = #{updateTime,jdbcType=TIMESTAMP}
where id = #{id,jdbcType=INTEGER}
</update>
<select
id=
"page"
parameterType=
"com.gic.udesk.qo.TicketListQO"
resultMap=
"BaseResultMap"
>
SELECT
<include
refid=
"Base_Column_List"
></include>
from tab_udesk_enterprise
where 1=1
<if
test=
"search != null and search != '' "
>
and (business_module_name like concat('%', #{search}, '%')
or ticket_num like concat('%', #{search}, '%')
or ticket_title like concat('%', #{search}, '%')
)
</if>
<if
test=
"ticketStatus != null and ticketStatus != '' "
>
and ticket_status = #{ticketStatus}
</if>
<if
test=
"businessModule != null and businessModule != '' "
>
and business_module = #{businessModule}
</if>
<if
test=
"startTime != null and startTime != '' "
>
and create_time >= #{startTime}
</if>
<if
test=
"endTime != null and endTime != '' "
>
and create_time
<
= #{endTime}
</if>
order by create_time desc
</select>
<update
id=
"updateStatus"
>
update tab_udesk_enterprise set ticket_status = #{status}
where ticket_id = #{ticketId}
</update>
</mapper>
\ No newline at end of file
gic-platform-udesk-service/src/main/resources/mapper/TabUdeskTapdRelMapper.xml
View file @
e59d7e99
...
...
@@ -167,16 +167,16 @@
from tab_udesk_tapd_rel
where status = 1
<if
test=
"relType != null"
>
and rel_type = #{relType,jdbcType=INTEGER}
,
and rel_type = #{relType,jdbcType=INTEGER}
</if>
<if
test=
"workspaceId != null"
>
and workspace_id = #{workspaceId,jdbcType=CHAR}
,
and workspace_id = #{workspaceId,jdbcType=CHAR}
</if>
<if
test=
"tapdName != null"
>
and tapd_name = #{tapdName,jdbcType=CHAR}
,
and tapd_name = #{tapdName,jdbcType=CHAR}
</if>
<if
test=
"udeskName != null"
>
and udesk_name = #{udeskName,jdbcType=CHAR}
,
and udesk_name = #{udeskName,jdbcType=CHAR}
</if>
</select>
...
...
gic-platform-udesk-service/src/main/resources/mapper/TabUdeskTicketMapper.xml
View file @
e59d7e99
...
...
@@ -333,10 +333,10 @@
from tab_udesk_ticket
where status = 1
<if
test=
"bugId != null"
>
and bug_id = #{bugId,jdbcType=VARCHAR}
,
and bug_id = #{bugId,jdbcType=VARCHAR}
</if>
<if
test=
"workspaceId != null"
>
and workspace_id = #{workspaceId,jdbcType=VARCHAR}
,
and workspace_id = #{workspaceId,jdbcType=VARCHAR}
</if>
</select>
</mapper>
\ No newline at end of file
gic-platform-udesk-web/pom.xml
View file @
e59d7e99
...
...
@@ -69,7 +69,7 @@
<dependency>
<groupId>
com.gic
</groupId>
<artifactId>
gic-platform-udesk-api
</artifactId>
<version>
${gic-platform-
enterprise
-api}
</version>
<version>
${gic-platform-
udesk
-api}
</version>
</dependency>
<dependency>
<groupId>
com.gic
</groupId>
...
...
@@ -129,11 +129,6 @@
<artifactId>
gic-platform-enterprise-api
</artifactId>
<version>
${gic-platform-enterprise-api}
</version>
</dependency>
<dependency>
<groupId>
com.gic
</groupId>
<artifactId>
gic-enterprise-download
</artifactId>
<version>
${gic-enterprise-download}
</version>
</dependency>
</dependencies>
<build>
...
...
@@ -154,7 +149,7 @@
<artifactId>
spring-boot-maven-plugin
</artifactId>
<version>
2.1.5.RELEASE
</version>
<configuration>
<mainClass>
com.gic.
auth
.web.Main
</mainClass>
<mainClass>
com.gic.
udesk
.web.Main
</mainClass>
<excludeGroupIds>
ch.qos.logback
</excludeGroupIds>
</configuration>
<executions>
...
...
gic-platform-udesk-web/src/main/java/com/gic/udesk/web/controller/GicTicketController.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
web
.
controller
;
import
java.util.Map
;
import
javax.servlet.http.HttpServletRequest
;
import
com.gic.enterprise.utils.UserDetailUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.multipart.MultipartFile
;
import
org.springframework.web.multipart.MultipartHttpServletRequest
;
import
com.alibaba.fastjson.JSON
;
import
com.gic.commons.webapi.reponse.RestResponse
;
import
com.gic.enterprise.ano.IgnoreLogin
;
import
com.gic.enterprise.error.ErrorCode
;
import
com.gic.enterprise.utils.ResultControllerUtils
;
import
com.gic.udesk.constant.*
;
import
com.gic.udesk.dto.gic.GicTicketDTO
;
import
com.gic.udesk.dto.uploadfile.UploadFileDTO
;
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
;
@RestController
public
class
GicTicketController
{
private
static
final
Logger
LOGGER
=
LogManager
.
getLogger
(
GicTicketController
.
class
);
@Autowired
private
UdeskBaseApiService
udeskBaseApiService
;
@Autowired
private
GicTicketApiService
gicTicketApiService
;
@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
));
}
/**
* 工单回复信息
* @param ticketId
* @param currentPage
* @param pageSize
* @return
*/
@RequestMapping
(
"/get-ticket-replies"
)
@IgnoreLogin
public
RestResponse
getTicketReplies
(
Integer
ticketId
,
Integer
currentPage
,
Integer
pageSize
)
{
return
ResultControllerUtils
.
commonResult
(
gicTicketApiService
.
getTicketReplies
(
ticketId
,
currentPage
,
pageSize
));
}
@RequestMapping
(
"/get-ticket-detail"
)
@IgnoreLogin
public
RestResponse
getTicketDetail
(
Integer
ticketId
)
{
return
ResultControllerUtils
.
commonResult
(
gicTicketApiService
.
getTicketDetailById
(
ticketId
));
}
@RequestMapping
(
"/add-ticket"
)
@IgnoreLogin
public
RestResponse
addTicket
(
GicTicketDTO
dto
)
{
dto
.
setTicket_field
(
JSON
.
parseObject
(
dto
.
getTicketFieldJsonStr
(),
Map
.
class
));
dto
.
setGicEnterpriseId
(
UserDetailUtils
.
getUserDetail
().
getEnterpriseId
());
dto
.
setGicUserId
(
UserDetailUtils
.
getUserDetail
().
getUserId
());
dto
.
setGicUserName
(
UserDetailUtils
.
getUserDetail
().
getUserInfo
().
getUserName
());
dto
.
setGicEnterpriseName
(
UserDetailUtils
.
getUserDetail
().
getEnterpriseInfo
().
getEnterpriseName
());
return
ResultControllerUtils
.
commonResult
(
gicTicketApiService
.
saveTicket
(
dto
));
}
@RequestMapping
(
"/list-ticket"
)
@IgnoreLogin
public
RestResponse
page
(
TicketListQO
params
)
{
return
ResultControllerUtils
.
commonResult
(
gicTicketApiService
.
page
(
params
));
}
@RequestMapping
(
"/close-ticket"
)
@IgnoreLogin
public
RestResponse
closeTicket
(
Integer
ticketId
)
{
return
ResultControllerUtils
.
commonResult
(
gicTicketApiService
.
closeTicket
(
ticketId
));
}
@RequestMapping
(
"/ticket-upload-file"
)
@IgnoreLogin
public
RestResponse
getCustomFieldFromUdeskTemplates
(
HttpServletRequest
request
)
throws
Exception
{
String
ticketId
=
request
.
getParameter
(
"ticketId"
);
if
(!
StringUtils
.
isNumeric
(
ticketId
))
{
return
RestResponse
.
failure
(
ErrorCode
.
PARAMETER_ERROR
.
getCode
(),
"工单ID错误,数值非法"
);
}
MultipartHttpServletRequest
multipartRequest
=
(
MultipartHttpServletRequest
)
request
;
//上传一个文件处理方式,如果是多个,用getFiles
MultipartFile
file
=
multipartRequest
.
getFile
(
"file"
);
if
(
file
.
isEmpty
())
{
return
RestResponse
.
failure
(
ErrorCode
.
PARAMETER_ERROR
.
getCode
(),
"文件为空"
);
}
LOGGER
.
info
(
"udesk工单上传附件"
);
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
)
{
return
RestResponse
.
success
();
}
return
RestResponse
.
failure
(
ErrorCode
.
SYSTEM_ERROR
.
getCode
(),
result
.
getMessage
());
}
/**
* 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
());
}
@RequestMapping
(
"/ticket-status-enum"
)
@IgnoreLogin
public
RestResponse
ticketStatusEnum
()
{
return
RestResponse
.
success
(
UdeskStatusEnum
.
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
());
}
}
gic-platform-udesk-web/src/main/java/com/gic/udesk/web/controller/MessageController.java
View file @
e59d7e99
...
...
@@ -33,6 +33,19 @@ public class MessageController {
return
ResultControllerUtils
.
commonResult
(
udeskMessageApiService
.
saveUdeskMessage
(
udeskMessage
));
}
/**
* 不需要同步到tapd的触发器
* @param udeskMessage
* @return
*/
@IgnoreLogin
@RequestMapping
(
"udesk-message-no-tapd"
)
public
RestResponse
udeskMessageNoTapd
(
@RequestBody
UdeskMessageDTO
udeskMessage
)
{
logger
.
info
(
"接收UDESK不需要同步tapd的消息是:{}"
,
udeskMessage
);
udeskMessage
.
setSource
(
UdeskSharedConstant
.
UDESK_SOURCE
);
return
ResultControllerUtils
.
commonResult
(
udeskMessageApiService
.
saveUdeskMessageNoTapd
(
udeskMessage
));
}
@RequestMapping
(
value
=
"tapd-message"
,
method
=
RequestMethod
.
POST
)
@IgnoreLogin
public
RestResponse
tapdMessage
(
@RequestBody
String
tapdMessageStr
)
{
...
...
gic-platform-udesk-web/src/main/java/com/gic/udesk/web/controller/TapdConfigController.java
View file @
e59d7e99
package
com
.
gic
.
udesk
.
web
.
controller
;
import
com.gic.udesk.service.UdeskBaseApiService
;
import
org.apache.logging.log4j.LogManager
;
import
org.apache.logging.log4j.Logger
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
gic-platform-udesk-web/src/main/java/com/gic/udesk/web/utils/UdeskHttpClientUtil.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
web
.
utils
;
import
java.io.ByteArrayInputStream
;
import
java.io.IOException
;
import
java.net.URISyntaxException
;
import
java.security.NoSuchAlgorithmException
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Set
;
import
javax.net.ssl.SSLContext
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.client.ClientProtocolException
;
import
org.apache.http.client.methods.*
;
import
org.apache.http.client.utils.URIBuilder
;
import
org.apache.http.config.Registry
;
import
org.apache.http.config.RegistryBuilder
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.LayeredConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.entity.ContentType
;
import
org.apache.http.entity.StringEntity
;
import
org.apache.http.entity.mime.HttpMultipartMode
;
import
org.apache.http.entity.mime.MultipartEntityBuilder
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.apache.http.impl.client.HttpClients
;
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
;
import
org.springframework.web.multipart.MultipartFile
;
public
class
UdeskHttpClientUtil
{
private
static
final
Logger
logger
=
LogManager
.
getLogger
(
UdeskHttpClientUtil
.
class
);
private
static
PoolingHttpClientConnectionManager
connectionManager
=
null
;
private
static
CloseableHttpClient
httpClient
=
null
;
static
{
LayeredConnectionSocketFactory
sslsf
=
null
;
try
{
sslsf
=
new
SSLConnectionSocketFactory
(
SSLContext
.
getDefault
());
Registry
<
ConnectionSocketFactory
>
socketFactoryRegistry
=
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
"https"
,
sslsf
).
register
(
"http"
,
new
PlainConnectionSocketFactory
()).
build
();
connectionManager
=
new
PoolingHttpClientConnectionManager
(
socketFactoryRegistry
);
connectionManager
.
setMaxTotal
(
500
);
connectionManager
.
setDefaultMaxPerRoute
(
100
);
httpClient
=
HttpClients
.
custom
().
setConnectionManager
(
connectionManager
).
build
();
}
catch
(
NoSuchAlgorithmException
e
)
{
logger
.
info
(
"加载UdeskHttpClientUtil失败"
,
e
);
}
}
/**
* udesk的post请求,Request Body 上传文件参数天聪
*/
public
static
String
postUdeskJsonFromJsonForFile
(
String
url
,
Integer
ticketId
,
MultipartFile
file
)
{
long
timeStamp
=
System
.
currentTimeMillis
()
/
1000
;
url
=
"http://demogic.udesk.cn/open_api_v1"
+
url
+
"?email=jingjiawei@demogic.com"
+
"×tamp="
+
timeStamp
+
"&sign="
+
UdeskUtils
.
getSign
(
timeStamp
);
logger
.
info
(
url
);
CloseableHttpResponse
response
=
null
;
try
{
HttpPost
httpPost
=
new
HttpPost
(
url
);
response
=
getResponseForFile
(
file
,
ticketId
,
httpPost
);
return
EntityUtils
.
toString
(
response
.
getEntity
(),
"utf-8"
);
}
catch
(
Exception
e
)
{
logger
.
info
(
"POST请求{}失败,参数ticketId:{}"
,
url
,
ticketId
,
e
);
}
finally
{
closeResponse
(
response
);
}
return
null
;
}
/**
* 铁臂-使用httpclient自带的URIBuilder建立URI
* @param uri
* @param requestParams
* @return String
* @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
())
{
String
key
=
entry
.
getKey
();
if
(
StringUtils
.
isNotBlank
(
key
))
{
uriBuilder
.
setParameter
(
key
,
String
.
valueOf
(
entry
.
getValue
()));
}
}
}
return
uriBuilder
.
build
().
toString
();
}
/**
* 拼接URL
*/
private
static
String
getURL
(
String
url
,
Map
<
String
,
Object
>
param
)
{
if
(
param
!=
null
&&
param
.
size
()
>
0
)
{
StringBuilder
urlSB
=
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
(
"?"
);
isFirst
=
false
;
}
else
{
urlSB
.
append
(
"&"
);
}
urlSB
.
append
(
entry
.
getKey
()).
append
(
"="
).
append
(
entry
.
getValue
());
}
return
urlSB
.
toString
();
}
return
url
;
}
/**
* 关闭Response
*/
private
static
void
closeResponse
(
CloseableHttpResponse
response
)
{
if
(
response
!=
null
)
{
try
{
response
.
close
();
}
catch
(
Exception
e
)
{
logger
.
info
(
"关闭response失败"
,
e
);
}
}
}
/**
* 获取Response
*/
private
static
CloseableHttpResponse
getResponse
(
String
json
,
HttpPost
httpPost
)
throws
IOException
,
ClientProtocolException
{
CloseableHttpResponse
response
;
if
(
json
!=
null
&&
(!
""
.
equals
(
json
.
trim
())))
{
StringEntity
entity
=
new
StringEntity
(
json
,
ContentType
.
APPLICATION_JSON
);
httpPost
.
setEntity
(
entity
);
}
response
=
httpClient
.
execute
(
httpPost
);
return
response
;
}
/**
* 上传文件填充
* @param file
* @param ticketId
* @param httpPost
* @return
* @throws IOException
* @throws ClientProtocolException
*/
private
static
CloseableHttpResponse
getResponseForFile
(
MultipartFile
file
,
Integer
ticketId
,
HttpPost
httpPost
)
throws
IOException
,
ClientProtocolException
{
CloseableHttpResponse
response
;
//解决乱码,设置mode
MultipartEntityBuilder
multipartEntityBuilder
=
MultipartEntityBuilder
.
create
().
setMode
(
HttpMultipartMode
.
RFC6532
);
multipartEntityBuilder
.
addBinaryBody
(
"file"
,
file
.
getInputStream
(),
ContentType
.
APPLICATION_OCTET_STREAM
,
file
.
getOriginalFilename
());
multipartEntityBuilder
.
addTextBody
(
"ticket_id"
,
ticketId
.
toString
());
multipartEntityBuilder
.
addTextBody
(
"file_name"
,
file
.
getOriginalFilename
());
HttpEntity
httpEntity
=
multipartEntityBuilder
.
build
();
httpPost
.
setEntity
(
httpEntity
);
response
=
httpClient
.
execute
(
httpPost
);
return
response
;
}
}
gic-platform-udesk-web/src/main/java/com/gic/udesk/web/utils/UdeskUtils.java
0 → 100644
View file @
e59d7e99
package
com
.
gic
.
udesk
.
web
.
utils
;
import
org.apache.commons.codec.digest.DigestUtils
;
public
class
UdeskUtils
{
public
static
String
getSign
(
long
timeStamp
){
return
DigestUtils
.
sha1Hex
(
"jingjiawei@demogic.com&2a83c020-2309-4064-b4eb-af1367425c99&"
+
timeStamp
);
}
}
gic-platform-udesk-web/src/main/resources/dubbo-gic-platform-udesk-web.xml
View file @
e59d7e99
...
...
@@ -17,5 +17,7 @@
<dubbo:reference
interface=
"com.gic.udesk.service.UdeskMessageApiService"
id=
"udeskMessageApiService"
timeout=
"6000"
/>
<dubbo:reference
interface=
"com.gic.udesk.service.TapdMessageApiService"
id=
"tapdMessageApiService"
timeout=
"6000"
/>
<dubbo:reference
interface=
"com.gic.udesk.service.TapdConfigApiService"
id=
"tapdConfigApiService"
timeout=
"6000"
/>
<dubbo:reference
interface=
"com.gic.udesk.service.UdeskBaseApiService"
id=
"udeskBaseApiService"
timeout=
"6000"
/>
<dubbo:reference
interface=
"com.gic.udesk.service.GicTicketApiService"
id=
"gicTicketApiService"
timeout=
"6000"
/>
</beans>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment