diff --git a/internal/api/router.go b/internal/api/router.go index e9fde37ee..bbfed0eba 100644 --- a/internal/api/router.go +++ b/internal/api/router.go @@ -173,6 +173,8 @@ func newGinRouter(ctx context.Context, client discovery.SvcDiscoveryRegistry, co userRouterGroup.POST("/set_group_invite_setting", u.SetGroupInviteSetting) // 设置用户全局阅后即焚时长(秒),0 表示关闭 userRouterGroup.POST("/set_user_msg_burn_duration", u.SetUserMsgBurnDuration) + // 批量查询阅后即焚、手机号可见性、音视频接收、全局/会话消息接收、群邀请等设置 + userRouterGroup.POST("/get_user_privacy_settings", u.GetUserPrivacySettings) // 根据手机号精确查找用户(phoneSearchVisibility=true 时遵守 phone_visibility 设置) userRouterGroup.POST("/get_user_by_phone", u.GetUserByPhone) // 根据昵称精确查询用户(可多结果,与 getPaginationUsers 模糊搜索不同) diff --git a/internal/api/user.go b/internal/api/user.go index aa82589a7..ad4e23fee 100644 --- a/internal/api/user.go +++ b/internal/api/user.go @@ -359,6 +359,10 @@ func (u *UserApi) SetUserMsgBurnDuration(c *gin.Context) { a2r.Call(c, user.UserClient.SetUserMsgBurnDuration, u.Client) } +func (u *UserApi) GetUserPrivacySettings(c *gin.Context) { + a2r.Call(c, user.UserClient.GetUserPrivacySettings, u.Client) +} + func (u *UserApi) GetUserByPhone(c *gin.Context) { a2r.Call(c, user.UserClient.GetUserByPhone, u.Client) } diff --git a/internal/rpc/user/user.go b/internal/rpc/user/user.go index 1cd47121d..bb263e4db 100644 --- a/internal/rpc/user/user.go +++ b/internal/rpc/user/user.go @@ -455,6 +455,29 @@ func (s *userServer) SetUserMsgBurnDuration(ctx context.Context, req *pbuser.Set return &pbuser.SetUserMsgBurnDurationResp{}, nil } +// GetUserPrivacySettings 返回当前登录用户(ctx opUserID)的隐私与接收相关设置。 +func (s *userServer) GetUserPrivacySettings(ctx context.Context, req *pbuser.GetUserPrivacySettingsReq) (*pbuser.GetUserPrivacySettingsResp, error) { + userID := mcontext.GetOpUserID(ctx) + if userID == "" { + return nil, errs.ErrArgs.WrapMsg("opUserID is required") + } + users, err := s.db.FindWithError(ctx, []string{userID}) + if err != nil { + log.ZError(ctx, "GetUserPrivacySettings: user not found or db error", err, + "opUserID", userID) + return nil, err + } + u := users[0] + return &pbuser.GetUserPrivacySettingsResp{ + MsgBurnDuration: u.MsgBurnDuration, + PhoneVisibility: u.PhoneVisibility, + CallAcceptSetting: u.CallAcceptSetting, + GlobalRecvMsgOpt: u.GlobalRecvMsgOpt, + MsgReceiveSetting: u.MsgReceiveSetting, + GroupInviteSetting: u.GroupInviteSetting, + }, nil +} + // GetUserByPhone 根据精确手机号查询用户。 // // phone_visibility 仅控制用户资料中手机号字段是否展示,不影响搜索本身: diff --git a/protocol b/protocol index 49fe436a9..9c1ea89b5 160000 --- a/protocol +++ b/protocol @@ -1 +1 @@ -Subproject commit 49fe436a9a00d4b5a2e86f728cdd34156bed1164 +Subproject commit 9c1ea89b54286e04a376bdd4fa56a96e5b08766f