|
@@ -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{}{}
|
|
|
+}
|