package com.yonge.cooleshow.biz.dal.entity;


import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;

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

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.yonge.cooleshow.biz.dal.enums.AccountBizTypeEnum;
import com.yonge.cooleshow.biz.dal.enums.InOrOutEnum;
import com.yonge.cooleshow.common.enums.PostStatusEnum;

/**
 * 平台账户流水表(PlatformCashAccountRecord)表实体类
 *
 * @author zx
 * @since 2022-07-21 10:32:06
 */
@ApiModel(value = "platform_cash_account_record-平台账户流水表")
public class PlatformCashAccountRecord implements Serializable {
    @TableId(value = "id_", type = IdType.AUTO)
    @ApiModelProperty(value = "id")
    private Long id;

    @TableField("account_id_")
    @ApiModelProperty(value = "支出账户id")
    private Long accountId;

    @TableField("trans_amount_")
    @ApiModelProperty(value = "交易金额")
    private BigDecimal transAmount;

    @TableField("in_or_out_")
    @ApiModelProperty(value = "收支类型：IN、收入 OUT、支出")
    private InOrOutEnum inOrOut;

    @TableField("post_status_")
    @ApiModelProperty(value = "入账状态 WAIT 待入账 RECORDED 已入账 CANCEL 退费")
    private PostStatusEnum postStatus;

    @TableField("biz_type_")
    @ApiModelProperty(value = "业务类型：PRACTICE、陪练课 LIVE、直播课 VIDEO、视频课 MUSIC、乐谱 VIP、会员充值 MALL、商品购买 PIAON_ROOM、琴房充值 ACTI_REGIST、活动报名 LIVE_SHARE、直播课分润 VIDEO_SHARE、视频课分润  MUSIC_SHARE、乐谱分润  VIP_SHARE、会员分润  MALL_SHARE、商品分润")
    private AccountBizTypeEnum bizType;

    @TableField("biz_id_")
    @ApiModelProperty(value = "业务id(PRACTICE,LIVE,LIVE_SHARE为课程组id | VIDEO,VIDEO_SHARE为视频组id |MUSIC,MUSIC_SHARE为曲谱id | VIP,VIP_SHARE,PIAON_ROOM为会员琴房价格表id | MALL,MALL_SHARE为商品id | ACTI_REGIST为活动id )")
    private Long bizId;

    @TableField("memo_")
    @ApiModelProperty(value = "备注")
    private String memo;

    @TableField("order_no_")
    @ApiModelProperty(value = "订单号")
    private String orderNo;

    @TableField("create_time_")
    @ApiModelProperty(value = "创建时间")
    private Date createTime;

    @TableField("update_time_")
    @ApiModelProperty(value = "修改时间")
    private Date updateTime;

    @TableField("account_period_time_")
    @ApiModelProperty(value = "账期时间")
    private Date accountPeriodTime;

    public PlatformCashAccountRecord() {
    }

    public PlatformCashAccountRecord(Long accountId, BigDecimal transAmount, InOrOutEnum inOrOut, PostStatusEnum postStatus,
                                     AccountBizTypeEnum bizType, Long bizId, String orderNo, Date accountPeriodTime) {
        this.accountId = accountId;
        this.transAmount = transAmount;
        this.inOrOut = inOrOut;
        this.postStatus = postStatus;
        this.bizType = bizType;
        this.bizId = bizId;
        this.orderNo = orderNo;
        this.accountPeriodTime = accountPeriodTime;
        this.createTime = new Date();
        this.updateTime = new Date();
    }

    public Long getId() {
        return id;
    }

    public void setId(Long id) {
        this.id = id;
    }

    public Long getAccountId() {
        return accountId;
    }

    public void setAccountId(Long accountId) {
        this.accountId = accountId;
    }

    public BigDecimal getTransAmount() {
        return transAmount;
    }

    public void setTransAmount(BigDecimal transAmount) {
        this.transAmount = transAmount;
    }

    public InOrOutEnum getInOrOut() {
		return inOrOut;
	}

	public void setInOrOut(InOrOutEnum inOrOut) {
		this.inOrOut = inOrOut;
	}

	public PostStatusEnum getPostStatus() {
		return postStatus;
	}

	public void setPostStatus(PostStatusEnum postStatus) {
		this.postStatus = postStatus;
	}

	public AccountBizTypeEnum getBizType() {
		return bizType;
	}

	public void setBizType(AccountBizTypeEnum bizType) {
		this.bizType = bizType;
	}

	public Long getBizId() {
        return bizId;
    }

    public void setBizId(Long bizId) {
        this.bizId = bizId;
    }

    public String getMemo() {
        return memo;
    }

    public void setMemo(String memo) {
        this.memo = memo;
    }

    public String getOrderNo() {
        return orderNo;
    }

    public void setOrderNo(String orderNo) {
        this.orderNo = orderNo;
    }

    public Date getCreateTime() {
        return createTime;
    }

    public void setCreateTime(Date createTime) {
        this.createTime = createTime;
    }

    public Date getUpdateTime() {
        return updateTime;
    }

    public void setUpdateTime(Date updateTime) {
        this.updateTime = updateTime;
    }

    public Date getAccountPeriodTime() {
        return accountPeriodTime;
    }

    public void setAccountPeriodTime(Date accountPeriodTime) {
        this.accountPeriodTime = accountPeriodTime;
    }
}

