goProject/trunk/framework/managecenterMgr/resourceVersion.go

101 lines
3.0 KiB
Go
Raw Normal View History

2025-01-06 16:01:02 +08:00
package managecenterMgr
import (
"encoding/json"
"errors"
"fmt"
"Framework/managecenterModel"
. "Framework/managecenterModel"
"goutil/logUtil"
"goutil/webUtil"
)
var (
resourceVersionList = make([]*ResourceVersion, 128)
resourceVersionHash string
)
// 重新加载资源列表
func reloadResourceVersion(isInit bool) error {
//logUtil.DebugLog("开始刷新资源列表")
// 连接服务器,以获取数据
url := getManageCenterUrl("/API/ResourceVersionList.ashx")
// 定义请求参数
postDict := make(map[string]string)
postDict["HashValue"] = resourceVersionHash
//请求url,请求头
header := webUtil.GetFormHeader()
transport := webUtil.NewTransport()
transport.DisableKeepAlives = true
transport = webUtil.GetTimeoutTransport(transport, 30)
statusCode, returnBytes, err := webUtil.PostMapData(url, postDict, header, transport)
//statusCode, returnBytes, err := webUtil.PostMapData(url, postDict, header, nil)
if err != nil {
logUtil.ErrorLog(fmt.Sprintf("获取资源列表出错url:%s,错误信息为:%s", url, err))
return err
}
if statusCode != 200 {
logUtil.ErrorLog(fmt.Sprintf("获取资源列表出错url:%s,错误码为:%d", url, statusCode))
return err
}
// 解析返回值
returnObj := new(ReturnObject)
if err = json.Unmarshal(returnBytes, &returnObj); err != nil {
logUtil.ErrorLog(fmt.Sprintf("获取资源列表出错,反序列化返回值出错,错误信息为:%s, str:%s", err, string(returnBytes)))
return err
}
// 判断返回状态是否为成功
if returnObj.Code != 0 {
// 数据没有变化,所以没有获取到新的数据,不能算错误。
if returnObj.Code == 47 || returnObj.Message == "DataNotChanged" {
//如果本地集合为空且数据又没变化时重新初始化一下本地hash值
if len(resourceVersionList) == 0 {
resourceVersionHash = ""
}
return nil
} else {
msg := fmt.Sprintf("获取资源列表出错,返回状态:%d信息为%s", returnObj.Code, returnObj.Message)
logUtil.ErrorLog(msg)
return errors.New(msg)
}
}
// 解析Data
tmpResourceVersionList := make([]*ResourceVersion, 0, 128)
if data, ok := returnObj.Data.(string); !ok {
msg := "获取资源列表出错返回的数据不是string类型"
logUtil.ErrorLog(msg)
return errors.New(msg)
} else {
if err = json.Unmarshal([]byte(data), &tmpResourceVersionList); err != nil {
logUtil.ErrorLog(fmt.Sprintf("获取资源列表出错,反序列化数据出错,错误信息为:%s", err))
return err
}
}
//logUtil.DebugLog(fmt.Sprintf("刷新资源信息结束,资源数量:%d", len(tmpResourceVersionList)))
// 赋值给最终的partnerMap
resourceVersionList = tmpResourceVersionList
resourceVersionHash = returnObj.HashValue
//通知变更
mcDataChangeCallBack(managecenterModel.ResourceVersionData, isInit)
return nil
}
// 获取资源包列表
// 返回值:
// 获取资源包列表
func GetResourceVersionList() []*ResourceVersion {
return resourceVersionList
}