config.go 8.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245
  1. package util
  2. import (
  3. "go.mongodb.org/mongo-driver/bson"
  4. "go.mongodb.org/mongo-driver/mongo"
  5. "mongodb"
  6. qu "qfw/util"
  7. "sort"
  8. "sync"
  9. )
  10. //const JYDATAFROMDB = "jyqyfw"
  11. //const JYDATAFROMCOLL = "usermail_history"
  12. //const JYDATATODB = "jyqyfw"
  13. var (
  14. Sysconfig map[string]interface{} //配置文件
  15. Es *Elastic
  16. Mgo *mongodb.MongodbSim
  17. AllToColl string //所有标注数据汇总表
  18. Password string //默认登陆密码
  19. MgoB *mongodb.MongodbSim //bidding
  20. BidColl1 string
  21. BidColl2 string
  22. MgoE *mongodb.MongodbSim //extract
  23. ExtColl1 string
  24. ExtColl2 string
  25. ProjectColl string
  26. MgoJy *mongodb.MongodbSim //jy
  27. JyHistory string
  28. JYPushColl string
  29. JyUser string
  30. CustomerFieldMap_EH map[string]string
  31. CustomerFieldMap_HE map[string]string
  32. AllFieldArr []map[string]string
  33. TopSubStypeArr []string
  34. TopSubStypeArr2 []string
  35. FieldsArr []map[string]interface{}
  36. MgoHM *mongodb.MongodbSim //高质量库
  37. MgoBulkSize = 200
  38. )
  39. var (
  40. Mgo_QY *mongodb.MongodbSim //企业mgo
  41. Qy_Lock sync.Mutex //锁-多线程备用
  42. Ext_Type, Ext_From map[string]interface{} //抽取来源,方式分
  43. Buyer_Score, S_Winner_Score map[string]interface{} //字段规则分
  44. Budget_Score, Bidamount_Score map[string]interface{}
  45. Projectname_Score, Projectcode_Score map[string]interface{}
  46. )
  47. var SE = qu.SimpleEncrypt{Key: "topJYBX2019"}
  48. var SourceInfoIndexArr = []mongo.IndexModel{
  49. {Keys: map[string]interface{}{"s_grouptaskid": 1}}, //独立索引
  50. {Keys: map[string]interface{}{"s_usertaskid": 1}},
  51. {Keys: map[string]interface{}{"s_grouptaskid": 1, "b_istag": 1}}, //联合索引
  52. {Keys: map[string]interface{}{"s_grouptaskid": 1, "s_isgiveuser": 1}},
  53. {Keys: map[string]interface{}{"s_usertaskid": 1, "b_istag": 1}},
  54. {Keys: map[string]interface{}{"s_usertaskid": 1, "b_check": 1}},
  55. {Keys: map[string]interface{}{"b_istagging": 1}},
  56. {Keys: map[string]interface{}{"b_istagging": 1, "b_istag": 1}},
  57. {Keys: map[string]interface{}{"b_isgivegroup": 1, "b_istagging": 1}},
  58. {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1}},
  59. {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "b_istag": 1}},
  60. {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "b_istagging": 1}},
  61. {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "i_ckdata": 1}},
  62. {Keys: map[string]interface{}{"b_isgivegroup": 1, "s_isgiveuser": 1, "i_ckdata": 1, "b_istagging": 1}},
  63. }
  64. const JYHREFPRE = "https://www.jianyu360.cn/article/content/"
  65. const BIDDINGSTARTID = "5a862f0640d2d9bbe88e3cec"
  66. const PROJECTCOLLNAME = "f_project"
  67. const TASKCOLLNAME = "f_task"
  68. const DATACOLLNAME = "f_data"
  69. const LOGCOLLNAME = "l_taglog"
  70. const SPECIALTYPE = "二级不存在"
  71. func InitConfig() {
  72. Mgo = &mongodb.MongodbSim{
  73. MongodbAddr: qu.ObjToString(Sysconfig["mgodb"]),
  74. Size: qu.IntAll(Sysconfig["dbsize"]),
  75. DbName: qu.ObjToString(Sysconfig["dbname"]),
  76. }
  77. Mgo.InitPool()
  78. AllToColl = qu.ObjToString(Sysconfig["alltocoll"])
  79. Password = qu.ObjToString(Sysconfig["defaultpwd"])
  80. //bid
  81. bid := Sysconfig["bidding"].(map[string]interface{})
  82. BidColl1 = qu.ObjToString(bid["coll1"])
  83. BidColl2 = qu.ObjToString(bid["coll2"])
  84. MgoB = &mongodb.MongodbSim{
  85. MongodbAddr: qu.ObjToString(bid["addr"]),
  86. DbName: qu.ObjToString(bid["db"]),
  87. Size: qu.IntAll(bid["size"]),
  88. UserName: qu.ObjToString(bid["username"]),
  89. Password: qu.ObjToString(bid["password"]),
  90. }
  91. MgoB.InitPool()
  92. //biddingHConf := Sysconfig["high_mark"].(map[string]interface{})
  93. //if biddingHConf == nil || len(biddingHConf) == 0 {
  94. // qu.Debug("high_mark 配置项为空,请配置高质量库参数")
  95. //}
  96. //高质量库
  97. //MgoHM = &mongodb.MongodbSim{
  98. // MongodbAddr: biddingHConf["addr"].(string),
  99. // Size: qu.IntAllDef(biddingHConf["size"], 5),
  100. // DbName: biddingHConf["db"].(string),
  101. // UserName: biddingHConf["username"].(string),
  102. // Password: biddingHConf["password"].(string),
  103. //}
  104. //MgoHM.InitPool()
  105. esConf := Sysconfig["es"].(map[string]interface{})
  106. Es = &Elastic{
  107. S_esurl: qu.ObjToString(esConf["addr"]), //http://172.17.145.170:9800
  108. I_size: qu.IntAllDef(esConf["pool"], 10),
  109. Username: qu.ObjToString(esConf["user"]),
  110. Password: qu.ObjToString(esConf["password"]),
  111. }
  112. Es.InitElasticSize()
  113. //ext
  114. ext := Sysconfig["extract"].(map[string]interface{})
  115. ExtColl1 = qu.ObjToString(ext["coll1"])
  116. ExtColl2 = qu.ObjToString(ext["coll2"])
  117. ProjectColl = qu.ObjToString(ext["projectcoll"])
  118. MgoE = &mongodb.MongodbSim{
  119. MongodbAddr: qu.ObjToString(ext["addr"]),
  120. DbName: qu.ObjToString(ext["db"]),
  121. Size: qu.IntAll(ext["size"]),
  122. }
  123. MgoE.InitPool()
  124. //jy
  125. jy := Sysconfig["jy"].(map[string]interface{})
  126. JyHistory = qu.ObjToString(jy["history"])
  127. JYPushColl = qu.ObjToString(jy["pushcoll"])
  128. JyUser = qu.ObjToString(jy["user"])
  129. MgoJy = &mongodb.MongodbSim{
  130. MongodbAddr: qu.ObjToString(jy["addr"]),
  131. DbName: qu.ObjToString(jy["db"]),
  132. Size: qu.IntAll(jy["size"]),
  133. }
  134. MgoJy.InitPool()
  135. Mgo_QY = &mongodb.MongodbSim{
  136. MongodbAddr: qu.ObjToString(bid["addr"]),
  137. DbName: "mixdata",
  138. Size: qu.IntAll(bid["size"]),
  139. UserName: qu.ObjToString(bid["username"]),
  140. Password: qu.ObjToString(bid["password"]),
  141. }
  142. Mgo_QY.InitPool()
  143. //other
  144. CustomerFieldMap_EH = map[string]string{}
  145. CustomerFieldMap_HE = map[string]string{}
  146. for k, v := range Sysconfig["customerfield"].(map[string]interface{}) {
  147. val := v.(string)
  148. CustomerFieldMap_HE[k] = val
  149. CustomerFieldMap_EH[val] = k
  150. }
  151. //公告类型
  152. types := Sysconfig["topsubtype"].(map[string]interface{})
  153. for top, v := range types {
  154. tmp := v.([]interface{})
  155. for _, sub := range tmp {
  156. TopSubStypeArr = append(TopSubStypeArr, top+"-"+qu.ObjToString(sub))
  157. }
  158. }
  159. TopSubStypeArr2 = TopSubStypeArr
  160. info, _ := Mgo.Find("v_field", nil, nil, nil, false, -1, -1)
  161. AllFieldMap := map[string]string{}
  162. AllFieldArr = []map[string]string{}
  163. var bArr []map[string]interface{}
  164. var purArr []map[string]interface{}
  165. var proArr []map[string]interface{}
  166. var pkgArr []map[string]interface{}
  167. var wnArr []map[string]interface{}
  168. for _, m := range *info {
  169. m1 := make(map[string]interface{})
  170. if qu.IntAll(m["f_level"]) == 1 {
  171. m1["key"] = m["s_code"]
  172. m1["descript"] = m["s_name"]
  173. m1["enable"] = false
  174. m1["ftype"] = m["s_ftype"]
  175. m1["stype"] = m["s_type"]
  176. AllFieldMap[qu.ObjToString(m["s_name"])] = qu.ObjToString(m["s_code"])
  177. bArr = append(bArr, m1)
  178. } else {
  179. pstr := qu.ObjToString(m["s_parent"])
  180. if pstr == "purchasinglist" {
  181. m1["key"] = m["s_code"]
  182. m1["descript"] = m["s_name"]
  183. m1["enable"] = false
  184. m1["ftype"] = m["s_ftype"]
  185. m1["stype"] = m["s_type"]
  186. purArr = append(purArr, m1)
  187. } else if pstr == "procurementlist" {
  188. m1["key"] = m["s_code"]
  189. m1["descript"] = m["s_name"]
  190. m1["enable"] = false
  191. m1["ftype"] = m["s_ftype"]
  192. m1["stype"] = m["s_type"]
  193. proArr = append(proArr, m1)
  194. } else if pstr == "package" {
  195. m1["key"] = m["s_code"]
  196. m1["descript"] = m["s_name"]
  197. m1["enable"] = false
  198. m1["ftype"] = m["s_ftype"]
  199. m1["stype"] = m["s_type"]
  200. pkgArr = append(pkgArr, m1)
  201. } else if pstr == "winnerorder" {
  202. m1["key"] = m["s_code"]
  203. m1["descript"] = m["s_name"]
  204. m1["enable"] = false
  205. m1["ftype"] = m["s_ftype"]
  206. m1["stype"] = m["s_type"]
  207. wnArr = append(wnArr, m1)
  208. }
  209. }
  210. }
  211. FieldsArr = append(FieldsArr, bson.M{"descript": "基本字段", "child": bArr})
  212. FieldsArr = append(FieldsArr, bson.M{"descript": "标的物信息", "key": "purchasinglist", "child": purArr})
  213. FieldsArr = append(FieldsArr, bson.M{"descript": "采购意向信息", "key": "procurementlist", "child": proArr})
  214. FieldsArr = append(FieldsArr, bson.M{"descript": "多包信息", "key": "package", "child": pkgArr})
  215. FieldsArr = append(FieldsArr, bson.M{"descript": "中标候选信息", "key": "winnerorder", "child": wnArr})
  216. AllFieldMap["标的物列表"] = "purchasinglist"
  217. AllFieldMap["多包"] = "package"
  218. AllFieldMap["中标候选人"] = "winnerorder"
  219. tmpAllField := Arr{}
  220. tmpAllField = append(tmpAllField, "标的物列表")
  221. tmpAllField = append(tmpAllField, "多包")
  222. tmpAllField = append(tmpAllField, "中标候选人")
  223. sort.Sort(tmpAllField)
  224. for _, f := range tmpAllField {
  225. AllFieldArr = append(AllFieldArr, map[string]string{AllFieldMap[f]: f})
  226. }
  227. }