You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

109 lines
1.6 KiB
Go

package entity
import (
"context"
)
// 定义枚举类型
type MessageType int
type ContentType int
const (
PlatformMessage MessageType = iota
WeChatMessage
ShortNoteMessage
)
const (
WeChatTemplateMessage ContentType = iota
)
type Message struct {
MsgType MessageType
ContentType ContentType
Body interface{} `json:"body"`
}
func NewWechatTemplateMessage(fields map[string]interface{}) *Message {
return &Message{
MsgType: WeChatMessage,
ContentType: WeChatTemplateMessage,
Body: fields,
}
}
type Msg interface{
Do(ctx context.Context) error
}
type MsgReq struct{
body Message
sender User
receiver User
}
type PlatformMsgReq struct{
MsgReq
}
func (m *MsgReq) Do(ctx context.Context) error {
// 方法实现
return nil
}
func(this *PlatformMsgReq) Do(ctx context.Context) error{
return nil
}
type WeChatMsgReq struct{
MsgReq
}
func(this *WeChatMsgReq) Do(ctx context.Context) error{
w := NewWeChatOfficial("classPushOfficial")
err := w.PushMessage(ctx,this)
if err != nil {
return err
}
return nil
}
func NewWeChatMsgReq(fields map[string]interface{},msgType ContentType,sender User,receiver User) *WeChatMsgReq{
return &WeChatMsgReq{
MsgReq{
body: Message{
MsgType: WeChatMessage,
ContentType: msgType,
Body: fields,
},
sender: sender,
receiver: receiver,
},
}
}
type ShortNoteMsgReq struct{
MsgReq
}
func(this *ShortNoteMsgReq) Do(ctx context.Context) error{
return nil
}
func NewShortNoteMsgReq(body map[string]interface{},msgType ContentType,sender User,receiver User) *ShortNoteMsgReq{
return nil
}