Browse Source

fix:钢联化工添加api检查

zqbao 7 months ago
parent
commit
80033f7b56

+ 31 - 0
controllers/base_from_mysteel_chemical.go

@@ -183,6 +183,37 @@ func (this *MySteelChemicalController) QueryRefresh() {
 	br.Msg = "获取成功"
 }
 
+// @Title 检查钢联化工的api是否可用
+// @Description 检查钢联化工的api是否可用
+// @Success 200 {object} models.HandleMysteelIndexResp
+// @router /handle/mysteel/api/check [post]
+func (this *MySteelChemicalController) ApiHealthCheck() {
+	br := new(models.BaseResponse).Init()
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+
+	ok, err := services.ApiCheck()
+	if err != nil {
+		br.Msg = "处理失败"
+		br.ErrMsg = "处理失败,Err:" + err.Error()
+		utils.FileLog.Info("钢联化工api接口不可用,Err:", err.Error())
+		return
+	}
+
+	resp := new(models.MysteelChemicalAPiCheck)
+	resp.IsEnable = ok
+	if !ok {
+		resp.ErrMsg = "token已过期或已欠费"
+	}
+
+	br.Data = resp
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "处理成功"
+}
+
 // @Title 处理钢联指标的接口
 // @Description 处理钢联指标的接口
 // @Success 200 {object} models.HandleMysteelIndexResp

+ 5 - 0
models/base_from_mysteel_chemical.go

@@ -228,6 +228,11 @@ type BaseFromMysteelChemicalIndex struct {
 	TerminalCode                      string    `description:"终端编码"`
 }
 
+type MysteelChemicalAPiCheck struct {
+	IsEnable bool
+	ErrMsg   string
+}
+
 // GetIndexRefreshAllByMergeFile 根据合并文件去分组查询需要刷新的文件
 func (m *BaseFromMysteelChemicalIndex) GetIndexRefreshAllByMergeFile() (items []*BaseFromMysteelChemicalIndex, err error) {
 	o := orm.NewOrm()

+ 9 - 0
routers/commentsRouter.go

@@ -979,6 +979,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_index_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:MySteelChemicalController"],
+        beego.ControllerComments{
+            Method: "ApiHealthCheck",
+            Router: `/handle/mysteel/api/check`,
+            AllowHTTPMethods: []string{"post"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_index_lib/controllers:MySteelChemicalController"] = append(beego.GlobalControllerRouter["eta/eta_index_lib/controllers:MySteelChemicalController"],
         beego.ControllerComments{
             Method: "HandleMysteelIndex",

+ 21 - 4
services/base_from_mysteel_chemical.go

@@ -51,6 +51,23 @@ func HandleApiMysteelIndex(req *models.HandleMysteelIndexResp) (errMsg string, e
 	return
 }
 
+func ApiCheck() (ok bool, err error) {
+	item, err := getPageIndexInfoMap(1, 1, false)
+	if err != nil {
+		if err.Error() == "406" {
+			return false, nil
+		}
+		if item != nil && item.Code == "100006" {
+			return false, nil
+		}
+		return
+	}
+	if item != nil && item.Code == "100006" {
+		return false, nil
+	}
+	return true, nil
+}
+
 func HandleApiIndex(indexCodes []string) (errMsg string, err error) {
 	if len(indexCodes) == 0 {
 		return
@@ -536,7 +553,7 @@ func GetMySteelChemicalIndexNameMap() (indexNameMap map[string]*models.MySteelCh
 		err = errors.New("钢联接口token未配置")
 		return
 	}
-	item, err := getPageIndexInfoMap(1, 200)
+	item, err := getPageIndexInfoMap(1, 200, true)
 	if err != nil {
 		return
 	}
@@ -547,7 +564,7 @@ func GetMySteelChemicalIndexNameMap() (indexNameMap map[string]*models.MySteelCh
 	// 如果总条数大于200,则继续获取
 	if item.Data.Total > 200 || item.Data.Pages > 1 {
 		for i := 2; i <= item.Data.Pages; i++ {
-			item, err = getPageIndexInfoMap(i, 200)
+			item, err = getPageIndexInfoMap(i, 200, true)
 			if err != nil {
 				return
 			}
@@ -560,11 +577,11 @@ func GetMySteelChemicalIndexNameMap() (indexNameMap map[string]*models.MySteelCh
 	return
 }
 
-func getPageIndexInfoMap(pageNum, pageSize int) (item *models.MySteelChemicalApiInfoResp, err error) {
+func getPageIndexInfoMap(pageNum, pageSize int, includeInfo bool) (item *models.MySteelChemicalApiInfoResp, err error) {
 	m := new(MySteelChemicalApiInfoBody)
 	m.PageNum = pageNum
 	m.PageSize = pageSize
-	m.IncludeInfo = true
+	m.IncludeInfo = includeInfo
 	postData, er := json.Marshal(m)
 	if er != nil {
 		err = er