1
This commit is contained in:
parent
0004b0655f
commit
f1b61c574c
@ -2,8 +2,9 @@ package logic
|
||||
|
||||
import (
|
||||
"context"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
|
||||
"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/admin_service/admin_service"
|
||||
"gitea.youtukeji.com.cn/youtu/youtu_grpc/app/admin_service/internal/svc"
|
||||
|
||||
"github.com/zeromicro/go-zero/core/logx"
|
||||
@ -23,19 +24,86 @@ func NewGetAppListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GetApp
|
||||
}
|
||||
}
|
||||
|
||||
// 定义数据结构
|
||||
type EcpmConfig struct {
|
||||
AppID string `json:"appId"`
|
||||
ECPM int `json:"eCPM"`
|
||||
IPU int `json:"IPU"`
|
||||
}
|
||||
|
||||
type AppData struct {
|
||||
AppId string `json:"appId"`
|
||||
AppID string `json:"appId"`
|
||||
AppSecret string `json:"appSecret"`
|
||||
Type string `json:"type"`
|
||||
}
|
||||
|
||||
type MergedAppInfo struct {
|
||||
AppID string `json:"appId"`
|
||||
ECPM int `json:"eCPM,omitempty"`
|
||||
IPU int `json:"IPU,omitempty"`
|
||||
AppSecret string `json:"appSecret,omitempty"`
|
||||
Type string `json:"type,omitempty"`
|
||||
}
|
||||
|
||||
// 获取app列表
|
||||
func (l *GetAppListLogic) GetAppList(in *admin_service.GetAppListRequest) (res *admin_service.GetAppListResponse, err error) {
|
||||
res = &admin_service.GetAppListResponse{}
|
||||
b, err := l.svcCtx.EtcdCli.Get(context.Background(), "/youtu/appData")
|
||||
func (l *GetAppListLogic) GetAppList() ([]*MergedAppInfo, error) {
|
||||
// 从ETCD获取ecpm配置
|
||||
ecpmResp, err := l.svcCtx.EtcdClient.Get(l.ctx, "/youtu/ecpm/config")
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, fmt.Errorf("获取ecpm配置失败: %v", err)
|
||||
}
|
||||
|
||||
return &admin_service.GetAppListResponse{}, nil
|
||||
var ecpmConfigs []EcpmConfig
|
||||
if len(ecpmResp.Kvs) > 0 {
|
||||
if err := json.Unmarshal(ecpmResp.Kvs[0].Value, &ecpmConfigs); err != nil {
|
||||
return nil, fmt.Errorf("解析ecpm配置失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// 从ETCD获取app数据
|
||||
appDataResp, err := l.svcCtx.EtcdClient.Get(l.ctx, "/youtu/appData")
|
||||
if err != nil {
|
||||
return nil, fmt.Errorf("获取app数据失败: %v", err)
|
||||
}
|
||||
|
||||
var appDatas []AppData
|
||||
if len(appDataResp.Kvs) > 0 {
|
||||
if err := json.Unmarshal(appDataResp.Kvs[0].Value, &appDatas); err != nil {
|
||||
return nil, fmt.Errorf("解析app数据失败: %v", err)
|
||||
}
|
||||
}
|
||||
|
||||
// 创建合并映射
|
||||
merged := make(map[string]*MergedAppInfo)
|
||||
|
||||
// 合并ecpm数据
|
||||
for _, ecpm := range ecpmConfigs {
|
||||
merged[ecpm.AppID] = &MergedAppInfo{
|
||||
AppID: ecpm.AppID,
|
||||
ECPM: ecpm.ECPM,
|
||||
IPU: ecpm.IPU,
|
||||
}
|
||||
}
|
||||
|
||||
// 合并app数据
|
||||
for _, app := range appDatas {
|
||||
if entry, exists := merged[app.AppID]; exists {
|
||||
entry.AppSecret = app.AppSecret
|
||||
entry.Type = app.Type
|
||||
} else {
|
||||
merged[app.AppID] = &MergedAppInfo{
|
||||
AppID: app.AppID,
|
||||
AppSecret: app.AppSecret,
|
||||
Type: app.Type,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// 转换为切片
|
||||
result := make([]*MergedAppInfo, 0, len(merged))
|
||||
for _, v := range merged {
|
||||
result = append(result, v)
|
||||
}
|
||||
|
||||
return result, nil
|
||||
}
|
||||
|
@ -1,25 +1,29 @@
|
||||
package svc
|
||||
|
||||
import (
|
||||
"log"
|
||||
"time"
|
||||
|
||||
"gitea.youtukeji.com.cn/youtu/youtu_grpc/pkg/config"
|
||||
"github.com/spf13/viper"
|
||||
clientv3 "go.etcd.io/etcd/client/v3"
|
||||
)
|
||||
|
||||
type ServiceContext struct {
|
||||
Config config.Config
|
||||
EtcdCli *clientv3.Client
|
||||
EtcdClient *clientv3.Client
|
||||
}
|
||||
|
||||
func NewServiceContext(c config.Config) *ServiceContext {
|
||||
|
||||
cli, err := clientv3.NewFromURL(viper.GetString(config.EtcdAddrKey))
|
||||
etcdClient, err := clientv3.New(clientv3.Config{
|
||||
Endpoints: c.RpcServerConf.Etcd.Hosts,
|
||||
DialTimeout: 3 * time.Second,
|
||||
})
|
||||
if err != nil {
|
||||
panic(err)
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
return &ServiceContext{
|
||||
Config: c,
|
||||
EtcdCli: cli,
|
||||
EtcdClient: etcdClient,
|
||||
}
|
||||
}
|
||||
|
2
go.mod
2
go.mod
@ -13,7 +13,7 @@ require (
|
||||
github.com/spf13/viper v1.20.0-alpha.6
|
||||
github.com/spf13/viper/remote v1.20.0-alpha.6
|
||||
github.com/zeromicro/go-zero v1.8.0
|
||||
go.etcd.io/etcd/client/v3 v3.5.18
|
||||
go.etcd.io/etcd/client/v3 v3.5.15
|
||||
google.golang.org/grpc v1.70.0
|
||||
google.golang.org/protobuf v1.36.5
|
||||
gorm.io/driver/mysql v1.5.7
|
||||
|
1
go.sum
1
go.sum
@ -452,6 +452,7 @@ go.etcd.io/etcd/client/pkg/v3 v3.5.18 h1:mZPOYw4h8rTk7TeJ5+3udUkfVGBqc+GCjOJYd68
|
||||
go.etcd.io/etcd/client/pkg/v3 v3.5.18/go.mod h1:BxVf2o5wXG9ZJV+/Cu7QNUiJYk4A29sAhoI5tIRsCu4=
|
||||
go.etcd.io/etcd/client/v2 v2.305.15 h1:VG2xbf8Vz1KJh65Ar2V5eDmfkp1bpzkSEHlhJM3usp8=
|
||||
go.etcd.io/etcd/client/v2 v2.305.15/go.mod h1:Ad5dRjPVb/n5yXgAWQ/hXzuXXkBk0Y658ocuXYaUU48=
|
||||
go.etcd.io/etcd/client/v3 v3.5.15/go.mod h1:CLSJxrYjvLtHsrPKsy7LmZEE+DK2ktfd2bN4RhBMwlU=
|
||||
go.etcd.io/etcd/client/v3 v3.5.18 h1:nvvYmNHGumkDjZhTHgVU36A9pykGa2K4lAJ0yY7hcXA=
|
||||
go.etcd.io/etcd/client/v3 v3.5.18/go.mod h1:kmemwOsPU9broExyhYsBxX4spCTDX3yLgPMWtpBXG6E=
|
||||
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=
|
||||
|
Loading…
x
Reference in New Issue
Block a user