package com.storlead.wecom.properties;

import lombok.Getter;

/**
 * 企业微信常量
 * XWorkConstants
 *
 * @author blank
 * @date 2021-6-15 上午 10:00
 */
@Getter
public class CorpWeChatConstants {

    /**
     * token类型 accessToken
     */
    public final static String TOKEN_TYPE_ACCESS_TOKEN = "ACCESS_TOKEN";
    /**
     * token类型 jsapi ticket
     */
    public final static String TOKEN_TYPE_TICKET = "JSAPI_TICKET";

    /**
     * 卡片消息类型
     */
    public final static String MSGTYPE_TEXTCORD="textcard";

    /**
     * 企业微信api结果正常返回code
     */
    public final static int RETURN_SUCCESS_CODE = 0;

    /**
     * 企业微信api结果正常返回msg
     */
    public final static String RETURN_SUCCESS_MSG = "ok";

    /**
     * 获取 AccessToken
     * 请求方式：GET（HTTPS）
     * 请求URL：https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET
     * 注：此处标注大写的单词ID和SECRET，为需要替换的变量，根据实际获取值更新。其它接口也采用相同的标注，不再说明。
     */
    public final static String GET_ACCESS_TOKEN_URL = "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=ID&corpsecret=SECRET";

    /**
     * 获取企业的 jsapi_ticket
     * 生成签名之前必须先了解一下jsapi_ticket，jsapi_ticket是H5应用调用企业微信JS接口的临时票据。
     * 正常情况下，jsapi_ticket的有效期为7200秒，通过access_token来获取。
     * 由于获取jsapi_ticket的api调用次数非常有限（一小时内，一个企业最多可获取400次，且单个应用不能超过100次），频繁刷新jsapi_ticket会导致api调用受限，影响自身业务，开发者必须在自己的服务全局缓存jsapi_ticket。
     *
     * 请求方式：GET（HTTPS）
     * 请求URL：https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN
     */
    public final static String GET_JSAPI_TICKET_URL = "https://qyapi.weixin.qq.com/cgi-bin/get_jsapi_ticket?access_token=ACCESS_TOKEN";

    /**
     * 获取部门列表
     * 请求方式：GET（HTTPS）
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN&id=ID
     * 参数	        必须	说明
     * access_token	是	调用接口凭证
     * id	        否	部门id。获取指定部门及其下的子部门（以及及子部门的子部门等等，递归）。 如果不填，默认获取全量组织架构
     */
    public final static String GET_DEPT_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/list?access_token=ACCESS_TOKEN&id=ID";

    /**
     * 获取部门成员详情
     * 请求方式：GET（HTTPS）
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=ACCESS_TOKEN&department_id=DEPARTMENT_ID&fetch_child=FETCH_CHILD
     *
     * 参数	            必须	说明
     * access_token	    是	调用接口凭证
     * department_id	是	获取的部门id
     * fetch_child	    否   1/0：是否递归获取子部门下面的成员
     */
    public final static String GET_USER_LIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/list?access_token=ACCESS_TOKEN&department_id=DEPARTMENT_ID&fetch_child=FETCH_CHILD";

    /**
     * 获取用户信息详情
     * 请求方式：GET（HTTPS）
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID
     *
     * 参数	        必须	说明
     * access_token	是	调用接口凭证
     * userid	    是	成员UserID。对应管理端的帐号，企业内必须唯一。不区分大小写，长度为1~64个字节
     */
    public final static String GET_USER_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&userid=USERID";

    /**
     * 获取访问用户身份
     * 请求方式：GET（HTTPS）
     * 请求地址：https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE
     *
     * 参数	        必须	说明
     * access_token	是	调用接口凭证
     * code	        是	通过成员授权获取到的code，最大为512字节。每次成员授权带上的code将不一样，code只能使用一次，5分钟未被使用自动过期。
     *
     * 返回结果：
     * a) 当用户为企业成员时返回示例如下：
     * {
     *    "errcode": 0,
     *    "errmsg": "ok",
     *    "UserId":"USERID"
     * }
     */
    public final static String GET_SCAN_USER_INFO_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserinfo?access_token=ACCESS_TOKEN&code=CODE";

