go_dreamfactory/modules/friend/api_agree.go
2022-06-15 14:09:41 +08:00

73 lines
1.6 KiB
Go

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
}