Эх сурвалжийг харах

feat: 拓普标讯接口开发

zhangxinlei1996 1 жил өмнө
parent
commit
fa4a1359d2

+ 14 - 3
jyservice/src/config.json

@@ -6,13 +6,13 @@
     "pool": 4
   },
   "jkmail": {
-    "to": "wanghuidong@topnet.net.cn,renzheng@topnet.net.cn,bd@topnet.net.cn,sunzhenjie@topnet.net.cn,fanzongdong@topnet.net.cn,chenmingzhu@topnet.net.cn",
+    "to": "",
     "api": "http://10.171.112.160:19281/_send/_mail",
     "cron-alert": "0 22 11,17 * * ?",
     "cron-tj": "0 23 0,13 * * ?"
   },
   "redis": {
-    "addr": "jyqyfw=192.168.3.128:1712,session=192.168.3.128:1712",
+    "addr": "jyqyfw=192.168.3.149:1712,session=192.168.3.149:1712",
     "pool": 4
   },
   "loglevel": 5,
@@ -191,5 +191,16 @@
     "addr": "192.168.3.206:27080",
     "db": "datatag_ent",
     "pool": 4
-  }
+  },
+  "mgoBid":{
+      "address": "192.168.3.206:27002",
+      "size": 5,
+      "dbName": "qfw_data",
+      "replSet": "",
+      "collection": "bidding",
+      "collection_back": "bidding_back",
+      "userName": "jyDevGroup",
+      "password": "jy@DevGroup"
+	},
+	"file_downloadurl":"http://jy-datafile.oss-cn-beijing.aliyuncs.com/"
 }

+ 14 - 0
jyservice/src/config/config.go

