feat: add IM file policy and org exports

This commit is contained in:
richjohnrambo
2026-08-21 23:07:06 +08:00
parent 204f96e07a
commit 5c3f6ae58d
19 changed files with 912 additions and 3 deletions
+47
View File
@@ -2,16 +2,21 @@ package sys
import (
"context"
"fmt"
"hotgo/internal/consts"
"hotgo/internal/model/input/form"
"hotgo/internal/model/input/sysin"
"hotgo/internal/service"
"hotgo/utility/convert"
"hotgo/utility/excel"
"strings"
"github.com/gogf/gf/v2/database/gdb"
"github.com/gogf/gf/v2/errors/gerror"
"github.com/gogf/gf/v2/frame/g"
"github.com/gogf/gf/v2/os/gctx"
"github.com/gogf/gf/v2/os/gtime"
"github.com/gogf/gf/v2/util/gconv"
"github.com/gogf/gf/v2/util/guid"
)
@@ -58,6 +63,27 @@ func (s *sSysImOrg) DepartmentList(ctx context.Context, in *sysin.ImOrgDepartmen
return
}
func (s *sSysImOrg) DepartmentExport(ctx context.Context, in *sysin.ImOrgDepartmentListInp) (err error) {
list, totalCount, err := s.DepartmentList(ctx, in)
if err != nil {
return
}
tags, err := convert.GetEntityDescTags(sysin.ImOrgDepartmentExportModel{})
if err != nil {
return
}
var exports []sysin.ImOrgDepartmentExportModel
if err = gconv.Scan(list, &exports); err != nil {
return
}
fileName := "导出IM组织部门-" + gctx.CtxId(ctx)
sheetName := fmt.Sprintf("索引条件共%v行,共%v页,当前导出是第%v页,本页共%v行", totalCount, form.CalPageCount(totalCount, in.PerPage), in.Page, len(list))
if len(list) > 0 {
_ = writeImAdminAudit(ctx, list[0].TenantId, "im_org_department_export", "im_org_department", 0, "success", g.Map{"count": len(list)})
}
return excel.ExportByStructs(ctx, tags, exports, fileName, sheetName)
}
func (s *sSysImOrg) DepartmentEdit(ctx context.Context, in *sysin.ImOrgDepartmentEditInp) (err error) {
if err = in.Filter(ctx); err != nil {
return
@@ -199,6 +225,27 @@ func (s *sSysImOrg) MemberList(ctx context.Context, in *sysin.ImOrgMemberListInp
return
}
func (s *sSysImOrg) MemberExport(ctx context.Context, in *sysin.ImOrgMemberListInp) (err error) {
list, totalCount, err := s.MemberList(ctx, in)
if err != nil {
return
}
tags, err := convert.GetEntityDescTags(sysin.ImOrgMemberExportModel{})
if err != nil {
return
}
var exports []sysin.ImOrgMemberExportModel
if err = gconv.Scan(list, &exports); err != nil {
return
}
fileName := "导出IM组织成员-" + gctx.CtxId(ctx)
sheetName := fmt.Sprintf("索引条件共%v行,共%v页,当前导出是第%v页,本页共%v行", totalCount, form.CalPageCount(totalCount, in.PerPage), in.Page, len(list))
if len(list) > 0 {
_ = writeImAdminAudit(ctx, list[0].TenantId, "im_org_member_export", "im_org_member", 0, "success", g.Map{"count": len(list), "department_id": in.DepartmentId})
}
return excel.ExportByStructs(ctx, tags, exports, fileName, sheetName)
}
func (s *sSysImOrg) MemberEdit(ctx context.Context, in *sysin.ImOrgMemberEditInp) (err error) {
if err = in.Filter(ctx); err != nil {
return