package com.starry.admin.modules.clerk.module.entity;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.starry.admin.modules.order.module.entity.PlayOrderInfoEntity;
import com.starry.admin.modules.weichat.entity.clerk.MediaVo;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

/**
 * 店员分页查询对象
 *
 * @author admin
 * @since 2024-03-30
 */
@Data
@ApiModel(value = "店员详细信息返回对象", description = "分页查询店员详细信息的返回结果")
public class PlayClerkUserReturnVo {

    /**
     * UUID
     */
    @ApiModelProperty(value = "店员ID", notes = "唯一标识")
    private String id;

    /**
     * 店员昵称
     */
    @ApiModelProperty(value = "店员昵称")
    private String nickname;

    /**
     * 店员等级
     */
    @ApiModelProperty(value = "店员等级ID")
    private String levelId;

    /**
     * 店员等级
     */
    @ApiModelProperty(value = "店员等级名称")
    private String levelName;

    /**
     * 分组ID
     */
    @ApiModelProperty(value = "分组ID")
    private String groupId;

    /**
     * 分组ID
     */
    @ApiModelProperty(value = "分组名称")
    private String groupName;

    /**
     * 性别[0:未知;1:男;2:女]
     */
    @ApiModelProperty(value = "性别", notes = "0:未知;1:男;2:女")
    private String sex;

    /**
     * 头像
     */
    @ApiModelProperty(value = "头像", notes = "头像图片URL")
    private String avatar;

    /**
     * 音频
     */
    @ApiModelProperty(value = "音频", notes = "音频文件URL")
    private String audio;

    /**
     * 星座
     */
    @ApiModelProperty(value = "星座", example = "天蝎座")
    private String constellation;

    /**
     * 标签
     */
    @ApiModelProperty(value = "标签列表", notes = "店员个人标签")
    private List<String> label = new ArrayList<>();

    /**
     * 相册
     */
    @ApiModelProperty(value = "相册列表", notes = "店员相册图片URL列表")
    private List<String> album = new ArrayList<>();

    /**
     * 媒资列表
     */
    @ApiModelProperty(value = "媒资列表", notes = "结构化媒资数据")
    private List<MediaVo> mediaList = new ArrayList<>();

    /**
     * 个性签名
     */
    @ApiModelProperty(value = "个性签名")
    private String signature;

    /**
     * 年龄
     */
    @ApiModelProperty(value = "年龄", example = "25")
    private Integer age;

    /**
     * 所在省份
     */
    @ApiModelProperty(value = "所在省份", example = "广东省")
    private String province;

    /**
     * 所在城市
     */
    @ApiModelProperty(value = "所在城市", example = "深圳市")
    private String city;

    /**
     * 在线状态【1：在线，0：离线】
     */
    @ApiModelProperty(value = "在线状态", notes = "1：在线，0：离线")
    private String onlineState;

    /**
     * 上架状态【1：上架，0：下架】
     */
    @ApiModelProperty(value = "上架状态", notes = "1：上架，0：下架")
    private String listingState;

    /**
     * 实名状态【1：已实名，0：未实名】
     */
    @ApiModelProperty(value = "实名状态", notes = "1：已实名，0：未实名")
    private String realState;

    /**
     * 是否必须实名【0:非必须实名;1:必须实名;2:跟随店铺设置】
     */
    @ApiModelProperty(value = "是否必须实名", notes = "0:非必须实名;1:必须实名;2:跟随店铺设置")
    private String mandatoryRealState;

    /**
     * 随机接单状态【1：允许，0：禁止】
     */
    @ApiModelProperty(value = "随机接单状态", notes = "1：允许，0：禁止")
    private String randomOrderState;

    /**
     * 地址
     */
    @ApiModelProperty(value = "地址", notes = "店员所在详细地址")
    private String address;

    /**
     * 地址
     */
    @ApiModelProperty(value = "备注")
    private String remark;

    /**
     * 订单列表
     */
    @JsonIgnore
    @ApiModelProperty(value = "订单列表", hidden = true)
    private List<PlayOrderInfoEntity> orderInfos;

    /**
     * 订单总数
     */
    @ApiModelProperty(value = "订单总数")
    private String orderNumber;

    /**
     * 续单总数
     */
    @ApiModelProperty(value = "续单总数")
    private String orderContinueNumber;

    /**
     * 订单总金额
     */
    @ApiModelProperty(value = "订单总金额")
    private BigDecimal orderTotalAmount;

    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    @ApiModelProperty(value = "添加时间", example = "2024-01-01 12:00:00")
    private LocalDateTime addTime;

    /**
     * 入职时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ApiModelProperty(value = "入职时间", example = "2024-01-01")
    private LocalDateTime entryTime;

    /**
     * 离职时间
     */
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd", timezone = "GMT+8")
    @ApiModelProperty(value = "离职时间", example = "2024-01-01")
    private LocalDateTime resignationTime;

    /**
     * 是否推荐状态（1：已推荐，0：未推荐）
     */
    @ApiModelProperty(value = "是否推荐", notes = "1：已推荐，0：未推荐")
    private String recommendationState;

    /**
     * 是否置顶状态（1：已置顶，0：未置顶）
     */
    @ApiModelProperty(value = "是否置顶", notes = "1：已置顶，0：未置顶")
    private String pinToTopState;

    /**
     * 显示状态【1：显示，0：隐藏】
     */
    @ApiModelProperty(value = "显示状态", notes = "1：显示，0：隐藏")
    private String displayState;

    /**
     * 是否固定等级(0:固定等级，1:不固定)
     */
    @ApiModelProperty(value = "是否固定等级", notes = "0:固定等级，1:不固定")
    private String fixingLevel;

    /**
     * 在职状态（1：在职，0：离职）
     */
    @ApiModelProperty(value = "在职状态", notes = "1：在职，0：离职")
    private String onboardingState;

    /**
     * 在职天数
     */
    @ApiModelProperty(value = "在职天数", example = "365")
    private Integer workingHours = 0;

}
