Files
lone-services/services/wecom/internal/logic/message/handlers/notify_address_first.go
T

62 lines
1.6 KiB
Go

package handlers
import (
"context"
"lone-services/pkg/utils"
"lone-services/pkg/wecom/message"
"lone-services/services/wecom/internal/dao"
"lone-services/services/wecom/internal/logic/message/builder"
msgutil "lone-services/services/wecom/internal/logic/message/utils"
jsoniter "github.com/json-iterator/go"
)
type AddressNotifyFirstHandler struct{}
func (h AddressNotifyFirstHandler) Build(ctx context.Context, job dao.WeComJob) ([]*message.SendRequest, error) {
change, err := msgutil.GetLatestReviewChange(job.BizType, int64(job.BizId))
if err != nil {
return nil, err
}
content := msgutil.BuildContent(
struct{ Key, Value string }{"门店名称", getTypeNameFromContent(msgutil.DiffContent(change))},
struct{ Key, Value string }{"提醒消息", "您有一个地址需要审核"},
)
card := builder.TextCardParams{
ToUser: utils.GetConfigString("wecom.address_notify_second_ids"),
Desc: "地址通知",
Title: "地址审核通知",
Content: content,
}
req, err := builder.TextCard(card)
if err != nil {
return nil, err
}
return []*message.SendRequest{req}, nil
}
func getTypeNameFromContent(content string) string {
if content == utils.StringEmpty {
return utils.StringEmpty
}
var data struct {
Old map[string]any `json:"old"`
New map[string]any `json:"new"`
}
if err := jsoniter.Unmarshal([]byte(content), &data); err != nil {
return utils.StringEmpty
}
if v, ok := data.New["type_name"].(string); ok && v != utils.StringEmpty {
return v
}
if v, ok := data.Old["type_name"].(string); ok && v != utils.StringEmpty {
return v
}
return utils.StringEmpty
}