Compare commits

...

2 Commits

6 changed files with 100 additions and 10 deletions

View File

@ -17,13 +17,6 @@ import (
//
// Date : 14:06 2023/2/1
type IPreSendHandler interface {
// GetEventID 为每一条事件生成唯一的ID, 此方法若返回空值, 则会自动生成一个随机的md5字符串作为事件ID
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 14:10 2023/2/1
GetEventID() string
// GetRequestParam 构造 base info 时, 可能需要从请求参数中提取公共数据
//
// Author : go_developer@163.com<白茶清欢>
@ -60,10 +53,10 @@ type IPreSendHandler interface {
// Date : 14:16 2023/2/1
GetEventData() interface{}
// NeedSend 判断是否需要发送事件
// NeedSend 判断是否需要发送事件, 若不需要发送, 可在第一个返回值中记录不需要发送的原因
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:24 2023/2/2
NeedSend() bool
NeedSend() (map[string]interface{}, bool)
}

View File

@ -7,6 +7,8 @@
// Date : 2023-02-01 14:21
package abstract
import "git.zhangdeman.cn/zhangdeman/event"
// ISendEventHandler 发送事件处理器
//
// Author : go_developer@163.com<白茶清欢>
@ -35,4 +37,11 @@ type ISendEventHandler interface {
//
// Date : 14:22 2023/2/1
FailCallback(data map[string]interface{}, err error)
// NoSendCallback 不需要发送事件的回调
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:26 2023/2/2
NoSendCallback(data interface{}, res event.SendResult)
}

View File

@ -0,0 +1,42 @@
// Package event ...
//
// Description : event ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2023-02-02 16:36
package event
import "net/http"
// DefaultPreSendHandler IPreSendHandler 默认实现
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 16:36 2023/2/2
type DefaultPreSendHandler struct {
}
func (d *DefaultPreSendHandler) GetRequestParam() map[string]interface{} {
return map[string]interface{}{}
}
func (d *DefaultPreSendHandler) GetRequestHeader() http.Header {
return make(map[string][]string, 0)
}
func (d *DefaultPreSendHandler) GetResponseData() map[string]interface{} {
return map[string]interface{}{}
}
func (d *DefaultPreSendHandler) GetExtensionData() map[string]interface{} {
return map[string]interface{}{}
}
func (d *DefaultPreSendHandler) GetEventData() interface{} {
return map[string]interface{}{}
}
func (d *DefaultPreSendHandler) NeedSend() (map[string]interface{}, bool) {
return map[string]interface{}{}, true
}

View File

@ -0,0 +1,27 @@
// Package event ...
//
// Description : event ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 2023-02-02 16:39
package event
type DefaultSendEventHandler struct {
}
func (d *DefaultSendEventHandler) Send(data []byte) (map[string]interface{}, error) {
return map[string]interface{}{}, nil
}
func (d *DefaultSendEventHandler) SuccessCallback(data map[string]interface{}) {
}
func (d *DefaultSendEventHandler) FailCallback(data map[string]interface{}, err error) {
}
func (d *DefaultSendEventHandler) NoSendCallback(data interface{}, res SendResult) {
}

View File

@ -93,3 +93,11 @@ type StructInfo struct {
IsStructPtr bool // 是否为结构体指针
StructFieldList []*StructField // 结构体字段列表
}
// SendResult ...
//
// Author : go_developer@163.com<白茶清欢>
//
// Date : 15:27 2023/2/2
type SendResult struct {
}

13
send.go
View File

@ -18,7 +18,18 @@ import (
//
// Date : 15:16 2023/2/2
func SendEvent(dataFlag string, data interface{}, preSendHandler abstract.IPreSendHandler, sendEventHandler abstract.ISendEventHandler) {
if !preSendHandler.NeedSend() {
if nil == preSendHandler {
preSendHandler = &DefaultPreSendHandler{}
}
if nil == sendEventHandler {
sendEventHandler = &DefaultSendEventHandler{}
}
// noSendReason, isNeedSend := preSendHandler.NeedSend()
_, isNeedSend := preSendHandler.NeedSend()
res := SendResult{}
if !isNeedSend {
sendEventHandler.NoSendCallback(data, res)
return
}
// 通过反射填充数据