package logic import ( "context" "errors" "juwan-backend/app/community/rpc/internal/svc" "juwan-backend/app/community/rpc/pb" "github.com/zeromicro/go-zero/core/logx" ) type AddCommentLikesLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewAddCommentLikesLogic(ctx context.Context, svcCtx *svc.ServiceContext) *AddCommentLikesLogic { return &AddCommentLikesLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // -----------------------commentLikes----------------------- func (l *AddCommentLikesLogic) AddCommentLikes(in *pb.AddCommentLikesReq) (*pb.AddCommentLikesResp, error) { if in.GetCommentId() <= 0 || in.GetUserId() <= 0 { return nil, errors.New("commentId and userId are required") } store := l.svcCtx.Store store.Mu.Lock() defer store.Mu.Unlock() comment, ok := store.Comments[in.GetCommentId()] if !ok || comment.GetDeletedAt() > 0 { return nil, errors.New("comment not found") } key := commentLikeKey(in.GetCommentId(), in.GetUserId()) if _, exists := store.CommentLikes[key]; exists { return &pb.AddCommentLikesResp{}, nil } store.CommentLikes[key] = &pb.CommentLikes{ CommentId: in.GetCommentId(), UserId: in.GetUserId(), CreatedAt: nowUnix(in.GetCreatedAt()), } comment.LikeCount++ return &pb.AddCommentLikesResp{}, nil }