package com.fs.qw.domain;

import com.fs.common.annotation.Excel;
import com.fs.common.core.domain.BaseEntity;
import com.alibaba.fastjson.JSON;
import lombok.Data;
import org.apache.commons.lang3.StringUtils;
import java.util.Date;
import java.util.List;

/**
 * 企微-获客链接管理对象 qw_acquisition_assistant
 *
 * @author fs
 * @date 2026-03-16
 */

@Data
public class QwAcquisitionAssistant extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 获客链接ID */
    private String linkId;

    /** 获客链接名称 */
    private String linkName;

    /** 获客链接URL */
    private String url;

    /** 获客链接scheme */
    private String scheme;

    /** 创建时间（企微返回的时间） */
    private Date qwCreateTime;

    /** 是否无需验证，默认为true */
    private String skipVerify;

//    /**
//     * 是否标记客户添加来源为该应用创建的获客链接, 默认值为true; 仅对「营销获客」应用生效
//     * */
//    private Boolean markSource=true;

    /** 优先分配类型(0-不启用 1-全企业范围内优先分配给有好友关系的 2-指定范围内优先分配有好友关系的) */
    private Integer priorityType;

    /** 关联的成员列表，JSON数组格式 */
    private String userList;

    /** 关联的部门列表，JSON数组格式 */
    private String departmentList;

    /** 优先分配成员列表，JSON数组格式 */
    private String priorityUserList;

    /** qw_user表的主键id列表，JSON数组格式 */
    private String qwUserTableIdList;

    /** 使用范围描述（用于展示） */
    private String rangeDesc;

    /** 状态(0-已删除 1-正常 2-已失效) */
    private Integer status;

    /** 最后同步时间 */
    private Date syncTime;

    /** 备注 */
    private String remark;

    /** 删除标志(0-正常 1-已删除) */
    private String delFlag;

    // ==================== 非数据库字段，用于辅助操作 ====================

    /** 成员列表（用于接收前端参数） */
    private List<String> userListParam;

    /** 部门列表（用于接收前端参数） */
    private List<Long> departmentListParam;

    /** 优先分配成员列表（用于接收前端参数） */
    private List<String> priorityUserListParam;

    /** 主体corpId */
    private String corpId;

    /** 页面参数 */
    private String pageParam;

    /**
     * 将参数列表转换为JSON字符串
     */
    public void buildJsonFields()
    {
        if (userListParam != null) {
            this.userList = JSON.toJSONString(userListParam);
        }
        if (departmentListParam != null) {
            this.departmentList = JSON.toJSONString(departmentListParam);
        }
        if (priorityUserListParam != null) {
            this.priorityUserList = JSON.toJSONString(priorityUserListParam);
        }
    }

    /**
     * 解析JSON字段到参数列表
     */
    public void parseJsonFields()
    {
        if (StringUtils.isNotBlank(this.userList)) {
            this.userListParam = JSON.parseArray(this.userList, String.class);
        }
        if (StringUtils.isNotBlank(this.departmentList)) {
            this.departmentListParam = JSON.parseArray(this.departmentList, Long.class);
        }
        if (StringUtils.isNotBlank(this.priorityUserList)) {
            this.priorityUserListParam = JSON.parseArray(this.priorityUserList, String.class);
        }
    }

    @Override
    public String toString() {
        return "QwAcquisitionAssistant{" +
                "id=" + id +
                ", linkId='" + linkId + '\'' +
                ", linkName='" + linkName + '\'' +
                ", status=" + status +
                '}';
    }

    /** 员工添加上限 */
    @Excel(name = "员工添加上限")
    private String userLimitJson;

    /** 备用员工 */
    @Excel(name = "备用员工")
    private String spareUserIds;
}
