package com.bonus.canteen.core.account.domain;

import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.Date;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.bonus.common.core.annotation.Excel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.ToString;
import com.bonus.common.core.web.domain.BaseEntity;

/**
 * 账户交易记录对象 acc_trade
 * 
 * @author xsheng
 * @date 2025-04-05
 */


@Data
@ToString
public class AccTrade extends BaseEntity {
    private static final long serialVersionUID = 1L;

    /** 交易id */
    private Long tradeId;

    /** 交易时间 */
    @ApiModelProperty(value = "交易时间")
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "交易时间", width = 30, dateFormat = "yyyy-MM-dd")
    private LocalDateTime tradeTime;

    /** 人员id */
    @Excel(name = "人员id")
    @ApiModelProperty(value = "人员id")
    private Long userId;

    /** 所属组织id */
    @Excel(name = "所属组织id")
    @ApiModelProperty(value = "所属组织id")
    private Long deptId;

    /** 交易类型 */
    @Excel(name = "交易类型")
    @ApiModelProperty(value = "交易类型")
    private Integer tradeType;

    /** 实际交易金额/分 */
    @Excel(name = "实际交易金额/分")
    @ApiModelProperty(value = "实际交易金额/分")
    private BigDecimal actualAmount;

    /** 交易金额/分 */
    @Excel(name = "交易金额/分")
    @ApiModelProperty(value = "交易金额/分")
    private BigDecimal amount;

    /** 钱包可用总余额(不包含冻结金额) */
    @Excel(name = "钱包可用总余额(不包含冻结金额)")
    @ApiModelProperty(value = "钱包可用总余额(不包含冻结金额)")
    private BigDecimal walletBalTotal;

    /** 账户总余额(所有钱包余额+冻结金额) */
    @Excel(name = "账户总余额(所有钱包余额+冻结金额)")
    @ApiModelProperty(value = "账户总余额(所有钱包余额+冻结金额)")
    private BigDecimal accAllBal;

    /** 支付渠道 */
    @Excel(name = "支付渠道")
    @ApiModelProperty(value = "支付渠道")
    private Integer payChannel;

    /** 支付方式 */
    @Excel(name = "支付方式")
    @ApiModelProperty(value = "支付方式")
    private Integer payType;

    /** 支付状态 */
    @Excel(name = "支付状态")
    @ApiModelProperty(value = "支付状态")
    private Integer payState;

    /** 交易状态 */
    @Excel(name = "交易状态")
    @ApiModelProperty(value = "交易状态")
    private Integer tradeState;

    /** 三方支付订单号 */
    @Excel(name = "三方支付订单号")
    @ApiModelProperty(value = "三方支付订单号")
    private String thirdTradeNo;

    /** 设备sn码 */
    @Excel(name = "设备sn码")
    @ApiModelProperty(value = "设备sn码")
    private String machineSn;

    /** 批量操作批次号 */
    @Excel(name = "批量操作批次号")
    @ApiModelProperty(value = "批量操作批次号")
    private String batchNum;

    /** 商户订单号 */
    @Excel(name = "商户订单号")
    @ApiModelProperty(value = "商户订单号")
    private Long orderNo;

    /** 关联原记录交易id */
    @Excel(name = "关联原记录交易id")
    @ApiModelProperty(value = "关联原记录交易id")
    private Long originTradeId;

    /** 补贴定时规则id */
    @Excel(name = "补贴定时规则id")
    @ApiModelProperty(value = "补贴定时规则id")
    private Long subTimeRuleId;

    /** 管理费 */
    @Excel(name = "管理费")
    @ApiModelProperty(value = "管理费")
    private Long manageCost;

    /** 提现来源 1小程序 2web端 */
    @Excel(name = "提现来源 1小程序 2web端")
    @ApiModelProperty(value = "提现来源 1小程序 2web端")
    private Long withdrawSource;

    /** 充值来源 */
    @Excel(name = "充值来源")
    @ApiModelProperty(value = "充值来源")
    private Long rechargeSource;

    /** 食堂Id */
    @Excel(name = "食堂Id")
    @ApiModelProperty(value = "食堂Id")
    private Long canteenId;

    /** 充值设备类型 1-多功能终端 2-现金充值机 */
    @Excel(name = "充值设备类型 1-多功能终端 2-现金充值机")
    @ApiModelProperty(value = "充值设备类型 1-多功能终端 2-现金充值机")
    private Long machineType;

    /** 失败原因 */
    @Excel(name = "失败原因")
    @ApiModelProperty(value = "失败原因")
    private String failReason;

    /** 充值来源具体操作(1-单人2-批量3-导入4-赠送) */
    @Excel(name = "充值来源具体操作(1-单人2-批量3-导入4-赠送)")
    @ApiModelProperty(value = "充值来源具体操作(1-单人2-批量3-导入4-赠送)")
    private Long rechargeOperate;

    /** 人员类别 */
    @Excel(name = "人员类别")
    @ApiModelProperty(value = "人员类别")
    private Long psnType;

    /** 交易记录操作来源 */
    @Excel(name = "交易记录操作来源")
    @ApiModelProperty(value = "交易记录操作来源")
    private Long operateSource;

    /** 批量导入操作关联id */
    @Excel(name = "批量导入操作关联id")
    @ApiModelProperty(value = "批量导入操作关联id")
    private Long batchImportId;


}
