From 3534234d917b883266fc88ba00fccb3ace97bb5e Mon Sep 17 00:00:00 2001 From: BinaryWang Date: Tue, 12 Jul 2016 18:00:30 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8C=89=E7=85=A7=E6=9C=80=E6=96=B0=E6=96=87?= =?UTF-8?q?=E6=A1=A3=E5=AF=B9=E5=AE=A2=E6=9C=8D=E7=AE=A1=E7=90=86=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E8=BF=9B=E8=A1=8C=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin/mp/api/WxMpKefuService.java | 23 ++++-- .../mp/api/impl/WxMpKefuServiceImpl.java | 8 ++ .../kefu/request/WxMpKfAccountRequest.java | 60 +++++---------- .../mp/bean/kefu/result/WxMpKfInfo.java | 73 +++++++++++++++---- .../mp/api/impl/WxMpKefuServiceImplTest.java | 12 ++- 5 files changed, 109 insertions(+), 67 deletions(-) diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java index 37799d13a..6233e6768 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/WxMpKefuService.java @@ -24,7 +24,7 @@ public interface WxMpKefuService { /** *
    * 获取客服基本信息
-   * 详情请见:客服管理
+   * 详情请见:客服管理
    * 接口url格式:https://api.weixin.qq.com/cgi-bin/customservice/getkflist?access_token=ACCESS_TOKEN
    * 
*/ @@ -33,7 +33,7 @@ public interface WxMpKefuService { /** *
    * 获取在线客服接待信息
-   * 详情请见:客服管理
+   * 详情请见:客服管理
    * 接口url格式:https://api.weixin.qq.com/cgi-bin/customservice/getonlinekflist?access_token=ACCESS_TOKEN
    * 
*/ @@ -42,7 +42,7 @@ public interface WxMpKefuService { /** *
    * 添加客服账号
-   * 详情请见:客服管理
+   * 详情请见:客服管理
    * 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/add?access_token=ACCESS_TOKEN
    * 
*/ @@ -50,17 +50,26 @@ public interface WxMpKefuService { /** *
-   * 设置客服信息(更新)
-   * 详情请见:客服管理
+   * 设置客服信息(即更新客服信息)
+   * 详情请见:客服管理
    * 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/update?access_token=ACCESS_TOKEN
    * 
*/ boolean kfAccountUpdate(WxMpKfAccountRequest request) throws WxErrorException; + /** + *
+   * 设置客服信息(即更新客服信息)
+   * 详情请见:客服管理
+   * 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/inviteworker?access_token=ACCESS_TOKEN
+   * 
+ */ + boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException; + /** *
    * 上传客服头像
-   * 详情请见:客服管理
+   * 详情请见:客服管理
    * 接口url格式:http://api.weixin.qq.com/customservice/kfaccount/uploadheadimg?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
    * 
*/ @@ -70,7 +79,7 @@ public interface WxMpKefuService { /** *
    * 删除客服账号
-   * 详情请见:客服管理
+   * 详情请见:客服管理
    * 接口url格式:https://api.weixin.qq.com/customservice/kfaccount/del?access_token=ACCESS_TOKEN&kf_account=KFACCOUNT
    * 
*/ diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java index 19fdd5088..12eec6c0e 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImpl.java @@ -62,6 +62,14 @@ public class WxMpKefuServiceImpl implements WxMpKefuService { return true; } + @Override + public boolean kfAccountInviteWorker(WxMpKfAccountRequest request) throws WxErrorException { + String url = "https://api.weixin.qq.com/customservice/kfaccount/inviteworker"; + this.wxMpService.execute(new SimplePostRequestExecutor(), url, + request.toJson()); + return true; + } + @Override public boolean kfAccountUploadHeadImg(String kfAccount, File imgFile) throws WxErrorException { diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java index fb5ac41b1..dabdcb76d 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/request/WxMpKfAccountRequest.java @@ -23,18 +23,12 @@ public class WxMpKfAccountRequest implements Serializable { */ @SerializedName("nickname") private String nickName; - + /** - * password 客服账号登录密码,格式为密码明文的32位加密MD5值 + * invite_wx 接收绑定邀请的客服微信号 */ - @SerializedName("password") - private String password; - - /** - * rawPassword 客服账号登录密码,明文密码,仅用于辅助操作 - */ - @SerializedName("rawPassword") - private String rawPassword; + @SerializedName("invite_wx") + private String inviteWx; @Override public String toString() { @@ -61,31 +55,22 @@ public class WxMpKfAccountRequest implements Serializable { this.nickName = nickName; } - public String getPassword() { - return this.password; - } - - public void setPassword(String password) { - this.password = password; - } - - public String getRawPassword() { - return this.rawPassword; - } - - public void setRawPassword(String rawPassword) { - this.rawPassword = rawPassword; - } - public static Builder builder() { return new Builder(); } + public String getInviteWx() { + return this.inviteWx; + } + + public void setInviteWx(String inviteWx) { + this.inviteWx = inviteWx; + } + public static class Builder { private String kfAccount; private String nickName; - private String password; - private String rawPassword; + private String inviteWx; @SuppressWarnings("hiding") public Builder kfAccount(String kfAccount) { @@ -100,23 +85,15 @@ public class WxMpKfAccountRequest implements Serializable { } @SuppressWarnings("hiding") - public Builder password(String password) { - this.password = password; - return this; - } - - @SuppressWarnings("hiding") - public Builder rawPassword(String rawPassword) { - this.rawPassword = rawPassword; - this.password(Md5Crypt.md5Crypt(rawPassword.getBytes())); - return this; + public Builder inviteWx(String inviteWx) { + this.inviteWx = inviteWx; + return this; } public Builder from(WxMpKfAccountRequest origin) { this.kfAccount(origin.kfAccount); this.nickName(origin.nickName); - this.password(origin.password); - this.rawPassword(origin.rawPassword); + this.inviteWx(origin.inviteWx); return this; } @@ -124,8 +101,7 @@ public class WxMpKfAccountRequest implements Serializable { WxMpKfAccountRequest m = new WxMpKfAccountRequest(); m.kfAccount = this.kfAccount; m.nickName = this.nickName; - m.password = this.password; - m.rawPassword = this.rawPassword; + m.inviteWx = this.inviteWx; return m; } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java index 7e9b54251..37154aa4b 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/kefu/result/WxMpKfInfo.java @@ -41,18 +41,35 @@ public class WxMpKfInfo implements Serializable { private String nick; /** - * status 客服在线状态 1:pc在线,2:手机在线。若pc和手机同时在线则为 1+2=3 + * kf_wx 如果客服帐号已绑定了客服人员微信号,则此处显示微信号 + */ + @SerializedName("kf_wx") + private String wxAccount; + + /** + * invite_wx 如果客服帐号尚未绑定微信号,但是已经发起了一个绑定邀请,则此处显示绑定邀请的微信号 + */ + @SerializedName("invite_wx") + private String inviteWx; + + /** + * invite_expire_time 如果客服帐号尚未绑定微信号,但是已经发起过一个绑定邀请,则此处显示为邀请的过期时间,为unix 时间戳 + */ + @SerializedName("invite_expire_time") + private Long inviteExpireTime; + + /** + * invite_status 邀请的状态,有等待确认“waiting”,被拒绝“rejected”,过期“expired” + */ + @SerializedName("invite_status") + private String inviteStatus; + + /** + * status 客服在线状态,目前为:1、web 在线 */ @SerializedName("status") private Integer status; - /** - * auto_accept 客服设置的最大自动接入数 - */ - @Expose - @SerializedName("auto_accept") - private Integer autoAccept; - /** * accepted_case 客服当前正在接待的会话数 */ @@ -68,14 +85,6 @@ public class WxMpKfInfo implements Serializable { this.status = status; } - public Integer getAutoAccept() { - return this.autoAccept; - } - - public void setAutoAccept(Integer autoAccept) { - this.autoAccept = autoAccept; - } - public Integer getAcceptedCase() { return this.acceptedCase; } @@ -120,4 +129,36 @@ public class WxMpKfInfo implements Serializable { public String toString() { return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE); } + + public String getWxAccount() { + return this.wxAccount; + } + + public void setWxAccount(String wxAccount) { + this.wxAccount = wxAccount; + } + + public String getInviteWx() { + return this.inviteWx; + } + + public void setInviteWx(String inviteWx) { + this.inviteWx = inviteWx; + } + + public Long getInviteExpireTime() { + return this.inviteExpireTime; + } + + public void setInviteExpireTime(Long inviteExpireTime) { + this.inviteExpireTime = inviteExpireTime; + } + + public String getInviteStatus() { + return this.inviteStatus; + } + + public void setInviteStatus(String inviteStatus) { + this.inviteStatus = inviteStatus; + } } diff --git a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java index bc44e9aa5..8007b8759 100644 --- a/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java +++ b/weixin-java-mp/src/test/java/me/chanjar/weixin/mp/api/impl/WxMpKefuServiceImplTest.java @@ -60,7 +60,7 @@ public class WxMpKefuServiceImplTest { @Test(dataProvider = "getKfAccount") public void testKfAccountAdd(String kfAccount) throws WxErrorException { WxMpKfAccountRequest request = WxMpKfAccountRequest.builder() - .kfAccount(kfAccount).nickName("我晕").rawPassword("123").build(); + .kfAccount(kfAccount).nickName("我晕").build(); Assert.assertTrue(this.wxService.getKefuService().kfAccountAdd(request)); } @@ -68,10 +68,18 @@ public class WxMpKefuServiceImplTest { "testKfAccountAdd" }, dataProvider = "getKfAccount") public void testKfAccountUpdate(String kfAccount) throws WxErrorException { WxMpKfAccountRequest request = WxMpKfAccountRequest.builder() - .kfAccount(kfAccount).nickName("我晕").rawPassword("123").build(); + .kfAccount(kfAccount).nickName("我晕").build(); Assert.assertTrue(this.wxService.getKefuService().kfAccountUpdate(request)); } + @Test(dependsOnMethods = { + "testKfAccountAdd" }, dataProvider = "getKfAccount") + public void testKfAccountInviteWorker(String kfAccount) throws WxErrorException { + WxMpKfAccountRequest request = WxMpKfAccountRequest.builder() + .kfAccount(kfAccount).inviteWx("www_ucredit_com").build(); + Assert.assertTrue(this.wxService.getKefuService().kfAccountInviteWorker(request)); + } + @Test(dependsOnMethods = { "testKfAccountUpdate" }, dataProvider = "getKfAccount") public void testKfAccountUploadHeadImg(String kfAccount)