Files
im_manager/server/internal/library/immoderation/config.go
T

64 lines
1.8 KiB
Go

package immoderation
import (
"context"
"hotgo/internal/dao"
"hotgo/internal/model/entity"
"strings"
"github.com/gogf/gf/v2/errors/gerror"
)
const (
AliyunConfigGroup = "im_third_party"
AliyunAccessKeyIDKey = "aliyun_access_key_id"
AliyunAccessKeySecretKey = "aliyun_access_key_secret"
AliyunGreenRegionIDKey = "aliyun_green_region_id"
AliyunGreenEndpointKey = "aliyun_green_endpoint"
DefaultAliyunGreenRegionID = "cn-shanghai"
DefaultAliyunGreenEndpoint = "green-cip.cn-shanghai.aliyuncs.com"
)
type AliyunGlobalConfig struct {
AccessKeyID string
AccessKeySecret string
RegionID string
Endpoint string
}
func LoadAliyunGlobalConfig(ctx context.Context) (config AliyunGlobalConfig, err error) {
columns := dao.SysConfig.Columns()
keys := []string{
AliyunAccessKeyIDKey,
AliyunAccessKeySecretKey,
AliyunGreenRegionIDKey,
AliyunGreenEndpointKey,
}
var rows []*entity.SysConfig
if err = dao.SysConfig.Ctx(ctx).
Fields(columns.Key, columns.Value).
Where(columns.Group, AliyunConfigGroup).
Where(columns.Status, 1).
WhereIn(columns.Key, keys).
Scan(&rows); err != nil {
return config, gerror.Wrap(err, "获取阿里云内容审核公共配置失败")
}
values := make(map[string]string, len(rows))
for _, row := range rows {
values[row.Key] = strings.TrimSpace(row.Value)
}
return AliyunGlobalConfig{
AccessKeyID: values[AliyunAccessKeyIDKey],
AccessKeySecret: values[AliyunAccessKeySecretKey],
RegionID: firstValue(values[AliyunGreenRegionIDKey], DefaultAliyunGreenRegionID),
Endpoint: firstValue(values[AliyunGreenEndpointKey], DefaultAliyunGreenEndpoint),
}, nil
}
func firstValue(value, fallback string) string {
if strings.TrimSpace(value) == "" {
return fallback
}
return strings.TrimSpace(value)
}