projectDetail.go 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package service
  2. import (
  3. "fmt"
  4. "sfbase/core"
  5. "sfbase/utils"
  6. "sfis/db"
  7. "strings"
  8. )
  9. var SE = utils.SimpleEncrypt{Key: "topJYBX2019"}
  10. func ProjectDetailData(id string) (data []map[string]interface{}, httpStatus int, err error) {
  11. httpStatus = 200
  12. _query := `{"query":{"bool":{"must":[{"term":{"id":"%s"}}],"must_not":[],"should":[]}},"_source":[%s]}`
  13. fields := `"_id","s_winner","projectname","projectcode","buyer","buyertel","buyerperson","jgtime","zbtime","bidamount","budget","buyerclass","area","city","bidstatus","package1","list"`
  14. query := fmt.Sprintf(_query, id, fields)
  15. INDEX := core.GetStringConf("es.project.index")
  16. TYPE := core.GetStringConf("es.project.itype")
  17. infos, err := db.Es.Get(INDEX, TYPE, query)
  18. if err != nil {
  19. return nil, 200, err
  20. }
  21. if infos != nil && len(*infos) > 0 {
  22. for _, i := range *infos {
  23. if i["list"] != nil {
  24. bidStatusStr := "中标、成交、流标、废标、合同"
  25. subStr := "中标、成交、合同"
  26. subStrs := "招标、邀标、询价、竞谈、竞价、单一"
  27. publish := int64(0)
  28. if listArr, ok := i["list"].([]interface{}); ok {
  29. if utils.ObjToString(i["bidstatus"]) == "招标" {
  30. for _, v := range listArr {
  31. if vs, oks := v.(map[string]interface{}); oks {
  32. if strings.Contains(subStrs, utils.ObjToString(vs["subrtype"])) {
  33. publishs := publish
  34. publish = utils.Int64All(vs["publishtime"])
  35. if publishs > publish {
  36. publish = publishs
  37. }
  38. }
  39. }
  40. }
  41. } else if strings.Contains(bidStatusStr, utils.ObjToString(i["bidstatus"])) {
  42. for _, v := range listArr {
  43. if vs, oks := v.(map[string]interface{}); oks {
  44. if strings.Contains(subStr, utils.ObjToString(vs["subrtype"])) {
  45. publishs := publish
  46. publish = utils.Int64All(vs["publishtime"])
  47. if publishs > publish {
  48. publish = publishs
  49. }
  50. }
  51. }
  52. }
  53. }
  54. for _, v := range listArr {
  55. if vs, oks := v.(map[string]interface{}); oks {
  56. publishs := utils.Int64All(vs["publishtime"])
  57. if publishs == publish {
  58. i["url"] = vs["href"]
  59. infoid := utils.ObjToString(vs["infoid"])
  60. i["jyUrl"] = `https://www.jianyu360.com/article/content/` + utils.CommonEncodeArticle("content", infoid) + `.html`
  61. }
  62. }
  63. }
  64. }
  65. }
  66. dataMap := map[string]interface{}{
  67. "projectId": SE.EncodeString(utils.ObjToString(i["_id"])),
  68. "projectName": i["projectname"],
  69. "winner": i["s_winner"],
  70. "projectCode": i["projectcode"],
  71. "buyer": i["buyer"],
  72. "buyerPerson": i["buyerperson"],
  73. "buyerTel": i["buyertel"],
  74. "buyerClass": i["buyerclass"],
  75. "tenderDate": i["zbtime"],
  76. "bidDate": i["jgtime"],
  77. "bidAmount": i["bidamount"],
  78. "budget": i["budget"],
  79. "province": i["area"],
  80. "city": i["city"],
  81. "package": i["package1"],
  82. "url": i["url"],
  83. "jyUrl": i["jyUrl"],
  84. }
  85. data = append(data, dataMap)
  86. }
  87. }
  88. return data, httpStatus, nil
  89. }