#739 增加微信激活会员卡时需要用的设置用户资料的接口

* 增加微信激活会员卡,设置用户资料字段接口实现。

* 增加创建卡券二维码的失效时间参数接口。

* 设置对象返回类型。

* 增加卡券相关事件及xml消息解析
This commit is contained in:
yuanqixun
2018-08-31 10:41:41 +08:00
committed by Binary Wang
parent 4dd67f46b8
commit a8bac131fa
19 changed files with 537 additions and 17 deletions

View File

@@ -2,6 +2,7 @@ package me.chanjar.weixin.mp.bean.card;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.mp.bean.card.enums.BusinessServiceType;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

View File

@@ -0,0 +1,70 @@
package me.chanjar.weixin.mp.bean.card;
import com.google.gson.JsonObject;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.io.Serializable;
/**
* 会员卡激活,用户字段提交请求
*
* @author yuanqixun
* @date 2018-08-30
*/
@Data
public class MemberCardActivateUserFormRequest implements Serializable {
@SerializedName("card_id")
private String cardId;
@SerializedName("service_statement")
private JsonObject serviceStatement;
@SerializedName("bind_old_card")
private JsonObject bindOldCard;
/**
* 必填项
*/
@SerializedName("required_form")
private MemberCardUserForm requiredForm;
/**
* 可选项
*/
@SerializedName("optional_form")
private MemberCardUserForm optionalForm;
/**
* 绑定老会员卡信息
*
* @param name
* @param url
*/
public void setBindOldCard(String name, String url) {
if (StringUtils.isAnyEmpty(name, url)) {
return;
}
if (bindOldCard == null)
bindOldCard = new JsonObject();
bindOldCard.addProperty("name", name);
bindOldCard.addProperty("url", url);
}
/**
* 设置服务声明,用于放置商户会员卡守则
*
* @param name
* @param url
*/
public void setServiceStatement(String name, String url) {
if (StringUtils.isAnyEmpty(name, url)) {
return;
}
if (serviceStatement == null)
serviceStatement = new JsonObject();
serviceStatement.addProperty("name", name);
serviceStatement.addProperty("url", url);
}
}

View File

@@ -0,0 +1,29 @@
package me.chanjar.weixin.mp.bean.card;
import lombok.Data;
import me.chanjar.weixin.mp.util.json.WxMpGsonBuilder;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.io.Serializable;
@Data
public class MemberCardActivateUserFormResult implements Serializable {
private Integer errcode;
private String errmsg;
public boolean isSuccess() {
return 0 == errcode;
}
public static MemberCardActivateUserFormResult fromJson(String json) {
return WxMpGsonBuilder.create().fromJson(json, MemberCardActivateUserFormResult.class);
}
@Override
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}

View File

@@ -0,0 +1,92 @@
package me.chanjar.weixin.mp.bean.card;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.mp.bean.card.enums.CardWechatFieldType;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
/**
* 用户表单对象
*
* @author yuanqixun
* @date 2018-08-30
*/
@Data
public class MemberCardUserForm implements Serializable {
/**
* 当前结构required_form或者optional_form )内的字段是否允许用户激活后再次修改,
* 商户设置为true 时,需要接收相应事件通知处理修改事件
*/
@SerializedName("can_modify")
private boolean canModify;
/**
* 富文本类型字段列表
*/
@SerializedName("rich_field_list")
List<MemberCardUserFormRichField> richFieldList;
/**
* 文本选项类型列表
*/
@SerializedName("custom_field_list")
private List<String> customFieldList;
/**
* 微信格式化的选项类型
*/
@SerializedName("common_field_id_list")
private List<String> wechatFieldIdList;
/**
* 添加富文本类型字段
*
* @param fieldType
*/
public void addRichField(MemberCardUserFormRichField field) {
if (field == null)
return;
if (richFieldList == null)
richFieldList = new ArrayList<>();
richFieldList.add(field);
}
/**
* 添加微信选项类型字段
*
* @param fieldType
*/
public void addWechatField(CardWechatFieldType fieldType) {
if (fieldType == null)
return;
if (wechatFieldIdList == null)
wechatFieldIdList = new ArrayList<>();
wechatFieldIdList.add(fieldType.name());
}
/**
* 添加文本类型字段
*
* @param fieldType
*/
public void addCustomField(String field) {
if (StringUtils.isBlank(field))
return;
if (customFieldList == null)
customFieldList = new ArrayList<>();
customFieldList.add(field);
}
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}

View File

@@ -0,0 +1,42 @@
package me.chanjar.weixin.mp.bean.card;
import com.google.gson.annotations.SerializedName;
import lombok.Data;
import me.chanjar.weixin.mp.bean.card.enums.CardRichFieldType;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import java.util.ArrayList;
import java.util.List;
/**
* 富文本字段
*
* @author yuanqixun
* @date 2018-08-30
*/
@Data
public class MemberCardUserFormRichField {
/**
* 富文本类型
*/
@SerializedName("type")
private CardRichFieldType type;
@SerializedName("name")
private String name;
@SerializedName("values")
private List<String> valueList;
public void add(String value) {
if (valueList == null)
valueList = new ArrayList<String>();
valueList.add(value);
}
public String toString() {
return ToStringBuilder.reflectionToString(this, ToStringStyle.JSON_STYLE);
}
}

