Skip to content

Commit ada8586

Browse files
committed
修复好友关系策略
1 parent 6e7b5ed commit ada8586

File tree

2 files changed

+33
-9
lines changed

2 files changed

+33
-9
lines changed

store/friend.go

Lines changed: 29 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ import (
88
lu "github.com/syndtr/goleveldb/leveldb/util"
99

1010
"github.com/dearcode/candy/meta"
11+
"github.com/dearcode/candy/util/log"
1112
)
1213

1314
type friendRelation struct {
@@ -24,20 +25,40 @@ func newFriendDB(db *userDB) *friendDB {
2425
return &friendDB{userDB: db}
2526
}
2627

27-
// 添加好友,返回当前状态,state 0:没关系, 1:我要添加对方为好友, 2:对方请求添加我为好友, 3:当前我们都已确认成为好友了
28+
// 修改好友关系
2829
func (f *friendDB) set(uid, fid int64, state meta.Relation, msg string) error {
2930
key := UserFriendKey(uid, fid)
31+
32+
r := friendRelation{ID: fid, State: state, Msg: msg}
33+
buf, err := json.Marshal(&r)
34+
if err != nil {
35+
return errors.Trace(err)
36+
}
37+
38+
if err = f.db.Put(key, buf, nil); err != nil {
39+
return errors.Trace(err)
40+
}
41+
42+
return nil
43+
}
44+
45+
func (f *friendDB) confirm(uid, fid int64) error {
46+
key := UserFriendKey(uid, fid)
3047
v, err := f.db.Get(key, nil)
31-
if err != nil && err != leveldb.ErrNotFound {
48+
if err != nil {
3249
return errors.Trace(err)
3350
}
34-
r := friendRelation{ID: fid, State: state, Msg: msg}
35-
if len(v) > 0 {
36-
if err = json.Unmarshal(v, &r); err != nil {
37-
return errors.Trace(err)
38-
}
51+
var r friendRelation
52+
if err = json.Unmarshal(v, &r); err != nil {
53+
return errors.Trace(err)
3954
}
40-
r.State |= state
55+
56+
if r.State != meta.Relation_ADD {
57+
log.Infof("%d friend:%d state:%v", uid, fid, r.State)
58+
return nil
59+
}
60+
61+
r.State = meta.Relation_CONFIRM
4162

4263
buf, err := json.Marshal(&r)
4364
if err != nil {

store/server.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,13 +162,16 @@ func (s *Store) Friend(_ context.Context, req *meta.StoreFriendRequest) (*meta.S
162162
//1.存储一个确认添加为好友的消息
163163
//2.要给对方一个确认添加好友的消息
164164
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+
}
165168

166169
case meta.Relation_REFUSE:
167170
//只需要给对方一个拒绝的消息就行
168171

169172
case meta.Relation_DEL:
170173
//只需要给对方发个通知
171-
er = s.user.friend.remove(req.From, req.To)
174+
err = s.user.friend.remove(req.From, req.To)
172175
}
173176

174177
if err != nil {

0 commit comments

Comments
 (0)