From e591950952779bdb904def1be2958d1d0a9f61d6 Mon Sep 17 00:00:00 2001 From: huanghai <10402852@qq.com> Date: Mon, 20 Jul 2020 16:17:00 +0800 Subject: [PATCH] 'commit' --- dsBaseRpc/Config/Config.ini | 8 ++-- dsBaseRpc/DataExchange/DataExchange.go | 43 +++++++++++++++++-- .../SysLoginpersonDao/SysLoginpersonDao.go | 2 +- dsBaseRpc/Utils/ConfigUtil/ConfigUtil.go | 16 ++++--- 4 files changed, 56 insertions(+), 13 deletions(-) diff --git a/dsBaseRpc/Config/Config.ini b/dsBaseRpc/Config/Config.ini index f6bc271f..85d4ec3f 100644 --- a/dsBaseRpc/Config/Config.ini +++ b/dsBaseRpc/Config/Config.ini @@ -32,6 +32,8 @@ KafkaAddress = server.dsmin.com:9092 # 数据汇集的地址 [dataExchange] -url = http://10.10.14.239:9009/v1/dataex/DataexSet -AuthToken = DSDataex_Token_eb4ab2fea87161dc08fa794a648584c4 -SystemId = BASE_GO +host = http://10.10.14.239:9009 +exchangeUrl = /v1/dataex/DataexSet +SystemAuthUrl = /v1/dataex/SystemAuth +SystemId = BASE_GO +SystemKey = 96fa57b8-ac44-11ea-bd48-f48e38f73cf7 diff --git a/dsBaseRpc/DataExchange/DataExchange.go b/dsBaseRpc/DataExchange/DataExchange.go index 3dc9d0ff..790fd245 100644 --- a/dsBaseRpc/DataExchange/DataExchange.go +++ b/dsBaseRpc/DataExchange/DataExchange.go @@ -2,12 +2,14 @@ package DataExchange import ( "bytes" + "crypto/md5" "dsBaseRpc/Utils/CommonUtil" "dsBaseRpc/Utils/ConfigUtil" "dsBaseRpc/Utils/DbUtil" "dsBaseRpc/Utils/FileUtil" "encoding/json" "fmt" + "io" "io/ioutil" "net/http" "os" @@ -234,16 +236,51 @@ func UploadData() int { return postCount } +// 获取签名用的结构体 +type authStruct struct { + AuthTime string `json:"auth_time"` + SystemId string `json:"system_id"` + SystemToken string `json:"system_token"` +} + /** 功能:将数据批量上报到汇集中心 作者:黄海 时间:2020-07-17 */ func PostToServer(t tableStruct, list []map[string]interface{}) bool { + //(1)计算出system_token=MD5.hash(MD5.hash(system_id+auth_time)+system_key) + var as authStruct + as.AuthTime=CommonUtil.GetCurrentTime() + as.SystemId=ConfigUtil.DataExchangeSystemId + //计算 md5 + w := md5.New() + io.WriteString(w, as.SystemId+as.AuthTime) + //将str写入到w中 + md5str := fmt.Sprintf("%x", w.Sum(nil)) + + w = md5.New() + io.WriteString(w, md5str+ConfigUtil.DataExchangeSystemKey) + //将str写入到w中 + md5str= fmt.Sprintf("%x", w.Sum(nil)) + //系统token + as.SystemToken=md5str + + //(2)根据system_token换取authToken + jsonBytes, err := json.Marshal(as) + if err != nil { + fmt.Println(CommonUtil.GetCurrentTime() +err.Error()) + return false + } + p := httpDo("POST", ConfigUtil.DataExchangeSystemAuthUrl, string(jsonBytes)) + if !p.Success { + fmt.Println(CommonUtil.GetCurrentTime() +"获取认证签名失败!") + return false + } //上报到Http Api--->Body--->Post var ps postStruct ps.DataSource = t.DataSource - ps.AuthToken = ConfigUtil.DataExchangeAuthToken + ps.AuthToken =p.Message //p.Message中记录了authToken ps.SystemId = ConfigUtil.DataExchangeSystemId var dsMap = make([]dataStruct, 0) for k := range list { @@ -263,10 +300,10 @@ func PostToServer(t tableStruct, list []map[string]interface{}) bool { } ps.Datas = dsMap //将Struct转为json - jsonBytes, _ := json.Marshal(ps) + jsonBytes, _ = json.Marshal(ps) msg := string(jsonBytes) //提交到汇集中心 - p := httpDo("POST", ConfigUtil.DataExchangeUrl, msg) + p = httpDo("POST", ConfigUtil.DataExchangeUrl, msg) if !p.Success { fmt.Println(CommonUtil.GetCurrentTime() + " 同步:上报到数据汇集中心失败,将休息5秒后重试!错误原因:" + p.Message) time.Sleep(5 * 1e9) diff --git a/dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao/SysLoginpersonDao.go b/dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao/SysLoginpersonDao.go index 78472159..8f583517 100644 --- a/dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao/SysLoginpersonDao.go +++ b/dsBaseRpc/RpcService/SysLoginperson/SysLoginpersonDao/SysLoginpersonDao.go @@ -158,7 +158,7 @@ func PageAreaManager(in *SysLoginpersonProto.AreaManagerArg) ([]map[string]inter var limit = int(in.Limit) var offset = int((in.Page - 1) * in.Limit) //主管区域码下有哪些区域 - sql := "select area_code from t_gov_area where master_code=?" + sql := "select area_code from t_gov_area where master_code=?" list, _ := db.SQL(sql, in.AreaCode).Query().List() areaCodes := make([]string, 0) for i := range list { diff --git a/dsBaseRpc/Utils/ConfigUtil/ConfigUtil.go b/dsBaseRpc/Utils/ConfigUtil/ConfigUtil.go index dbc003d5..37e94fe0 100644 --- a/dsBaseRpc/Utils/ConfigUtil/ConfigUtil.go +++ b/dsBaseRpc/Utils/ConfigUtil/ConfigUtil.go @@ -40,9 +40,11 @@ var ( KafkaAddress string //数据汇集中心地址 - DataExchangeUrl string - DataExchangeAuthToken string - DataExchangeSystemId string + DataExchangeHost string + DataExchangeUrl string + DataExchangeSystemAuthUrl string + DataExchangeSystemId string + DataExchangeSystemKey string ) func init() { @@ -99,9 +101,11 @@ func init() { KafkaAddress = iniParser.GetString("kafka", "KafkaAddress") //数据汇集中心地址 - DataExchangeUrl=iniParser.GetString("dataExchange","url") - DataExchangeAuthToken =iniParser.GetString("dataExchange","AuthToken") - DataExchangeSystemId =iniParser.GetString("dataExchange","SystemId") + DataExchangeHost = iniParser.GetString("dataExchange", "host") + DataExchangeUrl = DataExchangeHost + iniParser.GetString("dataExchange", "exchangeUrl") + DataExchangeSystemAuthUrl = DataExchangeHost + iniParser.GetString("dataExchange", "SystemAuthUrl") + DataExchangeSystemId = iniParser.GetString("dataExchange", "SystemId") + DataExchangeSystemKey = iniParser.GetString("dataExchange", "SystemKey") } type IniParser struct {