goProject/trunk/framework/managecenterMgr/partner.go
皮蛋13361098506 1b77f62820 初始化项目
2025-01-06 16:01:02 +08:00

159 lines
4.1 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package managecenterMgr
import (
"encoding/json"
"errors"
"fmt"
"Framework/managecenterModel"
. "Framework/managecenterModel"
"goutil/logUtil"
"goutil/webUtil"
)
var (
partnerMap = make(map[int32]*Partner, 128)
partnerHash string
)
// 重新加载合作商
func reloadPartner(isInit bool) error {
//logUtil.DebugLog("开始刷新合作商列表")
// 连接服务器,以获取数据
url := getManageCenterUrl("/API/PartnerList.ashx")
// 定义请求参数
postDict := make(map[string]string)
postDict["HashValue"] = partnerHash
//请求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(partnerMap) == 0 {
partnerHash = ""
}
return nil
} else {
msg := fmt.Sprintf("获取合作商列表出错,返回状态:%d信息为%s", returnObj.Code, returnObj.Message)
logUtil.ErrorLog(msg)
return errors.New(msg)
}
}
// 解析Data
tmpPartnerList := make([]*Partner, 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), &tmpPartnerList); err != nil {
logUtil.ErrorLog(fmt.Sprintf("获取合作商列表出错,反序列化数据出错,错误信息为:%s", err))
return err
}
}
//logUtil.DebugLog(fmt.Sprintf("刷新合作商信息结束,合作商数量:%d", len(tmpPartnerList)))
tmpPartnerMap := make(map[int32]*Partner)
for _, item := range tmpPartnerList {
tmpPartnerMap[item.Id] = item
}
// 赋值给最终的partnerMap
partnerMap = tmpPartnerMap
partnerHash = returnObj.HashValue
//通知变更
mcDataChangeCallBack(managecenterModel.PartnerData, isInit)
return nil
}
// 获取合作商对象列表
// 返回值:
// 合作商对象列表
func GetPartnerList() (partnerList []*Partner) {
for _, item := range partnerMap {
partnerList = append(partnerList, item)
}
return
}
// 根据合作商Id获取合作商对象
// id合作商Id
// 返回值:
// 合作商对象
// 是否存在
func GetPartner(id int32) (partnerObj *Partner, exist bool) {
partnerObj, exist = partnerMap[id]
return
}
// 根据合作商别名获取合作商对象
// alias:合作商别名
// 返回值:
// 合作商对象
// 是否存在
func GetPartnerByAlias(alias string) (partnerObj *Partner, exist bool) {
for _, item := range partnerMap {
if item.Alias == alias {
partnerObj = item
exist = true
return
}
}
return
}
// 获取合作商的其它配置信息
// id:合作商Id
// configKey:其它配置Key
// 返回值
// 配置内容
// 是否存在
// 错误对象
func GetOtherConfigInfo(id int32, configKey string) (configValue string, exist bool, err error) {
partnerObj, exist := GetPartner(id)
if !exist {
return
}
var otherConfigMap map[string]string
otherConfigMap, err = partnerObj.ResolveOtherConfig()
if err != nil {
return
}
configValue, exist = otherConfigMap[configKey]
return
}