package friend import ( "context" "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/sys/cache" "go_dreamfactory/utils" ) //单个/批量同意 func (this *ApiComp) Agree(ctx context.Context, session comm.IUserSession, req *pb.FriendAgreeReq) (err error) { var ( code pb.ErrorCode self *pb.Cache_FriendData rsp *pb.FriendAgreeRsp optNum int32 ) defer func() { if code == pb.ErrorCode_Success { rsp = &pb.FriendAgreeRsp{ Num: optNum, } } session.SendMsg(string(this.module.GetType()), Friend_SubType_Agree, code, rsp) }() self, err = cache.Defsys.Friend_Get(session.GetUserId()) if self == nil || err != nil { code = pb.ErrorCode_FriendSelfNoData return } //将申请人加入到自己的好友列表中 for _, userId := range req.FriendIds { if _, ok := utils.Find(self.FriendIds, userId); !ok { self.FriendIds = append(self.FriendIds, userId) } } //将自己加入到申请人的好友列表中 for _, userId := range req.FriendIds { target, err2 := cache.Defsys.Friend_Get(userId) if target == nil || err2 != nil { code = pb.ErrorCode_FriendTargetNoData continue } if _, ok := utils.Find(target.FriendIds, self.UserId); !ok { target.FriendIds = append(target.FriendIds, self.UserId) } err = cache.Defsys.Friend_Update(target) if err != nil { code = pb.ErrorCode_DBError return } } //将申请人从申请列表中删除 for _, userId := range req.FriendIds { self.ApplyIds = utils.DeleteString(self.ApplyIds, userId) optNum++ } //更新 err = cache.Defsys.Friend_Update(self) if err != nil { code = pb.ErrorCode_DBError return } return nil }