✨ 初始化项目
This commit is contained in:
152
push/message.go
Normal file
152
push/message.go
Normal file
@@ -0,0 +1,152 @@
|
||||
/**
|
||||
* @Author: Echo
|
||||
* @Author:1711788888@qq.com
|
||||
* @Date: 2021/9/3 18:15
|
||||
* @Desc: 推送消息实体
|
||||
*/
|
||||
|
||||
package push
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
||||
"git.echol.cn/loser/tencent-im/internal/entity"
|
||||
)
|
||||
|
||||
var errInvalidPushCondition = errors.New("attrs and tags condition cannot be set at the same time")
|
||||
|
||||
type Message struct {
|
||||
entity.Message
|
||||
condition *condition
|
||||
}
|
||||
|
||||
func NewMessage() *Message {
|
||||
return &Message{}
|
||||
}
|
||||
|
||||
// SetConditionTagsOr 设置标签的或条件(设置会冲掉之前的标签或条件)
|
||||
func (m *Message) SetConditionTagsOr(tags ...string) {
|
||||
if m.condition != nil && m.condition.TagsOr != nil {
|
||||
m.condition.TagsOr = m.condition.TagsOr[0:0]
|
||||
}
|
||||
|
||||
m.AddConditionTagsOr(tags...)
|
||||
}
|
||||
|
||||
// AddConditionTagsOr 添加标签的或条件(添加会累加之前的条件或条件)
|
||||
func (m *Message) AddConditionTagsOr(tags ...string) {
|
||||
if m.condition == nil {
|
||||
m.condition = &condition{}
|
||||
}
|
||||
if m.condition.TagsOr == nil {
|
||||
m.condition.TagsOr = make([]string, 0)
|
||||
}
|
||||
m.condition.TagsOr = append(m.condition.TagsOr, tags...)
|
||||
}
|
||||
|
||||
// SetConditionTagsAnd 设置标签的与条件(设置会冲掉之前的标签与条件)
|
||||
func (m *Message) SetConditionTagsAnd(tags ...string) {
|
||||
if m.condition != nil && m.condition.TagsAnd != nil {
|
||||
m.condition.TagsAnd = m.condition.TagsAnd[0:0]
|
||||
}
|
||||
|
||||
m.AddConditionTagsAnd(tags...)
|
||||
}
|
||||
|
||||
// AddConditionTagsAnd 添加标签的与条件(添加会累加之前的标签与条件)
|
||||
func (m *Message) AddConditionTagsAnd(tags ...string) {
|
||||
if m.condition == nil {
|
||||
m.condition = &condition{}
|
||||
}
|
||||
if m.condition.TagsAnd == nil {
|
||||
m.condition.TagsAnd = make([]string, 0)
|
||||
}
|
||||
m.condition.TagsAnd = append(m.condition.TagsAnd, tags...)
|
||||
}
|
||||
|
||||
// SetConditionAttrsOr 设置属性的或条件(设置会冲掉之前的属性或条件)
|
||||
func (m *Message) SetConditionAttrsOr(attrs map[string]interface{}) {
|
||||
if m.condition != nil && m.condition.AttrsOr != nil {
|
||||
m.condition.AttrsOr = make(map[string]interface{})
|
||||
}
|
||||
|
||||
m.AddConditionAttrsOr(attrs)
|
||||
}
|
||||
|
||||
// AddConditionAttrsOr 添加属性的或条件(添加会累加之前的属性或条件)
|
||||
func (m *Message) AddConditionAttrsOr(attrs map[string]interface{}) {
|
||||
if m.condition == nil {
|
||||
m.condition = &condition{}
|
||||
}
|
||||
if m.condition.AttrsOr == nil {
|
||||
m.condition.AttrsOr = make(map[string]interface{})
|
||||
}
|
||||
for k, v := range attrs {
|
||||
m.condition.AttrsOr[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
// SetConditionAttrsAnd 设置属性的与条件(设置会冲掉之前的属性与条件)
|
||||
func (m *Message) SetConditionAttrsAnd(attrs map[string]interface{}) {
|
||||
if m.condition != nil && m.condition.AttrsAnd != nil {
|
||||
m.condition.AttrsAnd = make(map[string]interface{})
|
||||
}
|
||||
|
||||
m.AddConditionAttrsAnd(attrs)
|
||||
}
|
||||
|
||||
// AddConditionAttrsAnd 添加属性的与条件(添加会累加之前的属性与条件)
|
||||
func (m *Message) AddConditionAttrsAnd(attrs map[string]interface{}) {
|
||||
if m.condition == nil {
|
||||
m.condition = &condition{}
|
||||
}
|
||||
if m.condition.AttrsAnd == nil {
|
||||
m.condition.AttrsAnd = make(map[string]interface{})
|
||||
}
|
||||
for k, v := range attrs {
|
||||
m.condition.AttrsAnd[k] = v
|
||||
}
|
||||
}
|
||||
|
||||
// GetCondition 获取推送条件
|
||||
func (m *Message) GetCondition() *condition {
|
||||
return m.condition
|
||||
}
|
||||
|
||||
// checkError 检测错误
|
||||
func (m *Message) checkError() (err error) {
|
||||
if err = m.CheckLifeTimeArgError(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err = m.CheckBodyArgError(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
if err = m.checkConditionArgError(); err != nil {
|
||||
return
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
// checkConditionArgError 检测条件参数错误
|
||||
func (m *Message) checkConditionArgError() error {
|
||||
hasAttrs, hasTags := false, false
|
||||
|
||||
if m.condition != nil {
|
||||
if m.condition.AttrsAnd != nil || m.condition.AttrsOr != nil {
|
||||
hasAttrs = true
|
||||
}
|
||||
|
||||
if m.condition.TagsAnd != nil || m.condition.TagsOr != nil {
|
||||
hasTags = true
|
||||
}
|
||||
}
|
||||
|
||||
if hasAttrs && hasTags {
|
||||
return errInvalidPushCondition
|
||||
}
|
||||
|
||||
return nil
|
||||
}
|
Reference in New Issue
Block a user