|
@@ -1,9 +1,11 @@
|
|
|
package push
|
|
|
|
|
|
import (
|
|
|
+ "bytes"
|
|
|
"encoding/json"
|
|
|
"fmt"
|
|
|
"log"
|
|
|
+ "mongodb"
|
|
|
"net/url"
|
|
|
qutil "qfw/util"
|
|
|
"qfw/util/redis"
|
|
@@ -26,6 +28,46 @@ var (
|
|
|
fields1 = "city,projectname,budget,bidopentime,buyer,publishtime,buyer_type,href,district,bidtype,bidway,bidendtime,docamount,agency,buyerperson,buyertel,projectcode,id,projectId,jybxhref"
|
|
|
fields2 = "city,projectname,bidamount,s_winner,winner_type,buyer,publishtime,buyer_type,href,district,winner_style,bidtype,budget,agency,agency_fee,projectcode,jybxhref,id,projectId"
|
|
|
SE = qutil.SimpleEncrypt{Key: "topJYBX2019"}
|
|
|
+ subMap = map[string]map[string]string{
|
|
|
+ "招标": map[string]string{"0": "3"},
|
|
|
+ "竞谈": map[string]string{"0": "3"},
|
|
|
+ "单一": map[string]string{"0": "3"},
|
|
|
+ "询价": map[string]string{"0": "3"},
|
|
|
+ "竞价": map[string]string{"0": "3"},
|
|
|
+ "邀标": map[string]string{"0": "3"},
|
|
|
+ "论证意见": map[string]string{"1": "2"},
|
|
|
+ "预告": map[string]string{"1": "2"},
|
|
|
+ "预审": map[string]string{"1": "2"},
|
|
|
+ "预审结果": map[string]string{"1": "2"},
|
|
|
+ "需求公示": map[string]string{"1": "2"},
|
|
|
+ "采购意向": map[string]string{"1": "2"},
|
|
|
+ "变更": map[string]string{"2": "5"},
|
|
|
+ "废标": map[string]string{"3": "7"},
|
|
|
+ "流标": map[string]string{"3": "8"},
|
|
|
+ "中标": map[string]string{"3": "10"},
|
|
|
+ "成交": map[string]string{"3": "11"},
|
|
|
+ "结果变更": map[string]string{"3": "11"},
|
|
|
+ "合同": map[string]string{"3": "12"},
|
|
|
+ "验收": map[string]string{"5": "13"},
|
|
|
+ "违规": map[string]string{"5": "14"},
|
|
|
+ }
|
|
|
+ bidtypeMap = map[string]string{
|
|
|
+ "招标": "0",
|
|
|
+ "邀标": "1",
|
|
|
+ "竞谈": "2",
|
|
|
+ "单一": "3",
|
|
|
+ "询价": "4",
|
|
|
+ "竞价": "6",
|
|
|
+ }
|
|
|
+ subtypeMap = map[string]string{
|
|
|
+ "招标": "0",
|
|
|
+ "邀标": "1",
|
|
|
+ "竞谈": "2",
|
|
|
+ "单一": "3",
|
|
|
+ "询价": "4",
|
|
|
+ "其它": "5",
|
|
|
+ "竞价": "6",
|
|
|
+ }
|
|
|
)
|
|
|
|
|
|
func (this *Push) Index() {
|
|
@@ -45,87 +87,91 @@ func (this *Push) DataPush() {
|
|
|
} else {
|
|
|
fields = fields2
|
|
|
}
|
|
|
- if getDataType == "0" {
|
|
|
- query := map[string]interface{}{"appid": appid, "historyId": historyId}
|
|
|
- // fieldMap := map[string]int{}
|
|
|
- // for _, v := range strings.Split(fields, ",") {
|
|
|
- // fieldMap[v] = 1
|
|
|
- // }
|
|
|
- data, ok := MgoSave.Find(dataSource, query, nil, nil, false, -1, -1)
|
|
|
- if ok && data != nil && len(*data) > 0 {
|
|
|
- datasArr := []map[string]interface{}{}
|
|
|
- for _, v := range *data {
|
|
|
- datamap := map[string]interface{}{}
|
|
|
- for _, vv := range strings.Split(fields, ",") {
|
|
|
- if v[vv] != nil {
|
|
|
- datamap[vv] = fmt.Sprint(v[vv])
|
|
|
- } else {
|
|
|
- datamap[vv] = ""
|
|
|
+ if appid == "jyIhxXQQoJAgVZQURLLwRE" {
|
|
|
+ ttCRM(dataSource, historyId)
|
|
|
+ } else {
|
|
|
+ if getDataType == "0" {
|
|
|
+ query := map[string]interface{}{"appid": appid, "historyId": historyId}
|
|
|
+ // fieldMap := map[string]int{}
|
|
|
+ // for _, v := range strings.Split(fields, ",") {
|
|
|
+ // fieldMap[v] = 1
|
|
|
+ // }
|
|
|
+ data, ok := MgoSave.Find(dataSource, query, nil, nil, false, -1, -1)
|
|
|
+ if ok && data != nil && len(*data) > 0 {
|
|
|
+ datasArr := []map[string]interface{}{}
|
|
|
+ for _, v := range *data {
|
|
|
+ datamap := map[string]interface{}{}
|
|
|
+ for _, vv := range strings.Split(fields, ",") {
|
|
|
+ if v[vv] != nil {
|
|
|
+ datamap[vv] = fmt.Sprint(v[vv])
|
|
|
+ } else {
|
|
|
+ datamap[vv] = ""
|
|
|
+ }
|
|
|
}
|
|
|
+ id := qutil.ObjToString(v["id"])
|
|
|
+ datamap["id"] = SE.EncodeString(id)
|
|
|
+ datasArr = append(datasArr, datamap)
|
|
|
}
|
|
|
- id := qutil.ObjToString(v["id"])
|
|
|
- datamap["id"] = SE.EncodeString(id)
|
|
|
- datasArr = append(datasArr, datamap)
|
|
|
+ dataMap["dataList"] = datasArr
|
|
|
}
|
|
|
- dataMap["dataList"] = datasArr
|
|
|
+ } else if getDataType == "1" {
|
|
|
+ dataMap["dataList"] = ExcelParse(dataType)
|
|
|
}
|
|
|
- } else if getDataType == "1" {
|
|
|
- dataMap["dataList"] = ExcelParse(dataType)
|
|
|
- }
|
|
|
- log.Println(dataMap)
|
|
|
- databyte, _ := json.Marshal(dataMap)
|
|
|
- dataStr := string(databyte)
|
|
|
- //
|
|
|
- token := getAccessToken()
|
|
|
- // token := "f9cb92a6-356b-433f-a8bd-09f1deef6d52"
|
|
|
- log.Println("token111:", token)
|
|
|
- //
|
|
|
- tokens := getAccessTokens(token)
|
|
|
- log.Println("token222:", tokens)
|
|
|
- //
|
|
|
- dataStr = strings.ReplaceAll(dataStr, `"`, `\"`)
|
|
|
- data := `{"access_token":"` + tokens + `","postjson":"` + dataStr + `"}`
|
|
|
- log.Println("data:", data)
|
|
|
- dataTypes := ""
|
|
|
- if dataType == "0" {
|
|
|
- dataTypes = "JY_TO_DICT_fishBid2"
|
|
|
- } else {
|
|
|
- dataTypes = "JY_TO_DICT_WinBid2"
|
|
|
- }
|
|
|
- apiurl := "http://111.7.112.55:20110/oppf?method=" + dataTypes + "&appId=1068246&appKey=15c1da231a946f9615ee9d56138952a2&format=json&busiSerial=1&OPCODE=A888888&version=1.0&accessToken=" + tokens + "×tamp=" + fmt.Sprint(time.Now().Format("20060102150405")) + "&sign=abc"
|
|
|
- log.Println("apiurl:", apiurl)
|
|
|
- errstr := ""
|
|
|
- response, err := HttpPostJson(apiurl, data)
|
|
|
- result := map[string]interface{}{}
|
|
|
- if err == nil {
|
|
|
- errstr = string(response)
|
|
|
- resMap := qutil.ObjToMap(string(response))
|
|
|
- result = *resMap
|
|
|
- log.Println("响应信息 ", *resMap)
|
|
|
- if resMap != nil && *resMap != nil {
|
|
|
- respCode := qutil.ObjToString((*resMap)["respCode"])
|
|
|
- if respCode == "00000" {
|
|
|
- log.Println("成功")
|
|
|
- } else {
|
|
|
- log.Println("异常")
|
|
|
+ log.Println(dataMap)
|
|
|
+ databyte, _ := json.Marshal(dataMap)
|
|
|
+ dataStr := string(databyte)
|
|
|
+ //
|
|
|
+ token := getAccessToken()
|
|
|
+ // token := "f9cb92a6-356b-433f-a8bd-09f1deef6d52"
|
|
|
+ log.Println("token111:", token)
|
|
|
+ //
|
|
|
+ tokens := getAccessTokens(token)
|
|
|
+ log.Println("token222:", tokens)
|
|
|
+ //
|
|
|
+ dataStr = strings.ReplaceAll(dataStr, `"`, `\"`)
|
|
|
+ data := `{"access_token":"` + tokens + `","postjson":"` + dataStr + `"}`
|
|
|
+ log.Println("data:", data)
|
|
|
+ dataTypes := ""
|
|
|
+ if dataType == "0" {
|
|
|
+ dataTypes = "JY_TO_DICT_fishBid2"
|
|
|
+ } else {
|
|
|
+ dataTypes = "JY_TO_DICT_WinBid2"
|
|
|
+ }
|
|
|
+ apiurl := "http://111.7.112.55:20110/oppf?method=" + dataTypes + "&appId=1068246&appKey=15c1da231a946f9615ee9d56138952a2&format=json&busiSerial=1&OPCODE=A888888&version=1.0&accessToken=" + tokens + "×tamp=" + fmt.Sprint(time.Now().Format("20060102150405")) + "&sign=abc"
|
|
|
+ log.Println("apiurl:", apiurl)
|
|
|
+ errstr := ""
|
|
|
+ response, err := HttpPostJson(apiurl, data)
|
|
|
+ result := map[string]interface{}{}
|
|
|
+ if err == nil {
|
|
|
+ errstr = string(response)
|
|
|
+ resMap := qutil.ObjToMap(string(response))
|
|
|
+ result = *resMap
|
|
|
+ log.Println("响应信息 ", *resMap)
|
|
|
+ if resMap != nil && *resMap != nil {
|
|
|
+ respCode := qutil.ObjToString((*resMap)["respCode"])
|
|
|
+ if respCode == "00000" {
|
|
|
+ log.Println("成功")
|
|
|
+ } else {
|
|
|
+ log.Println("异常")
|
|
|
+ }
|
|
|
}
|
|
|
+ } else {
|
|
|
+ errstr = "响应失败 " + err.Error()
|
|
|
+ log.Println("响应失败 ", err)
|
|
|
}
|
|
|
- } else {
|
|
|
- errstr = "响应失败 " + err.Error()
|
|
|
- log.Println("响应失败 ", err)
|
|
|
+ MgoSave.Save("dataPushLog", map[string]interface{}{
|
|
|
+ "dataLenth": len(dataMap["dataList"]),
|
|
|
+ "createtime": time.Now().Unix(),
|
|
|
+ "appid": appid,
|
|
|
+ "getDataType": getDataType,
|
|
|
+ "dataType": dataType,
|
|
|
+ "historyId": historyId,
|
|
|
+ "dataSource": dataSource,
|
|
|
+ "result": result,
|
|
|
+ "errMsg": errstr,
|
|
|
+ })
|
|
|
+ this.ServeJson(map[string]interface{}{"errMsg": errstr})
|
|
|
}
|
|
|
- MgoSave.Save("dataPushLog", map[string]interface{}{
|
|
|
- "dataLenth": len(dataMap["dataList"]),
|
|
|
- "createtime": time.Now().Unix(),
|
|
|
- "appid": appid,
|
|
|
- "getDataType": getDataType,
|
|
|
- "dataType": dataType,
|
|
|
- "historyId": historyId,
|
|
|
- "dataSource": dataSource,
|
|
|
- "result": result,
|
|
|
- "errMsg": errstr,
|
|
|
- })
|
|
|
- this.ServeJson(map[string]interface{}{"errMsg": errstr})
|
|
|
}
|
|
|
|
|
|
func ExcelParse(dataType string) []map[string]interface{} {
|
|
@@ -235,3 +281,120 @@ func getAccessTokens(token string) string {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+func ttCRM(dataSource, historyId string) {
|
|
|
+ query := map[string]interface{}{"historyId": historyId}
|
|
|
+ data, ok := MgoSave.Find(dataSource, query, nil, nil, false, -1, -1)
|
|
|
+ if ok && data != nil && len(*data) > 0 {
|
|
|
+ for _, v := range *data {
|
|
|
+ id := qutil.ObjToString(v["infoId"])
|
|
|
+ v["infoId"] = SE.EncodeString(id)
|
|
|
+ bidtype := qutil.ObjToString(v["biddingType"])
|
|
|
+ toptype := qutil.ObjToString(v["infoType"])
|
|
|
+ subtype := qutil.ObjToString(v["infoTypeSegment"])
|
|
|
+ bidway := qutil.ObjToString(v["isElectronic"])
|
|
|
+ if bidtype != "" {
|
|
|
+ v["biddingType"] = bidtypeMap[bidtype]
|
|
|
+ } else {
|
|
|
+ v["biddingType"] = subtypeMap[subtype]
|
|
|
+ }
|
|
|
+ if bidway == "电子投标" {
|
|
|
+ v["isElectronic"] = "1"
|
|
|
+ } else {
|
|
|
+ v["isElectronic"] = "0"
|
|
|
+ }
|
|
|
+ if subtype == "其它" {
|
|
|
+ if toptype == "预告" {
|
|
|
+ v["infoType"] = "1"
|
|
|
+ v["infoTypeSegment"] = "2"
|
|
|
+ } else if toptype == "招标" {
|
|
|
+ v["infoType"] = "2"
|
|
|
+ v["infoTypeSegment"] = "6"
|
|
|
+ } else if toptype == "结果" {
|
|
|
+ v["infoType"] = "3"
|
|
|
+ v["infoTypeSegment"] = "9"
|
|
|
+ } else {
|
|
|
+ v["infoType"] = "5"
|
|
|
+ v["infoTypeSegment"] = "15"
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ for t, s := range subMap[subtype] {
|
|
|
+ v["infoType"] = t
|
|
|
+ v["infoTypeSegment"] = s
|
|
|
+ }
|
|
|
+ }
|
|
|
+ info := MgoBidding.FindOne(BiddingColl, map[string]interface{}{"_id": mongodb.StringTOBsonId(id)})
|
|
|
+ if info != nil && len(info) > 0 {
|
|
|
+ if info["projectinfo"] != nil {
|
|
|
+ projectInfo := qutil.ObjToMap(info["projectinfo"])
|
|
|
+ if projectInfo != nil && len(*projectInfo) > 0 {
|
|
|
+ if (*projectInfo)["attachments"] != nil {
|
|
|
+ filesArr := []string{}
|
|
|
+ fileUrl := "http://jy-datafile.oss-cn-beijing.aliyuncs.com/"
|
|
|
+ if attachments, oks := (*projectInfo)["attachments"].(map[string]interface{}); oks {
|
|
|
+ for _, v := range attachments {
|
|
|
+ if atta, ok := v.(map[string]interface{}); ok {
|
|
|
+ if atta["fid"] != nil && qutil.ObjToString(atta["fid"]) != "" {
|
|
|
+ filesArr = append(filesArr, fileUrl+qutil.ObjToString(atta["fid"]))
|
|
|
+ } else {
|
|
|
+ if atta["org_url"] != nil {
|
|
|
+ filesArr = append(filesArr, qutil.ObjToString(atta["org_url"]))
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ log.Println("查询附件结果:", id, "附件数量:", len(filesArr))
|
|
|
+ if len(filesArr) > 0 {
|
|
|
+ v["infoFile"] = strings.Join(filesArr, ",")
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ delete(v, "_id")
|
|
|
+ delete(v, "appid")
|
|
|
+ delete(v, "createtime")
|
|
|
+ delete(v, "historyId")
|
|
|
+ postTT(dataSource, v)
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+func postTT(dataSource string, data map[string]interface{}) string {
|
|
|
+ apiurl := "https://www.fxiaoke.com/erp/syncdatagray/open/objdata/push"
|
|
|
+ log.Println("apiurl:", apiurl)
|
|
|
+ header := map[string]string{
|
|
|
+ "token": "43f8e3c05a8edf8ee85bbc8755043b01",
|
|
|
+ "tenantId": "40070007",
|
|
|
+ "objectApiName": "object_HDngT__c",
|
|
|
+ "dataCenterId": "649d4eb19ced6c0001587f26",
|
|
|
+ "id": qutil.ObjToString(data["infoId"]),
|
|
|
+ "version": "v1",
|
|
|
+ "Content-Type": "application/json",
|
|
|
+ "directSync": "true",
|
|
|
+ "destObjectApiName": "object_HDngT__c",
|
|
|
+ }
|
|
|
+ dataMap := map[string]interface{}{"objAPIName": "object_HDngT__c", "masterFieldVal": data, "detailFieldVals": map[string]interface{}{}}
|
|
|
+ dataJson, _ := json.Marshal(&dataMap)
|
|
|
+ response, err := HttpPost(apiurl, header, bytes.NewReader(dataJson))
|
|
|
+ errstr := ""
|
|
|
+ if err == nil {
|
|
|
+ errstr = string(response)
|
|
|
+ resMap := qutil.ObjToMap(string(response))
|
|
|
+ log.Println("响应信息 ", *resMap)
|
|
|
+ if resMap != nil && *resMap != nil {
|
|
|
+ errMsg := qutil.ObjToString((*resMap)["errMsg"])
|
|
|
+ if errMsg == "成功" {
|
|
|
+ log.Println("成功")
|
|
|
+ } else {
|
|
|
+ Mgo.UpdateById(dataSource, qutil.ObjToString(data["infoId"]), map[string]interface{}{"$set": map[string]interface{}{"result": false}})
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ Mgo.UpdateById(dataSource, qutil.ObjToString(data["infoId"]), map[string]interface{}{"$set": map[string]interface{}{"result": false}})
|
|
|
+ errstr = "响应失败 " + err.Error()
|
|
|
+ log.Println("响应失败 ", err)
|
|
|
+ }
|
|
|
+ return errstr
|
|
|
+}
|