mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-05-14 23:59:02 +08:00
group
This commit is contained in:
parent
42061ddaf0
commit
5be07abbed
@ -1266,87 +1266,90 @@ func (s *groupServer) SetGroupInfo(ctx context.Context, req *pbGroup.SetGroupInf
|
|||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) TransferGroupOwner(_ context.Context, req *pbGroup.TransferGroupOwnerReq) (*pbGroup.TransferGroupOwnerResp, error) {
|
func (s *groupServer) TransferGroupOwner(ctx context.Context, req *pbGroup.TransferGroupOwnerReq) (resp *pbGroup.TransferGroupOwnerResp, _ error) {
|
||||||
log.NewInfo(req.OperationID, "TransferGroupOwner ", req.String())
|
resp = &pbGroup.TransferGroupOwnerResp{CommonResp: &open_im_sdk.CommonResp{}}
|
||||||
|
ctx = trace_log.NewRpcCtx(ctx, utils.GetSelfFuncName(), req.OperationID)
|
||||||
|
defer func() {
|
||||||
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), nil, "rpc req ", req.String(), "rpc resp ", resp.String())
|
||||||
|
trace_log.ShowLog(ctx)
|
||||||
|
}()
|
||||||
|
|
||||||
groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID)
|
groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "GetGroupInfoByGroupID failed ", req.GroupID, err)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
if groupInfo.Status == constant.GroupStatusDismissed {
|
if groupInfo.Status == constant.GroupStatusDismissed {
|
||||||
errMsg := " group status is dismissed "
|
// TODO
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrStatus.ErrCode, ErrMsg: errMsg}}, nil
|
//errMsg := " group status is dismissed "
|
||||||
|
//return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrStatus.ErrCode, ErrMsg: errMsg}}, nil
|
||||||
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.OldOwnerUserID == req.NewOwnerUserID {
|
if req.OldOwnerUserID == req.NewOwnerUserID {
|
||||||
log.NewError(req.OperationID, "same owner ", req.OldOwnerUserID, req.NewOwnerUserID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrArgs.ErrCode, ErrMsg: constant.ErrArgs.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.NewOwnerUserID)
|
err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.NewOwnerUserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "DelGroupMemberInfoFromCache failed ", req.GroupID, req.NewOwnerUserID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
|
return
|
||||||
|
|
||||||
}
|
}
|
||||||
err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.OldOwnerUserID)
|
err = rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.OldOwnerUserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "DelGroupMemberInfoFromCache failed ", req.GroupID, req.OldOwnerUserID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.OldOwnerUserID, RoleLevel: constant.GroupOrdinaryUsers}
|
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)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
groupMemberInfo = imdb.GroupMember{GroupID: req.GroupID, UserID: req.NewOwnerUserID, RoleLevel: constant.GroupOwner}
|
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)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
chat.GroupOwnerTransferredNotification(req)
|
chat.GroupOwnerTransferredNotification(req)
|
||||||
return &pbGroup.TransferGroupOwnerResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil
|
return
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (*pbGroup.GetGroupsResp, error) {
|
func (s *groupServer) GetGroups(ctx context.Context, req *pbGroup.GetGroupsReq) (resp *pbGroup.GetGroupsResp, err error) {
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetGroups ", req.String())
|
resp = &pbGroup.GetGroupsResp{
|
||||||
resp := &pbGroup.GetGroupsResp{
|
CommonResp: &open_im_sdk.CommonResp{},
|
||||||
CommonResp: &pbGroup.CommonResp{},
|
|
||||||
CMSGroups: []*pbGroup.CMSGroup{},
|
CMSGroups: []*pbGroup.CMSGroup{},
|
||||||
Pagination: &open_im_sdk.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber},
|
Pagination: &open_im_sdk.ResponsePagination{CurrentPage: req.Pagination.PageNumber, ShowNumber: req.Pagination.ShowNumber},
|
||||||
}
|
}
|
||||||
|
ctx = trace_log.NewRpcCtx(ctx, utils.GetSelfFuncName(), req.OperationID)
|
||||||
|
defer func() {
|
||||||
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), nil, "rpc req ", req.String(), "rpc resp ", resp.String())
|
||||||
|
trace_log.ShowLog(ctx)
|
||||||
|
}()
|
||||||
if req.GroupID != "" {
|
if req.GroupID != "" {
|
||||||
groupInfoDB, err := imdb.GetGroupInfoByGroupID(req.GroupID)
|
groupInfoDB, err := imdb.GetGroupInfoByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if errors.Is(err, gorm.ErrRecordNotFound) {
|
if errors.Is(err, gorm.ErrRecordNotFound) {
|
||||||
return resp, nil
|
return resp, nil
|
||||||
}
|
}
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
|
return
|
||||||
resp.CommonResp.ErrMsg = err.Error()
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
resp.GroupNum = 1
|
resp.GroupNum = 1
|
||||||
groupInfo := &open_im_sdk.GroupInfo{}
|
groupInfo := &open_im_sdk.GroupInfo{}
|
||||||
utils.CopyStructFields(groupInfo, groupInfoDB)
|
utils.CopyStructFields(groupInfo, groupInfoDB)
|
||||||
groupMember, err := imdb.GetGroupOwnerInfoByGroupID(req.GroupID)
|
groupMember, err := imdb.GetGroupOwnerInfoByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
|
return
|
||||||
resp.CommonResp.ErrMsg = err.Error()
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
memberNum, err := imdb.GetGroupMembersCount(req.GroupID, "")
|
memberNum, err := imdb.GetGroupMembersCount(req.GroupID, "")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
|
return
|
||||||
resp.CommonResp.ErrMsg = err.Error()
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
groupInfo.MemberCount = uint32(memberNum)
|
groupInfo.MemberCount = uint32(memberNum)
|
||||||
groupInfo.CreateTime = uint32(groupInfoDB.CreateTime.Unix())
|
groupInfo.CreateTime = uint32(groupInfoDB.CreateTime.Unix())
|
||||||
@ -1354,14 +1357,14 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (*
|
|||||||
} else {
|
} else {
|
||||||
groups, count, err := imdb.GetGroupsByName(req.GroupName, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
groups, count, err := imdb.GetGroupsByName(req.GroupName, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupsByName error", req.String(), req.GroupName, req.Pagination.PageNumber, req.Pagination.ShowNumber)
|
trace_log.SetContextInfo(ctx, "GetGroupsByName", err, "GroupName", req.GroupName, "PageNumber", req.Pagination.PageNumber, "ShowNumber", req.Pagination.ShowNumber)
|
||||||
}
|
}
|
||||||
for _, v := range groups {
|
for _, v := range groups {
|
||||||
group := &pbGroup.CMSGroup{GroupInfo: &open_im_sdk.GroupInfo{}}
|
group := &pbGroup.CMSGroup{GroupInfo: &open_im_sdk.GroupInfo{}}
|
||||||
utils.CopyStructFields(group.GroupInfo, v)
|
utils.CopyStructFields(group.GroupInfo, v)
|
||||||
groupMember, err := imdb.GetGroupOwnerInfoByGroupID(v.GroupID)
|
groupMember, err := imdb.GetGroupOwnerInfoByGroupID(v.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupOwnerInfoByGroupID failed", err.Error(), v)
|
trace_log.SetContextInfo(ctx, "GetGroupOwnerInfoByGroupID", err, "GroupID", v.GroupID)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
group.GroupInfo.CreateTime = uint32(v.CreateTime.Unix())
|
group.GroupInfo.CreateTime = uint32(v.CreateTime.Unix())
|
||||||
@ -1371,26 +1374,25 @@ func (s *groupServer) GetGroups(_ context.Context, req *pbGroup.GetGroupsReq) (*
|
|||||||
}
|
}
|
||||||
resp.GroupNum = int32(count)
|
resp.GroupNum = int32(count)
|
||||||
}
|
}
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "GetGroups resp", resp.String())
|
return
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGroupMembersCMSReq) (*pbGroup.GetGroupMembersCMSResp, error) {
|
func (s *groupServer) GetGroupMembersCMS(ctx context.Context, req *pbGroup.GetGroupMembersCMSReq) (resp *pbGroup.GetGroupMembersCMSResp, _ error) {
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "args:", req.String())
|
resp = &pbGroup.GetGroupMembersCMSResp{CommonResp: &open_im_sdk.CommonResp{}}
|
||||||
resp := &pbGroup.GetGroupMembersCMSResp{CommonResp: &pbGroup.CommonResp{}}
|
ctx = trace_log.NewRpcCtx(ctx, utils.GetSelfFuncName(), req.OperationID)
|
||||||
|
defer func() {
|
||||||
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), nil, "rpc req ", req.String(), "rpc resp ", resp.String())
|
||||||
|
trace_log.ShowLog(ctx)
|
||||||
|
}()
|
||||||
groupMembers, err := imdb.GetGroupMembersByGroupIdCMS(req.GroupID, req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber)
|
groupMembers, err := imdb.GetGroupMembersByGroupIdCMS(req.GroupID, req.UserName, req.Pagination.ShowNumber, req.Pagination.PageNumber)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMembersByGroupIdCMS Error", err.Error())
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
|
return
|
||||||
resp.CommonResp.ErrMsg = err.Error()
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
groupMembersCount, err := imdb.GetGroupMembersCount(req.GroupID, req.UserName)
|
groupMembersCount, err := imdb.GetGroupMembersCount(req.GroupID, req.UserName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetGroupMembersCMS Error", err.Error())
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
resp.CommonResp.ErrCode = constant.ErrDB.ErrCode
|
return
|
||||||
resp.CommonResp.ErrMsg = err.Error()
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
log.NewInfo(req.OperationID, groupMembersCount)
|
log.NewInfo(req.OperationID, groupMembersCount)
|
||||||
resp.MemberNums = int32(groupMembersCount)
|
resp.MemberNums = int32(groupMembersCount)
|
||||||
@ -1405,32 +1407,31 @@ func (s *groupServer) GetGroupMembersCMS(_ context.Context, req *pbGroup.GetGrou
|
|||||||
CurrentPage: req.Pagination.PageNumber,
|
CurrentPage: req.Pagination.PageNumber,
|
||||||
ShowNumber: req.Pagination.ShowNumber,
|
ShowNumber: req.Pagination.ShowNumber,
|
||||||
}
|
}
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "resp:", resp.String())
|
return
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) GetUserReqApplicationList(_ context.Context, req *pbGroup.GetUserReqApplicationListReq) (*pbGroup.GetUserReqApplicationListResp, error) {
|
func (s *groupServer) GetUserReqApplicationList(ctx context.Context, req *pbGroup.GetUserReqApplicationListReq) (resp *pbGroup.GetUserReqApplicationListResp, _ error) {
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "req: ", req.String())
|
resp = &pbGroup.GetUserReqApplicationListResp{CommonResp: &open_im_sdk.CommonResp{}}
|
||||||
resp := &pbGroup.GetUserReqApplicationListResp{}
|
ctx = trace_log.NewRpcCtx(ctx, utils.GetSelfFuncName(), req.OperationID)
|
||||||
|
defer func() {
|
||||||
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), nil, "rpc req ", req.String(), "rpc resp ", resp.String())
|
||||||
|
trace_log.ShowLog(ctx)
|
||||||
|
}()
|
||||||
groupRequests, err := imdb.GetUserReqGroupByUserID(req.UserID)
|
groupRequests, err := imdb.GetUserReqGroupByUserID(req.UserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "GetUserReqGroupByUserID failed ", err.Error())
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
resp.CommonResp = &pbGroup.CommonResp{
|
return
|
||||||
ErrCode: constant.ErrDB.ErrCode,
|
|
||||||
ErrMsg: constant.ErrDB.ErrMsg,
|
|
||||||
}
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
for _, groupReq := range groupRequests {
|
for _, groupReq := range groupRequests {
|
||||||
node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}}
|
node := open_im_sdk.GroupRequest{UserInfo: &open_im_sdk.PublicUserInfo{}, GroupInfo: &open_im_sdk.GroupInfo{}}
|
||||||
group, err := imdb.GetGroupInfoByGroupID(groupReq.GroupID)
|
group, err := imdb.GetGroupInfoByGroupID(groupReq.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(req.OperationID, "GetGroupInfoByGroupID failed ", err.Error(), groupReq.GroupID)
|
trace_log.SetContextInfo(ctx, "GetGroupInfoByGroupID", err, "GroupID", groupReq.GroupID)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
user, err := imdb.GetUserByUserID(groupReq.UserID)
|
user, err := imdb.GetUserByUserID(groupReq.UserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(req.OperationID, "GetUserByUserID failed ", err.Error(), groupReq.UserID)
|
trace_log.SetContextInfo(ctx, "GetUserByUserID", err, "UserID", groupReq.UserID)
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
cp.GroupRequestDBCopyOpenIM(&node, &groupReq)
|
cp.GroupRequestDBCopyOpenIM(&node, &groupReq)
|
||||||
@ -1438,43 +1439,44 @@ func (s *groupServer) GetUserReqApplicationList(_ context.Context, req *pbGroup.
|
|||||||
cp.GroupDBCopyOpenIM(node.GroupInfo, group)
|
cp.GroupDBCopyOpenIM(node.GroupInfo, group)
|
||||||
resp.GroupRequestList = append(resp.GroupRequestList, &node)
|
resp.GroupRequestList = append(resp.GroupRequestList, &node)
|
||||||
}
|
}
|
||||||
resp.CommonResp = &pbGroup.CommonResp{
|
return
|
||||||
ErrCode: 0,
|
|
||||||
ErrMsg: "",
|
|
||||||
}
|
|
||||||
return resp, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (*pbGroup.DismissGroupResp, error) {
|
func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGroupReq) (resp *pbGroup.DismissGroupResp,_ error) {
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
|
resp = &pbGroup.DismissGroupResp{CommonResp: &open_im_sdk.CommonResp{}}
|
||||||
|
ctx = trace_log.NewRpcCtx(ctx, utils.GetSelfFuncName(), req.OperationID)
|
||||||
|
defer func() {
|
||||||
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), nil, "rpc req ", req.String(), "rpc resp ", resp.String())
|
||||||
|
trace_log.ShowLog(ctx)
|
||||||
|
}()
|
||||||
if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) {
|
if !token_verify.IsManagerUserID(req.OpUserID) && !imdb.IsGroupOwnerAdmin(req.GroupID, req.OpUserID) {
|
||||||
log.NewError(req.OperationID, "verify failed ", req.OpUserID, req.GroupID)
|
SetErrorForResp(constant.ErrIdentity, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: constant.ErrAccess.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil {
|
if err := rocksCache.DelGroupInfoFromCache(req.GroupID); err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
|
return
|
||||||
}
|
}
|
||||||
if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, nil); err != nil {
|
if err := s.DelGroupAndUserCache(req.OperationID, req.GroupID, nil); err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
err := imdb.OperateGroupStatus(req.GroupID, constant.GroupStatusDismissed)
|
err := imdb.OperateGroupStatus(req.GroupID, constant.GroupStatusDismissed)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "OperateGroupStatus failed ", req.GroupID, constant.GroupStatusDismissed)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID)
|
groupInfo, err := imdb.GetGroupInfoByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
if groupInfo.GroupType != constant.SuperGroup {
|
if groupInfo.GroupType != constant.SuperGroup {
|
||||||
memberList, err := imdb.GetGroupMemberListByGroupID(req.GroupID)
|
memberList, err := imdb.GetGroupMemberListByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "GetGroupMemberListByGroupID failed,", err.Error(), req.GroupID)
|
trace_log.SetContextInfo(ctx, "GetGroupMemberListByGroupID", err, "groupID", req.GroupID)
|
||||||
}
|
}
|
||||||
//modify quitter conversation info
|
//modify quitter conversation info
|
||||||
var reqPb pbUser.SetConversationReq
|
var reqPb pbUser.SetConversationReq
|
||||||
@ -1487,35 +1489,29 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou
|
|||||||
c.GroupID = req.GroupID
|
c.GroupID = req.GroupID
|
||||||
c.IsNotInGroup = true
|
c.IsNotInGroup = true
|
||||||
reqPb.Conversation = &c
|
reqPb.Conversation = &c
|
||||||
etcdConn := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
|
etcdConn, err := getcdv3.GetDefaultConn(config.Config.Etcd.EtcdSchema, strings.Join(config.Config.Etcd.EtcdAddr, ","), config.Config.RpcRegisterName.OpenImUserName, req.OperationID)
|
||||||
if etcdConn == nil {
|
if err != nil {
|
||||||
errMsg := req.OperationID + "getcdv3.GetDefaultConn == nil"
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
log.NewError(req.OperationID, errMsg)
|
return
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrInternal.ErrCode, ErrMsg: errMsg}}, nil
|
|
||||||
}
|
}
|
||||||
client := pbUser.NewUserClient(etcdConn)
|
client := pbUser.NewUserClient(etcdConn)
|
||||||
respPb, err := client.SetConversation(context.Background(), &reqPb)
|
respPb, err := client.SetConversation(context.Background(), &reqPb)
|
||||||
if err != nil {
|
trace_log.SetContextInfo(ctx, "SetConversation", err, "req", &reqPb, "resp", respPb)
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), "SetConversation rpc failed, ", reqPb.String(), err.Error(), v.UserID)
|
|
||||||
} else {
|
|
||||||
log.NewDebug(req.OperationID, utils.GetSelfFuncName(), "SetConversation success", respPb.String(), v.UserID)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
err = imdb.DeleteGroupMemberByGroupID(req.GroupID)
|
err = imdb.DeleteGroupMemberByGroupID(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "DeleteGroupMemberByGroupID failed ", req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
chat.GroupDismissedNotification(req)
|
chat.GroupDismissedNotification(req)
|
||||||
} else {
|
} else {
|
||||||
err = db.DB.DeleteSuperGroup(req.GroupID)
|
err = db.DB.DeleteSuperGroup(req.GroupID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.NewError(req.OperationID, "DeleteGroupMemberByGroupID failed ", req.GroupID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""})
|
return
|
||||||
return &pbGroup.DismissGroupResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// rpc MuteGroupMember(MuteGroupMemberReq) returns(MuteGroupMemberResp);
|
// rpc MuteGroupMember(MuteGroupMemberReq) returns(MuteGroupMemberResp);
|
||||||
@ -1523,48 +1519,54 @@ func (s *groupServer) DismissGroup(ctx context.Context, req *pbGroup.DismissGrou
|
|||||||
// rpc MuteGroup(MuteGroupReq) returns(MuteGroupResp);
|
// rpc MuteGroup(MuteGroupReq) returns(MuteGroupResp);
|
||||||
// rpc CancelMuteGroup(CancelMuteGroupReq) returns(CancelMuteGroupResp);
|
// rpc CancelMuteGroup(CancelMuteGroupReq) returns(CancelMuteGroupResp);
|
||||||
|
|
||||||
func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (*pbGroup.MuteGroupMemberResp, error) {
|
func (s *groupServer) MuteGroupMember(ctx context.Context, req *pbGroup.MuteGroupMemberReq) (resp *pbGroup.MuteGroupMemberResp,_ error) {
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc args ", req.String())
|
resp = &pbGroup.MuteGroupMemberResp{CommonResp: &open_im_sdk.CommonResp{}}
|
||||||
|
ctx = trace_log.NewRpcCtx(ctx, utils.GetSelfFuncName(), req.OperationID)
|
||||||
|
defer func() {
|
||||||
|
trace_log.SetContextInfo(ctx, utils.GetSelfFuncName(), nil, "rpc req ", req.String(), "rpc resp ", resp.String())
|
||||||
|
trace_log.ShowLog(ctx)
|
||||||
|
}()
|
||||||
opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID)
|
opFlag, err := s.getGroupUserLevel(req.GroupID, req.OpUserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errMsg := req.OperationID + " getGroupUserLevel failed " + req.GroupID + req.OpUserID + err.Error()
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
log.Error(req.OperationID, errMsg)
|
return
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
|
|
||||||
}
|
}
|
||||||
if opFlag == 0 {
|
if opFlag == 0 {
|
||||||
errMsg := req.OperationID + "opFlag == 0 " + req.GroupID + req.OpUserID
|
// TODO
|
||||||
log.Error(req.OperationID, errMsg)
|
//errMsg := req.OperationID + "opFlag == 0 " + req.GroupID + req.OpUserID
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
|
//log.Error(req.OperationID, errMsg)
|
||||||
|
//return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
|
||||||
|
SetErrorForResp(constant.ErrArgs, resp.CommonResp)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
mutedInfo, err := rocksCache.GetGroupMemberInfoFromCache(req.GroupID, req.UserID)
|
mutedInfo, err := rocksCache.GetGroupMemberInfoFromCache(req.GroupID, req.UserID)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errMsg := req.OperationID + " GetGroupMemberInfoByGroupIDAndUserID failed " + req.GroupID + req.UserID + err.Error()
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
if mutedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 {
|
if mutedInfo.RoleLevel == constant.GroupOwner && opFlag != 1 {
|
||||||
errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupOwner " + req.GroupID + req.UserID
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
if mutedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 {
|
if mutedInfo.RoleLevel == constant.GroupAdmin && opFlag == 3 {
|
||||||
errMsg := req.OperationID + " mutedInfo.RoleLevel == constant.GroupAdmin " + req.GroupID + req.UserID
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrAccess.ErrCode, ErrMsg: errMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil {
|
if err := rocksCache.DelGroupMemberInfoFromCache(req.GroupID, req.UserID); err != nil {
|
||||||
log.NewError(req.OperationID, utils.GetSelfFuncName(), err.Error(), req.GroupID, req.UserID)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: err.Error()}}, nil
|
return
|
||||||
}
|
}
|
||||||
groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.UserID}
|
groupMemberInfo := imdb.GroupMember{GroupID: req.GroupID, UserID: req.UserID}
|
||||||
groupMemberInfo.MuteEndTime = time.Unix(int64(time.Now().Second())+int64(req.MutedSeconds), time.Now().UnixNano())
|
groupMemberInfo.MuteEndTime = time.Unix(int64(time.Now().Second())+int64(req.MutedSeconds), time.Now().UnixNano())
|
||||||
err = imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
err = imdb.UpdateGroupMemberInfo(groupMemberInfo)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Error(req.OperationID, "UpdateGroupMemberInfo failed ", err.Error(), groupMemberInfo)
|
SetErrorForResp(err, resp.CommonResp)
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: constant.ErrDB.ErrCode, ErrMsg: constant.ErrDB.ErrMsg}}, nil
|
return
|
||||||
}
|
}
|
||||||
chat.GroupMemberMutedNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, req.MutedSeconds)
|
chat.GroupMemberMutedNotification(req.OperationID, req.OpUserID, req.GroupID, req.UserID, req.MutedSeconds)
|
||||||
log.NewInfo(req.OperationID, utils.GetSelfFuncName(), "rpc return ", pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""})
|
return
|
||||||
return &pbGroup.MuteGroupMemberResp{CommonResp: &pbGroup.CommonResp{ErrCode: 0, ErrMsg: ""}}, nil
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) {
|
func (s *groupServer) CancelMuteGroupMember(ctx context.Context, req *pbGroup.CancelMuteGroupMemberReq) (*pbGroup.CancelMuteGroupMemberResp, error) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user