package thyyxxk.webserver.entity.outpatient.wxapi;

import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;

@Data
public class WxPayOrder {
    // 商品描述
    private String body;
    // 订单类型，1：挂号费 2：门诊缴费 3：住院预交金
    private Integer orderType;
    // 关注公众号产生的用户唯一ID
    private String openid;
    // 总金额
    private BigDecimal totalFee;
    private BigDecimal fundpayAmt;
    private BigDecimal acctpayAmt;
    private BigDecimal couponAmt;
    private BigDecimal cashpayAmt;
    // 门诊ID
    private String patientId;
    // 患者姓名
    private String patientName;
    // 应用ID
    private String appId;
    // 微信商户号
    private String mchId;
    // 预支付交易会话ID
    private String prepayId;
    // 下单时间戳
    private String timeStamp;
    // 交易流水号
    private String serialNo;
    // 交易订单号
    private String tradeNo;
    // 加密方式，指定为MD5
    private final String signType = "MD5";
    // 下单签名
    private String createOrderSign;
    // 支付签名
    private String paySign;
    // 下单终端IP
    private String spbillCreateIp;
    // 订单创建时间
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createDatetime;
    // 订单支付时间
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date payDatetime;
    // 订单支付状态，99：初值，0：未支付，1：支付成功，2：已关闭，3：支付失败，4：已退款，5：已接收，等待扣款，6：用户支付中，7：退款失败
    private String tradeState;
    // HIS单号
    private String hisOrdNum;
    // 退款原因
    private String refundReason;
    // 退款操作员code
    private String refundOpCode;
    // 微信退款单号
    private String refundId;
    // 退款操作时间
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(timezone = "GMT+8", pattern = "yyyy-MM-dd HH:mm:ss")
    private Date refundOpDatetime;
    // 以下部分缴纳住院预交金会用到
    // 住院号
    private String inpatientNo;
    // 住院次数
    private Integer admissTimes;

    // 退款操作员姓名
    private String refundOpName;
}
