package logic import ( "context" "slowwild/internal/errorx" "slowwild/internal/model" "slowwild/internal/svc" "git.banshen.xyz/huangguangrong/slow_wild_protobuff/slowwild/slowwildserver" "github.com/zeromicro/go-zero/core/logx" "gorm.io/gorm" ) type UnUserFollowLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewUnUserFollowLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UnUserFollowLogic { return &UnUserFollowLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 取消关注用户 func (l *UnUserFollowLogic) UnUserFollow(in *slowwildserver.UnFollowUserReq) (*slowwildserver.UnFollowUserRes, error) { if in.UserId <= 0 || in.UnFollowUserId <= 0 { return nil, errorx.ErrInvalidParam } err := l.svcCtx.UserModel.Transaction(l.ctx, func(tx *gorm.DB) error { userModel := model.NewUserModel(tx) userFollowModel := model.NewUserFollowModel(tx) // 取消关注 err := userFollowModel.UnFollow(l.ctx, in.UserId, in.UnFollowUserId) if err != nil { return err } // 减少当前用户的关注数 err = userModel.DecrementFollowCount(l.ctx, in.UserId) if err != nil { return err } // 减少目标用户的粉丝数 err = userModel.DecrementFansCount(l.ctx, in.UnFollowUserId) if err != nil { return err } return nil }) if err != nil { l.Logger.Errorf("取消关注失败: %v", err) return nil, errorx.NewCodeError(10009, "取消关注失败") } return &slowwildserver.UnFollowUserRes{}, nil }