
package com.tmerclub.cloud.user.dto;

import io.swagger.v3.oas.annotations.Hidden;
import io.swagger.v3.oas.annotations.media.Schema;
import org.springframework.format.annotation.DateTimeFormat;

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

/**
 * 全部会员，请求参数
 *
 * @author cl
 * @data 2020-04-09 16:16:50
 */
public class UserManagerDTO implements Serializable {
    @Serial
    private static final long serialVersionUID = 1L;
    @Schema(description = "用户id")
    private Long userId;

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

    @Schema(description = "真实姓名")
    private String realName;

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

    @Schema(description = "性别 null 不限，M男，F女")
    private String sex;

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

    @Schema(description = "客户注册时间-条件开始时间")
    private Date userRegStartTime;
    @Schema(description = "客户注册时间-条件结束时间")
    private Date userRegEndTime;

    @Schema(description = "客户渠道 null 不限，公众号，小程序，H5，自有App")
    private Integer appType;

    @Schema(description = "客户身份 0普通会员，1付费会员")
    private Integer levelType;
    @Schema(description = "会员等级")
    private Integer level;

    // ------交易信息----------------------------------

    @Schema(description = "最近消费时间-开始时间")
    private Date reConsStartTime;
    @Schema(description = "最近消费时间-结算时间")
    private Date reconsEndTime;


    @Schema(description = "消费金额")
    private Double preConsAmount;
    @Schema(description = "消费金额")
    private Double apConsAmount;

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

    @Schema(description = "订单均价")
    private Double preOrderAverAmount;
    @Schema(description = "订单均价")
    private Double apOrderAverAmount;

    @Schema(description = "平均折扣")
    private Double preAverDiscount;
    @Schema(description = "平均折扣")
    private Double apAverDiscount;

    @Schema(description = "当前余额")
    private Double preCurrentBalance;

    @Schema(description = "用户ids")
    private List<Long> userIds;

    @Schema(description = "当前余额")
    private Double apCurrentBalance;


    @Schema(description = "当前积分")
    private Integer preCurrentScore;
    @Schema(description = "当前积分")
    private Integer apCurrentScore;


    @Schema(description = "充值金额")
    private Double preRechargeAmount;
    @Schema(description = "充值金额")
    private Double apRechargeAmount;

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

    @Schema(description = "客户标签")
    private List<Long> tagIds;

    @Schema(description = "排序字段的名称")
    private String fieldName;

    @Schema(description = "排序规则:一次只能安照一个字段排序; 升序：ascending 降序：descending 不排序: null ")
    private String sortingType;

