Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
仟微科技
Link Wechat
提交
ff2dad91
Link Wechat
项目概览
仟微科技
/
Link Wechat
通知
48
Star
3
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
1
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Link Wechat
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
1
合并请求
1
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
提交
ff2dad91
编写于
10月 14, 2021
作者:
孙
孙喜旺
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增企微客服相关接口
上级
79bfa45f
变更
8
显示空白变更内容
内联
并排
Showing
8 changed file
with
420 addition
and
0 deletion
+420
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/client/kf/WeKfClient.java
.../main/java/com/linkwechat/wecom/client/kf/WeKfClient.java
+135
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfCustomerInfoDto.java
...m/linkwechat/wecom/domain/dto/kf/WeKfCustomerInfoDto.java
+52
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfDto.java
...main/java/com/linkwechat/wecom/domain/dto/kf/WeKfDto.java
+60
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfGetMsgDto.java
...ava/com/linkwechat/wecom/domain/dto/kf/WeKfGetMsgDto.java
+44
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfListDto.java
.../java/com/linkwechat/wecom/domain/dto/kf/WeKfListDto.java
+27
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfMsgDto.java
...n/java/com/linkwechat/wecom/domain/dto/kf/WeKfMsgDto.java
+44
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfUserDto.java
.../java/com/linkwechat/wecom/domain/dto/kf/WeKfUserDto.java
+28
-0
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfUserListDto.java
...a/com/linkwechat/wecom/domain/dto/kf/WeKfUserListDto.java
+30
-0
未找到文件。
linkwe-wecom/src/main/java/com/linkwechat/wecom/client/kf/WeKfClient.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.client.kf
;
import
com.dtflys.forest.annotation.*
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
com.linkwechat.wecom.domain.dto.kf.*
;
import
com.linkwechat.wecom.interceptor.WeAccessTokenInterceptor
;
import
com.linkwechat.wecom.retry.WeCommonRetryWhen
;
/**
* @author danmo
* @description 客服相关接口
* @date 2021/10/9 14:09
**/
@BaseRequest
(
baseURL
=
"${weComServerUrl}${weComePrefix}"
,
interceptor
=
WeAccessTokenInterceptor
.
class
)
@Retry
(
maxRetryCount
=
"3"
,
maxRetryInterval
=
"1000"
,
condition
=
WeCommonRetryWhen
.
class
)
public
interface
WeKfClient
{
/**
* 添加客服
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request
(
url
=
"/kf/account/add"
,
type
=
"POST"
)
public
WeKfDto
addAccount
(
@JSONBody
WeKfDto
dto
);
/**
* 删除客服
*
* @param dto in {@link WeKfDto}
* @return {@link WeResultDto}
*/
@Request
(
url
=
"/kf/account/del"
,
type
=
"POST"
)
public
WeResultDto
deleteAccount
(
@JSONBody
WeKfDto
dto
);
/**
* 修改客服信息
*
* @param dto in {@link WeKfDto}
* @return {@link WeResultDto}
*/
@Request
(
url
=
"/kf/account/update"
,
type
=
"POST"
)
public
WeResultDto
updateAccount
(
@JSONBody
WeKfDto
dto
);
/**
* 获取客服帐号列表
*
* @return {@link WeKfListDto}
*/
@Request
(
url
=
"/kf/account/list"
,
type
=
"GET"
)
public
WeKfListDto
list
();
/**
* 获取客服帐号链接
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request
(
url
=
"/kf/add_contact_way"
,
type
=
"POST"
)
public
WeKfDto
addContactWay
(
@JSONBody
WeKfDto
dto
);
/**
* 添加接待人员
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfUserListDto}
*/
@Request
(
url
=
"/kf/servicer/add"
,
type
=
"POST"
)
public
WeKfUserListDto
addServicer
(
@JSONBody
WeKfDto
dto
);
/**
* 删除接待人员
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfUserListDto}
*/
@Request
(
url
=
"/kf/servicer/del"
,
type
=
"POST"
)
public
WeKfUserListDto
delServicer
(
@JSONBody
WeKfDto
dto
);
/**
* 获取接待人员列表
*
* @param openKfId 客服id
* @return {@link WeKfUserListDto}
*/
@Request
(
url
=
"/kf/servicer/list"
,
type
=
"GET"
)
public
WeKfUserListDto
servicerList
(
@Query
(
"open_kfid"
)
String
openKfId
);
/**
* 获取会话状态
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request
(
url
=
"/kf/service_state/get"
,
type
=
"POST"
)
public
WeKfDto
getServiceState
(
@JSONBody
WeKfDto
dto
);
/**
* 变更会话状态
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfDto}
*/
@Request
(
url
=
"/kf/service_state/trans"
,
type
=
"POST"
)
public
WeKfDto
transServiceState
(
@JSONBody
WeKfDto
dto
);
/**
* 发送消息
*
* @param dto in {@link WeKfMsgDto}
* @return {@link WeKfMsgDto}
*/
@Request
(
url
=
"/kf/send_msg"
,
type
=
"POST"
)
public
WeKfMsgDto
sendMsg
(
@JSONBody
WeKfMsgDto
dto
);
/**
* 读取消息
*
* @param dto in {@link WeKfGetMsgDto}
* @return {@link WeKfGetMsgDto}
*/
@Request
(
url
=
"/kf/sync_msg"
,
type
=
"POST"
)
public
WeKfGetMsgDto
syncMsg
(
@JSONBody
WeKfGetMsgDto
dto
);
/**
* 客户基本信息获取
*
* @param dto in {@link WeKfDto}
* @return {@link WeKfCustomerInfoDto}
*/
@Request
(
url
=
"/kf/customer/batchget"
,
type
=
"POST"
)
public
WeKfCustomerInfoDto
getCustomerInfoBatch
(
@JSONBody
WeKfDto
dto
);
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfCustomerInfoDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
java.util.List
;
/**
* @author danmo
* @description 客服客户信息
* @date 2021/10/9 15:49
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfCustomerInfoDto
extends
WeResultDto
{
@ApiModelProperty
(
"微信客户列表"
)
private
List
<
WeCustomerServiceCustomerInfo
>
customerList
;
@ApiModelProperty
(
"无效的客户id"
)
private
List
<
String
>
invalidExternalUserId
;
@ApiModel
@Data
public
static
class
WeCustomerServiceCustomerInfo
{
@ApiModelProperty
(
"外部联系人id"
)
private
String
externalUserId
;
@ApiModelProperty
(
"昵称"
)
private
String
nickName
;
@ApiModelProperty
(
"头像"
)
private
String
avatar
;
@ApiModelProperty
(
"性别"
)
private
String
gender
;
@ApiModelProperty
(
"unionid"
)
private
String
unionId
;
}
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
java.util.List
;
/**
* @author danmo
* @description 客服企微实体
* @date 2021/10/9 14:36
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfDto
extends
WeResultDto
{
@ApiModelProperty
(
"客服帐号ID"
)
private
String
open_kfid
;
@ApiModelProperty
(
"客服名称"
)
private
String
name
;
@ApiModelProperty
(
"客服头像"
)
private
String
avatar
;
@ApiModelProperty
(
"客服头像临时素材id"
)
private
String
media_id
;
@ApiModelProperty
(
"客服链接"
)
private
String
url
;
@ApiModelProperty
(
"场景值"
)
private
String
scene
;
@ApiModelProperty
(
"接待人员userid列表"
)
private
List
<
String
>
userid_list
;
@ApiModelProperty
(
"微信客户的external_userid"
)
private
String
external_userid
;
@ApiModelProperty
(
"当前的会话状态"
)
private
Integer
service_state
;
@ApiModelProperty
(
"接待人员的userid,仅当state=3时有效"
)
private
String
servicer_userid
;
@ApiModelProperty
(
"用于发送响应事件消息的code,将会话初次变更为service_state为2和3时,返回回复语code,service_state为4时,返回结束语code。"
)
private
String
msg_code
;
@ApiModelProperty
(
"external_userid列表 超过100个需分批调用"
)
private
List
<
String
>
external_userid_list
;
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfGetMsgDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.alibaba.fastjson.JSONObject
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
javax.validation.constraints.NotNull
;
import
java.util.List
;
/**
* @author danmo
* @description 客服消息
* @date 2021/10/9 15:32
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfGetMsgDto
extends
WeResultDto
{
@ApiModelProperty
(
"上一次调用时返回的next_cursor"
)
private
String
cursor
;
@ApiModelProperty
(
"回调事件返回的token字段,10分钟内有效"
)
private
String
token
;
@ApiModelProperty
(
"期望请求的数据量,默认值和最大值都为1000"
)
private
String
limit
;
@ApiModelProperty
(
"下次调用带上该值则从该key值往后拉,用于增量拉取"
)
private
String
nextCursor
;
@ApiModelProperty
(
"是否还有更多数据。0-否;1-是"
)
private
String
hasMore
;
@ApiModelProperty
(
"消息列表"
)
private
List
<
JSONObject
>
msgList
;
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfListDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
java.util.List
;
/**
* @author danmo
* @description 客服账号列表企微实体
* @date 2021/10/9 14:36
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfListDto
extends
WeResultDto
{
@ApiModelProperty
(
"帐号信息列表"
)
private
List
<
WeKfDto
>
accountList
;
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfMsgDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.alibaba.fastjson.JSONObject
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
javax.validation.constraints.NotNull
;
/**
* @author danmo
* @description 客服消息
* @date 2021/10/9 15:32
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfMsgDto
extends
WeResultDto
{
@ApiModelProperty
(
"指定接收消息的客户UserID"
)
@NotNull
(
message
=
"客户UserID不能为空"
)
private
String
touser
;
@ApiModelProperty
(
"指定发送消息的客服帐号ID"
)
@NotNull
(
message
=
"客服帐号ID不能为空"
)
private
String
open_kfid
;
@ApiModelProperty
(
value
=
"指定接收消息的客户UserID"
,
allowEmptyValue
=
true
)
private
String
msgid
;
@ApiModelProperty
(
"指定接收消息的客户UserID"
)
@NotNull
(
message
=
"消息类型不能为空"
)
private
String
msgtype
;
@ApiModelProperty
(
"消息内容"
)
private
JSONObject
context
;
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfUserDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
/**
* @author danmo
* @description 客服接待人员
* @date 2021/10/9 15:19
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfUserDto
extends
WeResultDto
{
@ApiModelProperty
(
"接待人员的userid"
)
private
String
userId
;
@ApiModelProperty
(
"接待人员的接待状态。0:接待中,1:停止接待"
)
private
Integer
status
;
}
linkwe-wecom/src/main/java/com/linkwechat/wecom/domain/dto/kf/WeKfUserListDto.java
0 → 100644
浏览文件 @
ff2dad91
package
com.linkwechat.wecom.domain.dto.kf
;
import
com.linkwechat.wecom.domain.dto.WeResultDto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.AllArgsConstructor
;
import
lombok.Data
;
import
lombok.NoArgsConstructor
;
import
lombok.experimental.SuperBuilder
;
import
java.util.List
;
/**
* @author danmo
* @description 客服接待人员
* @date 2021/10/9 15:19
**/
@ApiModel
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
public
class
WeKfUserListDto
extends
WeResultDto
{
@ApiModelProperty
(
"操作结果"
)
private
List
<
WeKfUserDto
>
resultList
;
@ApiModelProperty
(
"客服帐号的接待人员列表"
)
private
List
<
WeKfUserDto
>
servicerList
;
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录