1234567891011121314151617181920212223242526272829303132333435363738394041 |
- package channel
- import (
- "errors"
- "fmt"
- "message-pusher/model"
- "strings"
- )
- func SendGroupMessage(message *model.Message, user *model.User, channel_ *model.Channel) error {
- subChannels := strings.Split(channel_.AppId, "|")
- var subTargets []string
- if message.To != "" {
- subTargets = strings.Split(message.To, "|")
- } else {
- subTargets = strings.Split(channel_.AccountId, "|")
- }
- if len(subChannels) != len(subTargets) {
- return errors.New("无效的群组消息配置,子通道数量与子目标数量不一致")
- }
- errMessage := ""
- for i := 0; i < len(subChannels); i++ {
- message.To = subTargets[i]
- message.Channel = subChannels[i]
- subChannel, err := model.GetChannelByName(subChannels[i], user.Id)
- if err != nil {
- return errors.New("获取群组消息子通道失败:" + err.Error())
- }
- if subChannel.Type == model.TypeGroup {
- return errors.New("群组消息子通道不能是群组消息")
- }
- err = SendMessage(message, user, subChannel)
- if err != nil {
- errMessage += fmt.Sprintf("发送群组消息子通道 %s 失败:%s\n", subChannels[i], err.Error())
- }
- }
- if errMessage != "" {
- return errors.New(errMessage)
- }
- return nil
- }
|