voucher/internal/pkg/ding/ding_test.go

189 lines
5.7 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 ding
import (
"fmt"
"strings"
"testing"
"voucher/internal/biz/do"
)
func TestSendTextMessage(t *testing.T) {
webhookURL := "your_webhook_url"
secret := "your_secret"
client := NewDingTalkClient(webhookURL, secret)
// 发送文本消息
content := "这是一条测试文本消息,@相关人员。"
atMobiles := []string{"13800138000"}
isAtAll := false
err := client.SendTextMessage(content, atMobiles, isAtAll)
if err != nil {
fmt.Println("文本消息发送失败:", err)
} else {
fmt.Println("文本消息发送成功")
}
}
func TestSendLinkMessage(t *testing.T) {
title := "测试链接消息"
text := "这是一条测试链接消息的详细内容,@相关人员。"
messageURL := "https://example.com"
picURL := "https://example.com/pic.jpg"
webhookURL := "your_webhook_url"
secret := "your_secret"
atMobiles := []string{"13800138000"}
client := NewDingTalkClient(webhookURL, secret)
err := client.SendLinkMessage(title, text, messageURL, picURL, atMobiles, false)
if err != nil {
fmt.Println("链接消息发送失败:", err)
} else {
fmt.Println("链接消息发送成功")
}
}
func TestSendMarkdownMessage(t *testing.T) {
markdownTitle := "测试 Markdown 消息"
//markdownText := "# <font color='green'><h1>立减金发放平台报警通知</h1></font> \n<font color='black'>不好了,订单发放发生异常了,错误内容[<font color='#FFA500'>批次号不存在</font>]@相关人员。</font>"
markdownText := alarmText("批次号不存在")
atMobiles := []string{"18666173766", "15102807142"}
webhookURL := "https://oapi.dingtalk.com/robot/send?access_token=5f10c2213cbf8168985cb2d061ebb1a5f70bd1dd47ec7cef58fa6fe545d52588"
secret := "SEC77b63d70a9e22317144e712b4538ce1e0013db885c65f7f9bae283e8958b39eb"
client := NewDingTalkClient(webhookURL, secret)
if err := client.SendMarkdownMessage(markdownTitle, markdownText, atMobiles, false); err != nil {
fmt.Println("Markdown 消息发送失败:", err)
} else {
fmt.Println("Markdown 消息发送成功")
}
}
func alarmText(errMsg string) string {
remarks := fmt.Sprintf("订单号:%s商品编号:%s,原因:%s", "123456", "001", errMsg)
msg := "# <font color='green'>" +
"<h1>立减金发放平台报警通知</h1>" +
"</font> \n" +
"<font color='black'>" +
"不好了,订单发放发生异常了" +
"[<font color='red'>%s</font>]请尽快处理@相关人员。" +
"</font>"
return fmt.Sprintf(msg, remarks)
}
func TestSend(t *testing.T) {
webhookURL := "your_webhook_url"
secret := "your_secret"
client := NewDingTalkClient(webhookURL, secret)
// 发送文本消息
content := "这是一条测试文本消息,@相关人员。"
atMobiles := []string{"13800138000"}
err := client.SendTextMessage(content, atMobiles, false)
if err != nil {
fmt.Println("文本消息发送失败:", err)
} else {
fmt.Println("文本消息发送成功")
}
// 发送链接消息
title := "测试链接消息"
text := "这是一条测试链接消息的详细内容,@相关人员。"
messageURL := "https://example.com"
picURL := "https://example.com/pic.jpg"
err = client.SendLinkMessage(title, text, messageURL, picURL, atMobiles, false)
if err != nil {
fmt.Println("链接消息发送失败:", err)
} else {
fmt.Println("链接消息发送成功")
}
// 发送 Markdown 消息
markdownTitle := "测试 Markdown 消息"
markdownText := "# 标题\n这是一条测试 Markdown 消息的详细内容,@13800138000。"
err = client.SendMarkdownMessage(markdownTitle, markdownText, atMobiles, false)
if err != nil {
fmt.Println("Markdown 消息发送失败:", err)
} else {
fmt.Println("Markdown 消息发送成功")
}
}
func TestWarningBudgetText(t *testing.T) {
req := do.WarningBudget{
StockName: "招行2元立减金",
StockId: "20627186",
StockNo: "CMB20627186",
Amount: 2,
AllBudget: 70010,
AllStock: 35005,
UsedStock: 9390,
UsedBudget: 18780,
AvailableStock: 25615,
RemainingBudget: 51230,
}
str := formatAsCard(req)
t.Log("\n" + str)
markdownTitle := "批次预算预警"
atMobiles := []string{"18666173766"}
webhookURL := "https://oapi.dingtalk.com/robot/send?access_token=5f10c2213cbf8168985cb2d061ebb1a5f70bd1dd47ec7cef58fa6fe545d52588"
secret := "SEC77b63d70a9e22317144e712b4538ce1e0013db885c65f7f9bae283e8958b39eb"
client := NewDingTalkClient(webhookURL, secret)
if err := client.SendMarkdownMessage(markdownTitle, str, atMobiles, false); err != nil {
fmt.Println("Markdown 消息发送失败:", err)
} else {
fmt.Println("Markdown 消息发送成功")
}
}
func formatAsCard(req do.WarningBudget) string {
var card strings.Builder
card.WriteString("### " + req.StockName + "\n\n")
// 基本信息
card.WriteString("#### 🎫 基本信息\n")
card.WriteString(fmt.Sprintf("- **批次号**: %s\n", req.StockId))
card.WriteString(fmt.Sprintf("- **活动号**: %s\n", req.StockNo))
card.WriteString(fmt.Sprintf("- **面额**: %d元\n", req.Amount))
card.WriteString(fmt.Sprintf("- **总预算**: %d元\n", req.AllBudget))
card.WriteString(fmt.Sprintf("- **总库存**: %d张\n", req.AllStock))
card.WriteString("\n")
// 使用情况
card.WriteString("#### 📊 使用情况\n")
card.WriteString(fmt.Sprintf("- **已发券数**: %d张\n", req.UsedStock))
card.WriteString(fmt.Sprintf("- **已发券金额**: %d元\n", req.UsedBudget))
card.WriteString(fmt.Sprintf("- **剩余库存**: %d张\n", req.AvailableStock))
card.WriteString(fmt.Sprintf("- **剩余预算**: %d元\n", req.RemainingBudget))
card.WriteString("\n")
// 使用率
stockUsageRate := float64(req.UsedStock) / float64(req.AllStock) * 100
card.WriteString("#### 📈 使用率\n")
card.WriteString(fmt.Sprintf("- **使用率**: %.1f%%\n", stockUsageRate))
return card.String()
}