View File

@@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.bean.card;
package me.chanjar.weixin.mp.bean.card.enums;
/**
* 商户提供服务类型

View File

@@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.bean.card;
package me.chanjar.weixin.mp.bean.card.enums;
/**
* 会员卡颜色

View File

@@ -0,0 +1,23 @@
package me.chanjar.weixin.mp.bean.card.enums;
/**
* 微信卡券激活字段类型
*
* @author yuanqixun
* @date 2018-08-30
*/
public enum CardFieldType {
COMMON_FIELD("微信选项"),
CUSTOM_FIELD("自定义选项"),
RICH_FIELD("自定义富文本类型");
private String description;
CardFieldType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}

View File

@@ -0,0 +1,23 @@
package me.chanjar.weixin.mp.bean.card.enums;
/**
* 会员卡富文本字段类型
*
* @author yuanqixun
* @date 2018-08-30
*/
public enum CardRichFieldType {
FORM_FIELD_RADIO("自定义单选"),
FORM_FIELD_SELECT("自定义选择项"),
FORM_FIELD_CHECK_BOX("自定义多选");
private String description;
CardRichFieldType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}

View File

@@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.bean.card;
package me.chanjar.weixin.mp.bean.card.enums;
public enum CardSceneType {
SCENE_NEAR_BY("附近"),

View File

@@ -0,0 +1,31 @@
package me.chanjar.weixin.mp.bean.card.enums;
/**
* 微信卡券激活字段类型
*
* @author yuanqixun
* @date 2018-08-30
*/
public enum CardWechatFieldType {
USER_FORM_INFO_FLAG_MOBILE("手机号"),
USER_FORM_INFO_FLAG_SEX("性别"),
USER_FORM_INFO_FLAG_NAME("姓名"),
USER_FORM_INFO_FLAG_BIRTHDAY("生日"),
USER_FORM_INFO_FLAG_IDCARD("身份证"),
USER_FORM_INFO_FLAG_EMAIL("邮箱"),
USER_FORM_INFO_FLAG_LOCATION("详细地址"),
USER_FORM_INFO_FLAG_EDUCATION_BACKGRO("教育背景"),
USER_FORM_INFO_FLAG_INDUSTRY("行业"),
USER_FORM_INFO_FLAG_INCOME("收入"),
USER_FORM_INFO_FLAG_HABIT("兴趣爱好");
private String description;
CardWechatFieldType(String description) {
this.description = description;
}
public String getDescription() {
return description;
}
}

View File

@@ -1,4 +1,4 @@
package me.chanjar.weixin.mp.bean.card;
package me.chanjar.weixin.mp.bean.card.enums;
public enum DateInfoType {
DATE_TYPE_PERMANENT("永久有效类型"),

View File

@@ -342,6 +342,82 @@ public class WxMpXmlMessage implements Serializable {
@XStreamAlias("SendLocationInfo")
private SendLocationInfo sendLocationInfo = new SendLocationInfo();
/**
* 审核不通过原因
*/
@XStreamAlias("RefuseReason")
private String refuseReason;
/**
* 是否为朋友推荐0代表否1代表是
*/
@XStreamAlias("IsRecommendByFriend")
private String isRecommendByFriend;
/**
* 购买券点时,实际支付成功的时间
*/
@XStreamAlias("PayFinishTime")
private String payFinishTime;
/**
* 购买券点时,支付二维码的生成时间
*/
@XStreamAlias("CreateOrderTime")
private String createOrderTime;
/**
* 购买券点时,支付二维码的生成时间
*/
@XStreamAlias("Desc")
private String desc;
/**
* 剩余免费券点数量
*/
@XStreamAlias("FreeCoinCount")
private String freeCoinCount;
/**
* 剩余付费券点数量
*/
@XStreamAlias("PayCoinCount")
private String payCoinCount;
/**
* 本次变动的免费券点数量
*/
@XStreamAlias("RefundFreeCoinCount")
private String refundFreeCoinCount;
/**
* 本次变动的付费券点数量
*/
@XStreamAlias("RefundPayCoinCount")
private String refundPayCoinCount;
/**
* <pre>
* 所要拉取的订单类型 ORDER_TYPE_SYS_ADD 平台赠送券点 ORDER_TYPE_WXPAY 充值券点 ORDER_TYPE_REFUND 库存未使用回退券点
* ORDER_TYPE_REDUCE 券点兑换库存 ORDER_TYPE_SYS_REDUCE 平台扣减
* </pre>
*/
@XStreamAlias("OrderType")
private String orderType;
/**
* 系统备注,说明此次变动的缘由,如开通账户奖励、门店奖励、核销奖励以及充值、扣减。
*/
@XStreamAlias("Memo")
private String memo;
/**
* 所开发票的详情
*/
@XStreamAlias("ReceiptInfo")
private String receiptInfo;
///////////////////////////////////////
// 门店审核事件推送
///////////////////////////////////////