132 lines
3.9 KiB
Go
132 lines
3.9 KiB
Go
package sys
|
|
|
|
import (
|
|
"context"
|
|
"hotgo/internal/library/imworkbench"
|
|
"hotgo/internal/model/input/sysin"
|
|
"hotgo/internal/service"
|
|
"net/url"
|
|
|
|
"github.com/gogf/gf/v2/errors/gerror"
|
|
"github.com/gogf/gf/v2/frame/g"
|
|
)
|
|
|
|
type sSysImWorkbench struct{}
|
|
|
|
func NewSysImWorkbench() *sSysImWorkbench { return &sSysImWorkbench{} }
|
|
|
|
func init() {
|
|
service.RegisterSysImWorkbench(NewSysImWorkbench())
|
|
}
|
|
|
|
func (s *sSysImWorkbench) List(ctx context.Context, in *sysin.ImWorkbenchAppListInp) (list []*sysin.ImWorkbenchAppModel, totalCount int, err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return
|
|
}
|
|
tenant, err := resolveImAdminTenant(ctx, in.TenantId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
values := url.Values{}
|
|
values.Set("page", intToString(in.Page))
|
|
values.Set("per_page", intToString(in.PerPage))
|
|
if in.Code != "" {
|
|
values.Set("code", in.Code)
|
|
}
|
|
if in.Name != "" {
|
|
values.Set("name", in.Name)
|
|
}
|
|
if in.Enabled != nil {
|
|
values.Set("enabled", intToString(*in.Enabled))
|
|
}
|
|
var page imworkbench.Page[sysin.ImWorkbenchAppModel]
|
|
if err = imworkbench.DefaultClient(ctx).GetForTenant(ctx, "/internal/admin/workbench/apps", values, tenant.Id, tenant.Code, &page); err != nil {
|
|
return nil, 0, err
|
|
}
|
|
list = make([]*sysin.ImWorkbenchAppModel, 0, len(page.Items))
|
|
for i := range page.Items {
|
|
item := page.Items[i]
|
|
item.TenantId = tenant.Id
|
|
item.TenantName = tenant.Name
|
|
list = append(list, &item)
|
|
}
|
|
return list, page.Total, nil
|
|
}
|
|
|
|
func (s *sSysImWorkbench) Edit(ctx context.Context, in *sysin.ImWorkbenchAppEditInp) (err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return
|
|
}
|
|
tenant, err := resolveImAdminTenant(ctx, in.TenantId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
data := g.Map{
|
|
"id": in.Id,
|
|
"code": in.Code,
|
|
"name": in.Name,
|
|
"icon_file_id": in.IconFileId,
|
|
"route": in.Route,
|
|
"sort_order": in.SortOrder,
|
|
"unread_key": in.UnreadKey,
|
|
"enabled": in.Enabled,
|
|
"permission": in.Permission,
|
|
}
|
|
action := "im_workbench_app_create"
|
|
targetId := in.Id
|
|
if in.Id > 0 {
|
|
action = "im_workbench_app_update"
|
|
}
|
|
var res sysin.ImWorkbenchAppModel
|
|
if err = imworkbench.DefaultClient(ctx).PostForTenant(ctx, "/internal/admin/workbench/apps", data, tenant.Id, tenant.Code, &res); err != nil {
|
|
return err
|
|
}
|
|
if targetId <= 0 {
|
|
targetId = res.Id
|
|
}
|
|
_ = writeImAdminAudit(ctx, tenant.Id, action, "im_workbench_app", targetId, "success", g.Map{
|
|
"code": in.Code, "route": in.Route, "enabled": in.Enabled, "permission": in.Permission,
|
|
})
|
|
return nil
|
|
}
|
|
|
|
func (s *sSysImWorkbench) Delete(ctx context.Context, in *sysin.ImWorkbenchAppDeleteInp) (err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return
|
|
}
|
|
tenant, err := resolveImAdminTenant(ctx, in.TenantId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
if err = imworkbench.DefaultClient(ctx).PostForTenant(ctx, "/internal/admin/workbench/apps/disable", g.Map{"id": in.Id, "code": in.Code}, tenant.Id, tenant.Code, nil); err != nil {
|
|
return err
|
|
}
|
|
_ = writeImAdminAudit(ctx, tenant.Id, "im_workbench_app_disable", "im_workbench_app", in.Id, "success", g.Map{"code": in.Code})
|
|
return nil
|
|
}
|
|
|
|
func (s *sSysImWorkbench) Reorder(ctx context.Context, in *sysin.ImWorkbenchAppReorderInp) (err error) {
|
|
if err = in.Filter(ctx); err != nil {
|
|
return
|
|
}
|
|
tenant, err := resolveImAdminTenant(ctx, in.TenantId)
|
|
if err != nil {
|
|
return
|
|
}
|
|
items := make([]g.Map, 0, len(in.Items))
|
|
for _, item := range in.Items {
|
|
items = append(items, g.Map{
|
|
"code": item.Code,
|
|
"sort_order": item.SortOrder,
|
|
})
|
|
}
|
|
if err = imworkbench.DefaultClient(ctx).PostForTenant(ctx, "/internal/admin/workbench/apps/reorder", g.Map{"items": items}, tenant.Id, tenant.Code, nil); err != nil {
|
|
if err.Error() == "" {
|
|
return gerror.New("调整IM工作台模块排序失败,请稍后重试!")
|
|
}
|
|
return err
|
|
}
|
|
_ = writeImAdminAudit(ctx, tenant.Id, "im_workbench_app_reorder", "im_workbench_app", 0, "success", g.Map{"count": len(in.Items)})
|
|
return nil
|
|
}
|