12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- package model
- import (
- "crypto/md5"
- "encoding/hex"
- "fmt"
- "time"
- "go-common/library/log"
- "go-common/library/xstr"
- )
- // ParamHandler fn
- type ParamHandler func(target *map[string]interface{}, args ...interface{})
- // BatchParam str
- type BatchParam struct {
- Params map[string]interface{}
- Handler ParamHandler
- }
- // NewBatchParam func
- func NewBatchParam(p map[string]interface{}, h ParamHandler) *BatchParam {
- if h == nil {
- h = BaseParamHandler
- }
- return &BatchParam{
- Params: p,
- Handler: h,
- }
- }
- var (
- // BaseParamHandler fn
- BaseParamHandler = func(target *map[string]interface{}, args ...interface{}) {}
- // PushParamHandler fn
- PushParamHandler = func(target *map[string]interface{}, args ...interface{}) {
- var (
- ok bool
- arc *Archive
- fans []int64
- )
- if target == nil || (*target)["archive"] == nil {
- log.Warn("PushParamHandler target(%+v)/target[archive] nil, args(%+v)", target, args)
- } else if arc, ok = (*target)["archive"].(*Archive); !ok || arc == nil {
- log.Warn("PushParamHandler target[archive]=%+v parse failed/nil, args(%+v), target(%+v)", (*target)["archive"], args, target)
- }
- if arc == nil {
- arc = &Archive{}
- }
- if len(args) != 1 || args[0] == nil {
- log.Warn("PushParamHandler args(%+v) less than 1 or nil, target(%+v) archive(%+v)", args, target, arc)
- } else if fans, ok = args[0].([]int64); !ok {
- log.Warn("PushParamHandler args(%+v) parse failed, target(%+v) archive(%+v)", args, target, arc)
- }
- b := md5.Sum([]byte(fmt.Sprintf("%d%s", arc.ID, xstr.JoinInts(fans))))
- (*target)["uuid"] = fmt.Sprintf("%s%d", hex.EncodeToString(b[:]), time.Now().UnixNano())
- }
- )
|