package friend import ( "go_dreamfactory/comm" "go_dreamfactory/pb" "go_dreamfactory/utils" "google.golang.org/protobuf/proto" ) // 点赞 func (this *apiComp) ZanCheck(session comm.IUserSession, req *pb.FriendZanReq) (code pb.ErrorCode) { if len(req.FriendIds) == 0 { code = pb.ErrorCode_ReqParameterError } return } func (this *apiComp) Zan(session comm.IUserSession, req *pb.FriendZanReq) (code pb.ErrorCode, data proto.Message) { if code = this.ZanCheck(session, req); code != pb.ErrorCode_Success { return } var ( target *pb.DBFriend err error selfId string ) globalCnf := this.moduleFriend.configure.GetGlobalConf() if globalCnf == nil { code = pb.ErrorCode_ConfigNoFound return } selfId = session.GetUserId() // 不能给自己点赞 for _, v := range req.FriendIds { if v == selfId { code = pb.ErrorCode_FriendZanSelf return } } var ( pointTotal int32 //友情值累加 ) // 是否已给好友点赞 for _, v := range req.FriendIds { target = this.moduleFriend.modelFriend.GetFriend(v) if target == nil { code = pb.ErrorCode_FriendSelfNoData return } if _, ok := utils.Find(target.ZanIds, selfId); !ok { pointTotal += 1 target.ZanIds = append(target.ZanIds, selfId) //设置被点赞玩家 if err = this.moduleFriend.modelFriend.Change(target.GetUid(), map[string]interface{}{ "zanIds": target.ZanIds, }); err != nil { code = pb.ErrorCode_DBError return } } } //设置友情值 ue, err := this.moduleFriend.ModuleUser.GetUserExpand(session.GetUserId()) if err != nil { code = pb.ErrorCode_DBError return } // 今日送出的友情点是否达到上限 if ue.FriendPointOD >= globalCnf.FriendMaxsendnum { code = pb.ErrorCode_FriendPointLimit return } update := map[string]interface{}{ "friendPointOD": ue.FriendPointOD + pointTotal, } if err := this.moduleFriend.ModuleUser.ChangeUserExpand(session.GetUserId(), update); err != nil { code = pb.ErrorCode_DBError return } rsp := &pb.FriendZanResp{ Flag: true, } if err := session.SendMsg(string(this.moduleFriend.GetType()), FriendSubTypeZan, rsp); err != nil { code = pb.ErrorCode_SystemError return } // 赠送X次友情点 this.moduleFriend.ModuleRtask.SendToRtask(session, comm.Rtype11, 1) return }