package org.xyzh.api.workcase.vo;

import lombok.Data;
import lombok.EqualsAndHashCode;
import org.xyzh.common.vo.BaseVO;
import io.swagger.v3.oas.annotations.media.Schema;
import com.alibaba.fastjson2.annotation.JSONField;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 客户信息VO
 * 用于前端展示客户信息
 */
@Data
@EqualsAndHashCode(callSuper = true)
@Schema(description = "客户信息VO")
public class CustomerVO extends BaseVO {
    private static final long serialVersionUID = 1L;
    
    @Schema(description = "客户ID")
    private String customerId;
    
    @Schema(description = "客户编号")
    private String customerNo;
    
    @Schema(description = "客户姓名")
    private String customerName;
    
    @Schema(description = "客户类型")
    private String customerType;
    
    @Schema(description = "客户类型名称")
    private String customerTypeName;
    
    @Schema(description = "公司名称")
    private String companyName;
    
    @Schema(description = "电话")
    private String phone;
    
    @Schema(description = "邮箱")
    private String email;
    
    @Schema(description = "微信OpenID")
    private String wechatOpenid;
    
    @Schema(description = "头像URL")
    private String avatar;
    
    @Schema(description = "性别")
    private Integer gender;
    
    @Schema(description = "性别名称")
    private String genderName;
    
    @Schema(description = "地址")
    private String address;
    
    @Schema(description = "客户等级")
    private String customerLevel;
    
    @Schema(description = "客户等级名称")
    private String customerLevelName;
    
    @Schema(description = "客户来源")
    private String customerSource;
    
    @Schema(description = "客户来源名称")
    private String customerSourceName;
    
    @Schema(description = "客户标签")
    private List<String> tags;
    
    @Schema(description = "备注")
    private String notes;
    
    @Schema(description = "CRM系统客户ID")
    private String crmCustomerId;
    
    @Schema(description = "最后联系时间", format = "date-time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    private Date lastContactTime;
    
    @Schema(description = "咨询总次数")
    private Integer totalConsultations;
    
    @Schema(description = "订单总数")
    private Integer totalOrders;
    
    @Schema(description = "总消费金额")
    private BigDecimal totalAmount;
    
    @Schema(description = "满意度评分")
    private BigDecimal satisfactionScore;
    
    @Schema(description = "状态")
    private String status;
    
    @Schema(description = "状态名称")
    private String statusName;
    
    @Schema(description = "状态颜色")
    private String statusColor;
    
    @Schema(description = "创建者姓名")
    private String creatorName;
    
    @Schema(description = "更新者姓名")
    private String updaterName;
}
