package com.yami.shop.bean.model;

import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * 积分记录详细实体类
 *
 * @author
 * @since 2025-09-XX
 */
@Data
@TableName("tz_points_record")
public class PointsRecord implements Serializable {
    private static final long serialVersionUID = 1L;

    /**
     * 主键
     */
    @TableId
    private Long id;

    /**
     * 用户ID
     */
    private String userId;

    /**
     * 渠道（企业ID）
     */
    private Long channelId;

    /**
     * 订单编号
     */
    private String orderNumber;

    /**
     * 充值积分ID
     */
    private Long pointsId;

    /**
     * 编码
     */
    private String code;

    /**
     * 订单关联父编码
     */
    private String parentCode;

    /**
     * 积分
     */
    private BigDecimal points;

    /**
     * 变动积分
     */
    private BigDecimal variablePoints;
    /**
     * 当前可用积分
     */
    private BigDecimal currentlyAvailablePoints;

    /**
     * 积分记录类型(1-充值，2-下单，3-退款)
     */
    private Integer pointsType;

    /**
     * 积分使用状态(1-未使用，2-使用部分，3-已使用)
     */
    private Integer pointsAudit;

    /**
     * 创建日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date creationDate;
    //
    @TableField(exist = false)
    private String creationDateStr;

    @TableField(exist = false)
    private String pointsTypeStr;

    @TableField(exist = false)
    private Long totalAvailablePoints=0L;

    /**
     * 变动积分
     */
    @TableField(exist = false)
    private String variablePointsStr;

    //过期状态
    @TableField(exist = false)
    private Integer expiryStatus;

    /**
     * 过期日期
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date expiryDate;

}
