Files
zmkgC/third/jiguang/config.go

104 lines
3.2 KiB
Go
Raw Normal View History

2025-07-07 20:11:59 +08:00
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
}