2026-07-02 10:53:44 +08:00

71 lines
2.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 financewithdrawal
import (
"context"
"fmt"
"strings"
"time"
"hyapp/pkg/dingtalkrobot"
)
type dingTalkNotifier struct {
client *dingtalkrobot.Client
}
// NewDingTalkNotifier 创建用户提现申请通知器nil client 表示当前环境不启用提醒。
func NewDingTalkNotifier(client *dingtalkrobot.Client) Notifier {
if client == nil {
return nil
}
return &dingTalkNotifier{client: client}
}
func (n *dingTalkNotifier) NotifyApplicationCreated(ctx context.Context, application Application) error {
if n == nil || n.client == nil {
return nil
}
return n.client.SendMarkdown(ctx, dingtalkrobot.MarkdownMessage{
Title: "用户提现申请待审核",
Text: withdrawalApplicationCreatedMarkdown(application),
})
}
func withdrawalApplicationCreatedMarkdown(application Application) string {
return strings.Join([]string{
"### 用户提现申请待审核",
"",
fmt.Sprintf("- 申请ID%d", application.ID),
fmt.Sprintf("- APP%s", markdownValue(application.AppCode)),
fmt.Sprintf("- 用户ID%d", application.UserID),
fmt.Sprintf("- 工资资产:%s", markdownValue(application.SalaryAssetType)),
fmt.Sprintf("- 提现金额:$ %s", markdownValue(application.WithdrawAmount)),
fmt.Sprintf("- 提现方式:%s", markdownValue(application.WithdrawMethod)),
fmt.Sprintf("- 提现地址:%s", markdownValue(application.WithdrawAddress)),
fmt.Sprintf("- 冻结交易:%s", markdownValue(application.FreezeTransactionID)),
fmt.Sprintf("- 申请时间:%s", markdownValue(formatNotifyMillis(application.CreatedAtMS))),
"- 后台地址https://admin-acc.global-interaction.com/finance/",
}, "\n")
}
func formatNotifyMillis(value int64) string {
if value <= 0 {
return "-"
}
// 财务人员按北京时间处理审核;数据库和接口仍保留 Unix 毫秒作为事实时间。
return time.UnixMilli(value).In(time.FixedZone("UTC+8", 8*60*60)).Format("2006-01-02 15:04:05")
}
func markdownValue(value string) string {
value = strings.TrimSpace(value)
if value == "" {
return "-"
}
if len([]rune(value)) > 240 {
runes := []rune(value)
value = string(runes[:240]) + "..."
}
replacer := strings.NewReplacer("\r", " ", "\n", " ", "\t", " ")
return replacer.Replace(value)
}