초기 파티 document 설정 가능
This commit is contained in:
@ -364,11 +364,12 @@ func (gp *groupParty) JoinParty(w http.ResponseWriter, r *http.Request) {
|
|||||||
// - (body) : 검색시 노출되는 document
|
// - (body) : 검색시 노출되는 document
|
||||||
func (gp *groupParty) InviteToParty(w http.ResponseWriter, r *http.Request) {
|
func (gp *groupParty) InviteToParty(w http.ResponseWriter, r *http.Request) {
|
||||||
var doc struct {
|
var doc struct {
|
||||||
Gid primitive.ObjectID
|
Gid primitive.ObjectID
|
||||||
Mid primitive.ObjectID
|
Mid primitive.ObjectID
|
||||||
Target primitive.ObjectID
|
Target primitive.ObjectID
|
||||||
Inviter bson.M
|
Inviter bson.M
|
||||||
Invitee bson.M
|
Invitee bson.M
|
||||||
|
InitialPartyDoc bson.M
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := gocommon.MakeDecoder(r).Decode(&doc); err != nil {
|
if err := gocommon.MakeDecoder(r).Decode(&doc); err != nil {
|
||||||
@ -409,12 +410,13 @@ func (gp *groupParty) InviteToParty(w http.ResponseWriter, r *http.Request) {
|
|||||||
|
|
||||||
if gd == nil {
|
if gd == nil {
|
||||||
gid = primitive.NewObjectID()
|
gid = primitive.NewObjectID()
|
||||||
gd, err = gp.createGroup(gid, mid, doc.Inviter)
|
gd, err = gp.createGroup(gid, mid, doc.Inviter, doc.InitialPartyDoc)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logger.Println("InviteToParty failed. gp.createGroup() return err :", err)
|
logger.Println("InviteToParty failed. gp.createGroup() return err :", err)
|
||||||
w.WriteHeader(http.StatusInternalServerError)
|
w.WriteHeader(http.StatusInternalServerError)
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
// 내가 wshandler room에 입장
|
// 내가 wshandler room에 입장
|
||||||
gp.enterRoom(gid, mid)
|
gp.enterRoom(gid, mid)
|
||||||
gp.rh.JSONSet(mid.Hex(), "$.party", bson.M{"id": gid.Hex()})
|
gp.rh.JSONSet(mid.Hex(), "$.party", bson.M{"id": gid.Hex()})
|
||||||
@ -648,7 +650,7 @@ func (gp *groupParty) QueryPartyMembers(w http.ResponseWriter, r *http.Request)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (gp *groupParty) createGroup(newid groupID, charge accountID, chargeDoc bson.M) (*partyDoc, error) {
|
func (gp *groupParty) createGroup(newid groupID, charge accountID, chargeDoc bson.M, initialGroupDoc bson.M) (*partyDoc, error) {
|
||||||
tid := makeTid(newid, charge)
|
tid := makeTid(newid, charge)
|
||||||
|
|
||||||
gd := &partyDoc{
|
gd := &partyDoc{
|
||||||
@ -660,15 +662,27 @@ func (gp *groupParty) createGroup(newid groupID, charge accountID, chargeDoc bso
|
|||||||
},
|
},
|
||||||
},
|
},
|
||||||
InCharge: tid,
|
InCharge: tid,
|
||||||
|
Gid: newid.Hex(),
|
||||||
|
|
||||||
rh: gp.rh,
|
rh: gp.rh,
|
||||||
id: newid,
|
id: newid,
|
||||||
}
|
}
|
||||||
|
|
||||||
_, err := gp.rh.JSONSet(gd.strid(), "$", gd, gocommon.RedisonSetOptionNX)
|
var err error
|
||||||
|
if initialGroupDoc != nil {
|
||||||
|
initialGroupDoc["_members"] = gd.Members
|
||||||
|
initialGroupDoc["_incharge"] = gd.InCharge
|
||||||
|
initialGroupDoc["_gid"] = gd.Gid
|
||||||
|
|
||||||
|
_, err = gp.rh.JSONSet(gd.strid(), "$", initialGroupDoc, gocommon.RedisonSetOptionNX)
|
||||||
|
} else {
|
||||||
|
_, err = gp.rh.JSONSet(gd.strid(), "$", gd, gocommon.RedisonSetOptionNX)
|
||||||
|
}
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
return gd, nil
|
return gd, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user