Ver Fonte

日志输出

kobe6258 há 2 meses atrás
pai
commit
c9fb6cff93

+ 40 - 0
controllers/rzd_controller.go

@@ -0,0 +1,40 @@
+package controllers
+
+import (
+	"context"
+	"eta/eta_data_analysis/models"
+	"eta/eta_data_analysis/services/ruizide"
+	"eta/eta_data_analysis/utils"
+	"github.com/beego/beego/v2/server/web"
+)
+
+type RzdController struct {
+	web.Controller
+}
+
+// DealData
+// @Title 解析睿咨得数据
+// @Description 合同套餐列表
+// @Param   DayFlag  query  int  false
+// @Param   WeekFlag  query  int  false
+// @Success 200 {object} company.GetUnusualRenewListGroupMonthResp
+// @router /rz_deal_data [get]
+func (this *YongyiController) DealData() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	var err error
+	err = ruizide.ResolverNet(context.Background())
+	if err != nil {
+		utils.FileLog.Error("睿咨得数据处理失败 err:%v", err)
+		br.Msg = "操作异常"
+		br.ErrMsg = "操作异常,Err:" + err.Error()
+		return
+	}
+
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "操作成功"
+}

+ 8 - 8
services/liangyou/commodity_liangyou.go

@@ -126,7 +126,7 @@ func fetchReportData(ctx context.Context, product, category, report string, keyw
 	if err != nil {
 		return err
 	}
-	logs.Info("categoryPageURL: %s: %s: %s", product, category, categoryPageURL)
+	utils.FileLog.Info("categoryPageURL: %s: %s: %s", product, category, categoryPageURL)
 
 	//var allReportURLs []string
 	var allReportURLMap = make(map[string]string)
@@ -177,7 +177,7 @@ func fetchReportData(ctx context.Context, product, category, report string, keyw
 
 	}
 
-	logs.Info("所有报告 URLs: %s: %s: %v", product, category, allReportURLMap)
+	utils.FileLog.Info("所有报告 URLs: %s: %s: %v", product, category, allReportURLMap)
 
 	if len(allReportURLMap) == 0 {
 		return fmt.Errorf("未找到报告 URL")
@@ -205,7 +205,7 @@ func fetchReportData(ctx context.Context, product, category, report string, keyw
 			}
 
 			if time.Now().Sub(toTime) > 7*24*time.Hour {
-				logs.Info("报告已处理: %s: %s: %s: %s", product, category, report, key)
+				utils.FileLog.Info("报告已处理: %s: %s: %s: %s", product, category, report, key)
 				continue
 			}
 		}
@@ -258,7 +258,7 @@ func fetchReportData(ctx context.Context, product, category, report string, keyw
 			logs.Error("维护指标数据读取进度错误: %s, %s, %v: %v", product, category, key, err)
 			continue
 		}
-		logs.Info("维护指标数据读取进度成功: %s, %s, %v", product, category, key)
+		utils.FileLog.Info("维护指标数据读取进度成功: %s, %s, %v", product, category, key)
 	}
 
 	return nil
