mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
superGroup
This commit is contained in:
parent
edb5cb4ee5
commit
653c0faa18
@ -93,6 +93,7 @@ func main() {
|
|||||||
superGroupRouterGroup := r.Group("/super_group")
|
superGroupRouterGroup := r.Group("/super_group")
|
||||||
{
|
{
|
||||||
superGroupRouterGroup.POST("/get_joined_super_group_list", group.GetJoinedSuperGroupList)
|
superGroupRouterGroup.POST("/get_joined_super_group_list", group.GetJoinedSuperGroupList)
|
||||||
|
superGroupRouterGroup.POST("/get_super_groups_info", group.GetSuperGroupsInfo)
|
||||||
}
|
}
|
||||||
//certificate
|
//certificate
|
||||||
authRouterGroup := r.Group("/auth")
|
authRouterGroup := r.Group("/auth")
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
api "Open_IM/pkg/base_info"
|
api "Open_IM/pkg/base_info"
|
||||||
"Open_IM/pkg/common/config"
|
"Open_IM/pkg/common/config"
|
||||||
"Open_IM/pkg/common/log"
|
"Open_IM/pkg/common/log"
|
||||||
|
"Open_IM/pkg/common/token_verify"
|
||||||
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
"Open_IM/pkg/grpc-etcdv3/getcdv3"
|
||||||
rpc "Open_IM/pkg/proto/group"
|
rpc "Open_IM/pkg/proto/group"
|
||||||
"Open_IM/pkg/utils"
|
"Open_IM/pkg/utils"
|
||||||
@ -15,7 +16,7 @@ import (
|
|||||||
)
|
)
|
||||||
|
|
||||||
func GetJoinedSuperGroupList(c *gin.Context) {
|
func GetJoinedSuperGroupList(c *gin.Context) {
|
||||||
req := api.GetJoinedSuperGroupReq{}
|
req := api.GetJoinedSuperGroupListReq{}
|
||||||
if err := c.BindJSON(&req); err != nil {
|
if err := c.BindJSON(&req); err != nil {
|
||||||
log.NewError("0", "BindJSON failed ", err.Error())
|
log.NewError("0", "BindJSON failed ", err.Error())
|
||||||
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
|
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
|
||||||
@ -31,8 +32,38 @@ func GetJoinedSuperGroupList(c *gin.Context) {
|
|||||||
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
|
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
GroupListResp := api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupList}
|
GroupListResp := api.GetJoinedSuperGroupListResp{GetJoinedGroupListResp: api.GetJoinedGroupListResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupList}}
|
||||||
GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList)
|
GroupListResp.Data = jsonData.JsonDataList(GroupListResp.GroupInfoList)
|
||||||
log.NewInfo(req.OperationID, "GetJoinedGroupList api return ", GroupListResp)
|
log.NewInfo(req.OperationID, "GetJoinedGroupList api return ", GroupListResp)
|
||||||
c.JSON(http.StatusOK, GroupListResp)
|
c.JSON(http.StatusOK, GroupListResp)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func GetSuperGroupsInfo(c *gin.Context) {
|
||||||
|
req := api.GetSuperGroupsInfoReq{}
|
||||||
|
if err := c.BindJSON(&req); err != nil {
|
||||||
|
log.NewError("0", "BindJSON failed ", err.Error())
|
||||||
|
c.JSON(http.StatusBadRequest, gin.H{"errCode": 400, "errMsg": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req)
|
||||||
|
ok, opUserID, errInfo := token_verify.GetUserIDFromToken(c.Request.Header.Get("token"), req.OperationID)
|
||||||
|
if !ok {
|
||||||
|
errMsg := req.OperationID + " " + "GetUserIDFromToken failed " + errInfo + " token:" + c.Request.Header.Get("token")
|
||||||
|
log.NewError(req.OperationID, errMsg)
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": errMsg})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
reqPb := rpc.GetSuperGroupsInfoReq{OperationID: req.OperationID, OpUserID: opUserID, GroupIDList: req.GroupIDList}
|
||||||
|
etcdConn := getcdv3.GetConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImGroupName)
|
||||||
|
client := rpc.NewGroupClient(etcdConn)
|
||||||
|
rpcResp, err := client.GetSuperGroupsInfo(context.Background(), &reqPb)
|
||||||
|
if err != nil {
|
||||||
|
log.NewError(req.OperationID, "InviteUserToGroup failed ", err.Error(), reqPb.String())
|
||||||
|
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
|
||||||
|
return
|
||||||
|
}
|
||||||
|
resp := api.GetSuperGroupsInfoResp{GetGroupInfoResp: api.GetGroupInfoResp{CommResp: api.CommResp{ErrCode: rpcResp.CommonResp.ErrCode, ErrMsg: rpcResp.CommonResp.ErrMsg}, GroupInfoList: rpcResp.GroupInfoList}}
|
||||||
|
resp.Data = jsonData.JsonDataList(resp.GroupInfoList)
|
||||||
|
log.NewInfo(req.OperationID, "GetGroupsInfo api return ", resp)
|
||||||
|
c.JSON(http.StatusOK, resp)
|
||||||
|
}
|
||||||
|
@ -5,6 +5,7 @@ import (
|
|||||||
"Open_IM/pkg/common/db"
|
"Open_IM/pkg/common/db"
|
||||||
imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
|
imdb "Open_IM/pkg/common/db/mysql_model/im_mysql_model"
|
||||||
"Open_IM/pkg/common/log"
|
"Open_IM/pkg/common/log"
|
||||||
|
cp "Open_IM/pkg/common/utils"
|
||||||
pbGroup "Open_IM/pkg/proto/group"
|
pbGroup "Open_IM/pkg/proto/group"
|
||||||
commonPb "Open_IM/pkg/proto/sdk_ws"
|
commonPb "Open_IM/pkg/proto/sdk_ws"
|
||||||
"Open_IM/pkg/utils"
|
"Open_IM/pkg/utils"
|
||||||
@ -42,3 +43,22 @@ func (s *groupServer) GetJoinedSuperGroupList(ctx context.Context, req *pbGroup.
|
|||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
|
log.NewError(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func (s *groupServer) GetSuperGroupsInfo(_ context.Context, req *pbGroup.GetSuperGroupsInfoReq) (resp *pbGroup.GetSuperGroupsInfoResp, err error) {
|
||||||
|
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
|
||||||
|
resp = &pbGroup.GetSuperGroupsInfoResp{}
|
||||||
|
groupsInfoList := make([]*commonPb.GroupInfo, 0)
|
||||||
|
for _, groupID := range req.GroupIDList {
|
||||||
|
groupInfoFromMysql, err := imdb.GetGroupInfoByGroupID(groupID)
|
||||||
|
if err != nil {
|
||||||
|
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", err.Error(), groupID)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
var groupInfo commonPb.GroupInfo
|
||||||
|
cp.GroupDBCopyOpenIM(&groupInfo, groupInfoFromMysql)
|
||||||
|
groupsInfoList = append(groupsInfoList, &groupInfo)
|
||||||
|
}
|
||||||
|
resp.GroupInfoList = groupsInfoList
|
||||||
|
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp: ", resp.String())
|
||||||
|
return resp, nil
|
||||||
|
}
|
||||||
|
@ -1,9 +1,17 @@
|
|||||||
package base_info
|
package base_info
|
||||||
|
|
||||||
type GetJoinedSuperGroupReq struct {
|
type GetJoinedSuperGroupListReq struct {
|
||||||
GetJoinedGroupListReq
|
GetJoinedGroupListReq
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetJoinedSuperGroupResp struct {
|
type GetJoinedSuperGroupListResp struct {
|
||||||
GetJoinedGroupListResp
|
GetJoinedGroupListResp
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type GetSuperGroupsInfoReq struct {
|
||||||
|
GetGroupInfoReq
|
||||||
|
}
|
||||||
|
|
||||||
|
type GetSuperGroupsInfoResp struct {
|
||||||
|
GetGroupInfoResp
|
||||||
|
}
|
||||||
|
@ -1026,7 +1026,11 @@ func (d *DataBases) AddUserToSuperGroup(groupID string, userIDList []string) err
|
|||||||
UserID: v,
|
UserID: v,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
_, err = c.UpdateMany(sCtx, users, bson.M{"$addToSet": bson.M{"group_id_list": groupID}})
|
upsert := true
|
||||||
|
opts := &options.UpdateOptions{
|
||||||
|
Upsert: &upsert,
|
||||||
|
}
|
||||||
|
_, err = c.UpdateMany(sCtx, bson.M{"user_id": bson.M{"$in": userIDList}}, bson.M{"$addToSet": bson.M{"group_id_list": groupID}}, opts)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
session.AbortTransaction(ctx)
|
session.AbortTransaction(ctx)
|
||||||
return utils.Wrap(err, "transaction failed")
|
return utils.Wrap(err, "transaction failed")
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -401,6 +401,16 @@ message GetJoinedSuperGroupListResp {
|
|||||||
repeated server_api_params.GroupInfo GroupList = 3;
|
repeated server_api_params.GroupInfo GroupList = 3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message GetSuperGroupsInfoReq {
|
||||||
|
repeated string GroupIDList = 1;
|
||||||
|
string OperationID = 2;
|
||||||
|
string OpUserID = 3; //No verification permission
|
||||||
|
}
|
||||||
|
|
||||||
|
message GetSuperGroupsInfoResp {
|
||||||
|
CommonResp commonResp = 1;
|
||||||
|
repeated server_api_params.GroupInfo GroupInfoList = 3;
|
||||||
|
}
|
||||||
|
|
||||||
service group{
|
service group{
|
||||||
rpc createGroup(CreateGroupReq) returns(CreateGroupResp);
|
rpc createGroup(CreateGroupReq) returns(CreateGroupResp);
|
||||||
@ -438,6 +448,7 @@ service group{
|
|||||||
rpc SetGroupMemberNickname(SetGroupMemberNicknameReq) returns (SetGroupMemberNicknameResp);
|
rpc SetGroupMemberNickname(SetGroupMemberNicknameReq) returns (SetGroupMemberNicknameResp);
|
||||||
|
|
||||||
rpc GetJoinedSuperGroupList(GetJoinedSuperGroupListReq) returns (GetJoinedSuperGroupListResp);
|
rpc GetJoinedSuperGroupList(GetJoinedSuperGroupListReq) returns (GetJoinedSuperGroupListResp);
|
||||||
|
rpc GetSuperGroupsInfo(GetSuperGroupsInfoReq) returns (GetSuperGroupsInfoResp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user