RedpacketRecord.java

  1. package com.foxinmy.weixin4j.payment.mch;

  2. import java.io.Serializable;
  3. import java.util.Date;
  4. import java.util.List;

  5. import javax.xml.bind.annotation.XmlAccessType;
  6. import javax.xml.bind.annotation.XmlAccessorType;
  7. import javax.xml.bind.annotation.XmlElement;
  8. import javax.xml.bind.annotation.XmlElementWrapper;
  9. import javax.xml.bind.annotation.XmlRootElement;

  10. import com.alibaba.fastjson.annotation.JSONField;
  11. import com.foxinmy.weixin4j.http.weixin.XmlResult;
  12. import com.foxinmy.weixin4j.type.mch.RedpacketSendType;
  13. import com.foxinmy.weixin4j.type.mch.RedpacketStatus;
  14. import com.foxinmy.weixin4j.type.mch.RedpacketType;
  15. import com.foxinmy.weixin4j.util.DateUtil;

  16. /**
  17.  * 红包记录
  18.  *
  19.  * @className RedpacketRecord
  20.  * @author jinyu(foxinmy@gmail.com)
  21.  * @date 2015年6月4日
  22.  * @since JDK 1.6
  23.  * @see
  24.  * @deprecated 迁移到子模块weixin4j-pay
  25.  */
  26. @Deprecated
  27. @XmlRootElement
  28. @XmlAccessorType(XmlAccessType.FIELD)
  29. public class RedpacketRecord extends XmlResult {

  30.     private static final long serialVersionUID = 929959747323918458L;

  31.     /**
  32.      * 商户订单号(每个订单号必须唯一) 组成: mch_id+yyyymmdd+10位一天内不能重复的数字。
  33.      */
  34.     @XmlElement(name = "mch_billno")
  35.     @JSONField(name = "mch_billno")
  36.     private String outTradeNo;
  37.     /**
  38.      * 微信支付分配的商户号
  39.      */
  40.     @XmlElement(name = "mch_id")
  41.     @JSONField(name = "mch_id")
  42.     private String mchId;
  43.     /**
  44.      * 红包单号
  45.      */
  46.     @XmlElement(name = "detail_id")
  47.     @JSONField(name = "detail_id")
  48.     private String repacketId;
  49.     /**
  50.      * 红包状态
  51.      */
  52.     @XmlElement(name = "status")
  53.     private String status;
  54.     /**
  55.      * 发放类型
  56.      */
  57.     @XmlElement(name = "send_type")
  58.     @JSONField(name = "send_type")
  59.     private String sendType;
  60.     /**
  61.      * 红包类型
  62.      */
  63.     @XmlElement(name = "hb_type")
  64.     @JSONField(name = "hb_type")
  65.     private String hbType;
  66.     /**
  67.      * 红包个数
  68.      */
  69.     @XmlElement(name = "total_num")
  70.     @JSONField(name = "total_num")
  71.     private int totalNum;
  72.     /**
  73.      * 红包总金额(单位分)
  74.      */
  75.     @XmlElement(name = "total_amount")
  76.     @JSONField(name = "total_amount")
  77.     private int totalAmount;
  78.     /**
  79.      * 发送失败原因
  80.      */
  81.     @XmlElement(name = "reason")
  82.     private String reason;
  83.     /**
  84.      * 发放时间
  85.      */
  86.     @XmlElement(name = "send_time")
  87.     @JSONField(name = "send_time")
  88.     private String sendTime;
  89.     /**
  90.      * 红包退款时间
  91.      */
  92.     @XmlElement(name = "refund_time")
  93.     @JSONField(name = "refund_time")
  94.     private String refundTime;
  95.     /**
  96.      * 红包退款金额
  97.      */
  98.     @XmlElement(name = "refund_amount")
  99.     @JSONField(name = "refund_amount")
  100.     private Integer refundAmount;
  101.     /**
  102.      * 祝福语
  103.      */
  104.     @XmlElement(name = "wishing")
  105.     private String wishing;
  106.     /**
  107.      * 活动描述
  108.      */
  109.     @XmlElement(name = "remark")
  110.     private String remark;
  111.     /**
  112.      * 活动名称
  113.      */
  114.     @XmlElement(name = "act_name")
  115.     @JSONField(name = "act_name")
  116.     private String actName;
  117.     /**
  118.      * 裂变红包领取列表
  119.      */
  120.     @XmlElement(name = "hbinfo")
  121.     @XmlElementWrapper(name = "hblist")
  122.     @JSONField(name = "hblist")
  123.     private List<RedpacketReceiver> receivers;

  124.     public String getOutTradeNo() {
  125.         return outTradeNo;
  126.     }

  127.     public String getMchId() {
  128.         return mchId;
  129.     }

  130.     public String getRepacketId() {
  131.         return repacketId;
  132.     }

  133.     @JSONField(serialize = false)
  134.     public RedpacketStatus getFormatStatus() {
  135.         return status != null ? RedpacketStatus.valueOf(status.toUpperCase())
  136.                 : null;
  137.     }

  138.     @JSONField(serialize = false)
  139.     public RedpacketSendType getFormatSendType() {
  140.         return sendType != null ? RedpacketSendType.valueOf(sendType) : null;
  141.     }

  142.     @JSONField(serialize = false)
  143.     public RedpacketType getFomatHbType() {
  144.         return hbType != null ? RedpacketType.valueOf(hbType) : null;
  145.     }

  146.     public String getStatus() {
  147.         return status;
  148.     }

  149.     public String getSendType() {
  150.         return sendType;
  151.     }

  152.     public String getHbType() {
  153.         return hbType;
  154.     }

  155.     public int getTotalNum() {
  156.         return totalNum;
  157.     }

  158.     public int getTotalAmount() {
  159.         return totalAmount;
  160.     }

  161.     /**
  162.      * <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
  163.      *
  164.      * @return 元单位
  165.      */
  166.     @JSONField(serialize = false)
  167.     public double getFormatTotalAmount() {
  168.         return totalAmount / 100d;
  169.     }

  170.     public String getReason() {
  171.         return reason;
  172.     }

  173.     public String getSendTime() {
  174.         return sendTime;
  175.     }

  176.     @JSONField(serialize = false)
  177.     public Date getFormatSendTime() {
  178.         return sendTime != null ? DateUtil.parse2yyyyMMddHHmmss(sendTime)
  179.                 : null;
  180.     }

  181.     public String getRefundTime() {
  182.         return refundTime;
  183.     }

  184.     @JSONField(serialize = false)
  185.     public Date getFormatRefundTime() {
  186.         return refundTime != null ? DateUtil.parse2yyyyMMddHHmmss(refundTime)
  187.                 : null;
  188.     }

  189.     public Integer getRefundAmount() {
  190.         return refundAmount;
  191.     }

  192.     /**
  193.      * <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
  194.      *
  195.      * @return 元单位
  196.      */
  197.     @JSONField(serialize = false)
  198.     public double getFormatRefundAmount() {
  199.         return refundAmount != null ? refundAmount.intValue() / 100d : 0d;
  200.     }

  201.     public String getWishing() {
  202.         return wishing;
  203.     }

  204.     public String getRemark() {
  205.         return remark;
  206.     }

  207.     public String getActName() {
  208.         return actName;
  209.     }

  210.     public List<RedpacketReceiver> getReceivers() {
  211.         return receivers;
  212.     }

  213.     @XmlRootElement
  214.     @XmlAccessorType(XmlAccessType.FIELD)
  215.     public static class RedpacketReceiver implements Serializable {

  216.         private static final long serialVersionUID = 1L;

  217.         /**
  218.          * 领取红包的Openid
  219.          */
  220.         @XmlElement(name = "openid")
  221.         private String openId;
  222.         /**
  223.          * 领取状态
  224.          */
  225.         @XmlElement(name = "status")
  226.         private RedpacketStatus status;
  227.         /**
  228.          * 领取金额
  229.          */
  230.         private int amount;
  231.         /**
  232.          * 领取时间
  233.          */
  234.         @XmlElement(name = "rcv_time")
  235.         @JSONField(name = "rcv_time")
  236.         private String receiveTime;

  237.         public String getOpenId() {
  238.             return openId;
  239.         }

  240.         public RedpacketStatus getStatus() {
  241.             return status;
  242.         }

  243.         public int getAmount() {
  244.             return amount;
  245.         }

  246.         public String getReceiveTime() {
  247.             return receiveTime;
  248.         }

  249.         /**
  250.          * <font color="red">调用接口获取单位为分,get方法转换为元方便使用</font>
  251.          *
  252.          * @return 元单位
  253.          */
  254.         @JSONField(serialize = false)
  255.         public double getFormatAmount() {
  256.             return amount / 100d;
  257.         }

  258.         @JSONField(serialize = false)
  259.         public Date getFormatReceiveTime() {
  260.             return receiveTime != null ? DateUtil
  261.                     .parse2yyyyMMddHHmmss(receiveTime) : null;
  262.         }

  263.         @Override
  264.         public String toString() {
  265.             return "RedpacketReceiver [openId=" + openId + ", status=" + status
  266.                     + ", amount=" + getFormatAmount() + ", receiveTime="
  267.                     + receiveTime + "]";
  268.         }
  269.     }

  270.     @Override
  271.     public String toString() {
  272.         return "RedpacketRecord [outTradeNo=" + outTradeNo + ", mchId=" + mchId
  273.                 + ", repacketId=" + repacketId + ", status=" + status
  274.                 + ", sendType=" + sendType + ", hbType=" + hbType
  275.                 + ", totalNum=" + totalNum + ", totalAmount="
  276.                 + getFormatTotalAmount() + ", reason=" + reason + ", sendTime="
  277.                 + sendTime + ", refundTime=" + refundTime + ", refundAmount="
  278.                 + getFormatRefundAmount() + ", wishing=" + wishing
  279.                 + ", remark=" + remark + ", actName=" + actName
  280.                 + ", receivers=" + receivers + "]";
  281.     }
  282. }