@@ -3,6 +3,7 @@ package config
 import (
 	elastic "es"
 	"io/ioutil"
+	mdb "mongodb"
 	"os"
 	"qfw/mongodb"
 	"qfw/util"
@@ -82,6 +83,7 @@ var (
 	Mgo         *mongodb.MongodbSim
 	Es          elastic.Es
 	CustomerMgo *mongodb.MongodbSim
+	BidMgo      *mdb.MongodbSim
 )
 
 func initMongo() {
@@ -103,6 +105,18 @@ func initMongo() {
 
 	CustomerMgo.InitPool()
 
+	dbBidConfig := SysConfig["mgoBid"].(map[string]interface{})
+	size := util.IntAllDef(dbBidConfig["size"], 5)
+	BidMgo = &mdb.MongodbSim{
+		MongodbAddr: dbBidConfig["address"].(string),
+		Size:        size,
+		DbName:      dbBidConfig["dbName"].(string),
+		ReplSet:     dbBidConfig["replSet"].(string),
+		UserName:    dbBidConfig["userName"].(string),
+		Password:    dbBidConfig["password"].(string),
+	}
+	BidMgo.InitPool()
+
 }
 
 func initRedis() {

+ 185 - 2
jyservice/src/usermanager/getdata.go

@@ -944,8 +944,8 @@ func PushLtData(w http.ResponseWriter, r *http.Request) {
 	//
 	rData, errMsg := func() (interface{}, error) {
 
-		//fmt.Println(MD5("jyMi1XQgMABQNcSkBMIhBq" + fmt.Sprint(time.Now().Unix()) + "6PzV0CUa"))
-		//fmt.Println(time.Now().Unix())
+		fmt.Println(MD5("jyExxXQQMJAQFZS0RKJBt0" + fmt.Sprint(time.Now().Unix()) + "P70396V9"))
+		fmt.Println(time.Now().Unix())
 
 		//
 		if r.Header.Get("Content-Type") != "application/x-www-form-urlencoded" {
@@ -1017,3 +1017,186 @@ func PushLtData(w http.ResponseWriter, r *http.Request) {
 	ret := JSON{"status": rData}
 	WriteJSON(w, &ret)
 }
+
+//拓普标讯信息
+func TopInfoData(w http.ResponseWriter, r *http.Request) {
+	//身份参数
+	signature := r.Header.Get("signature")
+	timestamp := r.Header.Get("timestamp")
+	appid := r.FormValue("appid")
+	//
+	rData, errMsg := func() (interface{}, error) {
+		retData := []map[string]interface{}{}
+		fmt.Println(MD5("jyMi1XQgMABQNcSkBMIhBq" + fmt.Sprint(time.Now().Unix()) + "6PzV0CUa"))
+		fmt.Println(time.Now().Unix())
+
+		//
+		if r.Header.Get("Content-Type") != "application/x-www-form-urlencoded" {
+			return retData, fmt.Errorf("Content-Type格式错误")
+		}
+		if signature == "" || timestamp == "" || appid == "" {
+			return retData, fmt.Errorf("参数错误")
+		}
+		isOk, _, _, _ := Check(signature, timestamp, appid)
+		if !isOk {
+			return retData, fmt.Errorf("签名错误")
+		}
+		//必选
+		dataType := r.FormValue("dataType") //“1”-中标单条,”2”-全部,”3”-id获取详情
+
+		//选填
+		projectName := r.FormValue("projectName") //项目名称,模糊匹配
+		buyer := r.FormValue("buyer")             //招标单位,精准匹配
+		bid := r.FormValue("id")                  //信息id
+
+		//必选校验
+		for _, v := range []string{"dataType"} {
+			if len(r.Form[v]) <= 0 {
+				return retData, fmt.Errorf(fmt.Sprintf("%s字段缺失", v))
+			}
+		}
+
+		fields := `"filetext","winner","buyer","projectname","projectcode","title","budget","publishtime","area","subtype","toptype","bidamount","id","city","district","projectinfo","agency","winnerperson","winnertel","buyerperson","buyertel"`
+		query1 := `{"query": {"bool": {"must":[`
+		if buyer != "" {
+			query1 += `{"term":{"buyer":"` + buyer + `"}}`
+		}
+		if projectName != "" {
+			if buyer != "" {
+				query1 += ","
+			}
+			query1 += ` {"multi_match": {"query": "` + projectName + `","type": "phrase","fields": ["projectname.pname"]}}`
+		}
+		size := "100"
+		//
+		if dataType == "3" {
+			if bid != "" {
+				data, errMsg := getBiddingById(bid, fields)
+				return data, errMsg
+			}
+		} else if dataType == "1" {
+			if buyer != "" || projectName != "" {
+				query1 += ","
+			}
+
+			//中标  toptype 结果
+			query1 += `{"terms":{"subtype":["成交","合同","中标","单一"]}}`
+			size = "1"
+
+		}
+		query1 += `],"should": [],"must_not": []}},"from": 0,"size": ` + size + `,"_source": [ ` + fields + `],"sort":[{"publishtime":"desc"}]}`
+		log.Println(query1)
+		d := Es.Get("bidding", "bidding", query1)
+		if d != nil && len(*d) > 0 {
+			for _, v := range *d {
+				bid := util.ObjToString(v["id"])
+				retData = append(retData, formatEsBidding(bid, &v))
+			}
+		}
+		log.Println("len:", len(retData))
+		return retData, nil
+	}()
+
+	if errMsg != nil {
+		log.Printf("用户%s PushLtData err :%s\n", appid, errMsg.Error())
+	}
+	msg := ""
+	code := "00000"
+	if errMsg != nil {
+		msg = errMsg.Error()
+		code = "C0001"
+	}
+	ret := JSON{
+		"data": rData,
+		"msg":  msg,
+		"code": code,
+	}
+	WriteJSON(w, &ret)
+}
+
+func formatEsBidding(bid string, esData *map[string]interface{}) map[string]interface{} {
+
+	infoFileList := []map[string]interface{}{}
+	if (*esData)["filetext"] != nil {
+		infoFileList = getAttachment(bid)
+	}
+	return map[string]interface{}{
+		"winner":             util.ObjToString((*esData)["winner"]),
+		"buyer":              util.ObjToString((*esData)["buyer"]),
+		"projectName":        util.ObjToString((*esData)["projectname"]),
+		"projectCode":        util.ObjToString((*esData)["projectcode"]),
+		"title":              util.ObjToString((*esData)["title"]),
+		"budget":             util.Float64All((*esData)["budget"]),
+		"winnerAmount":       util.Float64All((*esData)["bidamount"]),
+		"publishTime":        time.Unix(util.Int64All((*esData)["publishtime"]), 0).Format(util.Date_Full_Layout),
+		"infoId":             util.ObjToString((*esData)["id"]),
+		"province":           util.ObjToString((*esData)["area"]),
+		"city":               util.ObjToString((*esData)["city"]),
+		"district":           util.ObjToString((*esData)["district"]),
+		"subType":            util.ObjToString((*esData)["subtype"]),
+		"agentUnit":          util.ObjToString((*esData)["agency"]),
+		"winnerRelationName": util.ObjToString((*esData)["winnerperson"]),
+		"winnerRelationWay":  util.ObjToString((*esData)["winnertel"]),
+		"buyerRelationName":  util.ObjToString((*esData)["buyerperson"]),
+		"buyerRelationWay":   util.ObjToString((*esData)["buyertel"]),
+		"infoFileList":       infoFileList,
+	}
+}
+
+func getBiddingById(bid, fields string) (interface{}, error) {
+	esData := Es.GetByIdField("bidding", "bidding", bid, fields)
+	if esData != nil && len(*esData) > 0 {
+		id := util.ObjToString((*esData)["id"])
+		d := formatEsBidding(id, esData)
+		data := []map[string]interface{}{
+			d,
+		}
+		return data, nil
+	}
+	return []map[string]interface{}{}, nil
+}
+
+func getAttachment(bid string) []map[string]interface{} {
+	info, _ := BidMgo.FindById("bidding", bid, `{"projectinfo":1}`)
+	if info == nil || len(*info) == 0 {
+		info, _ = BidMgo.FindById("bidding_back", bid, `{"projectinfo":1}`)
+	}
+	if info != nil && len(*info) > 0 {
+		if (*info)["projectinfo"] != nil {
+			projectInfo := util.ObjToMap((*info)["projectinfo"])
+			if projectInfo != nil && len(*projectInfo) > 0 {
+				if (*projectInfo)["attachments"] != nil {
+					filesArr := []map[string]interface{}{}
+					fileUrl := util.ObjToString(SysConfig["file_downloadurl"])
+					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 && util.ObjToString(atta["fid"]) != "" {
+									fileMap := map[string]interface{}{
+										"filename":    atta["filename"],
+										"infoFileUrl": fileUrl + util.ObjToString(atta["fid"]),
+									}
+									filesArr = append(filesArr, fileMap)
+								} else {
+									if atta["org_url"] != nil {
+										fileMap := map[string]interface{}{
+											"filename":    atta["filename"],
+											"infoFileUrl": util.ObjToString(atta["org_url"]),
+										}
+										filesArr = append(filesArr, fileMap)
+									}
+								}
+							}
+						}
+					}
+					//log.Debug("查询附件结果:" + id + ", 附件数量:" + fmt.Sprint(len(filesArr)))
+					if len(filesArr) > 0 {
+						return filesArr
+
+					}
+				}
+			}
+		}
+	}
+	return []map[string]interface{}{}
+}

+ 3 - 0
jyservice/src/usermanager/usermanager.go

@@ -46,6 +46,9 @@ func init() {
 	//联通营销接口
 	Route.HandleFunc("/data/pushLtData", PushLtData).Methods("POST")
 
+	//拓普标讯信息
+	Route.HandleFunc("/data/tpInfoData", TopInfoData).Methods("POST")
+
 	//测试工具
 	Route.HandleFunc("/api1/testApi", SendMailByAppid).Methods("GET", "POST")
 	//子路由,需中间件处理