mirror of
https://github.com/snowykami/neo-blog.git
synced 2025-09-26 11:06:23 +00:00
feat: 添加用户位置、操作系统和浏览器信息到评论功能
This commit is contained in:
@ -14,6 +14,9 @@ type CommentDto struct {
|
||||
LikeCount uint64 `json:"like_count"` // 点赞数量
|
||||
IsLiked bool `json:"is_liked"` // 当前用户是否点赞
|
||||
IsPrivate bool `json:"is_private"`
|
||||
Location string `json:"location"` // 用户位置,基于IP
|
||||
OS string `json:"os"` // 用户操作系统,基于User-Agent
|
||||
Browser string `json:"browser"` // 用户浏览器,基于User-Agent
|
||||
}
|
||||
|
||||
type CreateCommentReq struct {
|
||||
|
@ -1,6 +1,7 @@
|
||||
package model
|
||||
|
||||
import (
|
||||
"github.com/snowykami/neo-blog/pkg/utils"
|
||||
"gorm.io/gorm"
|
||||
)
|
||||
|
||||
@ -16,6 +17,12 @@ type Comment struct {
|
||||
IsPrivate bool `gorm:"default:false"` // 是否为私密评论,私密评论只有评论者和被评论对象所有者可见
|
||||
RemoteAddr string `gorm:"type:text"` // 远程地址
|
||||
UserAgent string `gorm:"type:text"`
|
||||
Location string `gorm:"type:text"` // 用户位置,基于IP
|
||||
LikeCount uint64
|
||||
CommentCount uint64
|
||||
}
|
||||
|
||||
func (c *Comment) AfterCreate(tx *gorm.DB) (err error) {
|
||||
// 更新评论IP
|
||||
return tx.Model(c).Update("Location", utils.GetLocationString(c.RemoteAddr)).Error
|
||||
}
|
||||
|
@ -5,6 +5,7 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/snowykami/neo-blog/pkg/constant"
|
||||
"github.com/snowykami/neo-blog/pkg/utils"
|
||||
|
||||
"github.com/snowykami/neo-blog/internal/ctxutils"
|
||||
"github.com/snowykami/neo-blog/internal/dto"
|
||||
@ -122,6 +123,7 @@ func (cs *CommentService) GetComment(ctx context.Context, commentID string) (*dt
|
||||
UpdatedAt: comment.UpdatedAt.String(),
|
||||
User: comment.User.ToDto(),
|
||||
}
|
||||
// TODO: 返回更多字段
|
||||
|
||||
return &commentDto, err
|
||||
}
|
||||
@ -145,7 +147,7 @@ func (cs *CommentService) GetCommentList(ctx context.Context, req *dto.GetCommen
|
||||
if currentUserID != 0 {
|
||||
isLiked, _ = repo.Like.IsLiked(currentUserID, comment.ID, constant.TargetTypeComment)
|
||||
}
|
||||
|
||||
ua := utils.ParseUA(comment.UserAgent)
|
||||
commentDto := dto.CommentDto{
|
||||
ID: comment.ID,
|
||||
Content: comment.Content,
|
||||
@ -160,6 +162,9 @@ func (cs *CommentService) GetCommentList(ctx context.Context, req *dto.GetCommen
|
||||
LikeCount: comment.LikeCount,
|
||||
IsLiked: isLiked,
|
||||
IsPrivate: comment.IsPrivate,
|
||||
OS: ua.OS + " " + ua.OSVersion,
|
||||
Browser: ua.Browser + " " + ua.BrowserVer,
|
||||
Location: comment.Location,
|
||||
}
|
||||
commentDtos = append(commentDtos, commentDto)
|
||||
}
|
||||
|
Reference in New Issue
Block a user