feat: 完善IM后台Kafka与组织架构管理
This commit is contained in:
@@ -2,12 +2,12 @@ package sys
|
||||
|
||||
import (
|
||||
"context"
|
||||
"hotgo/internal/library/imtenant"
|
||||
"hotgo/internal/model/input/sysin"
|
||||
"hotgo/internal/service"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
)
|
||||
|
||||
type sSysImKafkaAudit struct{}
|
||||
@@ -25,7 +25,8 @@ func (s *sSysImKafkaAudit) List(ctx context.Context, in *sysin.ImKafkaAuditListI
|
||||
return
|
||||
}
|
||||
where, args := buildImKafkaAuditWhere(in)
|
||||
totalValue, err := g.DB().GetValue(ctx, "SELECT COUNT(*) FROM im_audit_events "+where, args...)
|
||||
db := imtenant.RegistryDB()
|
||||
totalValue, err := db.GetValue(ctx, "SELECT COUNT(*) FROM im_audit_events "+where, args...)
|
||||
if err != nil {
|
||||
err = gerror.Wrap(err, "获取IM Kafka审计事件总数失败,请稍后重试!")
|
||||
return
|
||||
@@ -45,7 +46,7 @@ func (s *sSysImKafkaAudit) List(ctx context.Context, in *sysin.ImKafkaAuditListI
|
||||
action,resource,resource_id,result,reason,occurred_at,received_at
|
||||
FROM im_audit_events ` + where + ` ORDER BY id DESC LIMIT ? OFFSET ?`
|
||||
queryArgs := append(append([]any{}, args...), perPage, offset)
|
||||
rows, err := g.DB().GetAll(ctx, query, queryArgs...)
|
||||
rows, err := db.GetAll(ctx, query, queryArgs...)
|
||||
if err != nil {
|
||||
err = gerror.Wrap(err, "获取IM Kafka审计事件列表失败,请稍后重试!")
|
||||
return
|
||||
@@ -126,7 +127,7 @@ func (s *sSysImKafkaAudit) View(ctx context.Context, in *sysin.ImKafkaAuditViewI
|
||||
args = append(args, in.EventId)
|
||||
}
|
||||
query += " LIMIT 1"
|
||||
row, err := g.DB().GetOne(ctx, query, args...)
|
||||
row, err := imtenant.RegistryDB().GetOne(ctx, query, args...)
|
||||
if err != nil {
|
||||
return nil, gerror.Wrap(err, "获取IM Kafka审计事件详情失败,请稍后重试!")
|
||||
}
|
||||
|
||||
@@ -10,12 +10,12 @@ import (
|
||||
"hotgo/internal/consts"
|
||||
"hotgo/internal/library/contexts"
|
||||
"hotgo/internal/library/imkafka"
|
||||
"hotgo/internal/library/imtenant"
|
||||
"hotgo/internal/model/input/sysin"
|
||||
"hotgo/internal/service"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
"github.com/gogf/gf/v2/frame/g"
|
||||
"github.com/gogf/gf/v2/util/gconv"
|
||||
)
|
||||
|
||||
@@ -34,7 +34,8 @@ func (s *sSysImKafkaCommand) List(ctx context.Context, in *sysin.ImKafkaCommandL
|
||||
return
|
||||
}
|
||||
where, args := buildImKafkaCommandWhere(in)
|
||||
totalValue, err := g.DB().GetValue(ctx, "SELECT COUNT(*) FROM im_admin_commands "+where, args...)
|
||||
db := imtenant.RegistryDB()
|
||||
totalValue, err := db.GetValue(ctx, "SELECT COUNT(*) FROM im_admin_commands "+where, args...)
|
||||
if err != nil {
|
||||
err = gerror.Wrap(err, "获取IM后台命令总数失败,请稍后重试!")
|
||||
return
|
||||
@@ -53,7 +54,7 @@ func (s *sSysImKafkaCommand) List(ctx context.Context, in *sysin.ImKafkaCommandL
|
||||
status,reason,message,sent_at,completed_at,created_by,created_at,updated_at
|
||||
FROM im_admin_commands ` + where + ` ORDER BY id DESC LIMIT ? OFFSET ?`
|
||||
queryArgs := append(append([]any{}, args...), perPage, offset)
|
||||
rows, err := g.DB().GetAll(ctx, query, queryArgs...)
|
||||
rows, err := db.GetAll(ctx, query, queryArgs...)
|
||||
if err != nil {
|
||||
err = gerror.Wrap(err, "获取IM后台命令列表失败,请稍后重试!")
|
||||
return
|
||||
@@ -80,7 +81,7 @@ func (s *sSysImKafkaCommand) View(ctx context.Context, in *sysin.ImKafkaCommandV
|
||||
args = append(args, in.CommandId)
|
||||
}
|
||||
query += " LIMIT 1"
|
||||
row, err := g.DB().GetOne(ctx, query, args...)
|
||||
row, err := imtenant.RegistryDB().GetOne(ctx, query, args...)
|
||||
if err != nil {
|
||||
return nil, gerror.Wrap(err, "获取IM后台命令详情失败,请稍后重试!")
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import (
|
||||
"hotgo/internal/service"
|
||||
"hotgo/utility/convert"
|
||||
"hotgo/utility/excel"
|
||||
"net/url"
|
||||
"strings"
|
||||
|
||||
"github.com/gogf/gf/v2/database/gdb"
|
||||
@@ -34,33 +35,28 @@ func (s *sSysImOrg) DepartmentList(ctx context.Context, in *sysin.ImOrgDepartmen
|
||||
if err = in.Filter(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
db, tenant, err := resolveImTenantDB(ctx, in.TenantId)
|
||||
tenant, err := resolveImAdminTenant(ctx, in.TenantId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
mod := s.departmentModel(ctx, db)
|
||||
values := addPageQuery(url.Values{}, in.Page, in.PerPage)
|
||||
if in.DepartmentId != "" {
|
||||
mod = mod.Where("d.department_id", strings.TrimSpace(in.DepartmentId))
|
||||
values.Set("department_id", strings.TrimSpace(in.DepartmentId))
|
||||
}
|
||||
if in.ParentId != "" {
|
||||
mod = mod.Where("d.parent_id", strings.TrimSpace(in.ParentId))
|
||||
values.Set("parent_id", strings.TrimSpace(in.ParentId))
|
||||
}
|
||||
if in.Name != "" {
|
||||
mod = mod.WhereLike("d.name", "%"+strings.TrimSpace(in.Name)+"%")
|
||||
values.Set("name", strings.TrimSpace(in.Name))
|
||||
}
|
||||
if in.State != "" {
|
||||
mod = mod.Where("d.state", strings.TrimSpace(in.State))
|
||||
values.Set("state", strings.TrimSpace(in.State))
|
||||
}
|
||||
mod = mod.Page(in.Page, in.PerPage).OrderAsc("d.sort_order").OrderAsc("d.id")
|
||||
if err = mod.ScanAndCount(&list, &totalCount, false); err != nil {
|
||||
err = gerror.Wrap(err, "获取IM组织部门失败,请稍后重试!")
|
||||
return
|
||||
}
|
||||
for _, item := range list {
|
||||
item.TenantId = tenant.Id
|
||||
item.TenantName = tenant.Name
|
||||
}
|
||||
return
|
||||
return imAdminQueryList[sysin.ImOrgDepartmentModel](ctx, tenant,
|
||||
"/internal/admin-query/tenants/"+url.PathEscape(tenant.Code)+"/org/departments",
|
||||
values,
|
||||
nil,
|
||||
)
|
||||
}
|
||||
|
||||
func (s *sSysImOrg) DepartmentExport(ctx context.Context, in *sysin.ImOrgDepartmentListInp) (err error) {
|
||||
@@ -195,34 +191,28 @@ func (s *sSysImOrg) MemberList(ctx context.Context, in *sysin.ImOrgMemberListInp
|
||||
if err = in.Filter(ctx); err != nil {
|
||||
return
|
||||
}
|
||||
db, tenant, err := resolveImTenantDB(ctx, in.TenantId)
|
||||
tenant, err := resolveImAdminTenant(ctx, in.TenantId)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
mod := s.memberModel(ctx, db)
|
||||
values := addPageQuery(url.Values{}, in.Page, in.PerPage)
|
||||
if in.DepartmentId != "" {
|
||||
mod = mod.Where("m.department_id", strings.TrimSpace(in.DepartmentId))
|
||||
values.Set("department_id", strings.TrimSpace(in.DepartmentId))
|
||||
}
|
||||
if in.UserId > 0 {
|
||||
mod = mod.Where("m.user_id", in.UserId)
|
||||
values.Set("user_id", int64ToString(in.UserId))
|
||||
}
|
||||
if in.EmploymentState != "" {
|
||||
mod = mod.Where("m.employment_state", strings.TrimSpace(in.EmploymentState))
|
||||
values.Set("employment_state", strings.TrimSpace(in.EmploymentState))
|
||||
}
|
||||
if q := strings.TrimSpace(in.Query); q != "" {
|
||||
like := "%" + q + "%"
|
||||
mod = mod.Where("(m.display_name LIKE ? OR m.mobile LIKE ? OR m.email LIKE ? OR CAST(m.user_id AS CHAR) LIKE ?)", like, like, like, like)
|
||||
if in.Query != "" {
|
||||
values.Set("q", strings.TrimSpace(in.Query))
|
||||
}
|
||||
mod = mod.Page(in.Page, in.PerPage).OrderAsc("m.sort_order").OrderAsc("m.id")
|
||||
if err = mod.ScanAndCount(&list, &totalCount, false); err != nil {
|
||||
err = gerror.Wrap(err, "获取IM组织成员失败,请稍后重试!")
|
||||
return
|
||||
}
|
||||
for _, item := range list {
|
||||
item.TenantId = tenant.Id
|
||||
item.TenantName = tenant.Name
|
||||
}
|
||||
return
|
||||
return imAdminQueryList[sysin.ImOrgMemberModel](ctx, tenant,
|
||||
"/internal/admin-query/tenants/"+url.PathEscape(tenant.Code)+"/org/members",
|
||||
values,
|
||||
nil,
|
||||
)
|
||||
}
|
||||
|
||||
func (s *sSysImOrg) MemberExport(ctx context.Context, in *sysin.ImOrgMemberListInp) (err error) {
|
||||
|
||||
Reference in New Issue
Block a user