ai_scheduler/internal/data/constants/dingtalk.go

119 lines
2.2 KiB
Go

package constants
import (
"net/url"
"strings"
"github.com/google/uuid"
)
const DingTalkBseUrl = "https://oapi.dingtalk.com"
type RequestUrl string
const (
RequestUrlGetUserGet RequestUrl = "/topapi/v2/user/get"
RequestUrlGetDeptGet RequestUrl = "/topapi/v2/department/get"
)
func GetDingTalkRequestUrl(path RequestUrl, query map[string]string) string {
u, _ := url.Parse(DingTalkBseUrl + string(path))
q := u.Query()
for key, val := range query {
q.Add(key, val)
}
u.RawQuery = q.Encode()
return u.String()
}
// IsBoss 是否是老板
type IsBoss int
const (
IsBossTrue IsBoss = 1
IsBossFalse IsBoss = 0
)
// IsSenior 是否是老板
type IsSenior int
const (
IsSeniorTrue IsSenior = 1
IsSeniorFalse IsSenior = 0
)
type ConversationType string
const (
ConversationTypeSingle = "1" // 单聊
ConversationTypeGroup = "2" //群聊
)
type BotMsgType string
const (
BotMsgTypeText BotMsgType = "text"
)
type CardTemp string
const (
CardTempDefault CardTemp = `{
"config": {
"autoLayout": true,
"enableForward": true
},
"header": {
"title": {
"type": "text",
"text": "${title}",
},
"logo": "@lALPDfJ6V_FPDmvNAfTNAfQ"
},
"contents": [
{
"type": "divider",
"id": "divider_1765952728523"
},
{
"type": "markdown",
"text": "%s",
"id": "markdown_1765970168635"
}
]
}`
)
// 交互卡片回调类型
const (
CardActionCallbackTypeAction string = "actionCallback" // 交互卡片回调事件类型
)
// 交互卡片回调事件类型
const (
CardActionTypeCreateGroup string = "create_group" // 创建群聊
)
// dingtalk 卡片 OutTrackId 模板
const CardOutTrackIdTemplate string = "{space_id}:{bot_id}:{uuid}"
func BuildCardOutTrackId(spaceId string, botId string) (outTrackId string) {
uuid := uuid.New().String()
outTrackId = strings.ReplaceAll(CardOutTrackIdTemplate, "{space_id}", spaceId)
outTrackId = strings.ReplaceAll(outTrackId, "{bot_id}", botId)
outTrackId = strings.ReplaceAll(outTrackId, "{uuid}", uuid)
return
}
func ParseCardOutTrackId(outTrackId string) (spaceId string, botId string) {
parts := strings.Split(outTrackId, ":")
if len(parts) != 3 {
return
}
spaceId, botId, _ = parts[0], parts[1], parts[2]
return
}