51 lines
1.3 KiB
Go
51 lines
1.3 KiB
Go
package event
|
||
|
||
import (
|
||
"SciencesServer/app/common/model"
|
||
"SciencesServer/serve/logger"
|
||
"gorm.io/gorm"
|
||
"time"
|
||
)
|
||
|
||
// Visit 浏览事件数据处理
|
||
type Visit struct{}
|
||
|
||
// Handle 操作处理
|
||
// @params: uid,kind,object
|
||
func (this *Visit) Handle(arg ...interface{}) {
|
||
uid := arg[0].(uint64)
|
||
kind := arg[1].(model.UserVisitKind)
|
||
objectID := arg[2].(uint64)
|
||
|
||
mUserVisit := model.NewUserVisit()
|
||
|
||
isExist, err := model.FirstField(mUserVisit, []string{"id", "uid", "created_at"}, model.NewWhere("uid", uid),
|
||
model.NewWhere("kind", kind), model.NewWhere("object_id", objectID))
|
||
|
||
if err != nil {
|
||
logger.ErrorF("Event 查询用户访问记录【%d - %d - %d】错误:%v", err, uid, kind, objectID)
|
||
return
|
||
}
|
||
if isExist {
|
||
if err = model.Updates(mUserVisit, map[string]interface{}{
|
||
"count": gorm.Expr("visits + ?", 1), "date": time.Now(),
|
||
}); err != nil {
|
||
logger.ErrorF("Event 更新用户访问记录【%d - %d - %d】错误:%v", err, uid, kind, objectID)
|
||
}
|
||
return
|
||
}
|
||
mUserVisit.UID = uid
|
||
mUserVisit.Kind = kind
|
||
mUserVisit.ObjectID = objectID
|
||
mUserVisit.Count = 1
|
||
mUserVisit.Date = time.Now()
|
||
if err = model.Create(mUserVisit); err != nil {
|
||
logger.ErrorF("Event 保存用户访问记录【%d - %d - %d】错误:%v", err, uid, kind, objectID)
|
||
}
|
||
return
|
||
}
|
||
|
||
func NewVisit() *Visit {
|
||
return &Visit{}
|
||
}
|