diff --git a/README.md b/README.md index 8683fdc9a5..ebd57e6cb8 100644 --- a/README.md +++ b/README.md @@ -50,3 +50,7 @@ weixin-java-tools * [1.0.3升级指南](https://github.com/chanjarster/weixin-java-tools/wiki/1_0_3升级指南) * [1.1.0升级指南](https://github.com/chanjarster/weixin-java-tools/wiki/1_1_0升级指南) * [1.1.1升级指南](https://github.com/chanjarster/weixin-java-tools/wiki/1_1_1升级指南) + +## 关于Pull Request + +非常欢迎和感谢对本项目发起Pull Request的同学,不过本项目基于[git flow](https://www.atlassian.com/git/tutorials/comparing-workflows/gitflow-workflow)开发流程,因此在发起Pull Request的时候请选择develop分支。 diff --git a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java index 454c6f2366..80d1663825 100644 --- a/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java +++ b/weixin-java-common/src/main/java/me/chanjar/weixin/common/api/WxConsts.java @@ -29,6 +29,7 @@ public class WxConsts { public static final String CUSTOM_MSG_MUSIC = "music"; public static final String CUSTOM_MSG_NEWS = "news"; public static final String CUSTOM_MSG_FILE = "file"; + public static final String CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE = "transfer_customer_service"; /////////////////////// // 群发消息的消息类型 diff --git a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java index 4a920b5471..4523ef865c 100644 --- a/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java +++ b/weixin-java-cp/src/main/java/me/chanjar/weixin/cp/util/json/WxCpUserGsonAdapter.java @@ -38,14 +38,7 @@ public WxCpUser deserialize(JsonElement json, Type typeOfT, JsonDeserializationC user.setPosition(GsonHelper.getString(o, "position")); user.setMobile(GsonHelper.getString(o, "mobile")); - Integer gender = GsonHelper.getInteger(o, "gender"); - if (new Integer(1).equals(gender)) { - user.setGender("男"); - } else if (new Integer(2).equals(gender)) { - user.setGender("女"); - } else { - user.setGender("未知"); - } + user.setGender(GsonHelper.getString(o, "gender")); user.setTel(GsonHelper.getString(o, "tel")); user.setEmail(GsonHelper.getString(o, "email")); user.setWeiXinId(GsonHelper.getString(o, "weixinid")); @@ -88,7 +81,7 @@ public JsonElement serialize(WxCpUser user, Type typeOfSrc, JsonSerializationCon o.addProperty("mobile", user.getMobile()); } if (user.getGender() != null) { - o.addProperty("gender", user.getGender().equals("男") ? 0 : 1); + o.addProperty("gender", user.getGender()); } if (user.getTel() != null) { o.addProperty("tel", user.getTel()); diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutMessage.java index 370d443089..bca8c143d8 100644 --- a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutMessage.java +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutMessage.java @@ -121,4 +121,12 @@ public static MusicBuilder MUSIC() { public static NewsBuilder NEWS() { return new NewsBuilder(); } + /** + * 获得客服消息builder + * + * @return + */ + public static TransferCustomerServiceBuilder TRANSFER_CUSTOMER_SERVICE() { + return new TransferCustomerServiceBuilder(); + } } diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java new file mode 100644 index 0000000000..5783d2b4d5 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/WxMpXmlOutTransferCustomerServiceMessage.java @@ -0,0 +1,41 @@ +package me.chanjar.weixin.mp.bean; + +import com.thoughtworks.xstream.annotations.XStreamAlias; +import com.thoughtworks.xstream.annotations.XStreamConverter; +import me.chanjar.weixin.common.api.WxConsts; +import me.chanjar.weixin.common.util.xml.XStreamCDataConverter; +import me.chanjar.weixin.common.util.xml.XStreamMediaIdConverter; + +@XStreamAlias("xml") +public class WxMpXmlOutTransferCustomerServiceMessage extends WxMpXmlOutMessage { + @XStreamAlias("TransInfo") + protected final TransInfo transInfo = new TransInfo(); + + public WxMpXmlOutTransferCustomerServiceMessage() { + this.msgType = WxConsts.CUSTOM_MSG_TRANSFER_CUSTOMER_SERVICE; + } + + public String getKfAccount() { + return transInfo.getKfAccount(); + } + + public void setKfAccount(String kfAccount) { + transInfo.setKfAccount(kfAccount); + } + + @XStreamAlias("TransInfo") + public static class TransInfo { + + @XStreamAlias("KfAccount") + @XStreamConverter(value=XStreamCDataConverter.class) + private String kfAccount; + + public String getKfAccount() { + return kfAccount; + } + + public void setKfAccount(String kfAccount) { + this.kfAccount = kfAccount; + } + } +} diff --git a/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java new file mode 100644 index 0000000000..37616cf9a4 --- /dev/null +++ b/weixin-java-mp/src/main/java/me/chanjar/weixin/mp/bean/outxmlbuilder/TransferCustomerServiceBuilder.java @@ -0,0 +1,28 @@ +package me.chanjar.weixin.mp.bean.outxmlbuilder; + +import me.chanjar.weixin.mp.bean.WxMpXmlOutTransferCustomerServiceMessage; + +/** + * 客服消息builder + *
+ * 用法: WxMpCustomMessage m = WxMpCustomMessage.TRANSFER_CUSTOMER_SERVICE().content(...).toUser(...).build();
+ * 
+ * + * @author chanjarster + */ +public final class TransferCustomerServiceBuilder extends BaseBuilder { + private String kfAccount; + + public TransferCustomerServiceBuilder kfAccount(String kfAccount) { + this.kfAccount = kfAccount; + return this; + } + + + public WxMpXmlOutTransferCustomerServiceMessage build() { + WxMpXmlOutTransferCustomerServiceMessage m = new WxMpXmlOutTransferCustomerServiceMessage(); + setCommon(m); + m.setKfAccount(kfAccount); + return m; + } +} \ No newline at end of file