@@ -0,0 +1,42 @@
|
||||
package noticerecdmod
|
||||
|
||||
import "time"
|
||||
|
||||
// 动态类型
|
||||
type TrendType string
|
||||
|
||||
const (
|
||||
Fans TrendType = "fans" //粉丝
|
||||
Like TrendType = "like" //点赞
|
||||
Cmet TrendType = "cmet" //评论
|
||||
Itte TrendType = "itte" //互动
|
||||
)
|
||||
|
||||
// UpdateTrendReadTime 更新动态的阅读时间
|
||||
func UpdateTrendReadTime(trend TrendType, uid uint64, readAt time.Time) error {
|
||||
filter := M{
|
||||
"uid": uid,
|
||||
"noticeCode": trend,
|
||||
}
|
||||
noticeRecord := NoticeRecord{}
|
||||
if err := coll(nil).FindOne(¬iceRecord, filter); err != nil {
|
||||
return err
|
||||
}
|
||||
if noticeRecord.LastReadAt.After(readAt) {
|
||||
return nil
|
||||
}
|
||||
filter["lastReadAt"] = M{"$lt": readAt}
|
||||
update := M{
|
||||
"$setOnInsert": M{
|
||||
"uid": uid,
|
||||
"noticeCode": trend,
|
||||
"createdAt": time.Now(),
|
||||
},
|
||||
"$set": M{
|
||||
"lastReadAt": readAt,
|
||||
"updatedAt": time.Now(),
|
||||
},
|
||||
}
|
||||
_, err := coll(nil).UpsertOne(filter, update)
|
||||
return err
|
||||
}
|
||||
Reference in New Issue
Block a user