Compare commits
2 Commits
ad90bec4d3
...
04fed6ffbd
Author | SHA1 | Date | |
---|---|---|---|
04fed6ffbd | |||
b6c4601860 |
@ -17,13 +17,6 @@ import (
|
|||||||
//
|
//
|
||||||
// Date : 14:06 2023/2/1
|
// Date : 14:06 2023/2/1
|
||||||
type IPreSendHandler interface {
|
type IPreSendHandler interface {
|
||||||
// GetEventID 为每一条事件生成唯一的ID, 此方法若返回空值, 则会自动生成一个随机的md5字符串作为事件ID
|
|
||||||
//
|
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
|
||||||
//
|
|
||||||
// Date : 14:10 2023/2/1
|
|
||||||
GetEventID() string
|
|
||||||
|
|
||||||
// GetRequestParam 构造 base info 时, 可能需要从请求参数中提取公共数据
|
// GetRequestParam 构造 base info 时, 可能需要从请求参数中提取公共数据
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
@ -60,10 +53,10 @@ type IPreSendHandler interface {
|
|||||||
// Date : 14:16 2023/2/1
|
// Date : 14:16 2023/2/1
|
||||||
GetEventData() interface{}
|
GetEventData() interface{}
|
||||||
|
|
||||||
// NeedSend 判断是否需要发送事件
|
// NeedSend 判断是否需要发送事件, 若不需要发送, 可在第一个返回值中记录不需要发送的原因
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
//
|
//
|
||||||
// Date : 15:24 2023/2/2
|
// Date : 15:24 2023/2/2
|
||||||
NeedSend() bool
|
NeedSend() (map[string]interface{}, bool)
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,8 @@
|
|||||||
// Date : 2023-02-01 14:21
|
// Date : 2023-02-01 14:21
|
||||||
package abstract
|
package abstract
|
||||||
|
|
||||||
|
import "git.zhangdeman.cn/zhangdeman/event"
|
||||||
|
|
||||||
// ISendEventHandler 发送事件处理器
|
// ISendEventHandler 发送事件处理器
|
||||||
//
|
//
|
||||||
// Author : go_developer@163.com<白茶清欢>
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
@ -35,4 +37,11 @@ type ISendEventHandler interface {
|
|||||||
//
|
//
|
||||||
// Date : 14:22 2023/2/1
|
// Date : 14:22 2023/2/1
|
||||||
FailCallback(data map[string]interface{}, err error)
|
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)
|
||||||
}
|
}
|
||||||
|
42
default_pre_send_handler.go
Normal file
42
default_pre_send_handler.go
Normal 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
|
||||||
|
}
|
27
default_send_event_handler.go
Normal file
27
default_send_event_handler.go
Normal 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) {
|
||||||
|
|
||||||
|
}
|
@ -93,3 +93,11 @@ type StructInfo struct {
|
|||||||
IsStructPtr bool // 是否为结构体指针
|
IsStructPtr bool // 是否为结构体指针
|
||||||
StructFieldList []*StructField // 结构体字段列表
|
StructFieldList []*StructField // 结构体字段列表
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// SendResult ...
|
||||||
|
//
|
||||||
|
// Author : go_developer@163.com<白茶清欢>
|
||||||
|
//
|
||||||
|
// Date : 15:27 2023/2/2
|
||||||
|
type SendResult struct {
|
||||||
|
}
|
||||||
|
13
send.go
13
send.go
@ -18,7 +18,18 @@ import (
|
|||||||
//
|
//
|
||||||
// Date : 15:16 2023/2/2
|
// Date : 15:16 2023/2/2
|
||||||
func SendEvent(dataFlag string, data interface{}, preSendHandler abstract.IPreSendHandler, sendEventHandler abstract.ISendEventHandler) {
|
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
|
return
|
||||||
}
|
}
|
||||||
// 通过反射填充数据
|
// 通过反射填充数据
|
||||||
|
Reference in New Issue
Block a user