package com.gxwebsoft.common.system.param;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.gxwebsoft.common.core.annotation.QueryField;
import com.gxwebsoft.common.core.annotation.QueryType;
import com.gxwebsoft.common.core.web.BaseParam;
import io.swagger.v3.oas.annotations.media.Schema;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.EqualsAndHashCode;

import java.util.Set;

/**
 * 企业信息查询参数
 *
 * @author 科技小王子
 * @since 2023-05-27 14:57:34
 */
@Data
@EqualsAndHashCode(callSuper = false)
@JsonInclude(JsonInclude.Include.NON_NULL)
@Schema(name = "CompanyParam对象", description = "企业信息查询参数")
public class CompanyParam extends BaseParam {
    private static final long serialVersionUID = 1L;

    @Schema(description = "企业id")
    @QueryField(type = QueryType.EQ)
    private Integer companyId;

    @Schema(description = "应用类型")
    private Integer type;

    @Schema(description = "是否官方")
    private Boolean official;

    @Schema(description = "企业简称")
    private String shortName;

    @Schema(description = "企业全称")
    private String companyName;

    @Schema(description = "企业标识")
    private String companyCode;

    @Schema(description = "类型 10企业 20政府单位")
    @QueryField(type = QueryType.EQ)
    private String companyType;

    @Schema(description = "企业类型 多选")
    private String companyTypeMultiple;

    @Schema(description = "应用标识")
    private String companyLogo;

    @Schema(description = "栏目分类")
    @QueryField(type = QueryType.EQ)
    private Integer categoryId;

    @Schema(description = "企业域名")
    private String domain;

    @Schema(description = "联系电话")
    private String phone;

    @Schema(description = "电子邮箱")
    @QueryField(type = QueryType.EQ)
    private String email;

    @Schema(description = "企业法人")
    private String businessEntity;

    @Schema(description = "发票抬头")
    private String invoiceHeader;

    @Schema(description = "服务开始时间")
    private String startTime;

    @Schema(description = "服务到期时间")
    private String expirationTime;

    @Schema(description = "应用版本 10体验版 20授权版 30旗舰版")
    @QueryField(type = QueryType.EQ)
    private Integer version;

    @Schema(description = "成员数量")
    @QueryField(type = QueryType.EQ)
    private Integer members;

    @Schema(description = "行业类型(父级)")
    private String industryParent;

    @Schema(description = "行业类型(子级)")
    private String industryChild;

    @Schema(description = "部门数量")
    @QueryField(type = QueryType.EQ)
    private Integer departments;

    @Schema(description = "所在国家")
    private String country;

    @Schema(description = "所在省份")
    private String province;

    @Schema(description = "所在城市")
    private String city;

    @Schema(description = "所在辖区")
    private String region;

    @Schema(description = "街道地址")
    private String address;

    @Schema(description = "经度")
    private String longitude;

    @Schema(description = "纬度")
    private String latitude;

    @Schema(description = "备注")
    private String comments;

    @Schema(description = "是否实名认证")
    @QueryField(type = QueryType.EQ)
    private Integer authentication;

    @Schema(description = "是否推荐")
    @QueryField(type = QueryType.EQ)
    private Boolean recommend;

    @Schema(description = "应用类型 app应用 plug插件")
    private String appType;

    @Schema(description = "状态")
    @QueryField(type = QueryType.EQ)
    private Integer status;

    @Schema(description = "用户ID")
    @QueryField(type = QueryType.EQ)
    private Integer userId;

    @Schema(description = "商户ID")
    @QueryField(type = QueryType.EQ)
    private Long merchantId;

    @Schema(description = "是否删除, 0否, 1是")
    @QueryField(type = QueryType.EQ)
    private Integer deleted;

    @Schema(description = "是否默认企业主体")
    @QueryField(type = QueryType.EQ)
    private Boolean authoritative;

    @Schema(description = "租户号")
    private Integer tenantId;

    @Schema(description = "应用名称")
    @QueryField(type = QueryType.EQ)
    private String appName;

    @Schema(description = "企业id集合")
    @TableField(exist = false)
    private Set<Integer> companyIds;

}