    @Schema(description = "注册时间筛选-注册开始时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createStartTime;

    @Schema(description = "注册时间筛选-注册结束时间")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private Date createEndTime;

    @Schema(description = "店铺id")
    private Long shopId;

    @Hidden
    @Schema(description = "支付系统类型")
    private Integer paySysType;

    public Long getShopId() {
        return shopId;
    }

    public void setShopId(Long shopId) {
        this.shopId = shopId;
    }

    public Long getUserId() {
        return userId;
    }

    public void setUserId(Long userId) {
        this.userId = userId;
    }

    public String getNickName() {
        return nickName;
    }

    public void setNickName(String nickName) {
        this.nickName = nickName;
    }

    public String getRealName() {
        return realName;
    }

    public void setRealName(String realName) {
        this.realName = realName;
    }

    public String getPhone() {
        return phone;
    }

    public void setPhone(String phone) {
        this.phone = phone;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    public Integer getStatus() {
        return status;
    }

    public void setStatus(Integer status) {
        this.status = status;
    }

    public Date getUserRegStartTime() {
        return userRegStartTime;
    }

    public void setUserRegStartTime(Date userRegStartTime) {
        this.userRegStartTime = userRegStartTime;
    }

    public Date getUserRegEndTime() {
        return userRegEndTime;
    }

    public void setUserRegEndTime(Date userRegEndTime) {
        this.userRegEndTime = userRegEndTime;
    }

    public Integer getAppType() {
        return appType;
    }

    public void setAppType(Integer appType) {
        this.appType = appType;
    }

    public Integer getLevelType() {
        return levelType;
    }

    public void setLevelType(Integer levelType) {
        this.levelType = levelType;
    }

    public Integer getLevel() {
        return level;
    }

    public void setLevel(Integer level) {
        this.level = level;
    }

    public Date getReConsStartTime() {
        return reConsStartTime;
    }

    public void setReConsStartTime(Date reConsStartTime) {
        this.reConsStartTime = reConsStartTime;
    }

    public Date getReconsEndTime() {
        return reconsEndTime;
    }

    public void setReconsEndTime(Date reconsEndTime) {
        this.reconsEndTime = reconsEndTime;
    }

    public Double getPreConsAmount() {
        return preConsAmount;
    }

    public void setPreConsAmount(Double preConsAmount) {
        this.preConsAmount = preConsAmount;
    }

    public Double getApConsAmount() {
        return apConsAmount;
    }

    public void setApConsAmount(Double apConsAmount) {
        this.apConsAmount = apConsAmount;
    }

    public Integer getPreConsTimes() {
        return preConsTimes;
    }

    public void setPreConsTimes(Integer preConsTimes) {
        this.preConsTimes = preConsTimes;
    }

    public Integer getApConsTimes() {
        return apConsTimes;
    }

    public void setApConsTimes(Integer apConsTimes) {
        this.apConsTimes = apConsTimes;
    }

    public Double getPreOrderAverAmount() {
        return preOrderAverAmount;
    }

    public void setPreOrderAverAmount(Double preOrderAverAmount) {
        this.preOrderAverAmount = preOrderAverAmount;
    }

    public Double getApOrderAverAmount() {
        return apOrderAverAmount;
    }

    public void setApOrderAverAmount(Double apOrderAverAmount) {
        this.apOrderAverAmount = apOrderAverAmount;
    }

    public Double getPreAverDiscount() {
        return preAverDiscount;
    }

    public void setPreAverDiscount(Double preAverDiscount) {
        this.preAverDiscount = preAverDiscount;
    }

    public Double getApAverDiscount() {
        return apAverDiscount;
    }

    public void setApAverDiscount(Double apAverDiscount) {
        this.apAverDiscount = apAverDiscount;
    }

    public Double getPreCurrentBalance() {
        return preCurrentBalance;
    }

    public void setPreCurrentBalance(Double preCurrentBalance) {
        this.preCurrentBalance = preCurrentBalance;
    }

    public List<Long> getUserIds() {
        return userIds;
    }

    public void setUserIds(List<Long> userIds) {
        this.userIds = userIds;
    }

    public Double getApCurrentBalance() {
        return apCurrentBalance;
    }

    public void setApCurrentBalance(Double apCurrentBalance) {
        this.apCurrentBalance = apCurrentBalance;
    }

    public Integer getPreCurrentScore() {
        return preCurrentScore;
    }

    public void setPreCurrentScore(Integer preCurrentScore) {
        this.preCurrentScore = preCurrentScore;
    }

    public Integer getApCurrentScore() {
        return apCurrentScore;
    }

    public void setApCurrentScore(Integer apCurrentScore) {
        this.apCurrentScore = apCurrentScore;
    }

    public Double getPreRechargeAmount() {
        return preRechargeAmount;
    }

    public void setPreRechargeAmount(Double preRechargeAmount) {
        this.preRechargeAmount = preRechargeAmount;
    }

    public Double getApRechargeAmount() {
        return apRechargeAmount;
    }

    public void setApRechargeAmount(Double apRechargeAmount) {
        this.apRechargeAmount = apRechargeAmount;
    }

    public Integer getPreRechargeTimes() {
        return preRechargeTimes;
    }

    public void setPreRechargeTimes(Integer preRechargeTimes) {
        this.preRechargeTimes = preRechargeTimes;
    }

    public Integer getApRechargeTimes() {
        return apRechargeTimes;
    }

    public void setApRechargeTimes(Integer apRechargeTimes) {
        this.apRechargeTimes = apRechargeTimes;
    }

    public List<Long> getTagIds() {
        return tagIds;
    }

    public void setTagIds(List<Long> tagIds) {
        this.tagIds = tagIds;
    }

    public String getFieldName() {
        return fieldName;
    }

    public void setFieldName(String fieldName) {
        this.fieldName = fieldName;
    }

    public String getSortingType() {
        return sortingType;
    }

    public void setSortingType(String sortingType) {
        this.sortingType = sortingType;
    }

    public Date getCreateStartTime() {
        return createStartTime;
    }

    public void setCreateStartTime(Date createStartTime) {
        this.createStartTime = createStartTime;
    }

    public Date getCreateEndTime() {
        return createEndTime;
    }

    public void setCreateEndTime(Date createEndTime) {
        this.createEndTime = createEndTime;
    }

    public Integer getPaySysType() {
        return paySysType;
    }

    public void setPaySysType(Integer paySysType) {
        this.paySysType = paySysType;
    }

    @Override
    public String toString() {
        return "UserManagerDTO{" +
                "userId=" + userId +
                ", nickName='" + nickName + '\'' +
                ", realName='" + realName + '\'' +
                ", phone='" + phone + '\'' +
                ", sex='" + sex + '\'' +
                ", status=" + status +
                ", userRegStartTime=" + userRegStartTime +
                ", userRegEndTime=" + userRegEndTime +
                ", appType=" + appType +
                ", levelType=" + levelType +
                ", level=" + level +
                ", reConsStartTime=" + reConsStartTime +
                ", reconsEndTime=" + reconsEndTime +
                ", preConsAmount=" + preConsAmount +
                ", apConsAmount=" + apConsAmount +
                ", preConsTimes=" + preConsTimes +
                ", apConsTimes=" + apConsTimes +
                ", preOrderAverAmount=" + preOrderAverAmount +
                ", apOrderAverAmount=" + apOrderAverAmount +
                ", preAverDiscount=" + preAverDiscount +
                ", apAverDiscount=" + apAverDiscount +
                ", preCurrentBalance=" + preCurrentBalance +
                ", userIds=" + userIds +
                ", apCurrentBalance=" + apCurrentBalance +
                ", preCurrentScore=" + preCurrentScore +
                ", apCurrentScore=" + apCurrentScore +
                ", preRechargeAmount=" + preRechargeAmount +
                ", apRechargeAmount=" + apRechargeAmount +
                ", preRechargeTimes=" + preRechargeTimes +
                ", apRechargeTimes=" + apRechargeTimes +
                ", tagIds=" + tagIds +
                ", fieldName='" + fieldName + '\'' +
                ", sortingType='" + sortingType + '\'' +
                ", createStartTime=" + createStartTime +
                ", createEndTime=" + createEndTime +
                ", shopId=" + shopId +
                ", paySysType=" + paySysType +
                '}';
    }
}
