From 87a2e427deec6ac2643ac1f5f5603ef84b77d389 Mon Sep 17 00:00:00 2001 From: fengyapeng Date: Fri, 23 Dec 2016 17:17:17 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=AD=A3=E6=A8=A1=E6=9D=BF=E6=B6=88?= =?UTF-8?q?=E6=81=AF=E7=9A=84=E8=BF=94=E5=9B=9E=E5=80=BC=EF=BC=8C=E8=BF=94?= =?UTF-8?q?=E5=9B=9EmsgId=E3=80=82=20=E4=BC=9A=E5=91=98=E5=8D=A1=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E7=9A=84=E8=B0=83=E6=95=B4=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../weixin4j/model/card/CouponBaseInfo.java | 17 ++++ .../com/foxinmy/weixin4j/mp/WeixinProxy.java | 5 +- .../com/foxinmy/weixin4j/mp/api/CardApi.java | 79 ++++++++++++++- .../weixin4j/mp/api/MemberCardApi.java | 95 ------------------- .../com/foxinmy/weixin4j/mp/api/TmplApi.java | 4 +- .../weixin4j/mp/test/MemberCardTest.java | 20 ++-- 6 files changed, 108 insertions(+), 112 deletions(-) delete mode 100644 weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java diff --git a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java index 14b479b9..69c73465 100644 --- a/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java +++ b/weixin4j-base/src/main/java/com/foxinmy/weixin4j/model/card/CouponBaseInfo.java @@ -581,6 +581,23 @@ public class CouponBaseInfo implements Serializable { return this; } + /** + * 设置卡券在领取多少天后有效 + * + * @param days + * 表示自领取后多少天内有效,不支持填写0。 + * @param beginDays + * 表示自领取后多少天开始生效,领取后当天生效填写0。(单位为天) + * @return + */ + public Builder activeAt(int days, int beginDays) { + this.date.clear(); + this.date.put("type", CardActiveType.DATE_TYPE_FIX_TERM); + this.date.put("fixed_term", days); + this.date.put("fixed_begin_term", beginDays); + return this; + } + /** * 设置是否自定义Code码 * diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java index 57357278..cd1cac07 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/WeixinProxy.java @@ -1005,7 +1005,8 @@ public class WeixinProxy { * 删除群发 * @see com.foxinmy.weixin4j.mp.api.MassApi * @see {@link #massByGroupId(Tuple, int)} - * @see {@link #massByOpenIds(Tuple, String...) + * @see {@link #massByOpenIds(Tuple, String...) + * */ public ApiResult deleteMassNews(String msgid) throws WeixinException { @@ -1570,7 +1571,7 @@ public class WeixinProxy { * @seee com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage * @see com.foxinmy.weixin4j.mp.api.TmplApi */ - public ApiResult sendTmplMessage(TemplateMessage tplMessage) + public String sendTmplMessage(TemplateMessage tplMessage) throws WeixinException { return tmplApi.sendTmplMessage(tplMessage); } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java index 9d4f17fd..9424eeb4 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/CardApi.java @@ -13,9 +13,14 @@ import com.foxinmy.weixin4j.model.Token; import com.foxinmy.weixin4j.model.card.CardCoupon; import com.foxinmy.weixin4j.model.card.CardCoupons; import com.foxinmy.weixin4j.model.card.CardQR; +import com.foxinmy.weixin4j.model.card.MemberInitInfo; +import com.foxinmy.weixin4j.model.card.MemberUpdateInfo; +import com.foxinmy.weixin4j.model.card.MemberUserForm; +import com.foxinmy.weixin4j.model.card.MemberUserInfo; import com.foxinmy.weixin4j.model.qr.QRParameter; import com.foxinmy.weixin4j.model.qr.QRResult; import com.foxinmy.weixin4j.token.TokenManager; +import com.foxinmy.weixin4j.type.card.CardStatus; import com.foxinmy.weixin4j.type.card.CardType; import com.foxinmy.weixin4j.util.IOUtil; @@ -191,7 +196,7 @@ public class CardApi extends MpApi { * @author fengyapeng * @since 2016 -12-20 11:48:23 */ - public void getCardStatus(String cardId) throws WeixinException { + public CardStatus queryCardStatus(String cardId) throws WeixinException { JSONObject requestObj = new JSONObject(); requestObj.put("card_id",cardId); String card_get_uri = getRequestUri("card_get_uri"); @@ -201,7 +206,8 @@ public class CardApi extends MpApi { JSONObject card = responseAsJson.getJSONObject("card"); String cardType = card.getString("card_type"); JSONObject baseInfo = card.getJSONObject(cardType.toLowerCase()).getJSONObject("base_info"); - baseInfo.get("status"); + String status = baseInfo.getString("status"); + return CardStatus.valueOf(status); } /** @@ -230,4 +236,73 @@ public class CardApi extends MpApi { + + /** + * 激活方式说明 + * 接口激活通常需要开发者开发用户填写资料的网页。通常有两种激活流程: + * 1. 用户必须在填写资料后才能领卡,领卡后开发者调用激活接口为用户激活会员卡; + * 2. 是用户可以先领取会员卡,点击激活会员卡跳转至开发者设置的资料填写页面,填写完成后开发者调用激活接口为用户激活会员卡。 + * + * @see 接口激活 + */ + public ApiResult activate(MemberInitInfo memberInitInfo) throws WeixinException { + String card_member_card_activate_uri = getRequestUri("card_member_card_activate_uri"); + Token token = tokenManager.getCache(); + WeixinResponse response = weixinExecutor + .post(String.format(card_member_card_activate_uri, token.getAccessToken()), JSON.toJSONString(memberInitInfo)); + return response.getAsResult(); + } + + /** + * 设置开卡字段接口 + * 开发者在创建时填入wx_activate字段后, + * 需要调用该接口设置用户激活时需要填写的选项,否则一键开卡设置不生效。 + * + * @see 一键激活 + */ + public ApiResult setActivateUserForm(MemberUserForm memberUserForm) throws WeixinException { + String user_form_uri = getRequestUri("card_member_card_activate_user_form_uri"); + Token token = tokenManager.getCache(); + WeixinResponse response = weixinExecutor + .post(String.format(user_form_uri, token.getAccessToken()), JSON.toJSONString(memberUserForm)); + return response.getAsResult(); + } + + /** + * 拉取会员信息接口。 + * + * @param cardId the card id + * @param code the code + * @author fengyapeng + * @since 2016 -12-21 11:28:45 + */ + public MemberUserInfo getMemberUserInfo(String cardId, String code) throws WeixinException { + String user_info_uri = getRequestUri("card_member_card_user_info_uri"); + Token token = tokenManager.getCache(); + JSONObject jsonObject = new JSONObject(); + jsonObject.put("card_id", cardId); + jsonObject.put("code", code); + WeixinResponse response = weixinExecutor.post(String.format(user_info_uri, token.getAccessToken()), JSON.toJSONString(jsonObject)); + return response.getAsObject(new TypeReference() { + }); + } + + /** + * 更新会员 + * @param updateInfo + * @return + * @throws WeixinException + */ + public JSONObject updateUserInfo(MemberUpdateInfo updateInfo) throws WeixinException { + String card_member_card_update_user_uri = getRequestUri("card_member_card_update_user_uri"); + Token token = tokenManager.getCache(); + WeixinResponse response = weixinExecutor + .post(String.format(card_member_card_update_user_uri, token.getAccessToken()), JSON.toJSONString(updateInfo)); + return response.getAsJson(); + } + + + + + } diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java deleted file mode 100644 index c3b2e925..00000000 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/MemberCardApi.java +++ /dev/null @@ -1,95 +0,0 @@ -package com.foxinmy.weixin4j.mp.api; - -import com.alibaba.fastjson.JSON; -import com.alibaba.fastjson.JSONObject; -import com.alibaba.fastjson.TypeReference; -import com.foxinmy.weixin4j.exception.WeixinException; -import com.foxinmy.weixin4j.http.weixin.ApiResult; -import com.foxinmy.weixin4j.http.weixin.WeixinResponse; -import com.foxinmy.weixin4j.model.Token; -import com.foxinmy.weixin4j.model.card.MemberInitInfo; -import com.foxinmy.weixin4j.model.card.MemberUpdateInfo; -import com.foxinmy.weixin4j.model.card.MemberUserForm; -import com.foxinmy.weixin4j.model.card.MemberUserInfo; -import com.foxinmy.weixin4j.token.TokenManager; - -/** - * 会员卡的api - * - * @auther: Feng Yapeng - * @since: 2016/12/20 14:43 - * @see 创建会员卡&会员卡管理 - */ -public class MemberCardApi extends CardApi { - - - public MemberCardApi(TokenManager tokenManager) { - super(tokenManager); - } - - /** - * 激活方式说明 - * 接口激活通常需要开发者开发用户填写资料的网页。通常有两种激活流程: - * 1. 用户必须在填写资料后才能领卡,领卡后开发者调用激活接口为用户激活会员卡; - * 2. 是用户可以先领取会员卡,点击激活会员卡跳转至开发者设置的资料填写页面,填写完成后开发者调用激活接口为用户激活会员卡。 - * - * @see 接口激活 - */ - public ApiResult activate(MemberInitInfo memberInitInfo) throws WeixinException { - String card_member_card_activate_uri = getRequestUri("card_member_card_activate_uri"); - Token token = tokenManager.getCache(); - WeixinResponse response = weixinExecutor - .post(String.format(card_member_card_activate_uri, token.getAccessToken()), JSON.toJSONString(memberInitInfo)); - return response.getAsResult(); - } - - /** - * 设置开卡字段接口 - * 开发者在创建时填入wx_activate字段后, - * 需要调用该接口设置用户激活时需要填写的选项,否则一键开卡设置不生效。 - * - * @see 一键激活 - */ - public ApiResult setActivateUserForm(MemberUserForm memberUserForm) throws WeixinException { - String user_form_uri = getRequestUri("card_member_card_activate_user_form_uri"); - Token token = tokenManager.getCache(); - WeixinResponse response = weixinExecutor - .post(String.format(user_form_uri, token.getAccessToken()), JSON.toJSONString(memberUserForm)); - return response.getAsResult(); - } - - /** - * 拉取会员信息接口。 - * - * @param cardId the card id - * @param code the code - * @author fengyapeng - * @since 2016 -12-21 11:28:45 - */ - public MemberUserInfo getMemberUserInfo(String cardId, String code) throws WeixinException { - String user_info_uri = getRequestUri("card_member_card_user_info_uri"); - Token token = tokenManager.getCache(); - JSONObject jsonObject = new JSONObject(); - jsonObject.put("card_id", cardId); - jsonObject.put("code", code); - WeixinResponse response = weixinExecutor.post(String.format(user_info_uri, token.getAccessToken()), JSON.toJSONString(jsonObject)); - return response.getAsObject(new TypeReference() { - }); - } - - /** - * 更新会员 - * @param updateInfo - * @return - * @throws WeixinException - */ - public JSONObject updateUserInfo(MemberUpdateInfo updateInfo) throws WeixinException { - String card_member_card_update_user_uri = getRequestUri("card_member_card_update_user_uri"); - Token token = tokenManager.getCache(); - WeixinResponse response = weixinExecutor - .post(String.format(card_member_card_update_user_uri, token.getAccessToken()), JSON.toJSONString(updateInfo)); - return response.getAsJson(); - } - - -} diff --git a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java index 726176df..f027efd8 100644 --- a/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java +++ b/weixin4j-mp/src/main/java/com/foxinmy/weixin4j/mp/api/TmplApi.java @@ -157,7 +157,7 @@ public class TmplApi extends MpApi { * @see com.foxinmy.weixin4j.mp.message.TemplateMessage * @see com.foxinmy.weixin4j.msg.event.TemplatesendjobfinishMessage */ - public ApiResult sendTmplMessage(TemplateMessage tplMessage) + public String sendTmplMessage(TemplateMessage tplMessage) throws WeixinException { Token token = tokenManager.getCache(); String template_send_uri = getRequestUri("template_send_uri"); @@ -174,6 +174,6 @@ public class TmplApi extends MpApi { } })); - return response.getAsResult(); + return response.getAsJson().getString("msgid"); } } diff --git a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java index 89452588..0b4bb3d4 100644 --- a/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java +++ b/weixin4j-mp/src/test/java/com/foxinmy/weixin4j/mp/test/MemberCardTest.java @@ -2,7 +2,6 @@ package com.foxinmy.weixin4j.mp.test; import com.foxinmy.weixin4j.exception.WeixinException; import com.foxinmy.weixin4j.http.weixin.ApiResult; -import com.foxinmy.weixin4j.model.card.CardCoupon; import com.foxinmy.weixin4j.model.card.CardCoupons; import com.foxinmy.weixin4j.model.card.CardQR; import com.foxinmy.weixin4j.model.card.CouponBaseInfo; @@ -13,7 +12,6 @@ import com.foxinmy.weixin4j.model.card.MemberUserForm; import com.foxinmy.weixin4j.model.card.MemberUserInfo; import com.foxinmy.weixin4j.model.qr.QRResult; import com.foxinmy.weixin4j.mp.api.CardApi; -import com.foxinmy.weixin4j.mp.api.MemberCardApi; import com.foxinmy.weixin4j.type.card.ActivateCommonField; import com.foxinmy.weixin4j.type.card.ActivateFormFieldType; import com.foxinmy.weixin4j.type.card.CardCodeType; @@ -31,14 +29,14 @@ import org.junit.Test; */ public class MemberCardTest extends TokenTest { - private CardApi cardApi; - private MemberCardApi memberCardApi; + + private CardApi cardApi; @Before public void init() { + cardApi = new CardApi(tokenManager); - memberCardApi = new MemberCardApi(tokenManager); } /** @@ -64,7 +62,7 @@ public class MemberCardTest extends TokenTest { "https://mmbiz.qlogo.cn/mmbiz/2FyQ9TURqmdibM6nYBiagZT49lSlY9Aicw4P3vsoa7dEZIYfNkiaMyzNVYT9jmYhjBbeC8jnkibwbibB5tghC5XcgysQ/0?wx_fmt=jpeg"); MemberCard memberCard = CardCoupons.createMemberCard(builder, memberCardBuilder); - String cardId = memberCardApi.createCardCoupon(memberCard); + String cardId = cardApi.createCardCoupon(memberCard); System.out.println(cardId); } @@ -72,7 +70,7 @@ public class MemberCardTest extends TokenTest { @Test public void createCardQR() throws WeixinException { CardQR.Builder builder = new CardQR.Builder("pn-YDwk59Ft0JSFdGqObxUccUQHw"); - QRResult qrResult = memberCardApi.createCardQR(36000, builder.build()); + QRResult qrResult = cardApi.createCardQR(36000, builder.build()); String showUrl = qrResult.getShowUrl(); System.out.println(showUrl); } @@ -95,13 +93,13 @@ public class MemberCardTest extends TokenTest { .addRichField(ActivateFormFieldType.FORM_FIELD_CHECK_BOX, "checkBoxOPt", "value1", "value2", "value3"); memberUserForm.setOptionalForm(optionalFormBuilder); memberUserForm.setServiceStatement("会员守则","https://www.baidu.com"); - ApiResult apiResult = memberCardApi.setActivateUserForm(memberUserForm); + ApiResult apiResult = cardApi.setActivateUserForm(memberUserForm); } @Test public void getMemberUserInfo() throws WeixinException { - MemberUserInfo memberUserInfo = memberCardApi.getMemberUserInfo("pn-YDwk59Ft0JSFdGqObxUccUQHw", "270869833860"); + MemberUserInfo memberUserInfo = cardApi.getMemberUserInfo("pn-YDwk59Ft0JSFdGqObxUccUQHw", "270869833860"); System.out.println(memberUserInfo); } @@ -115,7 +113,7 @@ public class MemberCardTest extends TokenTest { memberInitInfo.setInitBalance(2); memberInitInfo.setInitBonus(2); memberInitInfo.setInitBonusRecord("初始化积分"); - ApiResult activate = memberCardApi.activate(memberInitInfo); + ApiResult activate = cardApi.activate(memberInitInfo); System.out.println(activate); } @@ -128,7 +126,7 @@ public class MemberCardTest extends TokenTest { memberUpdateInfo.setRecordBalance("充值"); memberUpdateInfo.setNOtify(true,true); memberUpdateInfo.setCustomFieldValue1("至尊铂金",true); - memberCardApi.updateUserInfo(memberUpdateInfo); + cardApi.updateUserInfo(memberUpdateInfo); } }