package com.malk.server.dingtalk;

import com.malk.utils.UtilMap;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Map;

/**
 * 读取配置文件参考FilePah
 */
@Data
@Component
@ConfigurationProperties(prefix = "dingtalk")
public class DDConf {

    private Number agentId;

    private String appKey;

    private String appSecret;

    private String corpId;

    private String corpToken;

    private String aesKey;

    private String token;

    // 操作人, 需要为OA后台管理员
    private String operator;

    // 机器人编号
    private String robotCode;

    /**
     * UtilToken namespace（多 appKey / 多租户场景按 vendor 隔离 cache key）
     */
    public static final String NS = "dingtalk";

    /**
     * 钉钉一级部门: 1
     */
    public static final long TOP_DEPARTMENT = 1L;

    /**
     * 钉钉开放平台 OAPI 基础地址（v1/v2 老接口共用）
     */
    public static final String OAPI_BASE = "https://oapi.dingtalk.com";

    /**
     * 钉钉开放平台新版 API 基础地址（v1.0 新接口）
     */
    public static final String API_BASE = "https://api.dingtalk.com";

    /**
     * 知识库权限设置成员上限: 30
     */
    public static final Integer WORKSPACE_PERMISSION_SIZE = 30;

    /**
     * 钉钉回调响应
     */
    public static final String CALLBACK_RESPONSE = "success";

    /**
     * 验证注册地址, 通过开发平台配置触发
     */
    public static final String CALLBACK_CHECK = "check_url";

    /**
     * 审批任务回调 [审批任务开始、结束、转交]
     */
    public static final String BPMS_TASK_CHANGE = "bpms_task_change";

    /**
     * 审批实例回调 [审批实例开始、结束]
     */
    public static final String BPMS_INSTANCE_CHANGE = "bpms_instance_change";

    /**
     * 员工打卡事件回调
     */
    public static final String ATTENDANCE_CHECK_RECORD = "attendance_check_record";

    /**
     * token授权参数: 旧版本
     */
    public static Map initTokenParams(String access_token) {
        return UtilMap.map("access_token", access_token);
    }

    /**
     * token授权参数: 新版本
     */
    public static Map initTokenHeader(String access_token) {
        return UtilMap.map("x-acs-dingtalk-access-token", access_token);
    }
}
