package com.tmerclub.cloud.api.user.vo;

import com.tmerclub.cloud.api.coupon.vo.CouponUserCountDataVO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;

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

/**
 * 全部会员VO
 *
 * @author tmerclub
 * @date: 2022-04-14
 */
@Data
@ToString
public class UserManagerVO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "用户id")
    private Long userId;

    @Schema(description = "用户名")
    private String userName;

    @Schema(description = "用户昵称")
    private String nickName;

    @Schema(description = "用户邮箱")
    private String email;

    @Schema(description = "手机号码")
    private String phone;

    @Schema(description = "修改时间")
    private Date updateTime;

    @Schema(description = "注册时间")
    private Date createTime;

    @Schema(description = "M(男) or F(女)")
    private String sex;

    @Schema(description = "出生日期。例如：2009-11-27")
    private String birthDate;

    @Schema(description = "头像图片路径")
    private String pic;

    @Schema(description = "状态 1 正常 0 无效")
    private Integer status;

    @Schema(description = "积分")
    private Long score;

    @Schema(description = "会员成长值")
    private Long growth;

    @Schema(description = "会员等级")
    private Integer level;

    @Schema(description = "等级条件 0 普通会员 1 付费会员")
    private Integer levelType;

    @Schema(description = "vip结束时间")
    private Date vipEndTime;

    @Schema(description = "会员等级名称")
    private String levelName;

    @Schema(description = "bizUserId")
    private String bizUserId;

    @Schema(description = "付费会员等级")
    private Integer vipLevel;

    @Schema(description = "付费会员等级名称")
    private String vipLevelName;

    // -----------------------------------------------------以上是user 的信息

    @Schema(description = "最近消费时间")
    private Date reConsTime;

    @Schema(description = "消费金额")
    private BigDecimal consAmount;

    @Schema(description = "实付金额")
    private BigDecimal actualAmount;

    @Schema(description = "消费次数")
    private Integer consTimes;

    @Schema(description = "下单次数")
    private Integer allCount;

    @Schema(description = "平均折扣")
    private BigDecimal averDiscount;

    @Schema(description = "充值金额")
    private BigDecimal rechargeAmount;

    @Schema(description = "充值次数")
    private Integer rechargeTimes;

    @Schema(description = "售后金额")
    private BigDecimal afterSaleAmount;

    @Schema(description = "售后次数")
    private Integer afterSaleTimes;

    @Schema(description = "当前积分")
    private Long currentScore;

    @Schema(description = "累积积分")
    private Long sumScore;

    @Schema(description = "当前余额")
    private BigDecimal currentBalance;

    @Schema(description = "累计余额")
    private BigDecimal sumBalance;

    @Schema(description = "分销等级")
    private Integer distributionLevel;

    @Schema(description = "成为分销员的时间")
    private Date distributorTime;

    // ----以下用户详情----------------------------------------------------------------

    @Schema(description = "标签")
    private List<UserTagApiVO> userTagList;

    @Schema(description = "用户优惠券 统计")
    private CouponUserCountDataVO couponUserCountDataVO;


}
