Friend 添加好友添加完后会返回当前好友关系状态.
(_ context.Context, req *meta.StoreFriendRequest)
| 149 | |
| 150 | // Friend 添加好友添加完后会返回当前好友关系状态. |
| 151 | func (s *Store) Friend(_ context.Context, req *meta.StoreFriendRequest) (*meta.StoreFriendResponse, error) { |
| 152 | log.Debugf("Store Friend from:%v to:%v Operate:%v", req.From, req.To, req.Operate) |
| 153 | //这些事件都需要创建一个给对方的消息 |
| 154 | var err error |
| 155 | switch req.Operate { |
| 156 | case meta.Relation_ADD: |
| 157 | //1.存储一个添加对方为好友的消息 |
| 158 | //2.要给对方一个请求添加好友的消息 |
| 159 | err = s.user.friend.set(req.From, req.To, req.Operate, req.Msg) |
| 160 | |
| 161 | case meta.Relation_CONFIRM: |
| 162 | //1.存储一个确认添加为好友的消息 |
| 163 | //2.要给对方一个确认添加好友的消息 |
| 164 | err = s.user.friend.set(req.From, req.To, req.Operate, req.Msg) |
| 165 | if err == nil { |
| 166 | err = s.user.friend.confirm(req.To, req.From) |
| 167 | } |
| 168 | |
| 169 | case meta.Relation_REFUSE: |
| 170 | //只需要给对方一个拒绝的消息就行 |
| 171 | |
| 172 | case meta.Relation_DEL: |
| 173 | //只需要给对方发个通知 |
| 174 | err = s.user.friend.remove(req.From, req.To) |
| 175 | } |
| 176 | |
| 177 | if err != nil { |
| 178 | log.Debugf("Store Friend from:%v to:%v Operate:%v, error:%v", req.From, req.To, req.Operate, errors.ErrorStack(err)) |
| 179 | return &meta.StoreFriendResponse{Header: &meta.ResponseHeader{Code: -1, Msg: errors.ErrorStack(err)}}, nil |
| 180 | } |
| 181 | |
| 182 | // 发个提示消息 |
| 183 | id, err := s.master.NewID() |
| 184 | if err != nil { |
| 185 | log.Debugf("Store Friend from:%v to:%v Operate:%v, error:%v", req.From, req.To, req.Operate, errors.ErrorStack(err)) |
| 186 | return &meta.StoreFriendResponse{Header: &meta.ResponseHeader{Code: -1, Msg: errors.ErrorStack(err)}}, nil |
| 187 | } |
| 188 | |
| 189 | pm := meta.PushMessage{Event: meta.Event_Friend, Operate: req.Operate, Msg: &meta.Message{ID: id, From: req.From, To: req.To, Body: req.Msg}} |
| 190 | // 直接发送,如果失败会自动插入到重试队列中 |
| 191 | if err := s.message.send(pm); err != nil { |
| 192 | log.Debugf("Store Friend from:%v to:%v Operate:%v, error:%v", req.From, req.To, req.Operate, errors.ErrorStack(err)) |
| 193 | return &meta.StoreFriendResponse{Header: &meta.ResponseHeader{Code: -1, Msg: errors.ErrorStack(err)}}, nil |
| 194 | } |
| 195 | |
| 196 | return &meta.StoreFriendResponse{}, nil |
| 197 | } |
| 198 | |
| 199 | // LoadFriendList load user's friend list |
| 200 | func (s *Store) LoadFriendList(_ context.Context, req *meta.StoreLoadFriendListRequest) (*meta.StoreLoadFriendListResponse, error) { |