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