package com.yuchen.saas.park.api.dto.property;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.thinkunion.park.service.common.utils.AmtUtil;
import lombok.Data;
import org.hibernate.validator.constraints.Range;

import javax.validation.constraints.Min;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Positive;
import java.math.BigDecimal;
import java.util.Date;

/**
 * 预存款
 */
@Data
public class PropertyPrepaymentSaveDto {

    /**
     * 是否小程序端个人充值
     * 空值 PC 端请求，有值：1-个人，0-企业
     */
    private Integer isAppPerson;

    /**
     * 是否退款; 0-否，1-是
     */
    @NotNull(message = "是否退款标识不能为空")
    @Range(min = 0, max = 1, message = "退款标识参数不正确")
    private Integer isRefund;
    /**
     * 园区id
     */
    @NotNull(message = "园区不能为空")
    private Long parkId;
    /**
     * 客户
     */
    @NotNull(message = "客户不为空")
    private Long customerId;
    /**
     * 房源id
     */
    private Long houseId;
    /**
     * 预存账户
     */
    @NotNull(message = "预存账户不能为空")
    private Long feeItemId;
    /**
     * 预存金额
     */
    @JsonIgnore
    private Long amtFen;
    public Long getAmtFen() {
        return AmtUtil.yuanToFenObj(this.prepayAmt);
    }

    /**
     * 预存金额
     */
    @NotNull(message = "预存金额不能为空")
    @Positive(message = "金额必须大于")
    private BigDecimal prepayAmt;

    /**
     * 收款方式; 1-现金，2-第三方转账，3-银行卡转账，4-在线支付
     */
    @Min(value = 1,message = "收款方式参数不正确")
    private Integer payType;

    /**
     * 退款方式;1-在线原路退回，2-第三方转账，3-银行卡转账
     */
    @Min(value = 1,message = "退款方式参数不正确")
    private Integer refundType;
    /**
     * 收支时间
     */
    @JsonFormat(timezone = "GMT+8",pattern = "yyyy-MM-dd HH:mm:ss")
    @NotNull(message = "付款或退款时间不能为空")
    private Date recordTime;
    /**
     * 付款人员
     */
    private String payUser;
    /**
     * 收费人员
     */
    private String receiveUser;
    /**
     * 第三方类型; 1-微信，2-支付宝
     */
    private Integer thirdPartyType;
    /**
     * 付款银行
     */
    private String payBank;
    /**
     * 付款账户
     */
    private String payAccount;
    /**
     * 收款银行
     */
    private String receiveBank;
    /**
     * 收款账户
     */
    private String receiveAccount;
    /**
     * 交易单号
     */
    private String transactionNum;
    /**
     * 交易截图
     */
    private String filePath;
    /**
     * 备注
     */
    private String remark;


}
