This commit is contained in:
xia 2025-02-23 21:50:55 +08:00
parent 0004b0655f
commit f1b61c574c
4 changed files with 89 additions and 16 deletions

View File

@ -2,8 +2,9 @@ package logic
import ( import (
"context" "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" "gitea.youtukeji.com.cn/youtu/youtu_grpc/app/admin_service/internal/svc"
"github.com/zeromicro/go-zero/core/logx" "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 { type AppData struct {
AppId string `json:"appId"` AppID string `json:"appId"`
AppSecret string `json:"appSecret"` AppSecret string `json:"appSecret"`
Type string `json:"type"` 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列表 // 获取app列表
func (l *GetAppListLogic) GetAppList(in *admin_service.GetAppListRequest) (res *admin_service.GetAppListResponse, err error) { func (l *GetAppListLogic) GetAppList() ([]*MergedAppInfo, error) {
res = &admin_service.GetAppListResponse{} // 从ETCD获取ecpm配置
b, err := l.svcCtx.EtcdCli.Get(context.Background(), "/youtu/appData") ecpmResp, err := l.svcCtx.EtcdClient.Get(l.ctx, "/youtu/ecpm/config")
if err != nil { 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
} }

View File

@ -1,25 +1,29 @@
package svc package svc
import ( import (
"log"
"time"
"gitea.youtukeji.com.cn/youtu/youtu_grpc/pkg/config" "gitea.youtukeji.com.cn/youtu/youtu_grpc/pkg/config"
"github.com/spf13/viper"
clientv3 "go.etcd.io/etcd/client/v3" clientv3 "go.etcd.io/etcd/client/v3"
) )
type ServiceContext struct { type ServiceContext struct {
Config config.Config Config config.Config
EtcdCli *clientv3.Client EtcdClient *clientv3.Client
} }
func NewServiceContext(c config.Config) *ServiceContext { func NewServiceContext(c config.Config) *ServiceContext {
etcdClient, err := clientv3.New(clientv3.Config{
cli, err := clientv3.NewFromURL(viper.GetString(config.EtcdAddrKey)) Endpoints: c.RpcServerConf.Etcd.Hosts,
DialTimeout: 3 * time.Second,
})
if err != nil { if err != nil {
panic(err) log.Fatal(err)
} }
return &ServiceContext{ return &ServiceContext{
Config: c, Config: c,
EtcdCli: cli, EtcdClient: etcdClient,
} }
} }

2
go.mod
View File

@ -13,7 +13,7 @@ require (
github.com/spf13/viper v1.20.0-alpha.6 github.com/spf13/viper v1.20.0-alpha.6
github.com/spf13/viper/remote v1.20.0-alpha.6 github.com/spf13/viper/remote v1.20.0-alpha.6
github.com/zeromicro/go-zero v1.8.0 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/grpc v1.70.0
google.golang.org/protobuf v1.36.5 google.golang.org/protobuf v1.36.5
gorm.io/driver/mysql v1.5.7 gorm.io/driver/mysql v1.5.7

1
go.sum
View File

@ -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/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 h1:VG2xbf8Vz1KJh65Ar2V5eDmfkp1bpzkSEHlhJM3usp8=
go.etcd.io/etcd/client/v2 v2.305.15/go.mod h1:Ad5dRjPVb/n5yXgAWQ/hXzuXXkBk0Y658ocuXYaUU48= 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 h1:nvvYmNHGumkDjZhTHgVU36A9pykGa2K4lAJ0yY7hcXA=
go.etcd.io/etcd/client/v3 v3.5.18/go.mod h1:kmemwOsPU9broExyhYsBxX4spCTDX3yLgPMWtpBXG6E= go.etcd.io/etcd/client/v3 v3.5.18/go.mod h1:kmemwOsPU9broExyhYsBxX4spCTDX3yLgPMWtpBXG6E=
go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0= go.opencensus.io v0.24.0 h1:y73uSU6J157QMP2kn2r30vwW1A2W2WFwSCGnAVxeaD0=