@@ -267,7 +267,7 @@ func fetchReportData(ctx context.Context, product, category, report string, keyw
 func fillProductPageURL(ctx context.Context, product string, category string) (string, error) {
 	// 选择 dl 标签下所有 a 标签的 XPath
 	selector := `//dl[contains(@class, 'dl_hot')]//a`
-	logs.Info("选择器表达式: %s", selector)
+	utils.FileLog.Info("选择器表达式: %s", selector)
 
 	var nodes []*cdp.Node
 	var productPageURL string
@@ -295,14 +295,14 @@ func fillProductPageURL(ctx context.Context, product string, category string) (s
 		}
 
 		// 打印获取的 OuterHTML 内容
-		logs.Info("Link OuterHTML: %s", outerHTML)
+		utils.FileLog.Info("Link OuterHTML: %s", outerHTML)
 
 		// 从 OuterHTML 中提取 href 和文本内容
 		// 使用正则或字符串处理提取 href 和文本内容
 		href, linkText := extractHrefAndText(outerHTML)
 
 		// 打印提取的 href 和文本内容
-		logs.Info("Link Text: %s, Href: %s", linkText, href)
+		utils.FileLog.Info("Link Text: %s, Href: %s", linkText, href)
 
 		// 如果文本内容匹配目标产品
 		if linkText == product {
@@ -340,7 +340,7 @@ func fillProductPageURL(ctx context.Context, product string, category string) (s
 	}
 
 	// 返回点击后的页面URL
-	logs.Info("productPageURL: %s", productPageURL)
+	utils.FileLog.Info("productPageURL: %s", productPageURL)
 	return productPageURL, nil
 }
 

+ 33 - 33
services/liangyou/processor_business_logic.go

@@ -32,7 +32,7 @@ type TableData struct {
 type ImportCostProcessor struct{}
 
 func (p *ImportCostProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing import cost...")
+	utils.FileLog.Info("Processing import cost...")
 
 	// 解析关键字
 	if len(keywords) < 5 {
@@ -136,7 +136,7 @@ func (p *ImportCostProcessor) Process(ctx context.Context, product string, repor
 
 						indexData := requestResponse.Data
 						if len(indexData) > 0 {
-							logs.Info("ProcessingImportCostProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+							utils.FileLog.Info("ProcessingImportCostProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 							continue
 						}
 
@@ -262,7 +262,7 @@ func (p *ProcessingProfitProcessor) Process(ctx context.Context, product string,
 
 						indexData := requestResponse.Data
 						if len(indexData) > 0 {
-							logs.Info("ProcessingProfitProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+							utils.FileLog.Info("ProcessingProfitProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 							continue
 						}
 
@@ -382,7 +382,7 @@ func (p *ShippingCostProcessor) Process(ctx context.Context, product string, rep
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("ShippingCostProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("ShippingCostProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						continue
 					}
 
@@ -416,7 +416,7 @@ type SupplyDemandBalanceProcessor struct{}
 
 func (p *SupplyDemandBalanceProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
 	// https://www.fao.com.cn/art/gG7gKTCNDHLJNsq9QRYjoQ==.htm
-	logs.Info("Processing processing report...")
+	utils.FileLog.Info("Processing processing report...")
 	// 解析关键字
 	if len(keywords) < 4 {
 		return []models.BaseFromLyData{}, fmt.Errorf("SupplyDemandBalanceProcessor Process() : keywords must contain at least 4 elements")
@@ -428,7 +428,7 @@ func (p *SupplyDemandBalanceProcessor) Process(ctx context.Context, product stri
 
 	// 提取所有表格数据
 	tableData := getTableData(reportContent, true)
-	logs.Info("SupplyDemandBalanceProcessor Process() : Table data: %v", tableData)
+	utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Table data: %v", tableData)
 
 	// 提取日期信息
 	dateText, err := getDateInfo(ctx)
@@ -452,7 +452,7 @@ func (p *SupplyDemandBalanceProcessor) Process(ctx context.Context, product stri
 		return nil, err
 	}
 	monthSuffix := "预估"
-	logs.Info("SupplyDemandBalanceProcessor Process() : Target Year: %s:%s\n", currentYearAndNextYear, month+monthSuffix)
+	utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Target Year: %s:%s\n", currentYearAndNextYear, month+monthSuffix)
 
 	// 处理提取的表格数据
 	var result []models.BaseFromLyData
@@ -525,7 +525,7 @@ func (p *SupplyDemandBalanceProcessor) Process(ctx context.Context, product stri
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						// 存在走更新逻辑 主要更新今年在去年的预估值
 						indexData := indexData[0]
 						if indexData.Value != value {
@@ -601,7 +601,7 @@ func (p *SupplyDemandBalanceProcessor) Process(ctx context.Context, product stri
 type PurchaseShippingProcessor struct{}
 
 func (p *PurchaseShippingProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing purchase shipping...")
+	utils.FileLog.Info("Processing purchase shipping...")
 	// 解析关键字
 	if len(keywords) < 3 {
 		return []models.BaseFromLyData{}, fmt.Errorf("SupplyDemandBalanceProcessor Process() : keywords must contain at least 3 elements")
@@ -612,7 +612,7 @@ func (p *PurchaseShippingProcessor) Process(ctx context.Context, product string,
 
 	// 提取所有表格数据
 	tableData := getPurchaseShippingTableData(reportContent)
-	logs.Info("SupplyDemandBalanceProcessor Process() : Table data: %v", tableData)
+	utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Table data: %v", tableData)
 
 	// 提取日期信息
 	dateText, err := getDateInfo(ctx)
@@ -705,7 +705,7 @@ func (p *PurchaseShippingProcessor) Process(ctx context.Context, product string,
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
 						if indexData[0].Value != value {
-							logs.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+							utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 
 							lyData := indexData[0]
 							time, err := utils.StringToTime(lyData.ModifyTime)
@@ -784,7 +784,7 @@ type ProcessingReportProcessor struct {
 }
 
 func (p *ProcessingReportProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing processing report...")
+	utils.FileLog.Info("Processing processing report...")
 	// 解析关键字
 	if len(keywords) < 3 {
 		return []models.BaseFromLyData{}, fmt.Errorf("ProcessingReportProcessor Process() : keywords must contain at least 3 elements")
@@ -829,7 +829,7 @@ func (p *ProcessingReportProcessor) Process(ctx context.Context, product string,
 
 	indexData := requestResponse.Data
 	if len(indexData) > 0 {
-		logs.Info("ProcessingReportProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+		utils.FileLog.Info("ProcessingReportProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 		// 不必做更新处理,报告每周刷新,即使本周和上周数据一致,也需要每周记录
 		return []models.BaseFromLyData{}, nil
 	}
@@ -909,7 +909,7 @@ func (p *ProcessingReportProcessor) Process(ctx context.Context, product string,
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("ProcessingReportProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("ProcessingReportProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						// 无需走更新逻辑,报告每日更新,即使今天和昨天数据一致,也需要每天记录,如果到这里也只是说,今天这个报告被读取了两次
 						continue
 					}
@@ -936,7 +936,7 @@ func (p *ProcessingReportProcessor) Process(ctx context.Context, product string,
 
 			/*if len(row) > 0 && strings.Contains(row[0], rowName) {
 				if weekIdx < len(row) {
-					logs.Info("Value in column '%s' - '%s': %s", columnName, rowName, row[columnIdx])
+					utils.FileLog.Info("Value in column '%s' - '%s': %s", columnName, rowName, row[columnIdx])
 					numFlag := isNumeric(row[columnIdx])
 					if numFlag {
 						value, err := strconv.ParseFloat(row[columnIdx], 64)
@@ -967,7 +967,7 @@ type InventoryAnalysisProcessor struct{}
 
 func (p *InventoryAnalysisProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
 	// https://www.fao.com.cn/art/yg1IKj9FpPEIDv2LefnPhQ==.htm
-	logs.Info("Processing inventory analysis...")
+	utils.FileLog.Info("Processing inventory analysis...")
 
 	// 解析关键字
 	if len(keywords) < 4 {
@@ -983,7 +983,7 @@ func (p *InventoryAnalysisProcessor) Process(ctx context.Context, product string
 
 	// 提取所有表格数据
 	tableData := getTableData(reportContent, true)
-	logs.Info("SupplyDemandBalanceProcessor Process() : Table data: %v", tableData)
+	utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Table data: %v", tableData)
 
 	// 提取日期信息
 	dateText, err := getDateInfo(ctx)
@@ -1044,7 +1044,7 @@ func (p *InventoryAnalysisProcessor) Process(ctx context.Context, product string
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						// 无需走更新逻辑,报告每周更新,即使本周和上周数据一致,也需要每周记录,如果到这里也只是说,今天这个报告被读取了两次
 						continue
 					}
@@ -1157,7 +1157,7 @@ func (p *PriceSpreadArbitrageProcessor) Process(ctx context.Context, product str
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("ProcessingProfitProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("ProcessingProfitProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						// 无需走更新逻辑,报告每天更新,即使今天和每天数据一致,也需要每天记录,如果到这里也只是说,今天这个报告被读取了两次
 						continue
 					}
@@ -1210,7 +1210,7 @@ func (p *DailyTransactionProcessor) Process(ctx context.Context, product string,
 		return []models.BaseFromLyData{}, fmt.Errorf("DailyTransactionProcessor Process() : No table data found")
 
 	}
-	logs.Info("SupplyDemandBalanceProcessor Process() : areaTableData data: %v, blocTableData data: %v", areaTableData, blocTableData)
+	utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : areaTableData data: %v, blocTableData data: %v", areaTableData, blocTableData)
 	// 提取日期信息
 	dateText, err := getDateInfo(ctx)
 	if err != nil {
@@ -1279,7 +1279,7 @@ func (p *DailyTransactionProcessor) Process(ctx context.Context, product string,
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("DailyTransactionProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("DailyTransactionProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						// 无需走更新逻辑,报告每周更新,一周出来一周中每天得数据,即使本周和上周数据一致,也需要每天记录,如果到这里也只是说,今天这个报告被读取了两次
 						continue
 					}
@@ -1344,7 +1344,7 @@ func (p *DailyTransactionProcessor) Process(ctx context.Context, product string,
 
 							indexData := requestResponse.Data
 							if len(indexData) > 0 {
-								logs.Info("DailyTransactionProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+								utils.FileLog.Info("DailyTransactionProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 								// 无需走更新逻辑,报告每周更新,即使本周和上周数据一致,也需要每周记录,如果到这里也只是说,今天这个报告被读取了两次
 								continue
 							}
@@ -1436,7 +1436,7 @@ func (p *DailyTransactionProcessor) Process(ctx context.Context, product string,
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("SupplyDemandBalanceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						continue
 					}
 
@@ -1468,7 +1468,7 @@ func (p *DailyTransactionProcessor) Process(ctx context.Context, product string,
 type PalmOilImportCostProcessor struct{}
 
 func (p *PalmOilImportCostProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing palm oil import cost...")
+	utils.FileLog.Info("Processing palm oil import cost...")
 	// 解析关键字
 	if len(keywords) < 5 {
 		return []models.BaseFromLyData{}, fmt.Errorf("PalmOilImportCostProcessor Process() : keywords must contain at least 5 elements")
@@ -1575,7 +1575,7 @@ func (p *PalmOilImportCostProcessor) Process(ctx context.Context, product string
 
 						indexData := requestResponse.Data
 						if len(indexData) > 0 {
-							logs.Info("PalmOilImportCostProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+							utils.FileLog.Info("PalmOilImportCostProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 							continue
 						}
 
@@ -1611,7 +1611,7 @@ func (p *PalmOilImportCostProcessor) Process(ctx context.Context, product string
 type ImportEstimateProcessor struct{}
 
 func (p *ImportEstimateProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing import estimate...")
+	utils.FileLog.Info("Processing import estimate...")
 	// 解析关键字
 	if len(keywords) < 4 {
 		return []models.BaseFromLyData{}, fmt.Errorf("ImportEstimateProcessor Process() : keywords must contain at least 4 elements")
@@ -1713,7 +1713,7 @@ func (p *ImportEstimateProcessor) Process(ctx context.Context, product string, r
 
 							if len(indexData) > 0 {
 								if indexData[0].Value != value {
-									logs.Info("ImportEstimateProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+									utils.FileLog.Info("ImportEstimateProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 
 									lyData := indexData[0]
 									time, err := utils.StringToTime(lyData.ModifyTime)
@@ -1793,7 +1793,7 @@ func (p *ImportEstimateProcessor) Process(ctx context.Context, product string, r
 type InternationalPriceProcessor struct{}
 
 func (p *InternationalPriceProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing international price...")
+	utils.FileLog.Info("Processing international price...")
 	// 解析关键字
 	if len(keywords) < 4 {
 		return []models.BaseFromLyData{}, fmt.Errorf("InternationalPriceProcessor Process() : keywords must contain at least 4 elements")
@@ -1885,7 +1885,7 @@ func (p *InternationalPriceProcessor) Process(ctx context.Context, product strin
 
 						indexData := requestResponse.Data
 						if len(indexData) > 0 {
-							logs.Info("InternationalPriceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+							utils.FileLog.Info("InternationalPriceProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 							// 无需更新 指标展示本月和后两月的数据,报告每天更新,每天的值可能会改变,即使今天和每天数据一致,也需要每天记录,如果到这里也只是说,今天这个报告被读取了两次
 							continue
 						}
@@ -1920,7 +1920,7 @@ func (p *InternationalPriceProcessor) Process(ctx context.Context, product strin
 type CanadaStatisticsBureauProcessor struct{}
 
 func (p *CanadaStatisticsBureauProcessor) Process(ctx context.Context, product string, reportContent string, keywords []string, classifyId int) ([]models.BaseFromLyData, error) {
-	logs.Info("Processing Canada statistics bureau...")
+	utils.FileLog.Info("Processing Canada statistics bureau...")
 	// 解析关键字
 	if len(keywords) < 4 {
 		return []models.BaseFromLyData{}, fmt.Errorf("CanadaStatisticsBureauProcessor Process() : keywords must contain at least 4 elements")
@@ -1995,7 +1995,7 @@ func (p *CanadaStatisticsBureauProcessor) Process(ctx context.Context, product s
 
 					indexData := requestResponse.Data
 					if len(indexData) > 0 {
-						logs.Info("CanadaStatisticsBureauProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+						utils.FileLog.Info("CanadaStatisticsBureauProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 						// 无需更新 指标展示本周的数据,报告每周更新,即使本周和上周数据一致,也需要每周记录,如果到这里也只是说,今天这个报告被读取了两次
 						continue
 					}
@@ -2117,7 +2117,7 @@ func (p *ImportExportAnalysisProcessor) Process(ctx context.Context, product str
 
 						indexData := requestResponse.Data
 						if len(indexData) > 0 {
-							logs.Info("ProcessingProfitProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
+							utils.FileLog.Info("ProcessingProfitProcessor Process() : Data already exists for index %d and date %s", indexId, dateText)
 							continue
 						}
 
@@ -2202,7 +2202,7 @@ func getDateInfo(ctx context.Context) (string, error) {
 		return "", fmt.Errorf("processing Process() : Failed to extract report date: %v", err)
 	}
 
-	logs.Info("Processing Process() : Report Extracted Date: %s", dateText)
+	utils.FileLog.Info("Processing Process() : Report Extracted Date: %s", dateText)
 	return dateText, nil
 }
 

+ 142 - 54
services/ruizide/data_processor.go

@@ -3,6 +3,7 @@ package ruizide
 import (
 	"context"
 	"encoding/json"
+	"errors"
 	"eta/eta_data_analysis/models"
 	"eta/eta_data_analysis/utils"
 	"fmt"
@@ -18,9 +19,9 @@ import (
 
 // 定义选择器
 var (
-	downloadDir  = utils.RZD_EXCEL_PATH
-	defaultDir   = utils.RZD_DOWNLOAD_PATH
-	rzdLoginPath = "https://portal.rystadenergy.com/home"
+	excelDir     = utils.RZD_EXCEL_PATH
+	downloadDir  = utils.RZD_DOWNLOAD_PATH
+	rzdLoginPath = utils.RZD_LOGIN_PATH
 	rzdBatchSize = 500
 )
 
@@ -57,7 +58,7 @@ func downloadData(ctx context.Context) error {
 	}
 
 	// 解析文件移动到目标目录
-	if err := waitAndRenameDownloadedFile("Oil_Demand_Signals_Weekly_Report_"+utils.GetCurrentYearMonth()+".xlsx", downloadDir); err != nil {
+	if err := waitAndRenameDownloadedFile("Oil_Demand_Signals_Weekly_Report_"+utils.GetCurrentYearMonth()+".xlsx", excelDir); err != nil {
 		return err
 	}
 
@@ -70,7 +71,7 @@ func waitAndRenameDownloadedFile(newFileName, targetDir string) error {
 	time.Sleep(100 * time.Second) // 可能需要根据实际情况调整
 
 	// 查找下载目录中的文件
-	files, err := filepath.Glob(filepath.Join(defaultDir, "*.xlsx"))
+	files, err := filepath.Glob(filepath.Join(downloadDir, "*.xlsx"))
 	if err != nil {
 		return fmt.Errorf("查找文件时出错: %v", err)
 	}
@@ -104,6 +105,7 @@ func waitAndRenameDownloadedFile(newFileName, targetDir string) error {
 			return fmt.Errorf("重命名文件时出错: %v", err)
 		}
 		// 打印重命名后的文件名
+		utils.FileLog.Info("文件重命名并移动到: ", targetFilePath)
 		fmt.Printf("文件重命名并移动到: %s\n", targetFilePath)
 	}
 
@@ -136,65 +138,146 @@ func moveFile(source, destination string) error {
 
 	return nil
 }
+func createPath(paths []string) (err error) {
+	for _, path := range paths {
+		if path == "" {
+			continue
+		}
+		_, err = os.Stat(path)
+		if err != nil {
+			if os.IsNotExist(err) {
+				if err = os.MkdirAll(path, os.ModePerm); err != nil {
+					fmt.Printf("睿咨得创建目录时出错: %v\n", err)
+					utils.FileLog.Error("睿咨得创建目录时出错: %v", err)
+					return
+				}
+			} else {
+				return
+			}
+		}
 
-// 解析网页数据,下载文件
-// func main() {
-func ResolverNet(cont context.Context) (err error) {
-	// 创建下载目录
-	if err := os.MkdirAll(downloadDir, os.ModePerm); err != nil {
-		fmt.Printf("创建下载目录时出错: %v\n", err)
-		return nil
 	}
+	return
+}
 
+// ResolverNet 解析网页数据,下载文件
+func ResolverNet(_ context.Context) (err error) {
+	if err = createPath([]string{excelDir}); err != nil {
+		return
+	}
 	// 创建 chromedp 执行上下文
-	options := []chromedp.ExecAllocatorOption{
+	options := append(chromedp.DefaultExecAllocatorOptions[:3],
+		//关闭无头模式
 		chromedp.Flag("headless", false),
 		chromedp.Flag("disable-blink-features", "AutomationControlled"),
 		chromedp.UserAgent(`Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.80 Safari/537.36`),
-		// 设置了但并不生效,直接从默认下载路径读取过来
-		//chromedp.Flag("download.default_directory", downloadDir),
-		//chromedp.Flag("download.prompt_for_download", false), // 不弹出下载对话框
 		chromedp.Flag("safebrowsing.enabled", true), // 启用安全浏览
-		//chromedp.UserDataDir(filepath.Join(downloadDir, "user-data")),
-	}
+	)
+	parentCtx, cancel := chromedp.NewExecAllocator(context.Background(), options...)
 
-	allocCtx, cancel := chromedp.NewExecAllocator(context.Background(), options...)
-	defer cancel()
-	ctx, cancel := chromedp.NewContext(allocCtx)
-	defer cancel()
+	ctx, ctxCancel := chromedp.NewContext(parentCtx)
+	defer func() {
+		cancel()
+		ctxCancel()
+	}()
 
 	// 启动 Chrome 实例
-	if err := chromedp.Run(ctx); err != nil {
-		fmt.Printf("启动 Chrome 实例时出错: %v\n", err)
-		return nil
-	}
-
-	// 设置下载行为
-	/*if err := setDownloadBehavior(ctx); err != nil {
-		fmt.Printf("设置下载路径时出错: %v\n", err)
+	if err = chromedp.Run(ctx); err != nil {
+		utils.FileLog.Error("睿咨得启动 Chrome 实例时出错:", err.Error())
+		fmt.Printf("睿咨得启动 Chrome 实例时出错: %v\n", err)
 		return
-	}*/
+	}
 
 	// 登录操作
-	if err := login(ctx); err != nil {
-		fmt.Printf("登录错误: %v\n", err)
-		return nil
+	if err = login(ctx); err != nil {
+		utils.FileLog.Error("睿咨得登录错误:", err.Error())
+		fmt.Printf("睿咨得登录错误: %v\n", err)
+		return
 	}
-
+	fmt.Printf("登录成功")
 	// 下载数据
-	if err := downloadData(ctx); err != nil {
-		fmt.Printf("数据下载错误: %v\n", err)
-		return nil
+	if err = downloadData(ctx); err != nil {
+		utils.FileLog.Error("睿咨得数据下载错误:", err.Error())
+		fmt.Printf("睿咨得数据下载错误: %v\n", err)
+		return
 	}
-
+	utils.FileLog.Info("睿咨得数据下载完成")
 	fmt.Println("数据下载完成")
-
 	// 解析表格 读取数据
 	fileResolver()
-
-	return nil
+	return
 }
 
+//	func setFolderPermissions(path string) error {
+//		// 获取当前用户的信息
+//		currentUser, err := user.Current()
+//		if err != nil {
+//			return err
+//		}
+//
+//		// 设置权限
+//		err = os.Chmod(path, 0755)
+//		if err != nil {
+//			return err
+//		}
+//
+//		// 获取文件夹的安全描述符
+//		handle, err := syscall.Open(path, syscall.GENERIC_READ|syscall.GENERIC_WRITE, 0)
+//		if err != nil {
+//			return err
+//		}
+//		defer syscall.CloseHandle(handle)
+//
+//		var securityDescriptor *syscall.SecurityDescriptor
+//		err = syscall.GetSecurityInfo(
+//			handle,
+//			syscall.SE_FILE_OBJECT,
+//			syscall.DACL_SECURITY_INFORMATION,
+//			nil,
+//			nil,
+//			&securityDescriptor,
+//			nil,
+//		)
+//		if err != nil {
+//			return err
+//		}
+//
+//		// 添加当前用户的写权限
+//		userSID, err := syscall.StringToSid(currentUser.Uid)
+//		if err != nil {
+//			return err
+//		}
+//
+//		ace := &syscall.ACE{
+//			Mask:     syscall.GENERIC_ALL,
+//			Sid:      userSID,
+//			Flags:    syscall.INHERITED_ACE | syscall.OBJECT_INHERIT_ACE | syscall.CONTAINER_INHERIT_ACE,
+//			Type:     syscall.ACCESS_ALLOWED_ACE_TYPE,
+//			Inherits: true,
+//		}
+//
+//		dacl, err := securityDescriptor.Dacl()
+//		if err != nil {
+//			return err
+//		}
+//
+//		dacl.AddAce(ace)
+//		err = syscall.SetSecurityInfo(
+//			handle,
+//			syscall.SE_FILE_OBJECT,
+//			syscall.DACL_SECURITY_INFORMATION,
+//			nil,
+//			nil,
+//			dacl,
+//			nil,
+//		)
+//		if err != nil {
+//			return err
+//		}
+//
+//		return nil
+//	}
+//
 // 解析本地文件
 func fileResolver() {
 	//func main() {
@@ -232,12 +315,13 @@ func fileResolver() {
 		var fileName string
 		// 解析表格
 		fileName = tableName + "_" + utils.GetCurrentYearMonth() + ".xlsx"
-		filePath := filepath.Join(downloadDir, fileName)
+		filePath := filepath.Join(excelDir, fileName)
 
 		// 打开 Excel 文件
 		f, err := excelize.OpenFile(filePath)
 		if err != nil {
-			log.Fatalf("无法打开 Excel 文件: %v", err)
+			utils.FileLog.Error("无法打开 Excel 文件: %v", err)
+			return
 		}
 
 		// 获取所有工作表
@@ -249,7 +333,7 @@ func fileResolver() {
 			// 获取工作表的最大行数
 			maxRow, err := f.GetRows(sheetName) // 直接获取所有行数据
 			if err != nil {
-				log.Fatalf("获取工作表数据时出错: %v", err)
+				utils.FileLog.Error("获取工作表数据时出错: %v", err)
 				continue
 			}
 
@@ -294,11 +378,12 @@ func fileResolver() {
 
 				processor, err := GetProcessor(tableName, sheetName)
 				if err != nil {
+					utils.FileLog.Error("无法获取处理器: %v", err)
 					continue
 				}
 				baseFromRzdDataList, err := processor.Process(tableName, sheetName, rowIndex, rowData)
 				if err != nil {
-					log.Printf("processor.Process err: %v", err)
+					utils.FileLog.Error("处理数据失败: %v", err)
 					return
 				}
 				indexData = append(indexData, baseFromRzdDataList...)
@@ -319,14 +404,14 @@ func fileResolver() {
 					// 转换成json
 					marshal, err := json.Marshal(batchData)
 					if err != nil {
-						log.Printf("json.Marshal err: %v", err)
+						utils.FileLog.Error("json.Marshal err: %v", err)
 						return
 					}
 
 					// 发送 HTTP POST 请求
 					_, err = utils.HttpPostRequest(utils.EDB_LIB_URL+utils.ADD_BATCH_RZD_DATA, string(marshal), "application/json")
 					if err != nil {
-						log.Printf("postEdbLib err: %v", err)
+						utils.FileLog.Error("postEdbLib err: %v", err)
 						return
 					}
 				}
@@ -342,13 +427,13 @@ func fileResolver() {
 				postEdbLib, err := httpRequestFill(paramsLib, utils.GET_RZD_EDB_INFO_BY_INDEX_CODE)
 				if err != nil {
 					// 有错误就不继续执行
-					log.Printf("postEdbLib err: %v", err)
+					utils.FileLog.Error("postEdbLib err: %v", err)
 					continue
 				}
 				var requestResponse models.RequestResponse[models.EdbInfo]
 				err = json.Unmarshal(postEdbLib, &requestResponse)
 				if err != nil {
-					log.Printf("postEdbLib err: %v", err)
+					utils.FileLog.Error("postEdbLib err: %v", err)
 					continue
 				}
 
@@ -370,13 +455,13 @@ func fileResolver() {
 				// 转换成json
 				marshal, err := json.Marshal(edbDataList)
 				if err != nil {
-					log.Printf("postEdbLib err: %v", err)
+					utils.FileLog.Error("postEdbLib err: %v", err)
 					return
 				}
 				_, err = utils.HttpPostRequest(utils.EDB_LIB_URL+utils.ADD_BATCH_RZD_EDB_DATA, string(marshal), "application/json")
 				if err != nil {
 					// 有错误就不继续执行
-					log.Printf("postEdbLib err: %v", err)
+					utils.FileLog.Error("postEdbLib err: %v", err)
 					return
 				}
 			}
@@ -386,14 +471,17 @@ func fileResolver() {
 }
 
 func login(ctx context.Context) error {
-
+	if rzdLoginPath == "" {
+		return errors.New("睿咨得登录页面地址未配置")
+	}
 	return chromedp.Run(ctx,
 		chromedp.Navigate(rzdLoginPath),
+		chromedp.WaitVisible(`body`, chromedp.ByQuery),
 		chromedp.SetValue(`input[id="Username"]`, utils.RZD_USERNAME, chromedp.ByQuery),
 		chromedp.SetValue(`input[id="Password"]`, utils.RZD_PASSWORD, chromedp.ByQuery),
 		chromedp.WaitEnabled(`//button[text()='Login']`, chromedp.BySearch),
-		chromedp.Click(`//button[text()='Login']`, chromedp.BySearch),
 		chromedp.Sleep(5*time.Second),
+		chromedp.Click(`//button[text()='Login']`, chromedp.BySearch),
 
 		// 等待并点击登录后页面的链接
 		/*chromedp.WaitVisible(`a[href="/home"]`, chromedp.ByQuery), // 等待 Analytics Library 链接可见

+ 60 - 60
services/ruizide/processor_business_logic.go

@@ -33,7 +33,7 @@ var classifyMap = map[string]string{
 type RoadIndexProcessor struct{}
 
 func (p *RoadIndexProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing AnalyticsLibrary...")
+	utils.FileLog.Info("Processing AnalyticsLibrary...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -51,7 +51,7 @@ func (p *RoadIndexProcessor) Process(tableName string, sheetName string, rowInde
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -99,14 +99,14 @@ func (p *RoadIndexProcessor) Process(tableName string, sheetName string, rowInde
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("dataList: %v", dataList)
+	utils.FileLog.Info("dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -116,7 +116,7 @@ func (p *RoadIndexProcessor) Process(tableName string, sheetName string, rowInde
 type RoadActiveFleetProcessor struct{}
 
 func (p *RoadActiveFleetProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing RoadActiveFleet...")
+	utils.FileLog.Info("Processing RoadActiveFleet...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -134,7 +134,7 @@ func (p *RoadActiveFleetProcessor) Process(tableName string, sheetName string, r
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -178,14 +178,14 @@ func (p *RoadActiveFleetProcessor) Process(tableName string, sheetName string, r
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("RoadActiveFleetProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("RoadActiveFleetProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("RoadActiveFleetProcessor dataList: %v", dataList)
+	utils.FileLog.Info("RoadActiveFleetProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -195,7 +195,7 @@ func (p *RoadActiveFleetProcessor) Process(tableName string, sheetName string, r
 type AviationIndexProcessor struct{}
 
 func (p *AviationIndexProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing AviationIndexProcessor...")
+	utils.FileLog.Info("Processing AviationIndexProcessor...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -213,7 +213,7 @@ func (p *AviationIndexProcessor) Process(tableName string, sheetName string, row
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -257,14 +257,14 @@ func (p *AviationIndexProcessor) Process(tableName string, sheetName string, row
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("AviationIndexProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("AviationIndexProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("AviationIndexProcessor dataList: %v", dataList)
+	utils.FileLog.Info("AviationIndexProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -274,7 +274,7 @@ func (p *AviationIndexProcessor) Process(tableName string, sheetName string, row
 type AviationActiveFleetProcessor struct{}
 
 func (p *AviationActiveFleetProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing AviationActiveFleetProcessor...")
+	utils.FileLog.Info("Processing AviationActiveFleetProcessor...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -292,7 +292,7 @@ func (p *AviationActiveFleetProcessor) Process(tableName string, sheetName strin
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -336,14 +336,14 @@ func (p *AviationActiveFleetProcessor) Process(tableName string, sheetName strin
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("AviationActiveFleetProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("AviationActiveFleetProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("AviationActiveFleetProcessor dataList: %v", dataList)
+	utils.FileLog.Info("AviationActiveFleetProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -353,7 +353,7 @@ func (p *AviationActiveFleetProcessor) Process(tableName string, sheetName strin
 type DemandGasolineProcessor struct{}
 
 func (p *DemandGasolineProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing DemandGasolineProcessor...")
+	utils.FileLog.Info("Processing DemandGasolineProcessor...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -371,7 +371,7 @@ func (p *DemandGasolineProcessor) Process(tableName string, sheetName string, ro
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -426,14 +426,14 @@ func (p *DemandGasolineProcessor) Process(tableName string, sheetName string, ro
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandGasolineProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("DemandGasolineProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandGasolineProcessor dataList: %v", dataList)
+	utils.FileLog.Info("DemandGasolineProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -443,7 +443,7 @@ func (p *DemandGasolineProcessor) Process(tableName string, sheetName string, ro
 type DemandDieselProcessor struct{}
 
 func (p *DemandDieselProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing DemandDieselProcessor...")
+	utils.FileLog.Info("Processing DemandDieselProcessor...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -461,7 +461,7 @@ func (p *DemandDieselProcessor) Process(tableName string, sheetName string, rowI
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -505,14 +505,14 @@ func (p *DemandDieselProcessor) Process(tableName string, sheetName string, rowI
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandDieselProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("DemandDieselProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandDieselProcessor dataList: %v", dataList)
+	utils.FileLog.Info("DemandDieselProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -522,7 +522,7 @@ func (p *DemandDieselProcessor) Process(tableName string, sheetName string, rowI
 type DemandJetFuelProcessor struct{}
 
 func (p *DemandJetFuelProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing DemandJetFuelProcessor...")
+	utils.FileLog.Info("Processing DemandJetFuelProcessor...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -540,7 +540,7 @@ func (p *DemandJetFuelProcessor) Process(tableName string, sheetName string, row
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -584,14 +584,14 @@ func (p *DemandJetFuelProcessor) Process(tableName string, sheetName string, row
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandJetFuelProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("DemandJetFuelProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandJetFuelProcessor dataList: %v", dataList)
+	utils.FileLog.Info("DemandJetFuelProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -601,7 +601,7 @@ func (p *DemandJetFuelProcessor) Process(tableName string, sheetName string, row
 type DemandMaritimeBunkerProcessor struct{}
 
 func (p *DemandMaritimeBunkerProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing DemandMaritimeBunkerProcessor...")
+	utils.FileLog.Info("Processing DemandMaritimeBunkerProcessor...")
 	if tableName == "Content" {
 		return nil, nil
 	}
@@ -619,7 +619,7 @@ func (p *DemandMaritimeBunkerProcessor) Process(tableName string, sheetName stri
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -663,14 +663,14 @@ func (p *DemandMaritimeBunkerProcessor) Process(tableName string, sheetName stri
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandMaritimeBunkerProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("DemandMaritimeBunkerProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("DemandMaritimeBunkerProcessor dataList: %v", dataList)
+	utils.FileLog.Info("DemandMaritimeBunkerProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -680,7 +680,7 @@ func (p *DemandMaritimeBunkerProcessor) Process(tableName string, sheetName stri
 type SupplyRevisionAnalysisChartOneProcessor struct{}
 
 func (p *SupplyRevisionAnalysisChartOneProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing SupplyRevisionAnalysisChartOne...")
+	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartOne...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -695,7 +695,7 @@ func (p *SupplyRevisionAnalysisChartOneProcessor) Process(tableName string, shee
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -735,14 +735,14 @@ func (p *SupplyRevisionAnalysisChartOneProcessor) Process(tableName string, shee
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartOneProcessor dataList: %v", dataList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartOneProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -752,7 +752,7 @@ func (p *SupplyRevisionAnalysisChartOneProcessor) Process(tableName string, shee
 type SupplyRevisionAnalysisChartTwoProcessor struct{}
 
 func (p *SupplyRevisionAnalysisChartTwoProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing SupplyRevisionAnalysisChartTwoProcessor...")
+	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartTwoProcessor...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -766,7 +766,7 @@ func (p *SupplyRevisionAnalysisChartTwoProcessor) Process(tableName string, shee
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -821,14 +821,14 @@ func (p *SupplyRevisionAnalysisChartTwoProcessor) Process(tableName string, shee
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartTwoProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartTwoProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartTwoProcessor dataList: %v", dataList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartTwoProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -838,7 +838,7 @@ func (p *SupplyRevisionAnalysisChartTwoProcessor) Process(tableName string, shee
 type SupplyRevisionAnalysisChartThreeProcessor struct{}
 
 func (p *SupplyRevisionAnalysisChartThreeProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing SupplyRevisionAnalysisChartThreeProcessor...")
+	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartThreeProcessor...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -853,7 +853,7 @@ func (p *SupplyRevisionAnalysisChartThreeProcessor) Process(tableName string, sh
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -893,14 +893,14 @@ func (p *SupplyRevisionAnalysisChartThreeProcessor) Process(tableName string, sh
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartThreeProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartThreeProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartThreeProcessor dataList: %v", dataList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartThreeProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -910,7 +910,7 @@ func (p *SupplyRevisionAnalysisChartThreeProcessor) Process(tableName string, sh
 type SupplyRevisionAnalysisChartFourProcessor struct{}
 
 func (p *SupplyRevisionAnalysisChartFourProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing SupplyRevisionAnalysisChartFourProcessor...")
+	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartFourProcessor...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -924,7 +924,7 @@ func (p *SupplyRevisionAnalysisChartFourProcessor) Process(tableName string, she
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -979,14 +979,14 @@ func (p *SupplyRevisionAnalysisChartFourProcessor) Process(tableName string, she
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartFourProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartFourProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartFourProcessor dataList: %v", dataList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartFourProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -996,7 +996,7 @@ func (p *SupplyRevisionAnalysisChartFourProcessor) Process(tableName string, she
 type SupplyRevisionAnalysisChartFiveProcessor struct{}
 
 func (p *SupplyRevisionAnalysisChartFiveProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing SupplyRevisionAnalysisChartFiveProcessor...")
+	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartFiveProcessor...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -1010,7 +1010,7 @@ func (p *SupplyRevisionAnalysisChartFiveProcessor) Process(tableName string, she
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -1066,14 +1066,14 @@ func (p *SupplyRevisionAnalysisChartFiveProcessor) Process(tableName string, she
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartFiveProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartFiveProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartFiveProcessor dataList: %v", dataList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartFiveProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -1083,7 +1083,7 @@ func (p *SupplyRevisionAnalysisChartFiveProcessor) Process(tableName string, she
 type SupplyRevisionAnalysisChartSixProcessor struct{}
 
 func (p *SupplyRevisionAnalysisChartSixProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing SupplyRevisionAnalysisChartSixProcessor...")
+	utils.FileLog.Info("Processing SupplyRevisionAnalysisChartSixProcessor...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -1098,7 +1098,7 @@ func (p *SupplyRevisionAnalysisChartSixProcessor) Process(tableName string, shee
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -1139,14 +1139,14 @@ func (p *SupplyRevisionAnalysisChartSixProcessor) Process(tableName string, shee
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartSixProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartSixProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("SupplyRevisionAnalysisChartSixProcessor dataList: %v", dataList)
+	utils.FileLog.Info("SupplyRevisionAnalysisChartSixProcessor dataList: %v", dataList)
 
 	return dataList, err
 }
@@ -1156,7 +1156,7 @@ func (p *SupplyRevisionAnalysisChartSixProcessor) Process(tableName string, shee
 type OilSupplyAnalysisChartOneProcessor struct{}
 
 func (p *OilSupplyAnalysisChartOneProcessor) Process(tableName string, sheetName string, rowIndex int, rowData []string) ([]models.BaseFromRzdData, error) {
-	logs.Info("Processing OilSupplyAnalysisChartOne...")
+	utils.FileLog.Info("Processing OilSupplyAnalysisChartOne...")
 	if rowIndex < 1 {
 		return nil, nil
 	}
@@ -1171,7 +1171,7 @@ func (p *OilSupplyAnalysisChartOneProcessor) Process(tableName string, sheetName
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("classifyId: %v", classifyId)
+	utils.FileLog.Info("classifyId: %v", classifyId)
 
 	// step_2: 指标
 	// 指标名称
@@ -1206,14 +1206,14 @@ func (p *OilSupplyAnalysisChartOneProcessor) Process(tableName string, sheetName
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("OilSupplyAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
+	utils.FileLog.Info("OilSupplyAnalysisChartOneProcessor indexInfoList: %v", indexInfoList)
 
 	// step_3: 指标数据
 	dataList, err := dealData(indexInfoList)
 	if err != nil {
 		return nil, err
 	}
-	logs.Info("OilSupplyAnalysisChartOneProcessor dataList: %v", dataList)
+	utils.FileLog.Info("OilSupplyAnalysisChartOneProcessor dataList: %v", dataList)
 
 	return dataList, err
 }

+ 6 - 2
services/task.go

@@ -67,8 +67,12 @@ func Task() {
 	}
 
 	if utils.RZD_OPEN == "1" {
-		rzdData := task.NewTask("refreshRzdData", "0 0 1 * * 4", ruizide.ResolverNet) // 睿姿得数据
-
+		// 各品种周报-默认每周五17-19点每隔半小时
+		rzdTaskTime := utils.RZD_TASK_TIME
+		if rzdTaskTime == "" {
+			rzdTaskTime = "0 0 1 * * 4"
+		}
+		rzdData := task.NewTask("refreshRzdData", rzdTaskTime, ruizide.ResolverNet) // 睿姿得数据
 		task.AddTask("睿咨得数据", rzdData)
 	}
 

+ 4 - 0
utils/config.go

@@ -83,11 +83,13 @@ var (
 
 // 睿姿得数据
 var (
+	RZD_TASK_TIME     string
 	RZD_USERNAME      string
 	RZD_PASSWORD      string
 	RZD_EXCEL_PATH    string
 	RZD_OPEN          string
 	RZD_DOWNLOAD_PATH string
+	RZD_LOGIN_PATH    string
 )
 
 // CCF化纤信息
@@ -248,11 +250,13 @@ func init() {
 	}
 
 	{
+		RZD_TASK_TIME = config["rzd_task_time"]
 		RZD_USERNAME = config["rzd_username"]
 		RZD_PASSWORD = config["rzd_password"]
 		RZD_EXCEL_PATH = config["rzd_excel_path"]
 		RZD_OPEN = config["rzd_open"]
 		RZD_DOWNLOAD_PATH = config["rzd_download_path"]
+		RZD_LOGIN_PATH = config["rzd_login_path"]
 	}
 
 	// 隆众数据

+ 2 - 4
utils/http_request.go

@@ -3,7 +3,6 @@ package utils
 import (
 	"encoding/json"
 
-	"fmt"
 	"io/ioutil"
 	"net/http"
 	"strings"
@@ -24,7 +23,6 @@ func PostEdbLibRequest(param map[string]interface{}, method string) (result []by
 }
 
 func HttpPostRequest(url, postData string, params ...string) ([]byte, error) {
-	fmt.Println("HttpPost Url:" + url)
 	body := ioutil.NopCloser(strings.NewReader(postData))
 	client := &http.Client{}
 	req, err := http.NewRequest("POST", url, body)
@@ -39,13 +37,13 @@ func HttpPostRequest(url, postData string, params ...string) ([]byte, error) {
 	req.Header.Set("authorization", MD5(APP_EDB_LIB_NAME_EN+EDB_LIB_Md5_KEY))
 	resp, err := client.Do(req)
 	if err != nil {
-		fmt.Println("client.Do err:" + err.Error())
+		FileLog.Error("client.Do err:" + err.Error())
 		return nil, err
 	}
 	defer resp.Body.Close()
 	b, err := ioutil.ReadAll(resp.Body)
 	if err != nil {
-		fmt.Println("HttpPost:" + string(b))
+		FileLog.Error("HttpPost:" + string(b))
 	}
 	return b, err
 }