diff --git a/app/event/visit.go b/app/event/visit.go index b22a678..d568dc5 100644 --- a/app/event/visit.go +++ b/app/event/visit.go @@ -1,21 +1,48 @@ 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{}) { - //&model.UserVisit{ - // Model: model.Model{}, - // UID: 0, - // Kind: 0, - // ObjectID: 0, - // Count: 0, - // Date: time.Time{}, - // ModelDeleted: model.ModelDeleted{}, - // ModelAt: model.ModelAt{}, - //} + 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 { diff --git a/app/init.go b/app/init.go index bdcdd7e..a719c57 100644 --- a/app/init.go +++ b/app/init.go @@ -23,6 +23,8 @@ func Init() { service.Subscribe(config.EventForConsumeProduce, event.NewConsume()) // 活动加入监听 service.Subscribe(config.EventForActivityJoinProduce, event.NewActivityJoin()) + // 浏览录入监听 + service.Subscribe(config.EventForVisitProduce, event.NewVisit()) // 开启权限 service.NewAuth().Register()(config.EngineInfo.Mode, orm.GetDB(), model.NewSysAuthRule().TableName()) // 开启缓存存储 diff --git a/config/const.go b/config/const.go index 598a67f..9e6fe58 100644 --- a/config/const.go +++ b/config/const.go @@ -36,6 +36,7 @@ const ( EventForSysLogProduce string = "sys_log_produce" EventForConsumeProduce string = "consume_produce" EventForActivityJoinProduce string = "activity_join_produce" + EventForVisitProduce string = "visit_produce" ) const (