package com.cyksj.model.manage.views;

import com.ejlchina.searcher.bean.DbField;
import com.ejlchina.searcher.bean.SearchBean;
import lombok.Data;

import java.util.Date;
import java.util.List;

/**
 * @author chan
 * @date 2024/1/19 10:43
 */
@Data
@SearchBean(tables = " corp_user c, corp_user_auth cu ,corp_user_follow_relation cr, corp_user_tag t ",
        where = "cu.corp_user_id = c.id " +
                "and cu.external_userid = cr.corp_user_id " +
                "and cr.id = t.relation_id ",
        groupBy = "c.name, c.avatar, c.type, c.gender, c.unionid, c.user_id, c.state, c.mark_info, c.created_time"
)
public class CorpUserView {

    /**
     * 外部联系人的名称
     */
    @DbField("c.name")
    private String name;

    /**
     * 外部联系人头像，代开发自建应用需要管理员授权才可以获取，第三方不可获取，上游企业不可获取下游企业客户该字段
     */
    @DbField("c.name")
    private String avatar;

    /**
     * 外部联系人的类型，1表示该外部联系人是微信用户，2表示该外部联系人是企业微信用户
     */
    @DbField("c.type")
    private Integer type;

    /**
     * 外部联系人性别 0-未知 1-男性 2-女性。第三方不可获取，上游企业不可获取下游企业客户该字段，返回值为0，表示未定义
     */
    @DbField("c.gender")
    private Integer gender;

    /**
     * 外部联系人在微信开放平台的唯一身份标识（微信unionid），通过此字段企业可将外部联系人与公众号/小程序用户关联起来。仅当联系人类型是微信用户，且企业绑定了微信开发者ID有此字段。
     */
    @DbField("c.unionid")
    private String unionid;

    /**
     * user表 关联用户id
     */
    @DbField("c.user_id")
    private Long userId;

    /**
     * 添加渠道来源
     */
    @DbField("c.state")
    private String state;

    /**
     * 客服标记内容
     */
    @DbField("c.mark_info")
    private String markInfo;

    @DbField("c.created_time")
    private Date createdTime;


    /**
     * 标签组
     */
    @DbField("group_concat(t.tag_name)")
    private List<String> tags;
}
