feat: add IM governance admin enhancements

This commit is contained in:
richjohnrambo
2026-08-21 16:06:29 +08:00
parent 543c7b624e
commit 21a5b97ac8
34 changed files with 2621 additions and 135 deletions
+86 -12
View File
@@ -26,9 +26,6 @@ type ImGroupListInp struct {
}
func (in *ImGroupListInp) Filter(ctx context.Context) (err error) {
if in.TenantId <= 0 {
return gerror.New("请选择租户")
}
return
}
@@ -72,9 +69,6 @@ type ImGroupViewInp struct {
}
func (in *ImGroupViewInp) Filter(ctx context.Context) (err error) {
if in.TenantId <= 0 {
return gerror.New("请选择租户")
}
if in.Topic == "" {
return gerror.New("Topic不能为空")
}
@@ -98,9 +92,6 @@ type ImGroupMemberListInp struct {
}
func (in *ImGroupMemberListInp) Filter(ctx context.Context) (err error) {
if in.TenantId <= 0 {
return gerror.New("请选择租户")
}
if in.Topic == "" {
return gerror.New("Topic不能为空")
}
@@ -140,9 +131,6 @@ type ImGroupTopicInp struct {
}
func (in *ImGroupTopicInp) Filter(ctx context.Context) (err error) {
if in.TenantId <= 0 {
return gerror.New("请选择租户")
}
if in.Topic == "" {
return gerror.New("Topic不能为空")
}
@@ -174,6 +162,92 @@ type ImGroupGovernanceModel struct {
UpdatedAt *gtime.Time `json:"updatedAt" dc:"修改时间"`
}
type ImGroupGovernanceUpdateInp struct {
ImGroupTopicInp
JoinApproval int `json:"joinApproval" dc:"入群审批"`
MuteAll int `json:"muteAll" dc:"全员禁言"`
MemberUploadFiles int `json:"memberUploadFiles" dc:"成员上传文件"`
MemberPrivateChat int `json:"memberPrivateChat" dc:"成员私聊"`
MemberInvite int `json:"memberInvite" dc:"成员邀请"`
MaxMemberCount int `json:"maxMemberCount" dc:"最大成员数"`
MaxAdminCount int `json:"maxAdminCount" dc:"最大管理员数"`
}
func (in *ImGroupGovernanceUpdateInp) Filter(ctx context.Context) (err error) {
if err = in.ImGroupTopicInp.Filter(ctx); err != nil {
return
}
if in.JoinApproval != 0 && in.JoinApproval != 1 {
return gerror.New("入群审批值不正确")
}
if in.MuteAll != 0 && in.MuteAll != 1 {
return gerror.New("全员禁言值不正确")
}
if in.MemberUploadFiles != 0 && in.MemberUploadFiles != 1 {
return gerror.New("成员上传文件值不正确")
}
if in.MemberPrivateChat != 0 && in.MemberPrivateChat != 1 {
return gerror.New("成员私聊值不正确")
}
if in.MemberInvite != 0 && in.MemberInvite != 1 {
return gerror.New("成员邀请值不正确")
}
if in.MaxMemberCount < 0 || in.MaxAdminCount < 0 {
return gerror.New("人数上限不能小于0")
}
return
}
type ImGroupDissolveInp struct {
ImGroupTopicInp
Reason string `json:"reason" dc:"解散原因"`
}
func (in *ImGroupDissolveInp) Filter(ctx context.Context) (err error) {
if err = in.ImGroupTopicInp.Filter(ctx); err != nil {
return
}
if len([]rune(in.Reason)) > 200 {
return gerror.New("解散原因不能超过200个字符")
}
return
}
type ImGroupMuteInp struct {
ImGroupTopicInp
UserId int64 `json:"userId" v:"required#用户ID不能为空" dc:"用户ID"`
ExpiresAt *gtime.Time `json:"expiresAt" dc:"过期时间"`
Reason string `json:"reason" dc:"禁言原因"`
}
func (in *ImGroupMuteInp) Filter(ctx context.Context) (err error) {
if err = in.ImGroupTopicInp.Filter(ctx); err != nil {
return
}
if in.UserId <= 0 {
return gerror.New("用户ID不能为空")
}
if len([]rune(in.Reason)) > 200 {
return gerror.New("禁言原因不能超过200个字符")
}
return
}
type ImGroupUnmuteInp struct {
ImGroupTopicInp
UserId int64 `json:"userId" v:"required#用户ID不能为空" dc:"用户ID"`
}
func (in *ImGroupUnmuteInp) Filter(ctx context.Context) (err error) {
if err = in.ImGroupTopicInp.Filter(ctx); err != nil {
return
}
if in.UserId <= 0 {
return gerror.New("用户ID不能为空")
}
return
}
type ImGroupJoinRequestListInp struct {
form.PageReq
ImGroupTopicInp