diff --git a/Dockerfile b/Dockerfile index 59d4088..9317759 100644 --- a/Dockerfile +++ b/Dockerfile @@ -37,11 +37,11 @@ RUN apk add --no-cache ca-certificates gettext bash tzdata WORKDIR /app ENV QUEUE_DRIVER=kafka -ENV KAFKA_ADDRESS=64.118.137.182:9094 +ENV KAFKA_ADDRESS=kafka.118im.com:30835 ENV KAFKA_VERSION=2.4.0 -ENV KAFKA_USERNAME=kafka-external -ENV KAFKA_PASSWORD=gr58tNnlZOVGW3AmMbL2 -ENV KAFKA_SASL_MECHANISM=SCRAM-SHA-512 +ENV KAFKA_USERNAME= +ENV KAFKA_PASSWORD= +ENV KAFKA_SASL_MECHANISM= ENV IM_ADMIN_API_BASE_URL=http://im-server:6060 ENV IM_ADMIN_API_SERVICE_ID=hotgo-admin ENV IM_ADMIN_API_SECRET=8569f5626a54950539eece9f731c9e3bf073daa74af8d23735d19afacac40f4b diff --git a/server/api/admin/imgroup/im_group.go b/server/api/admin/imgroup/im_group.go index 4f9a7d0..0f1b788 100644 --- a/server/api/admin/imgroup/im_group.go +++ b/server/api/admin/imgroup/im_group.go @@ -263,83 +263,3 @@ type AdminLogListRes struct { form.PageRes List []*sysin.ImGroupAdminLogListModel `json:"list" dc:"数据列表"` } - -// ProfileUpdateReq 通过Kafka修改IM群资料 -type ProfileUpdateReq struct { - g.Meta `path:"/imGroup/profileUpdate" method:"post" tags:"IM群组" summary:"Kafka修改IM群资料"` - sysin.ImGroupProfileUpdateInp -} - -type ProfileUpdateRes struct { - *sysin.ImGroupCommandModel -} - -// GovernanceUpdateReq 通过Kafka修改IM群治理配置 -type GovernanceUpdateReq struct { - g.Meta `path:"/imGroup/governanceUpdate" method:"post" tags:"IM群组" summary:"Kafka修改IM群治理配置"` - sysin.ImGroupGovernanceUpdateInp -} - -type GovernanceUpdateRes struct { - *sysin.ImGroupCommandModel -} - -// AdminSetReq 通过Kafka设置IM群管理员 -type AdminSetReq struct { - g.Meta `path:"/imGroup/adminSet" method:"post" tags:"IM群组" summary:"Kafka设置IM群管理员"` - sysin.ImGroupAdminSetInp -} - -type AdminSetRes struct { - *sysin.ImGroupCommandModel -} - -// AdminRemoveReq 通过Kafka删除IM群管理员 -type AdminRemoveReq struct { - g.Meta `path:"/imGroup/adminRemove" method:"post" tags:"IM群组" summary:"Kafka删除IM群管理员"` - sysin.ImGroupAdminRemoveInp -} - -type AdminRemoveRes struct { - *sysin.ImGroupCommandModel -} - -// MemberMuteReq 通过Kafka禁言IM群成员 -type MemberMuteReq struct { - g.Meta `path:"/imGroup/memberMute" method:"post" tags:"IM群组" summary:"Kafka禁言IM群成员"` - sysin.ImGroupMemberMuteInp -} - -type MemberMuteRes struct { - *sysin.ImGroupCommandModel -} - -// MemberUnmuteReq 通过Kafka解除IM群成员禁言 -type MemberUnmuteReq struct { - g.Meta `path:"/imGroup/memberUnmute" method:"post" tags:"IM群组" summary:"Kafka解除IM群成员禁言"` - sysin.ImGroupMemberUnmuteInp -} - -type MemberUnmuteRes struct { - *sysin.ImGroupCommandModel -} - -// MemberRemoveReq 通过Kafka移出IM群成员 -type MemberRemoveReq struct { - g.Meta `path:"/imGroup/memberRemove" method:"post" tags:"IM群组" summary:"Kafka移出IM群成员"` - sysin.ImGroupMemberRemoveInp -} - -type MemberRemoveRes struct { - *sysin.ImGroupCommandModel -} - -// OwnerTransferReq 通过Kafka转让IM群主 -type OwnerTransferReq struct { - g.Meta `path:"/imGroup/ownerTransfer" method:"post" tags:"IM群组" summary:"Kafka转让IM群主"` - sysin.ImGroupOwnerTransferInp -} - -type OwnerTransferRes struct { - *sysin.ImGroupCommandModel -} diff --git a/server/internal/controller/admin/sys/im_group.go b/server/internal/controller/admin/sys/im_group.go index 08ec085..09d4e1c 100644 --- a/server/internal/controller/admin/sys/im_group.go +++ b/server/internal/controller/admin/sys/im_group.go @@ -314,91 +314,3 @@ func (c *cImGroup) AdminLogList(ctx context.Context, req *imgroup.AdminLogListRe res.PageRes.Pack(req, totalCount) return } - -// ProfileUpdate 通过Kafka修改IM群资料 -func (c *cImGroup) ProfileUpdate(ctx context.Context, req *imgroup.ProfileUpdateReq) (res *imgroup.ProfileUpdateRes, err error) { - data, err := service.SysImGroup().ProfileUpdate(ctx, &req.ImGroupProfileUpdateInp) - if err != nil { - return - } - res = new(imgroup.ProfileUpdateRes) - res.ImGroupCommandModel = data - return -} - -// GovernanceUpdate 通过Kafka修改IM群治理配置 -func (c *cImGroup) GovernanceUpdate(ctx context.Context, req *imgroup.GovernanceUpdateReq) (res *imgroup.GovernanceUpdateRes, err error) { - data, err := service.SysImGroup().GovernanceUpdate(ctx, &req.ImGroupGovernanceUpdateInp) - if err != nil { - return - } - res = new(imgroup.GovernanceUpdateRes) - res.ImGroupCommandModel = data - return -} - -// AdminSet 通过Kafka设置IM群管理员 -func (c *cImGroup) AdminSet(ctx context.Context, req *imgroup.AdminSetReq) (res *imgroup.AdminSetRes, err error) { - data, err := service.SysImGroup().AdminSet(ctx, &req.ImGroupAdminSetInp) - if err != nil { - return - } - res = new(imgroup.AdminSetRes) - res.ImGroupCommandModel = data - return -} - -// AdminRemove 通过Kafka删除IM群管理员 -func (c *cImGroup) AdminRemove(ctx context.Context, req *imgroup.AdminRemoveReq) (res *imgroup.AdminRemoveRes, err error) { - data, err := service.SysImGroup().AdminRemove(ctx, &req.ImGroupAdminRemoveInp) - if err != nil { - return - } - res = new(imgroup.AdminRemoveRes) - res.ImGroupCommandModel = data - return -} - -// MemberMute 通过Kafka禁言IM群成员 -func (c *cImGroup) MemberMute(ctx context.Context, req *imgroup.MemberMuteReq) (res *imgroup.MemberMuteRes, err error) { - data, err := service.SysImGroup().MemberMute(ctx, &req.ImGroupMemberMuteInp) - if err != nil { - return - } - res = new(imgroup.MemberMuteRes) - res.ImGroupCommandModel = data - return -} - -// MemberUnmute 通过Kafka解除IM群成员禁言 -func (c *cImGroup) MemberUnmute(ctx context.Context, req *imgroup.MemberUnmuteReq) (res *imgroup.MemberUnmuteRes, err error) { - data, err := service.SysImGroup().MemberUnmute(ctx, &req.ImGroupMemberUnmuteInp) - if err != nil { - return - } - res = new(imgroup.MemberUnmuteRes) - res.ImGroupCommandModel = data - return -} - -// MemberRemove 通过Kafka移出IM群成员 -func (c *cImGroup) MemberRemove(ctx context.Context, req *imgroup.MemberRemoveReq) (res *imgroup.MemberRemoveRes, err error) { - data, err := service.SysImGroup().MemberRemove(ctx, &req.ImGroupMemberRemoveInp) - if err != nil { - return - } - res = new(imgroup.MemberRemoveRes) - res.ImGroupCommandModel = data - return -} - -// OwnerTransfer 通过Kafka转让IM群主 -func (c *cImGroup) OwnerTransfer(ctx context.Context, req *imgroup.OwnerTransferReq) (res *imgroup.OwnerTransferRes, err error) { - data, err := service.SysImGroup().OwnerTransfer(ctx, &req.ImGroupOwnerTransferInp) - if err != nil { - return - } - res = new(imgroup.OwnerTransferRes) - res.ImGroupCommandModel = data - return -} diff --git a/server/internal/logic/sys/im_admin_scope.go b/server/internal/logic/sys/im_admin_scope.go index 99ef3f0..8022642 100644 --- a/server/internal/logic/sys/im_admin_scope.go +++ b/server/internal/logic/sys/im_admin_scope.go @@ -5,7 +5,6 @@ import ( "hotgo/internal/consts" "hotgo/internal/dao" "hotgo/internal/library/contexts" - "hotgo/internal/library/imadmin" "hotgo/internal/library/imtenant" "hotgo/internal/model/entity" "hotgo/internal/service" @@ -20,17 +19,31 @@ import ( "github.com/gogf/gf/v2/os/gtime" ) +type imAdminScope struct { + TenantId int64 + OperatorId int64 + RoleKey string + RequestId string +} + const ( imAdminOperationAuditTable = "im_admin_operation_audit" ) -func resolveImAdminScope(ctx context.Context, selectedTenantId int64) (scope imadmin.AdminScope, err error) { +func resolveImAdminScope(ctx context.Context, selectedTenantId int64) (scope imAdminScope, err error) { + return resolveImAdminScopeWithAll(ctx, selectedTenantId, false) +} + +func resolveImAdminScopeWithAll(ctx context.Context, selectedTenantId int64, allowAll bool) (scope imAdminScope, err error) { operatorId := contexts.GetUserId(ctx) scope.OperatorId = operatorId scope.RoleKey = contexts.GetRoleKey(ctx) scope.RequestId = gctx.CtxId(ctx) if isImPlatformAdmin(ctx, operatorId) { if selectedTenantId <= 0 { + if allowAll { + return scope, nil + } return scope, gerror.New("请选择IM租户") } if err = ensureImTenantActive(ctx, selectedTenantId); err != nil { @@ -71,7 +84,7 @@ func resolveImAdminBoundTenant(ctx context.Context) (int64, error) { func ensureImTenantActive(ctx context.Context, tenantId int64) (err error) { var tenant *entity.ImTenant - if err = imtenant.RegistryDB(ctx).Model(dao.ImTenant.Table()).Safe().Ctx(ctx).WherePri(tenantId).Scan(&tenant); err != nil { + if err = imtenant.RegistryDB().Model(dao.ImTenant.Table()).Safe().Ctx(ctx).WherePri(tenantId).Scan(&tenant); err != nil { return gerror.Wrap(err, "获取IM租户失败") } if tenant == nil || tenant.Id <= 0 { diff --git a/server/manifest/docker/Dockerfile b/server/manifest/docker/Dockerfile index 4ce87d8..38da410 100644 --- a/server/manifest/docker/Dockerfile +++ b/server/manifest/docker/Dockerfile @@ -6,11 +6,11 @@ FROM loads/alpine:3.8 ENV WORKDIR /app ENV QUEUE_DRIVER kafka -ENV KAFKA_ADDRESS 64.118.137.182:9094 +ENV KAFKA_ADDRESS kafka.118im.com:30835 ENV KAFKA_VERSION 2.4.0 -ENV KAFKA_USERNAME kafka-external -ENV KAFKA_PASSWORD gr58tNnlZOVGW3AmMbL2 -ENV KAFKA_SASL_MECHANISM SCRAM-SHA-512 +ENV KAFKA_USERNAME= +ENV KAFKA_PASSWORD= +ENV KAFKA_SASL_MECHANISM= ADD hack $WORKDIR/hack/ ADD manifest/config $WORKDIR/manifest/config/ ADD resource $WORKDIR/resource/