    /**
     * 发送应用消息
     * https://open.work.weixin.qq.com/api/doc/90000/90135/90236
     * 应用支持推送文本、图片、视频、文件、图文等类型。
     *
     * 请求方式：POST（HTTPS）
     * 请求地址： https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN
     *
     * 参数说明：
     *
     * 参数	是否必须	说明
     * access_token	是	调用接口凭证
     * 各个消息类型的具体POST格式请阅后续“消息类型”部分。
     * 如果有在管理端对应用设置“在微工作台中始终进入主页”，应用在微信端只能接收到文本消息，并且文本消息的长度限制为20字节，超过20字节会被截断。同时其他消息类型也会转换为文本消息，提示用户到企业微信查看。
     * 支持id转译，将userid/部门id转成对应的用户名/部门名，目前仅文本/文本卡片/图文/图文（mpnews）这四种消息类型的部分字段支持。仅第三方应用需要用到，企业自建应用可以忽略。具体支持的范围和语法，请查看附录id转译说明。
     * 支持重复消息检查，当指定 "enable_duplicate_check": 1开启: 表示在一定时间间隔内，同样内容（请求json）的消息，不会重复收到；时间间隔可通过duplicate_check_interval指定，默认1800秒。
     * 从2021年2月4日开始，企业关联添加的「小程序」应用，也可以发送文本、图片、视频、文件、图文等各种类型的消息了。
     *
     * 返回示例：
     *
     *  {
     *    "errcode" : 0,
     *    "errmsg" : "ok",
     *    "invaliduser" : "userid1|userid2",
     *    "invalidparty" : "partyid1|partyid2",
     *    "invalidtag": "tagid1|tagid2"
     *  }
     *
     *  请求示例：
     *
     * {
     *    "touser" : "UserID1|UserID2|UserID3",
     *    "toparty" : "PartyID1|PartyID2",
     *    "totag" : "TagID1 | TagID2",
     *    "msgtype" : "text",
     *    "agentid" : 1,
     *    "text" : {
     *        "content" : "你的快递已到，请携带工卡前往邮件中心领取。\n出发前可查看<a href=\"http://work.weixin.qq.com\">邮件中心视频实况</a>，聪明避开排队。"
     *    },
     *    "safe":0,
     *    "enable_id_trans": 0,
     *    "enable_duplicate_check": 0,
     *    "duplicate_check_interval": 1800
     * }
     *
     * 参数说明：
     *
     * 参数	是否必须	说明
     * touser	否	指定接收消息的成员，成员ID列表（多个接收者用‘|’分隔，最多支持1000个）。
     * 特殊情况：指定为”@all”，则向该企业应用的全部成员发送
     * toparty	否	指定接收消息的部门，部门ID列表，多个接收者用‘|’分隔，最多支持100个。
     * 当touser为”@all”时忽略本参数
     * totag	否	指定接收消息的标签，标签ID列表，多个接收者用‘|’分隔，最多支持100个。
     * 当touser为”@all”时忽略本参数
     * msgtype	是	消息类型，此时固定为：text
     * agentid	是	企业应用的id，整型。企业内部开发，可在应用的设置页面查看；第三方服务商，可通过接口 获取企业授权信息 获取该参数值
     * content	是	消息内容，最长不超过2048个字节，超过将截断（支持id转译）
     * safe	否	表示是否是保密消息，0表示可对外分享，1表示不能分享且内容显示水印，默认为0
     * enable_id_trans	否	表示是否开启id转译，0表示否，1表示是，默认0。仅第三方应用需要用到，企业自建应用可以忽略。
     * enable_duplicate_check	否	表示是否开启重复消息检查，0表示否，1表示是，默认0
     * duplicate_check_interval	否	表示是否重复消息检查的时间间隔，默认1800s，最大不超过4小时
     *
     * touser、toparty、totag不能同时为空，后面不再强调。
     */
    public final static String SEND_MSG_URL = "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN";


    public final static String GET_DEPARTMENT_SIMPLELIST_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/simplelist?access_token=ACCESS_TOKEN";

    public final static String GET_DEPARTMENT_GETONE_URL = "https://qyapi.weixin.qq.com/cgi-bin/department/get?access_token=ACCESS_TOKEN&id=ID";




    /**
     * 获取用户详细接口 https://developer.work.weixin.qq.com/document/path/96067
     */
    public final static String GET_USER_ID_LISET_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/list_id?access_token=ACCESS_TOKEN";

    /**
     * 获取用户详细接口 https://developer.work.weixin.qq.com/document/path/95833
     */
    public final static String GET_USER_DETAIL_URL = "https://qyapi.weixin.qq.com/cgi-bin/user/getuserdetail?access_token=ACCESS_TOKEN";


    public final static String GET_USER_LOGIN_URL = "https://qyapi.weixin.qq.com/cgi-bin/service/get_login_info?access_token=ACCESS_TOKEN";





}
