Files
zmkgC/third/jiguang/config.go
2025-07-07 20:11:59 +08:00

104 lines
3.2 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package jiguang
import (
"encoding/base64"
"fmt"
"github.com/go-resty/resty/v2"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"golang.org/x/net/context"
)
var appKey = "9bbb84675085d124417ceb27"
var masterSecret = "1a7dff8f3ce58df231481fce"
// @Title Notification 2024/7/25 15:45:00
// @Description 通知
// @Auth Cory
type Notification struct {
Platform interface{} `json:"platform" dc:"推送平台设置"`
Audience interface{} `json:"audience" dc:"推送设备指定"`
Notification struct {
Android struct {
Title string `json:"title" dc:"通知标题"`
Alert string `json:"alert" dc:"通知内容"`
} `json:"android" dc:"Android 平台上的通知"`
} `json:"notification" dc:"通知内容体,是被推送到客户端的内容。"`
}
// @Title SendAppClockingNotice 2024/7/25 15:35:00
// @Description 发送APP的打卡通知信息 需注意registration_id一次最多只能发送1000
// @Auth Cory
// @param 输入参数名 ---> "参数解释"
// @Return error ---> "错误信息"
func SendAppClockingNotice(ctx context.Context, deviceIds []string, dataStr string, flagStr string) {
//1、发送位置及authorization
url := "https://api.jpush.cn/v3/push"
authorization := base64.StdEncoding.EncodeToString([]byte(appKey + ":" + masterSecret))
//2、创建 Resty 客户端对象
client := resty.New()
//3、POST 请求示例
splitIds := splitDeviceIds(deviceIds)
for _, ids := range splitIds {
//reqBody := map[string]interface{}{
// "platform": []string{"android"},
// "audience": map[string]interface{}{"registration_id": []string{"", ""}},
// "notification": Notification{Android: AndroidEntity(struct {
// Title string
// Alert string
// }{Title: "上下班打卡提醒", Alert: "即将进入打卡时间,请立即前往【定位考勤】页面进行打卡(如若已打卡或休息请忽略)"})},
//}
notification := Notification{
Platform: []string{"android"},
Audience: map[string]interface{}{"registration_id": ids},
Notification: struct {
Android struct {
Title string `json:"title" dc:"通知标题"`
Alert string `json:"alert" dc:"通知内容"`
} `json:"android" dc:"Android 平台上的通知"`
}(struct {
Android struct {
Title string
Alert string
}
}{
Android: struct {
Title string
Alert string
}{
Title: "中煤" + dataStr + flagStr + "打卡提醒",
Alert: "即将进入打卡时间,请立即前往【定位考勤】页面进行打卡(如若已打卡或休息请忽略)",
},
}),
}
//4、发送post请求
_, err := client.R().
SetHeader("Content-Type", "application/json").
SetHeader("Authorization", "Basic "+authorization).
SetBody(notification).
Post(url)
if err != nil {
fmt.Println("发送 POST 请求失败:", err)
g.Log().Error(gctx.New(), err)
return
}
}
}
// @Title splitDeviceIds 2024/7/26 15:56:00
// @Description 数据切分900一条
// @Auth Cory
func splitDeviceIds(deviceIds []string) [][]string {
var result [][]string
for i := 0; i < len(deviceIds); i += 900 {
end := i + 900
if end > len(deviceIds) {
end = len(deviceIds)
}
result = append(result, deviceIds[i:end])
}
return result
}