Files
nysoure/server/service/activity.go
2025-07-04 16:07:52 +08:00

56 lines
1.3 KiB
Go

package service
import (
"nysoure/server/dao"
"nysoure/server/model"
)
func GetActivityList(page int) ([]model.ActivityView, int, error) {
offset := (page - 1) * pageSize
limit := pageSize
activities, total, err := dao.GetActivityList(offset, limit)
if err != nil {
return nil, 0, err
}
var views []model.ActivityView
for _, activity := range activities {
user, err := dao.GetUserByID(activity.UserID)
if err != nil {
return nil, 0, err
}
var comment *model.CommentView
var resource *model.ResourceView
switch activity.Type {
case model.ActivityTypeNewComment:
c, err := dao.GetCommentByID(activity.RefID)
if err != nil {
return nil, 0, err
}
comment = c.ToView()
comment.Content, comment.ContentTruncated = restrictCommentLength(c.Content)
case model.ActivityTypeNewResource, model.ActivityTypeUpdateResource:
r, err := dao.GetResourceByID(activity.RefID)
if err != nil {
return nil, 0, err
}
rv := r.ToView()
resource = &rv
}
view := model.ActivityView{
ID: activity.ID,
User: user.ToView(),
Type: activity.Type,
Time: activity.CreatedAt,
Comment: comment,
Resource: resource,
}
views = append(views, view)
}
totalPages := (total + pageSize - 1) / pageSize
return views, totalPages, nil
}