fix: file export to reset data
This commit is contained in:
@@ -10,10 +10,10 @@ import (
|
|||||||
// "path/filepath"
|
// "path/filepath"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
ueService "be.ems/features/ue/service"
|
||||||
"be.ems/lib/dborm"
|
"be.ems/lib/dborm"
|
||||||
"be.ems/lib/log"
|
"be.ems/lib/log"
|
||||||
"be.ems/src/framework/cron"
|
"be.ems/src/framework/cron"
|
||||||
ueService "be.ems/features/ue/service"
|
|
||||||
neService "be.ems/src/modules/network_data/service"
|
neService "be.ems/src/modules/network_data/service"
|
||||||
)
|
)
|
||||||
|
|
||||||
@@ -102,20 +102,25 @@ func (s *BarProcessor) exportUEData(param BarParams) (map[string]any, error) {
|
|||||||
var fps []string
|
var fps []string
|
||||||
var affectedArr []int64
|
var affectedArr []int64
|
||||||
for _, neID := range neIDs {
|
for _, neID := range neIDs {
|
||||||
log.Trace("ne_id:", neID)
|
|
||||||
// 1. 加载最新数据, 如果数据服务存在,则重新加载数据
|
// 1. 加载最新数据, 如果数据服务存在,则重新加载数据
|
||||||
dataService, err := GetService(param.ServiceName)
|
result := ResetDataWithResult(param.ServiceName, neID)
|
||||||
if err != nil {
|
log.Trace("reset data count=", result.Count)
|
||||||
log.Warn("failed to get data service:", err)
|
// 后续可以等待异步操作返回结果
|
||||||
} else if dataService != nil {
|
if err := <-result.Err; err != nil {
|
||||||
// 重新加载数据
|
log.Error("failed to reset data: ", err)
|
||||||
data := dataService.ResetData(neID)
|
|
||||||
if data == 0 {
|
|
||||||
log.Error("failed to load data:", err)
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
log.Trace("load data:", data)
|
|
||||||
}
|
}
|
||||||
|
// dataService, err := GetService(param.ServiceName)
|
||||||
|
// if err != nil {
|
||||||
|
// log.Warn("failed to get data service:", err)
|
||||||
|
// } else if dataService != nil {
|
||||||
|
// // 重新加载数据
|
||||||
|
// data := dataService.ResetData(neID)
|
||||||
|
// if data == 0 {
|
||||||
|
// log.Error("failed to load data:", err)
|
||||||
|
// return nil, err
|
||||||
|
// }
|
||||||
|
// log.Trace("load data:", data)
|
||||||
|
// }
|
||||||
|
|
||||||
// 2. 构造查询语句
|
// 2. 构造查询语句
|
||||||
var query string
|
var query string
|
||||||
@@ -226,13 +231,40 @@ func (s *BarProcessor) exportData(query, filePath string, fileType string) (int6
|
|||||||
return affected, nil
|
return affected, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
type ResetDataResult struct {
|
||||||
|
Count int64 // 同步返回的数据长度
|
||||||
|
Err <-chan error // 异步返回 ClearAndInsert 的执行结果
|
||||||
|
}
|
||||||
|
|
||||||
|
// ResetDataWithResult 重置鉴权用户数据,清空数据库重新同步Redis数据
|
||||||
|
// 立即返回数据量,同时通过 channel 返回 ClearAndInsert 的执行结果
|
||||||
|
func ResetDataWithResult(serivceName, neID string) ResetDataResult {
|
||||||
|
dataService, err := GetService(serivceName)
|
||||||
|
if err != nil {
|
||||||
|
log.Warn("failed to get data service:", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
authArr := dataService.dataByRedis("*", neID)
|
||||||
|
resultCh := make(chan error, 1)
|
||||||
|
go func() {
|
||||||
|
resultCh <- dataService.ClearAndInsert(neID, authArr)
|
||||||
|
}()
|
||||||
|
return ResetDataResult{
|
||||||
|
Count: int64(len(authArr)),
|
||||||
|
Err: resultCh,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// ResettableService 接口定义
|
// ResettableService 接口定义
|
||||||
type ResettableService interface {
|
type ResettableService interface {
|
||||||
ResetData(neID string) int64
|
dataByRedis(key, neID string) []map[string]string // 从Redis获取数据
|
||||||
|
ClearAndInsert(neID string, authArr []map[string]string) error // 清空数据库并插入数据
|
||||||
|
//ResetData(neID string) int64
|
||||||
}
|
}
|
||||||
|
|
||||||
// 服务注册表
|
// 服务注册表
|
||||||
var serviceRegistry = make(map[string]ResettableService)
|
var serviceRegistry = make(map[string]ResettableService)
|
||||||
|
|
||||||
func RegisterService(name string, service ResettableService) {
|
func RegisterService(name string, service ResettableService) {
|
||||||
serviceRegistry[name] = service
|
serviceRegistry[name] = service
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user