package com.sckw.auth.model.vo.res;

import com.fasterxml.jackson.databind.annotation.JsonSerialize;
import com.sckw.core.utils.LongToStringUtils;
import com.sckw.system.api.model.dto.res.RoleInfoDto;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;

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

/**
 * @author zk
 * @desc TODO
 * @date 2023/8/10 0010
 */
@Data
public class LoginResVo1 implements Serializable {

    /**
     * 用户id
     */
    @JsonSerialize(using = LongToStringUtils.class)
    private long id;

    /**
     * 姓名
     */
    @Schema(description = "姓名")
    private String name;

    /**
     * 账号
     */
    @Schema(description = "账号")
    private String account;

    /**
     * 电话
     */
    @Schema(description = "电话")
    private String phone;

    /**
     * 头像
     */
    @Schema(description = "头像")
    private String photo;

    /**
     * 角色名称
     */
    @Schema(description = "角色名称")
    private String roleName;

    /**
     * 机构名称
     */
    @Schema(description = "机构名称")
    private String deptName;

    /**
     * 是否是企业管理（0是 1否）
     */
    @Schema(description = "是否是企业管理（0是 1否）")
    private Integer isMain;

    /**
     * 状态
     */
    @Schema(description = "状态")
    private Integer status;

    /**
     * 企业Id
     */
    @JsonSerialize(using = LongToStringUtils.class)
    @Schema(description = "企业Id")
    private Long entId;

    /**
     * 企业名称
     */
    @Schema(description = "企业名称")
    private String firmName;

    /**
     * 资料审批状态（0未审批、1通过、2未通过、3审批中）
     */
    @Schema(description = "资料审批状态（0未审批、1通过、2未通过、3审批中）")
    private Integer approval;

    /**
     * 是否有效
     */
    @Schema(description = "是否有效")
    private Boolean valid;


    /**
     * 企业类型（名称）
     */
    @Schema(description = "企业类型（名称）")
    private String entTypeNames;

    /**
     * 企业属性 （1供应商，2采购商，34PL物流，43PL物流）
     */
    @Schema(description = "企业属性 （1供应商，2采购商，34PL物流，43PL物流）")
    private String entTypes;

    /**
     * 推送设备id
     */
    @Schema(description = "推送设备id")
    private String clientId;

    /**
     * 设备类型
     */
    @Schema(description = "设备类型")
    private String clientType;

    /**
     * 系统类型(1运营端、2企业开户、3司机端)
     */
    @Schema(description = "系统类型(1运营端、2企业开户、3司机端)")
    private Integer systemType;

    /**
     * 访问令牌
     */
    @Schema(description = "访问令牌")
    private String token;

    /**
     * 刷新令牌（记住密码时返回）
     */
    @Schema(description = "刷新令牌（记住密码时返回）")
    private String refreshToken;

    /**
     * 机构id
     */
    @Schema(description = "机构id")
    private Long deptId;

    /**
     * 岗位角色id
     */
    @Schema(description = "岗位角色id")
    private Long roleId;

    /**
     * 司机id
     */
    @Schema(description = "司机id")
    private Long driverId;
    @Schema(description = "岗位角色列表")
    private List<RoleInfoDto> roleList;

    /**
     * APP端底部TabBar配置
     */
    private List<TabBarItem> tabBar;

    @Schema(description = "是否展示订单统计模块")
    private Boolean showOrderStatisticsModule;

    @Schema(description = "是否展示销售统计模块")
    private Boolean showSalesStatisticsModule;

    @Schema(description = "是否展示钱包模块")
    private Boolean showWalletModule;

    @Schema(description = "是否展示地址模块")
    private Boolean showAddressModule;

    @Schema(description = "钱包模块展示项")
    private List<String> walletModuleItems;

    @Data
    public static class TabBarItem implements Serializable {
        @Serial
        private static final long serialVersionUID = 2168990757095988491L;
        /**
         * 菜单名称
         */
        private String text;
        /**
         * 未选中图标路径
         */
        private String iconPath;
        /**
         * 未选中图标路径
         */
        private String notSelectedIconPath;
        /**
         * 页面调整路径
         */
        private String pagePath;
        /**
         * 数量
         */
        private Integer count;
    }

}
