实现七月迭代公共技术基础
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 9m20s
This commit is contained in:
73
internal/query/systemconfig/list.go
Normal file
73
internal/query/systemconfig/list.go
Normal file
@@ -0,0 +1,73 @@
|
||||
// Package systemconfig 提供受控系统配置的超级管理员读取投影。
|
||||
package systemconfig
|
||||
|
||||
import (
|
||||
"context"
|
||||
|
||||
"github.com/break/junhong_cmp_fiber/internal/infrastructure/systemconfig"
|
||||
"github.com/break/junhong_cmp_fiber/internal/model/dto"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/constants"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/errors"
|
||||
"github.com/break/junhong_cmp_fiber/pkg/middleware"
|
||||
)
|
||||
|
||||
// ListQuery 按模块分页查询代码注册配置和未注册遗留记录。
|
||||
type ListQuery struct {
|
||||
reader *systemconfig.Reader
|
||||
}
|
||||
|
||||
// NewListQuery 创建系统配置列表查询。
|
||||
func NewListQuery(reader *systemconfig.Reader) *ListQuery {
|
||||
return &ListQuery{reader: reader}
|
||||
}
|
||||
|
||||
// Execute 执行超级管理员系统配置查询。
|
||||
func (q *ListQuery) Execute(ctx context.Context, request dto.SystemConfigListRequest) (*dto.SystemConfigListResponse, error) {
|
||||
if middleware.GetUserTypeFromContext(ctx) != constants.UserTypeSuperAdmin {
|
||||
return nil, errors.New(errors.CodeForbidden)
|
||||
}
|
||||
page := request.Page
|
||||
if page <= 0 {
|
||||
page = 1
|
||||
}
|
||||
pageSize := request.PageSize
|
||||
if pageSize <= 0 {
|
||||
pageSize = constants.DefaultPageSize
|
||||
}
|
||||
if pageSize > constants.MaxPageSize {
|
||||
pageSize = constants.MaxPageSize
|
||||
}
|
||||
items, err := q.reader.List(ctx, request.Module)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(errors.CodeDatabaseError, err, "查询系统配置失败")
|
||||
}
|
||||
total := len(items)
|
||||
start := (page - 1) * pageSize
|
||||
if start > total {
|
||||
start = total
|
||||
}
|
||||
end := start + pageSize
|
||||
if end > total {
|
||||
end = total
|
||||
}
|
||||
result := make([]dto.SystemConfigItem, 0, end-start)
|
||||
for _, item := range items[start:end] {
|
||||
value := item.Value
|
||||
if item.Definition.Sensitive && value != "" {
|
||||
value = "[已配置]"
|
||||
}
|
||||
projection := dto.SystemConfigItem{
|
||||
ConfigKey: item.Definition.Key, Value: value, ValueType: item.Definition.ValueType,
|
||||
Module: item.Definition.Module, Description: item.Definition.Description,
|
||||
Readonly: item.Definition.Readonly || !item.Registered, Sensitive: item.Definition.Sensitive,
|
||||
Registered: item.Registered, Control: item.Definition.Control,
|
||||
EnumValues: item.Definition.EnumValues, Min: item.Definition.Min, Max: item.Definition.Max,
|
||||
}
|
||||
if item.Record != nil {
|
||||
updatedAt := item.Record.UpdatedAt
|
||||
projection.UpdatedAt = &updatedAt
|
||||
}
|
||||
result = append(result, projection)
|
||||
}
|
||||
return &dto.SystemConfigListResponse{List: result, Total: int64(total), Page: page, PageSize: pageSize}, nil
|
||||
}
|
||||
Reference in New Issue
Block a user