init.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. package main
  2. import (
  3. "data_tidb/config"
  4. "fmt"
  5. "go.uber.org/zap"
  6. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  7. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  8. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  9. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mysqldb"
  10. "os"
  11. )
  12. var ( //通用
  13. MongoB, MongoP *mongodb.MongodbSim
  14. MysqlTool *mysqldb.Mysql
  15. FCriteria map[string]interface{}
  16. AreaCode = make(map[string]string, 5000)
  17. TopTypeCode = make(map[string]string, 10)
  18. SubTypeCode = make(map[string]string, 40)
  19. BuyerCode = make(map[string]string, 100)
  20. TopScopeCode = make(map[string]interface{}, 20)
  21. SubScopeCode = make(map[string]interface{}, 70)
  22. )
  23. var ( //标讯
  24. saveSize = 200
  25. saveBasePool = make(chan map[string]interface{}, 5000)
  26. saveBaseSp = make(chan bool, 1)
  27. saveExpandPool = make(chan map[string]interface{}, 5000)
  28. saveExpandSp = make(chan bool, 1)
  29. saveDetailPool = make(chan map[string]interface{}, 5000)
  30. saveDetailSp = make(chan bool, 1)
  31. saveAttrPool = make(chan map[string]interface{}, 5000)
  32. saveAttrSp = make(chan bool, 1)
  33. saveIntentPool = make(chan map[string]interface{}, 5000)
  34. saveIntentSp = make(chan bool, 1)
  35. saveBidderPool = make(chan map[string]interface{}, 5000)
  36. saveBidderSp = make(chan bool, 1)
  37. saveGoodsPool = make(chan map[string]interface{}, 5000)
  38. saveGoodsSp = make(chan bool, 1)
  39. BaseField []string
  40. BaseVMap map[string]interface{}
  41. ExpandField []string
  42. ExpandVMap map[string]interface{}
  43. DetailField = []string{"s_info_id", "s_detail", "s_contenthtml", "d_updatetime", "d_createtime"}
  44. AttrField = []string{"s_info_id", "s_file_id", "s_file_text", "i_is_bidding_doc", "d_updatetime", "d_createtime"}
  45. IntentField = []string{"s_info_id", "s_intention_name", "s_intention_demand", "s_item", "s_buyer_id", "f_totalprice", "s_expurasingtime", "s_reserved_amount", "d_updatetime", "d_createtime"}
  46. BidderField = []string{"s_info_id", "i_package_id", "s_bidder_id", "s_bidder_name", "s_other_bidder_id", "s_other_bidder_name", "i_is_bidders", "i_is_winner", "d_updatetime", "d_createtime"}
  47. GoodsField = []string{"s_info_id", "i_package_id", "s_purchasing_tag", "s_itemname", "s_brand", "s_model", "s_specs", "i_num", "f_unit", "f_totalprice", "d_updatetime", "d_createtime"}
  48. )
  49. var ( //项目
  50. saveProPool = make(chan map[string]interface{}, 5000)
  51. saveProSp = make(chan bool, 1)
  52. saveProbPool = make(chan map[string]interface{}, 5000)
  53. saveProbSp = make(chan bool, 1)
  54. saveProTagPool = make(chan map[string]interface{}, 5000)
  55. saveProTagSp = make(chan bool, 1)
  56. saveRelationPool = make(chan map[string]interface{}, 5000)
  57. saveRelationSp = make(chan bool, 1)
  58. saveErrPool = make(chan map[string]interface{}, 5000)
  59. saveErrSp = make(chan bool, 1)
  60. ProField []string
  61. ProVMap map[string]interface{}
  62. ProBusField []string
  63. ProBusVMap map[string]interface{}
  64. ProTagsField = []string{"projectid", "labelcode", "labelvalues", "labelweight", "createtime"}
  65. RelationField = []string{"projectid", "infoid", "name_id", "contact_id", "identity_type", "createtime"}
  66. FileTypeArr = []string{"pdf", "doc", "docx", "xlsx", "xls", "jpg", "zip", "rar", "txt", "gif", "png", "bmp", "swf", "html"}
  67. )
  68. func InitInfo() {
  69. config.Init("./common.toml")
  70. InitLog()
  71. InitMgo()
  72. InitMysql()
  73. InitField()
  74. log.Info("init success")
  75. }
  76. // InitLog @Description
  77. // @Author J 2022/7/26 15:30
  78. func InitLog() {
  79. logcfg := config.Conf.Log
  80. err := log.InitLog(
  81. log.Path(logcfg.LogPath),
  82. log.Level(logcfg.LogLevel),
  83. log.Compress(logcfg.Compress),
  84. log.MaxSize(logcfg.MaxSize),
  85. log.MaxBackups(logcfg.MaxBackups),
  86. log.MaxAge(logcfg.MaxAge),
  87. log.Format(logcfg.Format),
  88. )
  89. if err != nil {
  90. fmt.Printf("InitLog failed: %v\n", err)
  91. os.Exit(1)
  92. }
  93. }
  94. func InitMgo() {
  95. MongoB = &mongodb.MongodbSim{
  96. MongodbAddr: config.Conf.DB.MongoB.Addr,
  97. DbName: config.Conf.DB.MongoB.Dbname,
  98. Size: config.Conf.DB.MongoB.Size,
  99. UserName: config.Conf.DB.MongoB.User,
  100. Password: config.Conf.DB.MongoB.Password,
  101. }
  102. MongoB.InitPool()
  103. MongoP = &mongodb.MongodbSim{
  104. MongodbAddr: config.Conf.DB.MongoP.Addr,
  105. DbName: config.Conf.DB.MongoP.Dbname,
  106. Size: config.Conf.DB.MongoP.Size,
  107. UserName: config.Conf.DB.MongoP.User,
  108. Password: config.Conf.DB.MongoP.Password,
  109. }
  110. MongoP.InitPool()
  111. }
  112. func InitMysql() {
  113. dbcfg := config.Conf.DB.Mysql
  114. MysqlTool = &mysqldb.Mysql{
  115. Address: dbcfg.Addr,
  116. DBName: dbcfg.Dbname,
  117. UserName: dbcfg.User,
  118. PassWord: dbcfg.Password,
  119. }
  120. MysqlTool.Init()
  121. }
  122. func InitField() {
  123. info := MysqlTool.Find("code_area", nil, "", "", -1, -1)
  124. for _, m := range *info {
  125. var key string
  126. for i, v := range []string{"area", "city", "district"} {
  127. if i == 0 && util.ObjToString(m[v]) != "" {
  128. key = util.ObjToString(m[v])
  129. } else if util.ObjToString(m[v]) != "" {
  130. key += "," + util.ObjToString(m[v])
  131. }
  132. }
  133. AreaCode[key] = util.ObjToString(m["code"])
  134. }
  135. log.Info("InitField", zap.Int("AreaCode", len(AreaCode)))
  136. info1 := MysqlTool.Find("code_bidtopsubtype", nil, "", "", -1, -1)
  137. for _, m := range *info1 {
  138. if util.IntAll(m["level"]) == 1 {
  139. TopTypeCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  140. }
  141. if util.IntAll(m["level"]) == 2 {
  142. SubTypeCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  143. }
  144. }
  145. log.Info("InitField", zap.Int("TopTypeCode", len(TopTypeCode)), zap.Int("SubTypeCode", len(SubTypeCode)))
  146. info2 := MysqlTool.Find("code_buyerclass", nil, "", "", -1, -1)
  147. for _, m := range *info2 {
  148. BuyerCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  149. }
  150. log.Info("InitField", zap.Int("BuyerCode", len(BuyerCode)))
  151. info3 := MysqlTool.Find("code_bidscope", nil, "", "", -1, -1)
  152. for _, m := range *info3 {
  153. if util.IntAll(m["level"]) == 1 {
  154. TopScopeCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  155. }
  156. if util.IntAll(m["level"]) == 2 {
  157. SubScopeCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  158. }
  159. }
  160. log.Info("InitField", zap.Int("TopScopeCode", len(TopScopeCode)), zap.Int("SubScopeCode", len(SubScopeCode)))
  161. util.ReadConfig("./field-criteria.json", &FCriteria)
  162. if len(FCriteria) > 0 {
  163. if m, o := FCriteria["dws_f_bid_baseinfo"].(map[string]interface{}); o {
  164. BaseField = util.ObjArrToStringArr(m["field_array"].([]interface{}))
  165. BaseVMap = m["field_criteria"].(map[string]interface{})
  166. } else {
  167. log.Error("InitField", zap.String("field_array", "dws_f_bid_baseinfo"))
  168. panic("dws_f_bid_baseinfo")
  169. }
  170. if m, o := FCriteria["dws_f_bid_expand_baseinfo"].(map[string]interface{}); o {
  171. ExpandField = util.ObjArrToStringArr(m["field_array"].([]interface{}))
  172. ExpandVMap = m["field_criteria"].(map[string]interface{})
  173. } else {
  174. log.Error("InitField", zap.String("field_array", "dws_f_bid_expand_baseinfo"))
  175. panic("dws_f_bid_expand_baseinfo")
  176. }
  177. //项目相关-字段限制暂时注释
  178. //if m, o := FCriteria["dws_f_project_baseinfo"].(map[string]interface{}); o {
  179. // ProField = util.ObjArrToStringArr(m["field_array"].([]interface{}))
  180. // ProVMap = m["field_criteria"].(map[string]interface{})
  181. //} else {
  182. // log.Error("InitField", zap.String("field_array", "dws_f_project_baseinfo"))
  183. // panic("dws_f_project_baseinfo")
  184. //}
  185. //if m, o := FCriteria["dws_f_project_business"].(map[string]interface{}); o {
  186. // ProBusField = util.ObjArrToStringArr(m["field_array"].([]interface{}))
  187. // ProBusVMap = m["field_criteria"].(map[string]interface{})
  188. //} else {
  189. // log.Error("InitField", zap.String("field_array", "dws_f_project_business"))
  190. // panic("dws_f_project_business")
  191. //}
  192. } else {
  193. log.Error("InitField, 未找到field-criteria.json文件")
  194. panic("InitField, 未找到field-criteria.json文件")
  195. }
  196. }
  197. // 插入并打印信息
  198. func InsertGlobalMysqlData(name string, data map[string]interface{}, mark string) int64 {
  199. inb := MysqlTool.Insert(name, data)
  200. if inb == -1 {
  201. log.Info("插入数据异常", zap.String(name, mark))
  202. }
  203. return inb
  204. }