Files
2022-01-20 18:25:31 +08:00

51 lines
1.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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{}
}