43 lines
882 B
Go
43 lines
882 B
Go
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
|
|
}
|