Merge branch 'main' into dev

# Conflicts:
#	docs/backstage/IM-Kafka接入方案.md
#	docs/backstage/IM-Kafka接入范围识别.md
#	server/api/admin/imconfiginternal/im_config.go
#	server/api/admin/imuser/im_user.go
#	server/internal/consts/im_kafka.go
#	server/internal/controller/admin/sys/im_user.go
#	server/internal/controller/internalapi/imconfig/im_config.go
#	server/internal/library/imadmin/client.go
#	server/internal/library/imadmin/client_test.go
#	server/internal/library/imadmin/internal.go
#	server/internal/library/imkafka/command.go
#	server/internal/library/imtenant/db.go
#	server/internal/library/imtenant/db_test.go
#	server/internal/library/queue/kafkamq.go
#	server/internal/library/queue/queue.go
#	server/internal/logic/admin/member.go
#	server/internal/logic/sys/im_dead_letter.go
#	server/internal/logic/sys/im_group.go
#	server/internal/logic/sys/im_invite.go
#	server/internal/logic/sys/im_kafka_audit.go
#	server/internal/logic/sys/im_kafka_command.go
#	server/internal/logic/sys/im_tenant.go
#	server/internal/logic/sys/im_user.go
#	server/internal/model/input/sysin/im_group.go
#	server/internal/model/input/sysin/im_invite.go
#	server/internal/model/input/sysin/im_user.go
#	server/internal/queues/im_admin_command_result.go
#	server/internal/queues/im_audit_event.go
#	server/internal/queues/im_dead_letter.go
#	server/internal/service/sys.go
#	server/manifest/config/config.example.yaml
#	server/storage/data/generate/im_group_menu.sql
#	server/storage/data/generate/im_user_menu.sql
#	server/storage/data/im_registration_invite_hotgo.sql
#	web/src/views/im/registrationInvite/BatchViewModal.vue
#	web/src/views/im/registrationInvite/index.vue
#	web/src/views/im/registrationInvite/model.ts
#	web/src/views/imDeadLetter/index.vue
#	web/src/views/imDeadLetter/model.ts
#	web/src/views/imGroup/governance.vue
#	web/src/views/imGroup/members.vue
#	web/src/views/imKafkaAudit/model.ts
#	web/src/views/imKafkaAudit/view.vue
#	web/src/views/imKafkaCommand/index.vue
#	web/src/views/imKafkaCommand/model.ts
#	web/src/views/imKafkaCommand/view.vue
#	web/src/views/imUser/ResetPasswordModal.vue
#	web/src/views/imUser/governance.vue
#	web/src/views/imUser/index.vue
#	web/src/views/imUser/model.ts
#	web/src/views/imUser/view.vue
This commit is contained in:
richjohnrambo
2026-09-13 23:43:51 +08:00
444 changed files with 46212 additions and 2158 deletions
@@ -0,0 +1,32 @@
package imabusereason
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imAbuseReason/list" method:"get" tags:"IM举报原因" summary:"获取IM举报原因列表"`
sysin.ImAbuseReasonListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImAbuseReasonModel `json:"list" dc:"数据列表"`
}
type EditReq struct {
g.Meta `path:"/imAbuseReason/edit" method:"post" tags:"IM举报原因" summary:"新增/编辑IM举报原因"`
sysin.ImAbuseReasonEditInp
}
type EditRes struct{}
type DeleteReq struct {
g.Meta `path:"/imAbuseReason/delete" method:"post" tags:"IM举报原因" summary:"禁用IM举报原因"`
sysin.ImAbuseReasonDeleteInp
}
type DeleteRes struct{}
@@ -0,0 +1,25 @@
package imapprelease
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imAppRelease/list" method:"get" tags:"IM版本更新" summary:"获取IM客户端版本策略列表"`
sysin.ImAppReleaseListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImAppReleaseModel `json:"list" dc:"数据列表"`
}
type EditReq struct {
g.Meta `path:"/imAppRelease/edit" method:"post" tags:"IM版本更新" summary:"新增/编辑IM客户端版本策略"`
sysin.ImAppReleaseEditInp
}
type EditRes struct{}
@@ -22,6 +22,14 @@ type ListRes struct {
List []*sysin.ImAuditLogListModel `json:"list" dc:"数据列表"`
}
// ExportReq 导出IM审计日志列表
type ExportReq struct {
g.Meta `path:"/imAuditLog/export" method:"get" tags:"IM审计日志" summary:"导出IM审计日志列表"`
sysin.ImAuditLogListInp
}
type ExportRes struct{}
// ViewReq 获取IM审计日志指定信息
type ViewReq struct {
g.Meta `path:"/imAuditLog/view" method:"get" tags:"IM审计日志" summary:"获取IM审计日志指定信息"`
@@ -57,3 +57,37 @@ type ThirdPartyReq struct {
type ThirdPartyRes struct {
Values map[string]string `json:"values" dc:"配置值"`
}
type TenantLoginIPWhitelistReq struct {
g.Meta `path:"/internal/im-config/tenants/by-id/{id}/login-ip-whitelist" method:"get" tags:"IM内部配置" summary:"获取租户渠道登录IP白名单"`
Id int64 `json:"id" in:"path" dc:"租户ID"`
}
type TenantLoginIPWhitelistRes struct {
TenantId int64 `json:"tenant_id" dc:"租户ID"`
AppList []string `json:"app_list" dc:"APP登录IP白名单"`
WebList []string `json:"web_list" dc:"Web登录IP白名单"`
}
type AppReleaseLatestReq struct {
g.Meta `path:"/internal/im-config/app/releases/latest" method:"get" tags:"IM内部配置" summary:"获取客户端最新版本策略"`
Platform string `json:"platform" v:"required#平台不能为空" dc:"平台"`
Channel string `json:"channel" dc:"渠道"`
}
type AppReleaseLatestRes struct {
ID int64 `json:"id"`
Platform string `json:"platform"`
Channel string `json:"channel"`
LatestVersion string `json:"latest_version"`
MinSupportedVersion string `json:"min_supported_version"`
UpdateType string `json:"update_type"`
ReleaseNotes string `json:"release_notes"`
StoreURL string `json:"store_url"`
PackageURL string `json:"package_url"`
Checksum string `json:"checksum"`
RemindAfterSeconds int `json:"remind_after_seconds"`
PublishedAt string `json:"published_at"`
CreatedAt string `json:"created_at"`
UpdatedAt string `json:"updated_at"`
}
@@ -0,0 +1,25 @@
package imdashboard
import (
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type OverviewReq struct {
g.Meta `path:"/imDashboard/overview" method:"get" tags:"IM数据概览" summary:"获取IM数据概览"`
sysin.ImDashboardOverviewInp
}
type OverviewRes struct {
*sysin.ImDashboardOverviewModel
}
type TrendsReq struct {
g.Meta `path:"/imDashboard/trends" method:"get" tags:"IM数据概览" summary:"获取IM增长趋势"`
sysin.ImDashboardTrendsInp
}
type TrendsRes struct {
List []*sysin.ImDashboardTrendModel `json:"list" dc:"趋势数据"`
}
@@ -0,0 +1,41 @@
package imexternalconfig
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imExternalConfig/list" method:"get" tags:"IM外部服务配置" summary:"获取IM外部服务配置列表"`
sysin.ImExternalConfigListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImExternalConfigListModel `json:"list" dc:"数据列表"`
}
type ViewReq struct {
g.Meta `path:"/imExternalConfig/view" method:"get" tags:"IM外部服务配置" summary:"获取IM外部服务配置详情"`
sysin.ImExternalConfigViewInp
}
type ViewRes struct {
*sysin.ImExternalConfigViewModel
}
type UpdateReq struct {
g.Meta `path:"/imExternalConfig/update" method:"post" tags:"IM外部服务配置" summary:"更新IM外部服务配置"`
sysin.ImExternalConfigUpdateInp
}
type UpdateRes struct{}
type CheckReq struct {
g.Meta `path:"/imExternalConfig/check" method:"post" tags:"IM外部服务配置" summary:"检查IM外部服务配置"`
sysin.ImExternalConfigCheckInp
}
type CheckRes struct{}
@@ -0,0 +1,23 @@
package imfeedbackconfig
import (
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type GetReq struct {
g.Meta `path:"/imFeedbackConfig/get" method:"get" tags:"IM意见反馈配置" summary:"获取IM意见反馈配置"`
sysin.ImFeedbackConfigGetInp
}
type GetRes struct {
*sysin.ImFeedbackConfigModel
}
type UpdateReq struct {
g.Meta `path:"/imFeedbackConfig/update" method:"post" tags:"IM意见反馈配置" summary:"更新IM意见反馈配置"`
sysin.ImFeedbackConfigUpdateInp
}
type UpdateRes struct{}
+60
View File
@@ -0,0 +1,60 @@
// Package imfile
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2026 HotGo
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package imfile
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
// ListReq 查询IM文件列表
type ListReq struct {
g.Meta `path:"/imFile/list" method:"get" tags:"IM文件治理" summary:"获取IM文件列表"`
sysin.ImFileListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImFileListModel `json:"list" dc:"数据列表"`
}
// ViewReq 获取IM文件详情
type ViewReq struct {
g.Meta `path:"/imFile/view" method:"get" tags:"IM文件治理" summary:"获取IM文件详情"`
sysin.ImFileViewInp
}
type ViewRes struct {
*sysin.ImFileViewModel
}
// QuarantineReq 隔离IM文件
type QuarantineReq struct {
g.Meta `path:"/imFile/quarantine" method:"post" tags:"IM文件治理" summary:"隔离IM文件"`
sysin.ImFileActionInp
}
type QuarantineRes struct{}
// DeleteReq 删除IM文件
type DeleteReq struct {
g.Meta `path:"/imFile/delete" method:"post" tags:"IM文件治理" summary:"删除IM文件"`
sysin.ImFileActionInp
}
type DeleteRes struct{}
// CleanupOrphanReq 清理IM孤儿文件
type CleanupOrphanReq struct {
g.Meta `path:"/imFile/cleanupOrphan" method:"post" tags:"IM文件治理" summary:"清理IM孤儿文件"`
sysin.ImFileCleanupOrphanInp
}
type CleanupOrphanRes struct {
*sysin.ImFileCleanupOrphanModel
}
@@ -0,0 +1,25 @@
package imfilepolicy
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imFilePolicy/list" method:"get" tags:"IM文件策略" summary:"获取IM文件策略列表"`
sysin.ImFilePolicyListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImFilePolicyListModel `json:"list" dc:"数据列表"`
}
type UpdateReq struct {
g.Meta `path:"/imFilePolicy/update" method:"post" tags:"IM文件策略" summary:"更新IM文件策略"`
sysin.ImFilePolicyUpdateInp
}
type UpdateRes struct{}
+155
View File
@@ -54,6 +54,142 @@ type GovernanceRes struct {
*sysin.ImGroupGovernanceModel
}
// GovernanceUpdateReq 更新IM群治理配置
type GovernanceUpdateReq struct {
g.Meta `path:"/imGroup/governanceUpdate" method:"post" tags:"IM群组" summary:"更新IM群治理配置"`
sysin.ImGroupGovernanceUpdateInp
}
type GovernanceUpdateRes struct {
*sysin.ImGroupCommandModel
}
// ProfileUpdateReq 修改IM群资料
type ProfileUpdateReq struct {
g.Meta `path:"/imGroup/profileUpdate" method:"post" tags:"IM群组" summary:"修改IM群资料"`
sysin.ImGroupProfileUpdateInp
}
type ProfileUpdateRes struct {
*sysin.ImGroupCommandModel
}
// DissolveReq 解散IM群
type DissolveReq struct {
g.Meta `path:"/imGroup/dissolve" method:"post" tags:"IM群组" summary:"解散IM群"`
sysin.ImGroupDissolveInp
}
type DissolveRes struct {
*sysin.ImGroupCommandModel
}
// MuteReq 禁言IM群成员
type MuteReq struct {
g.Meta `path:"/imGroup/mute" method:"post" tags:"IM群组" summary:"禁言IM群成员"`
sysin.ImGroupMuteInp
}
type MuteRes struct {
*sysin.ImGroupCommandModel
}
// MemberMuteReq Kafka禁言IM群成员
type MemberMuteReq struct {
g.Meta `path:"/imGroup/memberMute" method:"post" tags:"IM群组" summary:"Kafka禁言IM群成员"`
sysin.ImGroupMuteInp
}
type MemberMuteRes struct {
*sysin.ImGroupCommandModel
}
// UnmuteReq 解除IM群成员禁言
type UnmuteReq struct {
g.Meta `path:"/imGroup/unmute" method:"post" tags:"IM群组" summary:"解除IM群成员禁言"`
sysin.ImGroupUnmuteInp
}
type UnmuteRes struct {
*sysin.ImGroupCommandModel
}
// MemberUnmuteReq Kafka解除IM群成员禁言
type MemberUnmuteReq struct {
g.Meta `path:"/imGroup/memberUnmute" method:"post" tags:"IM群组" summary:"Kafka解除IM群成员禁言"`
sysin.ImGroupUnmuteInp
}
type MemberUnmuteRes struct {
*sysin.ImGroupCommandModel
}
// MemberRemoveReq 移出IM群成员
type MemberRemoveReq struct {
g.Meta `path:"/imGroup/memberRemove" method:"post" tags:"IM群组" summary:"移出IM群成员"`
sysin.ImGroupMemberRemoveInp
}
type MemberRemoveRes struct {
*sysin.ImGroupCommandModel
}
// JoinRequestApproveReq 通过IM入群申请
type JoinRequestApproveReq struct {
g.Meta `path:"/imGroup/joinRequestApprove" method:"post" tags:"IM群组" summary:"通过IM入群申请"`
sysin.ImGroupJoinRequestResolveInp
}
type JoinRequestApproveRes struct{}
// JoinRequestRejectReq 拒绝IM入群申请
type JoinRequestRejectReq struct {
g.Meta `path:"/imGroup/joinRequestReject" method:"post" tags:"IM群组" summary:"拒绝IM入群申请"`
sysin.ImGroupJoinRequestResolveInp
}
type JoinRequestRejectRes struct{}
// RoleUpdateReq 更新IM群成员角色
type RoleUpdateReq struct {
g.Meta `path:"/imGroup/roleUpdate" method:"post" tags:"IM群组" summary:"更新IM群成员角色"`
sysin.ImGroupRoleUpdateInp
}
type RoleUpdateRes struct {
*sysin.ImGroupCommandModel
}
// AdminSetReq 设置IM群管理员
type AdminSetReq struct {
g.Meta `path:"/imGroup/adminSet" method:"post" tags:"IM群组" summary:"设置IM群管理员"`
sysin.ImGroupRoleUpdateInp
}
type AdminSetRes struct {
*sysin.ImGroupCommandModel
}
// AdminRemoveReq 删除IM群管理员
type AdminRemoveReq struct {
g.Meta `path:"/imGroup/adminRemove" method:"post" tags:"IM群组" summary:"删除IM群管理员"`
sysin.ImGroupRoleUpdateInp
}
type AdminRemoveRes struct {
*sysin.ImGroupCommandModel
}
// OwnerTransferReq 转让IM群主
type OwnerTransferReq struct {
g.Meta `path:"/imGroup/ownerTransfer" method:"post" tags:"IM群组" summary:"转让IM群主"`
sysin.ImGroupOwnerTransferInp
}
type OwnerTransferRes struct {
*sysin.ImGroupCommandModel
}
// JoinRequestListReq 查询IM入群申请列表
type JoinRequestListReq struct {
g.Meta `path:"/imGroup/joinRequestList" method:"get" tags:"IM群组" summary:"获取IM入群申请列表"`
@@ -65,6 +201,25 @@ type JoinRequestListRes struct {
List []*sysin.ImGroupJoinRequestListModel `json:"list" dc:"数据列表"`
}
// FileListReq 查询IM群文件列表
type FileListReq struct {
g.Meta `path:"/imGroup/fileList" method:"get" tags:"IM群组" summary:"获取IM群文件列表"`
sysin.ImGroupFileListInp
}
type FileListRes struct {
form.PageRes
List []*sysin.ImGroupFileListModel `json:"list" dc:"数据列表"`
}
// FileDeleteReq 删除IM群文件
type FileDeleteReq struct {
g.Meta `path:"/imGroup/fileDelete" method:"post" tags:"IM群组" summary:"删除IM群文件"`
sysin.ImGroupFileDeleteInp
}
type FileDeleteRes struct{}
// InvitationListReq 查询IM群邀请列表
type InvitationListReq struct {
g.Meta `path:"/imGroup/invitationList" method:"get" tags:"IM群组" summary:"获取IM群邀请列表"`
@@ -0,0 +1,37 @@
package imgroupmessage
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imGroupMessage/list" method:"get" tags:"IM群聊消息" summary:"获取群聊消息列表"`
sysin.ImGroupMessageListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImMessageListModel `json:"list" dc:"数据列表"`
}
type ViewReq struct {
g.Meta `path:"/imGroupMessage/view" method:"get" tags:"IM群聊消息" summary:"获取群聊消息详情"`
sysin.ImMessageViewInp
}
type ViewRes struct{ *sysin.ImMessageViewModel }
type HideReq struct {
g.Meta `path:"/imGroupMessage/hide" method:"post" tags:"IM群聊消息" summary:"隐藏群聊消息"`
sysin.ImMessageActionInp
}
type HideRes struct{ *sysin.ImMessageCommandModel }
type DeleteReq struct {
g.Meta `path:"/imGroupMessage/delete" method:"post" tags:"IM群聊消息" summary:"删除群聊消息"`
sysin.ImMessageActionInp
}
type DeleteRes struct{ *sysin.ImMessageCommandModel }
type ExportReq struct {
g.Meta `path:"/imGroupMessage/export" method:"get" tags:"IM群聊消息" summary:"导出群聊消息"`
sysin.ImGroupMessageListInp
}
type ExportRes struct{}
+7
View File
@@ -51,6 +51,13 @@ type RevokeReq struct {
type RevokeRes struct{}
type BindUserReq struct {
g.Meta `path:"/imInvite/bindUser" method:"post" tags:"IM邀请码" summary:"绑定邀请码用户"`
sysin.ImInviteBindUserInp
}
type BindUserRes struct{}
type BatchRevokeReq struct {
g.Meta `path:"/imInvite/batchRevoke" method:"post" tags:"IM邀请码" summary:"批量撤销IM注册邀请码"`
sysin.ImInviteBatchRevokeInp
@@ -0,0 +1,37 @@
package imloginfailurelog
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imLoginFailureLog/list" method:"get" tags:"IM登录失败日志" summary:"获取登录失败日志"`
sysin.ImLoginFailureLogListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImLoginFailureLogModel `json:"list" dc:"数据列表"`
}
type ViewReq struct {
g.Meta `path:"/imLoginFailureLog/view" method:"get" tags:"IM登录失败日志" summary:"获取登录失败详情"`
sysin.ImLoginFailureViewInp
}
type ViewRes struct{ *sysin.ImLoginFailureLogModel }
type ExportReq struct {
g.Meta `path:"/imLoginFailureLog/export" method:"get" tags:"IM登录失败日志" summary:"导出登录失败日志"`
sysin.ImLoginFailureLogListInp
}
type ExportRes struct{}
type AddBlacklistReq struct {
g.Meta `path:"/imLoginFailureLog/addBlacklist" method:"post" tags:"IM登录失败日志" summary:"将IP加入黑名单"`
sysin.ImLoginFailureAddBlacklistInp
}
type AddBlacklistRes struct{}
type BanUserReq struct {
g.Meta `path:"/imLoginFailureLog/banUser" method:"post" tags:"IM登录失败日志" summary:"封禁关联用户"`
sysin.ImLoginFailureBanUserInp
}
type BanUserRes struct{ *sysin.ImUserCommandModel }
@@ -0,0 +1,23 @@
package immailboxconfig
import (
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type GetReq struct {
g.Meta `path:"/imMailboxConfig/get" method:"get" tags:"IM总经理信箱配置" summary:"获取IM总经理信箱配置"`
sysin.ImMailboxConfigGetInp
}
type GetRes struct {
*sysin.ImMailboxConfigModel
}
type UpdateReq struct {
g.Meta `path:"/imMailboxConfig/update" method:"post" tags:"IM总经理信箱配置" summary:"更新IM总经理信箱配置"`
sysin.ImMailboxConfigUpdateInp
}
type UpdateRes struct{}
@@ -0,0 +1,25 @@
package imnotification
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type TemplateListReq struct {
g.Meta `path:"/imNotification/templateList" method:"get" tags:"IM通知模板" summary:"获取IM通知模板列表"`
sysin.ImNotificationTemplateListInp
}
type TemplateListRes struct {
form.PageRes
List []*sysin.ImNotificationTemplateListModel `json:"list" dc:"数据列表"`
}
type TemplateUpdateReq struct {
g.Meta `path:"/imNotification/templateUpdate" method:"post" tags:"IM通知模板" summary:"更新IM通知模板"`
sysin.ImNotificationTemplateUpdateInp
}
type TemplateUpdateRes struct{}
+79
View File
@@ -0,0 +1,79 @@
package imorg
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type DepartmentListReq struct {
g.Meta `path:"/imOrg/departmentList" method:"get" tags:"IM组织架构" summary:"获取IM组织部门列表"`
sysin.ImOrgDepartmentListInp
}
type DepartmentListRes struct {
form.PageRes
List []*sysin.ImOrgDepartmentModel `json:"list" dc:"数据列表"`
}
type DepartmentExportReq struct {
g.Meta `path:"/imOrg/departmentExport" method:"get" tags:"IM组织架构" summary:"导出IM组织部门列表"`
sysin.ImOrgDepartmentListInp
}
type DepartmentExportRes struct{}
type DepartmentEditReq struct {
g.Meta `path:"/imOrg/departmentEdit" method:"post" tags:"IM组织架构" summary:"新增/编辑IM组织部门"`
sysin.ImOrgDepartmentEditInp
}
type DepartmentEditRes struct{}
type DepartmentDeleteReq struct {
g.Meta `path:"/imOrg/departmentDelete" method:"post" tags:"IM组织架构" summary:"删除IM组织部门"`
sysin.ImOrgDepartmentDeleteInp
}
type DepartmentDeleteRes struct{}
type MemberListReq struct {
g.Meta `path:"/imOrg/memberList" method:"get" tags:"IM组织架构" summary:"获取IM组织成员列表"`
sysin.ImOrgMemberListInp
}
type MemberListRes struct {
form.PageRes
List []*sysin.ImOrgMemberModel `json:"list" dc:"数据列表"`
}
type MemberExportReq struct {
g.Meta `path:"/imOrg/memberExport" method:"get" tags:"IM组织架构" summary:"导出IM组织成员列表"`
sysin.ImOrgMemberListInp
}
type MemberExportRes struct{}
type MemberEditReq struct {
g.Meta `path:"/imOrg/memberEdit" method:"post" tags:"IM组织架构" summary:"新增/编辑IM组织成员"`
sysin.ImOrgMemberEditInp
}
type MemberEditRes struct{}
type MemberDeleteReq struct {
g.Meta `path:"/imOrg/memberDelete" method:"post" tags:"IM组织架构" summary:"删除IM组织成员"`
sysin.ImOrgMemberDeleteInp
}
type MemberDeleteRes struct{}
type SearchReq struct {
g.Meta `path:"/imOrg/search" method:"get" tags:"IM组织架构" summary:"搜索IM组织"`
sysin.ImOrgSearchInp
}
type SearchRes struct {
*sysin.ImOrgSearchModel
}
+46
View File
@@ -0,0 +1,46 @@
// Package imoutbox
// @Link https://github.com/bufanyun/hotgo
// @Copyright Copyright (c) 2026 HotGo
// @Author Ms <133814250@qq.com>
// @License https://github.com/bufanyun/hotgo/blob/master/LICENSE
package imoutbox
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imOutbox/list" method:"get" tags:"IM Outbox" summary:"获取IM Outbox列表"`
sysin.ImOutboxListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImOutboxListModel `json:"list" dc:"数据列表"`
}
type ViewReq struct {
g.Meta `path:"/imOutbox/view" method:"get" tags:"IM Outbox" summary:"获取IM Outbox详情"`
sysin.ImOutboxViewInp
}
type ViewRes struct {
*sysin.ImOutboxViewModel
}
type RetryReq struct {
g.Meta `path:"/imOutbox/retry" method:"post" tags:"IM Outbox" summary:"重试IM Outbox事件"`
sysin.ImOutboxActionInp
}
type RetryRes struct{}
type DeadReq struct {
g.Meta `path:"/imOutbox/dead" method:"post" tags:"IM Outbox" summary:"标记IM Outbox死信"`
sysin.ImOutboxActionInp
}
type DeadRes struct{}
@@ -0,0 +1,37 @@
package imprivatemessage
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imPrivateMessage/list" method:"get" tags:"IM单聊消息" summary:"获取单聊消息列表"`
sysin.ImPrivateMessageListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImMessageListModel `json:"list" dc:"数据列表"`
}
type ViewReq struct {
g.Meta `path:"/imPrivateMessage/view" method:"get" tags:"IM单聊消息" summary:"获取单聊消息详情"`
sysin.ImMessageViewInp
}
type ViewRes struct{ *sysin.ImMessageViewModel }
type HideReq struct {
g.Meta `path:"/imPrivateMessage/hide" method:"post" tags:"IM单聊消息" summary:"隐藏单聊消息"`
sysin.ImMessageActionInp
}
type HideRes struct{ *sysin.ImMessageCommandModel }
type DeleteReq struct {
g.Meta `path:"/imPrivateMessage/delete" method:"post" tags:"IM单聊消息" summary:"删除单聊消息"`
sysin.ImMessageActionInp
}
type DeleteRes struct{ *sysin.ImMessageCommandModel }
type ExportReq struct {
g.Meta `path:"/imPrivateMessage/export" method:"get" tags:"IM单聊消息" summary:"导出单聊消息"`
sysin.ImPrivateMessageListInp
}
type ExportRes struct{}
@@ -0,0 +1,59 @@
package imsecuritypolicy
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imSecurityPolicy/list" method:"get" tags:"IM安全策略" summary:"获取安全策略历史"`
sysin.ImSecurityPolicyListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImSecurityPolicyModel `json:"list"`
}
type ViewReq struct {
g.Meta `path:"/imSecurityPolicy/view" method:"get" tags:"IM安全策略" summary:"获取安全策略详情"`
sysin.ImSecurityPolicyViewInp
}
type ViewRes struct{ *sysin.ImSecurityPolicyModel }
type SaveReq struct {
g.Meta `path:"/imSecurityPolicy/save" method:"post" tags:"IM安全策略" summary:"保存安全策略草稿"`
sysin.ImSecurityPolicySaveInp
}
type SaveRes struct {
Id int64 `json:"id"`
}
type PublishReq struct {
g.Meta `path:"/imSecurityPolicy/publish" method:"post" tags:"IM安全策略" summary:"发布安全策略"`
sysin.ImSecurityPolicyPublishInp
}
type PublishRes struct{}
type RestoreDefaultReq struct {
g.Meta `path:"/imSecurityPolicy/restoreDefault" method:"post" tags:"IM安全策略" summary:"恢复默认安全策略"`
sysin.ImSecurityPolicyRestoreInp
}
type RestoreDefaultRes struct {
Id int64 `json:"id"`
}
type IPRuleListReq struct {
g.Meta `path:"/imSecurityPolicy/ipRuleList" method:"get" tags:"IM安全策略" summary:"获取IP黑白名单"`
sysin.ImSecurityIPRuleListInp
}
type IPRuleListRes struct {
form.PageRes
List []*sysin.ImSecurityIPRuleModel `json:"list"`
}
type IPRuleEditReq struct {
g.Meta `path:"/imSecurityPolicy/ipRuleEdit" method:"post" tags:"IM安全策略" summary:"新增或编辑IP规则"`
sysin.ImSecurityIPRuleEditInp
}
type IPRuleEditRes struct{}
type IPRuleDeleteReq struct {
g.Meta `path:"/imSecurityPolicy/ipRuleDelete" method:"post" tags:"IM安全策略" summary:"删除IP规则"`
sysin.ImSecurityIPRuleDeleteInp
}
type IPRuleDeleteRes struct{}
@@ -0,0 +1,51 @@
package imsensitiveword
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imSensitiveWord/list" method:"get" tags:"IM敏感词" summary:"获取敏感词列表"`
sysin.ImSensitiveWordListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImSensitiveWordListModel `json:"list"`
}
type EditReq struct {
g.Meta `path:"/imSensitiveWord/edit" method:"post" tags:"IM敏感词" summary:"新增或编辑敏感词"`
sysin.ImSensitiveWordEditInp
}
type EditRes struct{}
type DeleteReq struct {
g.Meta `path:"/imSensitiveWord/delete" method:"post" tags:"IM敏感词" summary:"删除敏感词"`
sysin.ImSensitiveWordDeleteInp
}
type DeleteRes struct{}
type StatusReq struct {
g.Meta `path:"/imSensitiveWord/status" method:"post" tags:"IM敏感词" summary:"更新敏感词状态"`
sysin.ImSensitiveWordStatusInp
}
type StatusRes struct{}
type BatchImportReq struct {
g.Meta `path:"/imSensitiveWord/batchImport" method:"post" tags:"IM敏感词" summary:"批量导入敏感词"`
sysin.ImSensitiveWordBatchImportInp
}
type BatchImportRes struct {
*sysin.ImSensitiveWordBatchImportModel
}
type GroupListReq struct {
g.Meta `path:"/imSensitiveWord/groupList" method:"get" tags:"IM敏感词" summary:"获取敏感词分组"`
sysin.ImSensitiveWordGroupListInp
}
type GroupListRes struct {
List []*sysin.ImSensitiveWordGroupModel `json:"list"`
}
type GroupEditReq struct {
g.Meta `path:"/imSensitiveWord/groupEdit" method:"post" tags:"IM敏感词" summary:"新增或编辑敏感词分组"`
sysin.ImSensitiveWordGroupEditInp
}
type GroupEditRes struct{}
@@ -0,0 +1,18 @@
package imtaskdashboard
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imTaskDashboard/list" method:"get" tags:"IM任务看板" summary:"获取IM任务看板列表"`
sysin.ImTaskDashboardListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImTaskDashboardListModel `json:"list" dc:"数据列表"`
}
+32
View File
@@ -48,3 +48,35 @@ type StatusReq struct {
}
type StatusRes struct{}
type UsageReq struct {
g.Meta `path:"/imTenant/usage" method:"get" tags:"IM租户" summary:"获取IM租户用量和健康状态"`
sysin.ImTenantUsageInp
}
type UsageRes struct {
*sysin.ImTenantUsageModel
}
type DeletionCheckReq struct {
g.Meta `path:"/imTenant/deletionCheck" method:"get" tags:"IM租户" summary:"IM租户删除前检查"`
sysin.ImTenantDeletionCheckInp
}
type DeletionCheckRes struct {
*sysin.ImTenantDeletionCheckModel
}
type EnterDeletingReq struct {
g.Meta `path:"/imTenant/enterDeleting" method:"post" tags:"IM租户" summary:"IM租户进入删除流程"`
sysin.ImTenantLifecycleInp
}
type EnterDeletingRes struct{}
type RestoreReq struct {
g.Meta `path:"/imTenant/restore" method:"post" tags:"IM租户" summary:"恢复IM租户"`
sysin.ImTenantLifecycleInp
}
type RestoreRes struct{}
+100 -8
View File
@@ -10,6 +10,7 @@ import (
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/net/ghttp"
)
// ListReq 查询IM用户列表
@@ -23,6 +24,41 @@ type ListRes struct {
List []*sysin.ImUserListModel `json:"list" dc:"数据列表"`
}
type CreateReq struct {
g.Meta `path:"/imUser/create" method:"post" tags:"IM用户" summary:"后台创建IM用户"`
sysin.ImUserCreateInp
}
type CreateRes struct {
*sysin.ImUserCreateModel
}
type BatchCreateReq struct {
g.Meta `path:"/imUser/batchCreate" method:"post" tags:"IM用户" summary:"批量创建IM用户"`
sysin.ImUserBatchCreateInp
}
type BatchCreateRes struct {
*sysin.ImUserBatchCreateModel
}
type ImportReq struct {
g.Meta `path:"/imUser/import" method:"post" tags:"IM用户" summary:"Excel导入IM用户"`
TenantId int64 `json:"tenantId" dc:"租户ID"`
GroupId int64 `json:"groupId" dc:"默认用户策略分组ID"`
File *ghttp.UploadFile `json:"file" type:"file" v:"required#请选择Excel文件" dc:"Excel文件"`
}
type ImportRes struct {
*sysin.ImUserBatchCreateModel
}
type DownloadTemplateReq struct {
g.Meta `path:"/imUser/downloadTemplate" method:"get" tags:"IM用户" summary:"下载IM用户导入模板"`
}
type DownloadTemplateRes struct{}
// ViewReq 获取IM用户指定信息
type ViewReq struct {
g.Meta `path:"/imUser/view" method:"get" tags:"IM用户" summary:"获取IM用户指定信息"`
@@ -33,8 +69,64 @@ type ViewRes struct {
*sysin.ImUserViewModel
}
type ResetPasswordReq struct {
g.Meta `path:"/imUser/resetPassword" method:"post" tags:"IM用户" summary:"重置IM用户密码"`
sysin.ImUserPasswordResetInp
}
type ResetPasswordRes struct {
*sysin.ImUserCommandModel
}
type RevokeSessionsReq struct {
g.Meta `path:"/imUser/revokeSessions" method:"post" tags:"IM用户" summary:"撤销IM用户会话"`
sysin.ImUserRevokeSessionsInp
}
type RevokeSessionsRes struct{}
type StatusReq struct {
g.Meta `path:"/imUser/status" method:"post" tags:"IM用户" summary:"更新IM用户状态"`
sysin.ImUserStatusInp
}
type StatusRes struct{}
type AdjustGroupReq struct {
g.Meta `path:"/imUser/adjustGroup" method:"post" tags:"IM用户" summary:"调整IM用户分组"`
sysin.ImUserAdjustGroupInp
}
type AdjustGroupRes struct{}
type IPWhitelistReq struct {
g.Meta `path:"/imUser/ipWhitelist" method:"get" tags:"IM用户" summary:"获取IM用户IP白名单"`
sysin.ImUserIPWhitelistInp
}
type IPWhitelistRes struct {
*sysin.ImUserIPWhitelistModel
}
type IPWhitelistSaveReq struct {
g.Meta `path:"/imUser/ipWhitelistSave" method:"post" tags:"IM用户" summary:"保存IM用户IP白名单"`
sysin.ImUserIPWhitelistInp
}
type IPWhitelistSaveRes struct{}
type DevicesReq struct {
g.Meta `path:"/imUser/devices" method:"get" tags:"IM用户" summary:"获取IM用户设备列表"`
sysin.ImUserDeviceListInp
}
type DevicesRes struct {
form.PageRes
List []*sysin.ImUserDeviceListModel `json:"list" dc:"设备列表"`
}
type BanReq struct {
g.Meta `path:"/imUser/ban" method:"post" tags:"IM用户管理" summary:"封禁IM用户"`
g.Meta `path:"/imUser/ban" method:"post" tags:"IM用户" summary:"封禁IM用户"`
sysin.ImUserGovernanceInp
}
@@ -43,7 +135,7 @@ type BanRes struct {
}
type UnbanReq struct {
g.Meta `path:"/imUser/unban" method:"post" tags:"IM用户管理" summary:"解封IM用户"`
g.Meta `path:"/imUser/unban" method:"post" tags:"IM用户" summary:"解封IM用户"`
sysin.ImUserGovernanceInp
}
@@ -52,7 +144,7 @@ type UnbanRes struct {
}
type FreezeReq struct {
g.Meta `path:"/imUser/freeze" method:"post" tags:"IM用户管理" summary:"冻结IM用户"`
g.Meta `path:"/imUser/freeze" method:"post" tags:"IM用户" summary:"冻结IM用户"`
sysin.ImUserGovernanceInp
}
@@ -61,7 +153,7 @@ type FreezeRes struct {
}
type UnfreezeReq struct {
g.Meta `path:"/imUser/unfreeze" method:"post" tags:"IM用户管理" summary:"解冻IM用户"`
g.Meta `path:"/imUser/unfreeze" method:"post" tags:"IM用户" summary:"解冻IM用户"`
sysin.ImUserGovernanceInp
}
@@ -70,7 +162,7 @@ type UnfreezeRes struct {
}
type DeviceKickReq struct {
g.Meta `path:"/imUser/deviceKick" method:"post" tags:"IM用户管理" summary:"踢出IM用户设备"`
g.Meta `path:"/imUser/deviceKick" method:"post" tags:"IM用户" summary:"踢出IM用户设备"`
sysin.ImUserGovernanceInp
}
@@ -79,7 +171,7 @@ type DeviceKickRes struct {
}
type LogoutAllReq struct {
g.Meta `path:"/imUser/logoutAll" method:"post" tags:"IM用户管理" summary:"踢出IM用户全部在线会话"`
g.Meta `path:"/imUser/logoutAll" method:"post" tags:"IM用户" summary:"踢出IM用户全部会话"`
sysin.ImUserGovernanceInp
}
@@ -88,7 +180,7 @@ type LogoutAllRes struct {
}
type AccountCancelReq struct {
g.Meta `path:"/imUser/accountCancel" method:"post" tags:"IM用户管理" summary:"注销IM用户账号"`
g.Meta `path:"/imUser/accountCancel" method:"post" tags:"IM用户" summary:"注销IM用户账号"`
sysin.ImUserGovernanceInp
}
@@ -97,7 +189,7 @@ type AccountCancelRes struct {
}
type AccountDeleteReq struct {
g.Meta `path:"/imUser/accountDelete" method:"post" tags:"IM用户管理" summary:"删除IM用户账号"`
g.Meta `path:"/imUser/accountDelete" method:"post" tags:"IM用户" summary:"删除IM用户账号"`
sysin.ImUserGovernanceInp
}
@@ -0,0 +1,22 @@
package imuserloginhistory
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imUserLoginHistory/list" method:"get" tags:"IM用户登录历史" summary:"获取用户登录历史"`
sysin.ImUserLoginHistoryListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImUserLoginHistoryModel `json:"list" dc:"数据列表"`
}
type ExportReq struct {
g.Meta `path:"/imUserLoginHistory/export" method:"get" tags:"IM用户登录历史" summary:"导出用户登录历史"`
sysin.ImUserLoginHistoryListInp
}
type ExportRes struct{}
@@ -0,0 +1,70 @@
package imuserpolicygroup
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imUserPolicyGroup/list" method:"get" tags:"IM用户策略分组" summary:"获取用户策略分组列表"`
sysin.ImUserPolicyGroupListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImUserPolicyGroupListModel `json:"list"`
}
type ViewReq struct {
g.Meta `path:"/imUserPolicyGroup/view" method:"get" tags:"IM用户策略分组" summary:"获取用户策略分组详情"`
sysin.ImUserPolicyGroupViewInp
}
type ViewRes struct {
*sysin.ImUserPolicyGroupViewModel
}
type EditReq struct {
g.Meta `path:"/imUserPolicyGroup/edit" method:"post" tags:"IM用户策略分组" summary:"新增或编辑用户策略分组"`
sysin.ImUserPolicyGroupEditInp
}
type EditRes struct{}
type DeleteReq struct {
g.Meta `path:"/imUserPolicyGroup/delete" method:"post" tags:"IM用户策略分组" summary:"删除用户策略分组"`
sysin.ImUserPolicyGroupDeleteInp
}
type DeleteRes struct{}
type StatusReq struct {
g.Meta `path:"/imUserPolicyGroup/status" method:"post" tags:"IM用户策略分组" summary:"更新用户策略分组状态"`
sysin.ImUserPolicyGroupStatusInp
}
type StatusRes struct{}
type MemberListReq struct {
g.Meta `path:"/imUserPolicyGroup/memberList" method:"get" tags:"IM用户策略分组" summary:"获取策略分组成员"`
sysin.ImUserPolicyGroupMemberListInp
}
type MemberListRes struct {
form.PageRes
List []*sysin.ImUserPolicyGroupMemberModel `json:"list"`
}
type MemberAddReq struct {
g.Meta `path:"/imUserPolicyGroup/memberAdd" method:"post" tags:"IM用户策略分组" summary:"添加策略分组成员"`
sysin.ImUserPolicyGroupMemberAddInp
}
type MemberAddRes struct{}
type MemberRemoveReq struct {
g.Meta `path:"/imUserPolicyGroup/memberRemove" method:"post" tags:"IM用户策略分组" summary:"移除策略分组成员"`
sysin.ImUserPolicyGroupMemberRemoveInp
}
type MemberRemoveRes struct{}
type LoginIPWhitelistReq struct {
g.Meta `path:"/imUserPolicyGroup/loginIPWhitelist" method:"get" tags:"IM用户策略分组" summary:"获取租户登录IP白名单"`
sysin.ImTenantLoginIPWhitelistInp
}
type LoginIPWhitelistRes struct {
*sysin.ImTenantLoginIPWhitelistModel
}
type LoginIPWhitelistSaveReq struct {
g.Meta `path:"/imUserPolicyGroup/loginIPWhitelistSave" method:"post" tags:"IM用户策略分组" summary:"保存租户登录IP白名单"`
sysin.ImTenantLoginIPWhitelistSaveInp
}
type LoginIPWhitelistSaveRes struct{}
@@ -0,0 +1,39 @@
package imworkbench
import (
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"github.com/gogf/gf/v2/frame/g"
)
type ListReq struct {
g.Meta `path:"/imWorkbench/list" method:"get" tags:"IM工作台" summary:"获取IM工作台模块列表"`
sysin.ImWorkbenchAppListInp
}
type ListRes struct {
form.PageRes
List []*sysin.ImWorkbenchAppModel `json:"list" dc:"数据列表"`
}
type EditReq struct {
g.Meta `path:"/imWorkbench/edit" method:"post" tags:"IM工作台" summary:"新增/编辑IM工作台模块"`
sysin.ImWorkbenchAppEditInp
}
type EditRes struct{}
type DeleteReq struct {
g.Meta `path:"/imWorkbench/delete" method:"post" tags:"IM工作台" summary:"禁用IM工作台模块"`
sysin.ImWorkbenchAppDeleteInp
}
type DeleteRes struct{}
type ReorderReq struct {
g.Meta `path:"/imWorkbench/reorder" method:"post" tags:"IM工作台" summary:"调整IM工作台模块排序"`
sysin.ImWorkbenchAppReorderInp
}
type ReorderRes struct{}