sync: 同步 v1.0.4 并脱敏配置与镜像
This commit is contained in:
@@ -0,0 +1,169 @@
|
||||
package agent
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"strings"
|
||||
|
||||
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/library/exportcenter"
|
||||
"git.5iot.com/iotlcm-public/iotlcm-admin-svr/internal/model"
|
||||
|
||||
"github.com/gogf/gf/v2/errors/gerror"
|
||||
)
|
||||
|
||||
// agentExportColumns 只允许列表字段,列标题和映射由服务端确定。
|
||||
func agentExportColumns(raw string, defaults []model.ExportColumn) ([]model.ExportColumn, error) {
|
||||
if strings.TrimSpace(raw) == "" {
|
||||
return nil, gerror.New("请选择导出列")
|
||||
}
|
||||
var requested []model.ExportColumn
|
||||
if err := json.Unmarshal([]byte(raw), &requested); err != nil {
|
||||
return nil, gerror.New("导出列格式错误")
|
||||
}
|
||||
allowed := make(map[string]model.ExportColumn, len(defaults))
|
||||
for _, col := range defaults {
|
||||
allowed[col.Field] = col
|
||||
}
|
||||
result := make([]model.ExportColumn, 0, len(requested))
|
||||
seen := make(map[string]bool)
|
||||
for _, col := range requested {
|
||||
safe, ok := allowed[col.Field]
|
||||
if !ok {
|
||||
return nil, gerror.New("包含不允许导出的字段")
|
||||
}
|
||||
if !seen[col.Field] {
|
||||
result = append(result, safe)
|
||||
seen[col.Field] = true
|
||||
}
|
||||
}
|
||||
if len(result) == 0 {
|
||||
return nil, gerror.New("请选择导出列")
|
||||
}
|
||||
return result, nil
|
||||
}
|
||||
|
||||
func (s *sAgentUser) UserExport(ctx context.Context, in *model.AgentUserListParam) error {
|
||||
columns, err := agentExportColumns(in.ExportColumnsJson, []model.ExportColumn{
|
||||
{Field: "userName", Label: "用户名称"}, {Field: "nickName", Label: "用户昵称"},
|
||||
{Field: "roles", Label: "角色"}, {Field: "phonenumber", Label: "联系电话"},
|
||||
{Field: "email", Label: "邮箱"}, {Field: "status", Label: "状态"}, {Field: "createdAt", Label: "创建时间"},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = exportcenter.Submit(ctx, &exportcenter.Request{
|
||||
BizKey: "agentUser", BizName: "用户管理", PermCode: "cpm:agent:user:export", QueryParam: in, Columns: columns,
|
||||
RowFields: agentExportFields(columns),
|
||||
ToRow: func(value interface{}) []interface{} {
|
||||
row := value.(map[string]interface{})
|
||||
values := make([]interface{}, 0, len(columns))
|
||||
for _, column := range columns {
|
||||
values = append(values, row[column.Field])
|
||||
}
|
||||
return values
|
||||
},
|
||||
Tags: func() ([]string, error) {
|
||||
labels := make([]string, 0, len(columns))
|
||||
for _, col := range columns {
|
||||
labels = append(labels, col.Label)
|
||||
}
|
||||
return labels, nil
|
||||
},
|
||||
Fetch: func(ctx context.Context, page, pageSize int) ([]interface{}, int, error) {
|
||||
query := *in
|
||||
query.Page = page
|
||||
query.PageSize = pageSize
|
||||
list, total, err := s.UserList(ctx, &query)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
rows := make([]interface{}, 0, len(list))
|
||||
for _, item := range list {
|
||||
roles := make([]string, 0, len(item.Roles))
|
||||
for _, role := range item.Roles {
|
||||
if role != nil && role.RoleName != "" {
|
||||
roles = append(roles, role.RoleName)
|
||||
}
|
||||
}
|
||||
roleNames := strings.Join(roles, "、")
|
||||
if roleNames == "" {
|
||||
roleNames = "-"
|
||||
}
|
||||
createdAt := ""
|
||||
if item.CreatedAt != nil {
|
||||
createdAt = item.CreatedAt.Format("Y-m-d H:i:s")
|
||||
}
|
||||
rows = append(rows, map[string]interface{}{"userName": item.UserName, "nickName": item.NickName, "roles": roleNames, "phonenumber": item.Phonenumber, "email": item.Email, "status": agentExportStatus(item.Status), "createdAt": createdAt})
|
||||
}
|
||||
return rows, total, nil
|
||||
},
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
func (s *sAgentDept) DeptExport(ctx context.Context, in *model.AgentDeptListParam) error {
|
||||
columns, err := agentExportColumns(in.ExportColumnsJson, []model.ExportColumn{
|
||||
{Field: "deptName", Label: "企业名称"}, {Field: "userName", Label: "登录账号"}, {Field: "nickName", Label: "负责人"},
|
||||
{Field: "phone", Label: "联系电话"}, {Field: "email", Label: "联系人邮箱"}, {Field: "areaCode", Label: "组织所在地"},
|
||||
{Field: "address", Label: "详细地址"}, {Field: "createdAt", Label: "创建时间"}, {Field: "status", Label: "状态"},
|
||||
})
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
_, err = exportcenter.Submit(ctx, &exportcenter.Request{
|
||||
BizKey: "agentDept", BizName: "企业客户", PermCode: "cpm:agent:dept:export", QueryParam: in, Columns: columns,
|
||||
RowFields: agentExportFields(columns),
|
||||
ToRow: func(value interface{}) []interface{} {
|
||||
row := value.(map[string]interface{})
|
||||
values := make([]interface{}, 0, len(columns))
|
||||
for _, column := range columns {
|
||||
values = append(values, row[column.Field])
|
||||
}
|
||||
return values
|
||||
},
|
||||
Tags: func() ([]string, error) {
|
||||
labels := make([]string, 0, len(columns))
|
||||
for _, col := range columns {
|
||||
labels = append(labels, col.Label)
|
||||
}
|
||||
return labels, nil
|
||||
},
|
||||
Fetch: func(ctx context.Context, page, pageSize int) ([]interface{}, int, error) {
|
||||
query := *in
|
||||
query.Page = page
|
||||
query.PageSize = pageSize
|
||||
list, total, err := s.DeptList(ctx, &query)
|
||||
if err != nil {
|
||||
return nil, 0, err
|
||||
}
|
||||
rows := make([]interface{}, 0, len(list))
|
||||
for _, item := range list {
|
||||
createdAt := ""
|
||||
if item.CreatedAt != nil {
|
||||
createdAt = item.CreatedAt.Format("Y-m-d H:i:s")
|
||||
}
|
||||
rows = append(rows, map[string]interface{}{"deptName": item.DeptName, "userName": item.UserName, "nickName": item.NickName, "phone": item.Phone, "email": item.Email, "areaCode": item.AreaCode, "address": item.Address, "createdAt": createdAt, "status": agentExportStatus(item.Status)})
|
||||
}
|
||||
return rows, total, nil
|
||||
},
|
||||
})
|
||||
return err
|
||||
}
|
||||
|
||||
func agentExportFields(columns []model.ExportColumn) []string {
|
||||
fields := make([]string, 0, len(columns))
|
||||
for _, column := range columns {
|
||||
fields = append(fields, column.Field)
|
||||
}
|
||||
return fields
|
||||
}
|
||||
|
||||
func agentExportStatus(status string) string {
|
||||
if status == "0" {
|
||||
return "正常"
|
||||
}
|
||||
if status == "1" {
|
||||
return "停用"
|
||||
}
|
||||
return "未知"
|
||||
}
|
||||
Reference in New Issue
Block a user