mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-24 10:22:36 +08:00
Merge remote-tracking branch 'origin/tuoyun' into tuoyun
# Conflicts: # cmd/open_im_api/main.go # internal/api/group/group.go
This commit is contained in:
commit
aa99e710d1
@ -38,26 +38,29 @@ func main() {
|
|||||||
friendRouterGroup.POST("/add_blacklist", friend.AddBlacklist) //1
|
friendRouterGroup.POST("/add_blacklist", friend.AddBlacklist) //1
|
||||||
friendRouterGroup.POST("/get_blacklist", friend.GetBlacklist) //1
|
friendRouterGroup.POST("/get_blacklist", friend.GetBlacklist) //1
|
||||||
friendRouterGroup.POST("/remove_blacklist", friend.RemoveBlacklist) //1
|
friendRouterGroup.POST("/remove_blacklist", friend.RemoveBlacklist) //1
|
||||||
friendRouterGroup.POST("/delete_friend", friend.DeleteFriend)
|
friendRouterGroup.POST("/delete_friend", friend.DeleteFriend) //1
|
||||||
friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1
|
friendRouterGroup.POST("/add_friend_response", friend.AddFriendResponse) //1
|
||||||
friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1
|
friendRouterGroup.POST("/set_friend_remark", friend.SetFriendRemark) //1
|
||||||
friendRouterGroup.POST("/is_friend", friend.IsFriend) //1
|
friendRouterGroup.POST("/is_friend", friend.IsFriend) //1
|
||||||
friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1
|
friendRouterGroup.POST("/import_friend", friend.ImportFriend) //1
|
||||||
}
|
}
|
||||||
//group related routing group
|
//group related routing group
|
||||||
groupRouterGroup := r.Group("/group")
|
groupRouterGroup := r.Group("/group")
|
||||||
{
|
{
|
||||||
groupRouterGroup.POST("/create_group", group.CreateGroup) //1
|
groupRouterGroup.POST("/create_group", group.CreateGroup) //1
|
||||||
groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1
|
groupRouterGroup.POST("/set_group_info", group.SetGroupInfo) //1
|
||||||
groupRouterGroup.POST("join_group", group.JoinGroup) //1
|
groupRouterGroup.POST("join_group", group.JoinGroup) //1
|
||||||
groupRouterGroup.POST("/quit_group", group.QuitGroup) //1
|
groupRouterGroup.POST("/quit_group", group.QuitGroup) //1
|
||||||
groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse)
|
groupRouterGroup.POST("/group_application_response", group.ApplicationGroupResponse) //1
|
||||||
groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner)
|
groupRouterGroup.POST("/transfer_group", group.TransferGroupOwner) //1
|
||||||
groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1
|
groupRouterGroup.POST("/get_group_applicationList", group.GetGroupApplicationList) //1
|
||||||
groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1
|
groupRouterGroup.POST("/get_groups_info", group.GetGroupsInfo) //1
|
||||||
groupRouterGroup.POST("/kick_group", group.KickGroupMember)
|
groupRouterGroup.POST("/kick_group", group.KickGroupMember) //1
|
||||||
groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList)
|
groupRouterGroup.POST("/get_group_member_list", group.GetGroupMemberList) //no use
|
||||||
groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember)
|
groupRouterGroup.POST("/get_group_all_member_list", group.GetGroupAllMember)
|
||||||
|
groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo)
|
||||||
|
groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup) //1
|
||||||
|
groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList)
|
||||||
groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1
|
groupRouterGroup.POST("/get_group_members_info", group.GetGroupMembersInfo) //1
|
||||||
groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup)
|
groupRouterGroup.POST("/invite_user_to_group", group.InviteUserToGroup)
|
||||||
groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) //1
|
groupRouterGroup.POST("/get_joined_group_list", group.GetJoinedGroupList) //1
|
||||||
|
@ -10,4 +10,5 @@ func main() {
|
|||||||
flag.Parse()
|
flag.Parse()
|
||||||
rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort)
|
rpcServer := rpcAuth.NewRpcAuthServer(*rpcPort)
|
||||||
rpcServer.Run()
|
rpcServer.Run()
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -24,7 +24,7 @@ func KickGroupMember(c *gin.Context) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
req := &rpc.KickGroupMemberReq{}
|
req := &rpc.KickGroupMemberReq{}
|
||||||
utils.CopyStructFields(req, params)
|
utils.CopyStructFields(req, ¶ms)
|
||||||
var ok bool
|
var ok bool
|
||||||
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -39,7 +39,7 @@ func KickGroupMember(c *gin.Context) {
|
|||||||
client := rpc.NewGroupClient(etcdConn)
|
client := rpc.NewGroupClient(etcdConn)
|
||||||
RpcResp, err := client.KickGroupMember(context.Background(), req)
|
RpcResp, err := client.KickGroupMember(context.Background(), req)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error())
|
log.NewError(req.OperationID, "GetGroupMemberList failed ", err.Error(), req.String())
|
||||||
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
|
c.JSON(http.StatusInternalServerError, gin.H{"errCode": 500, "errMsg": err.Error()})
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
@ -48,8 +48,12 @@ func KickGroupMember(c *gin.Context) {
|
|||||||
memberListResp.ErrMsg = RpcResp.ErrMsg
|
memberListResp.ErrMsg = RpcResp.ErrMsg
|
||||||
memberListResp.ErrCode = RpcResp.ErrCode
|
memberListResp.ErrCode = RpcResp.ErrCode
|
||||||
for _, v := range RpcResp.Id2ResultList {
|
for _, v := range RpcResp.Id2ResultList {
|
||||||
memberListResp.Data = append(memberListResp.Data, &api.Id2Result{UserID: v.UserID, Result: v.Result})
|
memberListResp.UserIDResultList = append(memberListResp.UserIDResultList, &api.UserIDResult{UserID: v.UserID, Result: v.Result})
|
||||||
}
|
}
|
||||||
|
if len(memberListResp.UserIDResultList) == 0 {
|
||||||
|
memberListResp.UserIDResultList = []*api.UserIDResult{}
|
||||||
|
}
|
||||||
|
|
||||||
log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp)
|
log.NewInfo(req.OperationID, "KickGroupMember api return ", memberListResp)
|
||||||
c.JSON(http.StatusOK, memberListResp)
|
c.JSON(http.StatusOK, memberListResp)
|
||||||
}
|
}
|
||||||
@ -119,9 +123,22 @@ func GetGroupMemberList(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList, NextSeq: RpcResp.NextSeq}
|
memberListResp := api.GetGroupMemberListResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList, NextSeq: RpcResp.NextSeq}
|
||||||
c.JSON(http.StatusOK, memberListResp)
|
if len(memberListResp.MemberList) == 0 {
|
||||||
|
memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{}
|
||||||
|
}
|
||||||
|
/*
|
||||||
|
jsm := &jsonpb.Marshaler{
|
||||||
|
OrigName: true,
|
||||||
|
EnumsAsInts: false,
|
||||||
|
EmitDefaults: true,
|
||||||
|
}
|
||||||
|
|
||||||
|
var b bytes.Buffer
|
||||||
|
err = jsm.MarshalToString(memberListResp.MemberList[0])
|
||||||
|
*/
|
||||||
log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp)
|
log.NewInfo(req.OperationID, "GetGroupMemberList api return ", memberListResp)
|
||||||
|
c.JSON(http.StatusOK, memberListResp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetGroupAllMember(c *gin.Context) {
|
func GetGroupAllMember(c *gin.Context) {
|
||||||
@ -132,7 +149,7 @@ func GetGroupAllMember(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
req := &rpc.GetGroupAllMemberReq{}
|
req := &rpc.GetGroupAllMemberReq{}
|
||||||
utils.CopyStructFields(req, params)
|
utils.CopyStructFields(req, ¶ms)
|
||||||
var ok bool
|
var ok bool
|
||||||
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -151,9 +168,12 @@ func GetGroupAllMember(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, Data: RpcResp.MemberList}
|
memberListResp := api.GetGroupAllMemberResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}, MemberList: RpcResp.MemberList}
|
||||||
c.JSON(http.StatusOK, memberListResp)
|
if len(memberListResp.MemberList) == 0 {
|
||||||
|
memberListResp.MemberList = []*open_im_sdk.GroupMemberFullInfo{}
|
||||||
|
}
|
||||||
log.NewInfo(req.OperationID, "GetGroupAllMember api return ", memberListResp)
|
log.NewInfo(req.OperationID, "GetGroupAllMember api return ", memberListResp)
|
||||||
|
c.JSON(http.StatusOK, memberListResp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func GetJoinedGroupList(c *gin.Context) {
|
func GetJoinedGroupList(c *gin.Context) {
|
||||||
@ -199,7 +219,7 @@ func InviteUserToGroup(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
req := &rpc.InviteUserToGroupReq{}
|
req := &rpc.InviteUserToGroupReq{}
|
||||||
utils.CopyStructFields(req, params)
|
utils.CopyStructFields(req, ¶ms)
|
||||||
var ok bool
|
var ok bool
|
||||||
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -218,12 +238,12 @@ func InviteUserToGroup(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
Resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
|
resp := api.InviteUserToGroupResp{CommResp: api.CommResp{ErrCode: RpcResp.ErrCode, ErrMsg: RpcResp.ErrMsg}}
|
||||||
for _, v := range RpcResp.Id2ResultList {
|
for _, v := range RpcResp.Id2ResultList {
|
||||||
Resp.Data = append(Resp.Data, api.Id2Result{UserID: v.UserID, Result: v.Result})
|
resp.UserIDResultList = append(resp.UserIDResultList, api.UserIDResult{UserID: v.UserID, Result: v.Result})
|
||||||
}
|
}
|
||||||
c.JSON(http.StatusOK, Resp)
|
c.JSON(http.StatusOK, resp)
|
||||||
log.NewInfo(req.OperationID, "InviteUserToGroup api return ", Resp)
|
log.NewInfo(req.OperationID, "InviteUserToGroup api return ", resp)
|
||||||
}
|
}
|
||||||
|
|
||||||
func CreateGroup(c *gin.Context) {
|
func CreateGroup(c *gin.Context) {
|
||||||
@ -470,7 +490,7 @@ func TransferGroupOwner(c *gin.Context) {
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
req := &rpc.TransferGroupOwnerReq{}
|
req := &rpc.TransferGroupOwnerReq{}
|
||||||
utils.CopyStructFields(req, params)
|
utils.CopyStructFields(req, ¶ms)
|
||||||
var ok bool
|
var ok bool
|
||||||
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
ok, req.OpUserID = token_verify.GetUserIDFromToken(c.Request.Header.Get("token"))
|
||||||
if !ok {
|
if !ok {
|
||||||
@ -488,7 +508,9 @@ func TransferGroupOwner(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
|
||||||
}
|
}
|
||||||
resp := api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}
|
|
||||||
c.JSON(http.StatusOK, resp)
|
resp := api.TransferGroupOwnerResp{CommResp: api.CommResp{ErrCode: reply.CommonResp.ErrCode, ErrMsg: reply.CommonResp.ErrMsg}}
|
||||||
log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp)
|
log.NewInfo(req.OperationID, "TransferGroupOwner api return ", resp)
|
||||||
|
c.JSON(http.StatusOK, resp)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -146,7 +146,7 @@ func (s *friendServer) AddFriend(ctx context.Context, req *pbFriend.AddFriendReq
|
|||||||
utils.CopyStructFields(&friendRequest, req.CommID)
|
utils.CopyStructFields(&friendRequest, req.CommID)
|
||||||
// {openIM001 openIM002 0 test add friend 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC }]
|
// {openIM001 openIM002 0 test add friend 0001-01-01 00:00:00 +0000 UTC 0001-01-01 00:00:00 +0000 UTC }]
|
||||||
log.NewDebug(req.CommID.OperationID, "UpdateFriendApplication args ", friendRequest)
|
log.NewDebug(req.CommID.OperationID, "UpdateFriendApplication args ", friendRequest)
|
||||||
err := imdb.UpdateFriendApplication(&friendRequest)
|
err := imdb.InsertFriendApplication(&friendRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.CommID.OperationID, "UpdateFriendApplication failed ", err.Error(), friendRequest)
|
log.NewError(req.CommID.OperationID, "UpdateFriendApplication failed ", err.Error(), friendRequest)
|
||||||
return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return &pbFriend.AddFriendResp{CommonResp: &pbFriend.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
|
@ -95,7 +95,7 @@ func (s *groupServer) CreateGroup(ctx context.Context, req *pbGroup.CreateGroupR
|
|||||||
}
|
}
|
||||||
|
|
||||||
//to group member
|
//to group member
|
||||||
groupMember := imdb.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner}
|
groupMember := imdb.GroupMember{GroupID: groupId, RoleLevel: constant.GroupOwner, OperatorUserID: req.OpUserID}
|
||||||
utils.CopyStructFields(&groupMember, us)
|
utils.CopyStructFields(&groupMember, us)
|
||||||
err = im_mysql_model.InsertIntoGroupMember(groupMember)
|
err = im_mysql_model.InsertIntoGroupMember(groupMember)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -226,6 +226,7 @@ func (s *groupServer) InviteUserToGroup(ctx context.Context, req *pbGroup.Invite
|
|||||||
utils.CopyStructFields(&toInsertInfo, toUserInfo)
|
utils.CopyStructFields(&toInsertInfo, toUserInfo)
|
||||||
toInsertInfo.GroupID = req.GroupID
|
toInsertInfo.GroupID = req.GroupID
|
||||||
toInsertInfo.RoleLevel = constant.GroupOrdinaryUsers
|
toInsertInfo.RoleLevel = constant.GroupOrdinaryUsers
|
||||||
|
toInsertInfo.OperatorUserID = req.OpUserID
|
||||||
err = imdb.InsertIntoGroupMember(toInsertInfo)
|
err = imdb.InsertIntoGroupMember(toInsertInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "InsertIntoGroupMember failed ", req.GroupID, toUserInfo.UserID, toUserInfo.Nickname, toUserInfo.FaceUrl)
|
log.NewError(req.OperationID, "InsertIntoGroupMember failed ", req.GroupID, toUserInfo.UserID, toUserInfo.Nickname, toUserInfo.FaceUrl)
|
||||||
@ -260,7 +261,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro
|
|||||||
|
|
||||||
for _, v := range memberList {
|
for _, v := range memberList {
|
||||||
var node open_im_sdk.GroupMemberFullInfo
|
var node open_im_sdk.GroupMemberFullInfo
|
||||||
utils.CopyStructFields(node, v)
|
utils.CopyStructFields(&node, &v)
|
||||||
resp.MemberList = append(resp.MemberList, &node)
|
resp.MemberList = append(resp.MemberList, &node)
|
||||||
}
|
}
|
||||||
log.NewInfo(req.OperationID, "GetGroupAllMember rpc return ", resp.String())
|
log.NewInfo(req.OperationID, "GetGroupAllMember rpc return ", resp.String())
|
||||||
@ -268,7 +269,7 @@ func (s *groupServer) GetGroupAllMember(ctx context.Context, req *pbGroup.GetGro
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) {
|
func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGroupMemberListReq) (*pbGroup.GetGroupMemberListResp, error) {
|
||||||
log.NewInfo(req.OperationID, "GetGroupMemberList, args ", req.String())
|
log.NewInfo(req.OperationID, "GetGroupMemberList args ", req.String())
|
||||||
var resp pbGroup.GetGroupMemberListResp
|
var resp pbGroup.GetGroupMemberListResp
|
||||||
memberList, err := imdb.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30)
|
memberList, err := imdb.GetGroupMemberByGroupID(req.GroupID, req.Filter, req.NextSeq, 30)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
@ -280,7 +281,7 @@ func (s *groupServer) GetGroupMemberList(ctx context.Context, req *pbGroup.GetGr
|
|||||||
|
|
||||||
for _, v := range memberList {
|
for _, v := range memberList {
|
||||||
var node open_im_sdk.GroupMemberFullInfo
|
var node open_im_sdk.GroupMemberFullInfo
|
||||||
utils.CopyStructFields(&node, v)
|
utils.CopyStructFields(&node, &v)
|
||||||
resp.MemberList = append(resp.MemberList, &node)
|
resp.MemberList = append(resp.MemberList, &node)
|
||||||
}
|
}
|
||||||
//db operate get db sorted by join time
|
//db operate get db sorted by join time
|
||||||
@ -300,7 +301,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou
|
|||||||
ownerList, err := imdb.GetOwnerManagerByGroupID(req.GroupID)
|
ownerList, err := imdb.GetOwnerManagerByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID)
|
log.NewError(req.OperationID, "GetOwnerManagerByGroupId failed ", err.Error(), req.GroupID)
|
||||||
return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}, nil
|
return &pbGroup.KickGroupMemberResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}, nil
|
||||||
}
|
}
|
||||||
//op is group owner?
|
//op is group owner?
|
||||||
var flag = 0
|
var flag = 0
|
||||||
@ -352,6 +353,7 @@ func (s *groupServer) KickGroupMember(ctx context.Context, req *pbGroup.KickGrou
|
|||||||
log.NewError(req.OperationID, "RemoveGroupMember failed ", err.Error(), req.GroupID, v)
|
log.NewError(req.OperationID, "RemoveGroupMember failed ", err.Error(), req.GroupID, v)
|
||||||
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1})
|
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: -1})
|
||||||
} else {
|
} else {
|
||||||
|
log.NewDebug(req.OperationID, "kicked ", v)
|
||||||
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: 0})
|
resp.Id2ResultList = append(resp.Id2ResultList, &pbGroup.Id2Result{UserID: v, Result: 0})
|
||||||
okUserIDList = append(okUserIDList, v)
|
okUserIDList = append(okUserIDList, v)
|
||||||
}
|
}
|
||||||
@ -435,13 +437,40 @@ func (s *groupServer) GroupApplicationResponse(_ context.Context, req *pbGroup.G
|
|||||||
utils.CopyStructFields(&groupRequest, req)
|
utils.CopyStructFields(&groupRequest, req)
|
||||||
groupRequest.UserID = req.FromUserID
|
groupRequest.UserID = req.FromUserID
|
||||||
groupRequest.HandleUserID = req.OpUserID
|
groupRequest.HandleUserID = req.OpUserID
|
||||||
|
groupRequest.HandledTime = time.Now()
|
||||||
|
if !token_verify.IsMangerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) {
|
||||||
|
log.NewError(req.OperationID, "IsMangerUserID IsGroupOwnerAdmin false ", req.GroupID, req.OpUserID)
|
||||||
|
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
|
||||||
|
}
|
||||||
err := imdb.UpdateGroupRequest(groupRequest)
|
err := imdb.UpdateGroupRequest(groupRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.String())
|
//{openIM002 7836e478bc43ce1d3b8889cac983f59b 1 ok 0001-01-01 00:00:00 +0000 UTC openIM001 0001-01-01 00:00:00 +0000 UTC }
|
||||||
|
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), groupRequest)
|
||||||
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
}
|
}
|
||||||
chat.ApplicationProcessedNotification(req)
|
chat.ApplicationProcessedNotification(req)
|
||||||
if req.HandleResult == constant.GroupResponseAgree {
|
if req.HandleResult == constant.GroupResponseAgree {
|
||||||
|
|
||||||
|
if req.HandleResult == constant.GroupResponseAgree {
|
||||||
|
user, err := imdb.GetUserByUserID(req.FromUserID)
|
||||||
|
if err != nil {
|
||||||
|
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), req.FromUserID)
|
||||||
|
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
|
}
|
||||||
|
member := imdb.GroupMember{}
|
||||||
|
member.GroupID = req.GroupID
|
||||||
|
member.UserID = req.FromUserID
|
||||||
|
member.RoleLevel = constant.GroupOrdinaryUsers
|
||||||
|
member.OperatorUserID = req.OpUserID
|
||||||
|
member.FaceUrl = user.FaceUrl
|
||||||
|
member.Nickname = user.Nickname
|
||||||
|
|
||||||
|
err = imdb.InsertIntoGroupMember(member)
|
||||||
|
if err != nil {
|
||||||
|
log.NewError(req.OperationID, "GroupApplicationResponse failed ", err.Error(), member)
|
||||||
|
return &pbGroup.GroupApplicationResponseResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
|
}
|
||||||
|
}
|
||||||
chat.MemberEnterNotification(req)
|
chat.MemberEnterNotification(req)
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -462,7 +491,7 @@ func (s *groupServer) JoinGroup(ctx context.Context, req *pbGroup.JoinGroupReq)
|
|||||||
groupRequest.ReqMsg = req.ReqMessage
|
groupRequest.ReqMsg = req.ReqMessage
|
||||||
groupRequest.GroupID = req.GroupID
|
groupRequest.GroupID = req.GroupID
|
||||||
|
|
||||||
err = imdb.UpdateGroupRequest(groupRequest)
|
err = imdb.InsertIntoGroupRequest(groupRequest)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "UpdateGroupRequest ", err.Error(), groupRequest)
|
log.NewError(req.OperationID, "UpdateGroupRequest ", err.Error(), groupRequest)
|
||||||
return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return &pbGroup.JoinGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
@ -568,17 +597,19 @@ func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.Transfe
|
|||||||
log.NewInfo(req.OperationID, "TransferGroupOwner ", req.String())
|
log.NewInfo(req.OperationID, "TransferGroupOwner ", req.String())
|
||||||
|
|
||||||
if req.OldOwnerUserID == req.NewOwnerUserID {
|
if req.OldOwnerUserID == req.NewOwnerUserID {
|
||||||
log.NewError(req.OperationID, "same owner ", req.String())
|
log.NewError(req.OperationID, "same owner ", req.OldOwnerUserID, req.NewOwnerUserID)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil
|
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil
|
||||||
}
|
}
|
||||||
groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: 0}
|
groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers}
|
||||||
err := imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
err := imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
}
|
}
|
||||||
groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: 1}
|
groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: constant.GroupOwner}
|
||||||
err = imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
err = imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
log.NewError(req.OperationID, "UpdateGroupMemberInfo failed ", groupMemberInfo)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
||||||
}
|
}
|
||||||
changedType := int32(1) << 4
|
changedType := int32(1) << 4
|
||||||
|
@ -9,10 +9,6 @@ type CommResp struct {
|
|||||||
ErrCode int32 `json:"errCode"`
|
ErrCode int32 `json:"errCode"`
|
||||||
ErrMsg string `json:"errMsg"`
|
ErrMsg string `json:"errMsg"`
|
||||||
}
|
}
|
||||||
type Id2Result struct {
|
|
||||||
UserID string `json:"userID"`
|
|
||||||
Result int32 `json:"result"`
|
|
||||||
}
|
|
||||||
|
|
||||||
type KickGroupMemberReq struct {
|
type KickGroupMemberReq struct {
|
||||||
GroupID string `json:"groupID" binding:"required"`
|
GroupID string `json:"groupID" binding:"required"`
|
||||||
@ -22,7 +18,7 @@ type KickGroupMemberReq struct {
|
|||||||
}
|
}
|
||||||
type KickGroupMemberResp struct {
|
type KickGroupMemberResp struct {
|
||||||
CommResp
|
CommResp
|
||||||
Data []*Id2Result `json:"data"`
|
UserIDResultList []*UserIDResult `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetGroupMembersInfoReq struct {
|
type GetGroupMembersInfoReq struct {
|
||||||
@ -37,13 +33,13 @@ type GetGroupMembersInfoResp struct {
|
|||||||
|
|
||||||
type InviteUserToGroupReq struct {
|
type InviteUserToGroupReq struct {
|
||||||
GroupID string `json:"groupID" binding:"required"`
|
GroupID string `json:"groupID" binding:"required"`
|
||||||
InvitedUserIDList []string `json:"uidList" binding:"required"`
|
InvitedUserIDList []string `json:"invitedUserIDList" binding:"required"`
|
||||||
Reason string `json:"reason"`
|
Reason string `json:"reason"`
|
||||||
OperationID string `json:"operationID" binding:"required"`
|
OperationID string `json:"operationID" binding:"required"`
|
||||||
}
|
}
|
||||||
type InviteUserToGroupResp struct {
|
type InviteUserToGroupResp struct {
|
||||||
CommResp
|
CommResp
|
||||||
Data []Id2Result `json:"data"`
|
UserIDResultList []UserIDResult `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetJoinedGroupListReq struct {
|
type GetJoinedGroupListReq struct {
|
||||||
@ -52,7 +48,7 @@ type GetJoinedGroupListReq struct {
|
|||||||
}
|
}
|
||||||
type GetJoinedGroupListResp struct {
|
type GetJoinedGroupListResp struct {
|
||||||
CommResp
|
CommResp
|
||||||
Data []*open_im_sdk.GroupInfo `json:"data"`
|
GroupInfoList []*open_im_sdk.GroupInfo `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetGroupMemberListReq struct {
|
type GetGroupMemberListReq struct {
|
||||||
@ -63,8 +59,8 @@ type GetGroupMemberListReq struct {
|
|||||||
}
|
}
|
||||||
type GetGroupMemberListResp struct {
|
type GetGroupMemberListResp struct {
|
||||||
CommResp
|
CommResp
|
||||||
NextSeq int32 `json:"nextSeq"`
|
NextSeq int32 `json:"nextSeq"`
|
||||||
Data []*open_im_sdk.GroupMemberFullInfo `json:"data"`
|
MemberList []*open_im_sdk.GroupMemberFullInfo `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type GetGroupAllMemberReq struct {
|
type GetGroupAllMemberReq struct {
|
||||||
@ -73,7 +69,7 @@ type GetGroupAllMemberReq struct {
|
|||||||
}
|
}
|
||||||
type GetGroupAllMemberResp struct {
|
type GetGroupAllMemberResp struct {
|
||||||
CommResp
|
CommResp
|
||||||
Data []*open_im_sdk.GroupMemberFullInfo `json:"data"`
|
MemberList []*open_im_sdk.GroupMemberFullInfo `json:"data"`
|
||||||
}
|
}
|
||||||
|
|
||||||
type CreateGroupReq struct {
|
type CreateGroupReq struct {
|
||||||
@ -112,7 +108,7 @@ type ApplicationGroupResponseReq struct {
|
|||||||
GroupID string `json:"groupID" binding:"required"`
|
GroupID string `json:"groupID" binding:"required"`
|
||||||
FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID
|
FromUserID string `json:"fromUserID" binding:"required"` //application from FromUserID
|
||||||
HandledMsg string `json:"handledMsg"`
|
HandledMsg string `json:"handledMsg"`
|
||||||
HandleResult int32 `json:"handleResult" binding:"required, oneof=-1 1"`
|
HandleResult int32 `json:"handleResult" binding:"required,oneof=-1 1"`
|
||||||
}
|
}
|
||||||
type ApplicationGroupResponseResp struct {
|
type ApplicationGroupResponseResp struct {
|
||||||
CommResp
|
CommResp
|
||||||
@ -149,3 +145,6 @@ type TransferGroupOwnerReq struct {
|
|||||||
NewOwnerUserID string `json:"newOwnerUserID" binding:"required"`
|
NewOwnerUserID string `json:"newOwnerUserID" binding:"required"`
|
||||||
OperationID string `json:"operationID" binding:"required"`
|
OperationID string `json:"operationID" binding:"required"`
|
||||||
}
|
}
|
||||||
|
type TransferGroupOwnerResp struct {
|
||||||
|
CommResp
|
||||||
|
}
|
||||||
|
@ -66,12 +66,9 @@ func UpdateFriendApplication(friendRequest *FriendRequest) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
friendRequest.CreateTime = time.Now()
|
friendRequest.CreateTime = time.Now()
|
||||||
if dbConn.Table("friend_request").Where("from_user_id=? and to_user_id=?",
|
|
||||||
friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).RowsAffected == 0 {
|
return dbConn.Table("friend_request").Where("from_user_id=? and to_user_id=?",
|
||||||
return InsertFriendApplication(friendRequest)
|
friendRequest.FromUserID, friendRequest.ToUserID).Update(&friendRequest).Error
|
||||||
} else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func InsertFriendApplication(friendRequest *FriendRequest) error {
|
func InsertFriendApplication(friendRequest *FriendRequest) error {
|
||||||
|
@ -210,6 +210,19 @@ func GetJoinedGroupIDListByUserID(userID string) ([]string, error) {
|
|||||||
return groupIDList, nil
|
return groupIDList, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func IsGroupOwnerAdmin(groupID, UserID string) bool {
|
||||||
|
groupMemberList, err := GetOwnerManagerByGroupID(groupID)
|
||||||
|
if err != nil {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
for _, v := range groupMemberList {
|
||||||
|
if v.UserID == UserID && v.RoleLevel > constant.GroupOrdinaryUsers {
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
//
|
//
|
||||||
//func SelectGroupList(groupID string) ([]string, error) {
|
//func SelectGroupList(groupID string) ([]string, error) {
|
||||||
// var groupUserID string
|
// var groupUserID string
|
||||||
|
@ -24,17 +24,10 @@ func UpdateGroupRequest(groupRequest GroupRequest) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
if groupRequest.HandledTime.Unix() < 0 {
|
if groupRequest.HandledTime.Unix() < 0 {
|
||||||
groupRequest.HandledTime = utils.UnixSecondToTime(0)
|
groupRequest.HandledTime = utils.UnixSecondToTime(0)
|
||||||
}
|
}
|
||||||
|
return dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest).Error
|
||||||
//RowsAffected
|
|
||||||
if dbConn.Table("group_request").Where("group_id=? and user_id=?", groupRequest.GroupID, groupRequest.UserID).Update(&groupRequest).RowsAffected == 0 {
|
|
||||||
return InsertIntoGroupRequest(groupRequest)
|
|
||||||
} else {
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func InsertIntoGroupRequest(toInsertInfo GroupRequest) error {
|
func InsertIntoGroupRequest(toInsertInfo GroupRequest) error {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user