28 lines
1003 B
Go
28 lines
1003 B
Go
package livechat
|
|
|
|
import (
|
|
"context"
|
|
biz "kra/internal/biz/livechat"
|
|
"kra/internal/service/dto"
|
|
)
|
|
|
|
type Service struct{ uc *biz.Usecase }
|
|
|
|
func NewService(uc *biz.Usecase) *Service { return &Service{uc: uc} }
|
|
|
|
func (s *Service) History(ctx context.Context, roomID uint, limit int) ([]*dto.LiveChatMessageResponse, error) {
|
|
items, err := s.uc.ListRecent(ctx, roomID, limit)
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
out := make([]*dto.LiveChatMessageResponse, 0, len(items))
|
|
for _, item := range items {
|
|
out = append(out, MessageResponse(item))
|
|
}
|
|
return out, nil
|
|
}
|
|
|
|
func MessageResponse(item *biz.Message) *dto.LiveChatMessageResponse {
|
|
return &dto.LiveChatMessageResponse{ID: item.ID, RoomID: item.RoomID, Type: item.Type, UserID: item.UserID, Username: item.Username, Nickname: item.Nickname, Avatar: item.Avatar, Content: item.Content, GiftID: item.GiftID, GiftName: item.GiftName, GiftIcon: item.GiftIcon, Quantity: item.Quantity, DiamondTotal: item.DiamondTotal, CreatedAt: item.CreatedAt}
|
|
}
|