xyxie 2 дней назад
Родитель
Сommit
10e7842f20

+ 4 - 1
models/base_from_kpler.go

@@ -35,9 +35,12 @@ type BaseFromKpler struct {
     EndDate string `description:"结束日期"`
 }
 
+type KplerFlowDataResp struct {
+	ApiQueryUrl string
+	List []KplerFlowData 
+}
 type KplerFlowData struct {
 	SplitItem string 
-	ApiQueryUrl string
 	IndexData []KplerBaseExcelData 
 }
 

+ 8 - 6
services/base_from_kpler.go

@@ -1,6 +1,7 @@
 package services
 
 import (
+	"context"
 	"encoding/json"
 	"eta/eta_data_analysis/models"
 	"eta/eta_data_analysis/services/kpler"
@@ -16,19 +17,18 @@ import (
 	"github.com/patrickmn/go-cache"
 )
 
-func ExcelDataWatch() {
+func KplerExcelDataWatch(cont context.Context) (err error) {
 	fmt.Println("kplerExcelWatch start")
 	utils.FileLog.Info("kplerExcelWatch start")
-	var err error
 	defer func() {
 		if err != nil {
 			fmt.Println("kplerExcelDataWatch Err:" + err.Error())
 			utils.FileLog.Info(fmt.Sprintf("kplerExcelDataWatch, Err: %s", err))
 		}
 	}()
-	var cacheClient *cache.Cache
+	cacheClient := utils.CacheClient
 	if cacheClient == nil {
-		cacheClient = cache.New(365*24*time.Hour, 365*24*time.Hour)
+		 utils.CacheClient = cache.New(365*24*time.Hour, 365*24*time.Hour)
 	}
 	err = filepath.Walk(utils.KplerExcelFilePath, func(path string, info fs.FileInfo, err error) error {
 		if err != nil {
@@ -44,8 +44,9 @@ func ExcelDataWatch() {
 			}
 			winFileAttr := fileInfo.Sys().(*syscall.Win32FileAttributeData)
 			modifyTimeStr := utils.SecondToTime(winFileAttr.LastWriteTime.Nanoseconds() / 1e9).Format(utils.FormatDateTime)
-
+			fmt.Println("文件的修改时间modifyTimeStr:", modifyTimeStr)
 			existModifyTime, ok := cacheClient.Get(path)
+			fmt.Println("缓存里的时间existModifyTime:", existModifyTime)
 			if ok {
 				existModifyTimeStr := existModifyTime.(string)
 				if existModifyTimeStr != modifyTimeStr {
@@ -59,11 +60,12 @@ func ExcelDataWatch() {
 		}
 		return nil
 	})
+	return
 }
 
 // Main function for standalone testing
 func GetKplerDataByExcel(filePath string) (err error) {
-	filePath = "services/kpler/crude.xlsx"
+	//filePath = "services/kpler/crude.xlsx"
 	fmt.Println("Starting Kpler data processing...")
 
 	// Process the Excel data

+ 5 - 10
services/kpler/kpler.go

@@ -3,6 +3,7 @@ package kpler
 import (
 	"eta/eta_data_analysis/models"
 	"eta/eta_data_analysis/services/alarm_msg"
+	"eta/eta_data_analysis/utils"
 	"fmt"
 	"time"
 
@@ -32,7 +33,7 @@ func GetProducts() (products []models.KplerProduct, err error) {
 	return 
 }
 //   token := ""
-func GetKplerData(req models.KplerFlowDataLibReq) (data []models.KplerFlowData, err error) {
+func GetKplerData(req models.KplerFlowDataLibReq) (ret *models.KplerFlowDataResp, err error) {
 //   token := ""
 //   flowDirection := "import"
 //   granularity := "monthly"
@@ -62,8 +63,7 @@ func GetKplerData(req models.KplerFlowDataLibReq) (data []models.KplerFlowData,
 	if err != nil {
 		return nil, err
 	}
-	data, err = GetKplerDataByApi(req, token)
-
+	ret, err = GetKplerDataByApi(req, token)
 	if err != nil {
 		fmt.Println("GetKplerDataByApi error", err)
 		if err.Error() == "Unauthorized" {
@@ -72,17 +72,15 @@ func GetKplerData(req models.KplerFlowDataLibReq) (data []models.KplerFlowData,
 				err = fmt.Errorf("获取开普勒API-AccessToken失败, %v", err)
 				return
 			}
-			data, err = GetKplerDataByApi(req, token)
+			ret, err = GetKplerDataByApi(req, token)
 			if err != nil {
 				fmt.Println("GetKplerDataByApi error", err)
 				return nil, err
 			}
-			fmt.Println("GetKplerDataByApi success", data)
 			return
 		}
 		return nil, err
 	}
-	fmt.Println("GetKplerDataByApi success", data)
 	return
 }
 
@@ -94,10 +92,7 @@ func GetKplerAccessToken() (token string, err error) {
 		}
 	}()
 	redisKey := "kpler_access_token"
-	var cacheClient *cache.Cache
-	if cacheClient == nil {
-		cacheClient = cache.New(365*24*time.Hour, 365*24*time.Hour)
-	}
+	cacheClient := utils.CacheClient
 	tokenTmp, ok := cacheClient.Get(redisKey)
 	//如果从redis中accessToken 获取失败或者token为空了,再或者需要强制刷新了,那么重新获取accessToken
 	if !ok {

+ 6 - 3
services/kpler/liquid.go

@@ -142,7 +142,7 @@ func GetProductsByApi(token string) (data []models.KplerProduct, err error) {
 
 
 // 根据flowDirection 和 products 循环调用
-func GetKplerDataByApi(params models.KplerFlowDataLibReq, token string) (data []models.KplerFlowData, err error) {
+func GetKplerDataByApi(params models.KplerFlowDataLibReq, token string) (ret *models.KplerFlowDataResp, err error) {
   flowDirection := params.FlowDirection
   granularity := params.Granularity
   products := params.Products
@@ -258,14 +258,17 @@ func GetKplerDataByApi(params models.KplerFlowDataLibReq, token string) (data []
       }
     }
 	}
-
+  data := make([]models.KplerFlowData, 0)
   for col, name := range splitNameMap {
     data = append(data, models.KplerFlowData{
       SplitItem: name,
-      ApiQueryUrl: url,
       IndexData: splitDataMap[col],
     })
   }
+  ret = &models.KplerFlowDataResp{
+    List: data,
+    ApiQueryUrl: url,
+  }
   return
 }
 

+ 5 - 0
services/task.go

@@ -154,6 +154,11 @@ func Task() {
 		c.Start()
 	}
 
+	if utils.KplerExcelOpen == "1" {
+		kplerExcelWatch := task.NewTask("kplerExcelWatch", "0 */2 * * * *", KplerExcelDataWatch)
+		task.AddTask("克拉克森Excel数据检测", kplerExcelWatch)
+	}
+
 	task.StartTask()
 
 	fmt.Println("task end")

+ 11 - 0
utils/config.go

@@ -3,9 +3,11 @@ package utils
 import (
 	"fmt"
 	"strconv"
+	"time"
 
 	beeLogger "github.com/beego/bee/v2/logger"
 	"github.com/beego/beego/v2/server/web"
+	"github.com/patrickmn/go-cache"
 )
 
 var (
@@ -138,6 +140,10 @@ var (
 	KplerExcelOpen     string //是否配置Kpler数据源,1已配置
 )
 
+var (
+	CacheClient *cache.Cache
+)
+
 func init() {
 	tmpRunMode, err := web.AppConfig.String("run_mode")
 	if err != nil {
@@ -286,6 +292,11 @@ func init() {
 		ClarkSonsFilePath = config["clarksons_file_path"]
 		ClarkSonsOpen = config["clarksons_open"]
 	}
+
+	KplerExcelOpen = config["kpler_excel_open"]
+	KplerExcelFilePath = config["kpler_excel_file_path"]
+
+	CacheClient = cache.New(365*24*time.Hour, 365*24*time.Hour)
 }
 
 //修改接口文档

+ 1 - 4
utils/constants.go

@@ -279,7 +279,4 @@ const (
 
 const (
 	APPNAME = "弘则-数据爬虫"
-)
-
-// Kpler settings
-var KplerOpen = "0" // Set to "1" to enable Kpler data processing
+)