init.go 7.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211
  1. package main
  2. import (
  3. "data_mgo_to_tidb_project/config"
  4. "fmt"
  5. "os"
  6. "regexp"
  7. "github.com/gogf/gf/v2/util/gconv"
  8. "go.uber.org/zap"
  9. util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  10. "jygit.jydev.jianyu360.cn/data_processing/common_utils/log"
  11. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mongodb"
  12. "jygit.jydev.jianyu360.cn/data_processing/common_utils/mysqldb"
  13. "jygit.jydev.jianyu360.cn/data_processing/common_utils/redis"
  14. )
  15. var (
  16. regLetter = regexp.MustCompile("[a-z]*")
  17. )
  18. var ( //通用
  19. MongoP *mongodb.MongodbSim
  20. MysqlTool *mysqldb.Mysql
  21. FCriteria map[string]interface{}
  22. AreaCode = make(map[string]string, 5000)
  23. TopTypeCode = make(map[string]string, 10)
  24. SubTypeCode = make(map[string]string, 40)
  25. BuyerCode = make(map[string]string, 100)
  26. TopScopeCode = make(map[string]interface{}, 20)
  27. SubScopeCode = make(map[string]interface{}, 70)
  28. )
  29. var ( //标讯
  30. saveSize = 200
  31. saveBasePool = make(chan map[string]interface{}, 5000)
  32. saveBaseSp = make(chan bool, 1)
  33. saveExpandPool = make(chan map[string]interface{}, 5000)
  34. saveExpandSp = make(chan bool, 1)
  35. saveDetailPool = make(chan map[string]interface{}, 5000)
  36. saveDetailSp = make(chan bool, 1)
  37. saveAttrPool = make(chan map[string]interface{}, 5000)
  38. saveAttrSp = make(chan bool, 1)
  39. saveIntentPool = make(chan map[string]interface{}, 5000)
  40. saveIntentSp = make(chan bool, 1)
  41. saveBidderPool = make(chan map[string]interface{}, 5000)
  42. saveBidderSp = make(chan bool, 1)
  43. saveGoodsPool = make(chan map[string]interface{}, 5000)
  44. saveGoodsSp = make(chan bool, 1)
  45. BaseField []string
  46. BaseVMap map[string]interface{}
  47. ExpandField []string
  48. ExpandVMap map[string]interface{}
  49. DetailField = []string{"s_info_id", "s_detail", "s_contenthtml", "d_updatetime", "d_createtime"}
  50. AttrField = []string{"s_info_id", "s_file_id", "s_file_text", "i_is_bidding_doc", "d_updatetime", "d_createtime"}
  51. 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"}
  52. 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"}
  53. 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"}
  54. )
  55. var ( //项目
  56. saveProPool = make(chan map[string]interface{}, 5000)
  57. saveProSp = make(chan bool, 1)
  58. saveProbPool = make(chan map[string]interface{}, 5000)
  59. saveProbSp = make(chan bool, 1)
  60. saveProTagPool = make(chan map[string]interface{}, 5000)
  61. saveProTagSp = make(chan bool, 1)
  62. saveRelationPool = make(chan map[string]interface{}, 5000)
  63. saveRelationSp = make(chan bool, 1)
  64. saveErrPool = make(chan map[string]interface{}, 5000)
  65. saveErrSp = make(chan bool, 1)
  66. ProField []string
  67. ProVMap map[string]interface{}
  68. ProBusField []string
  69. ProBusVMap map[string]interface{}
  70. ProTagsField = []string{"projectid", "labelcode", "labelvalues", "labelweight", "createtime"}
  71. RelationField = []string{"projectid", "infoid", "name_id", "contact_id", "identity_type", "createtime"}
  72. FileTypeArr = []string{"pdf", "doc", "docx", "xlsx", "xls", "jpg", "zip", "rar", "txt", "gif", "png", "bmp", "swf", "html"}
  73. )
  74. // InitLog @Description
  75. // @Author J 2022/7/26 15:30
  76. func InitLog() {
  77. logcfg := config.Conf.Log
  78. err := log.InitLog(
  79. log.Path(logcfg.LogPath),
  80. log.Level(logcfg.LogLevel),
  81. log.Compress(logcfg.Compress),
  82. log.MaxSize(logcfg.MaxSize),
  83. log.MaxBackups(logcfg.MaxBackups),
  84. log.MaxAge(logcfg.MaxAge),
  85. log.Format(logcfg.Format),
  86. )
  87. if err != nil {
  88. fmt.Printf("InitLog failed: %v\n", err)
  89. os.Exit(1)
  90. }
  91. }
  92. func InitMgo() {
  93. MongoP = &mongodb.MongodbSim{
  94. MongodbAddr: config.Conf.DB.MongoP.Addr,
  95. DbName: config.Conf.DB.MongoP.Dbname,
  96. Size: config.Conf.DB.MongoP.Size,
  97. UserName: config.Conf.DB.MongoP.User,
  98. Password: config.Conf.DB.MongoP.Password,
  99. }
  100. MongoP.InitPool()
  101. }
  102. func InitMysql() {
  103. dbcfg := config.Conf.DB.Mysql
  104. MysqlTool = &mysqldb.Mysql{
  105. Address: dbcfg.Addr,
  106. DBName: dbcfg.Dbname,
  107. UserName: dbcfg.User,
  108. PassWord: dbcfg.Password,
  109. }
  110. MysqlTool.Init()
  111. }
  112. func InitRedis() {
  113. //172.17.4.238:1479
  114. redis.InitRedisByDb(config.Conf.DB.Redis.Address, 10, 10, 1, 300)
  115. }
  116. func InitField() {
  117. util.ReadConfig("./field-criteria.json", &FCriteria)
  118. if len(FCriteria) > 0 {
  119. //项目相关-字段限制暂时注释
  120. if m, o := FCriteria["dws_f_project_baseinfo"].(map[string]interface{}); o {
  121. ProField = util.ObjArrToStringArr(m["field_array"].([]interface{}))
  122. ProVMap = m["field_criteria"].(map[string]interface{})
  123. } else {
  124. log.Error("InitField", zap.String("field_array", "dws_f_project_baseinfo"))
  125. panic("dws_f_project_baseinfo")
  126. }
  127. if m, o := FCriteria["dws_f_project_business"].(map[string]interface{}); o {
  128. ProBusField = util.ObjArrToStringArr(m["field_array"].([]interface{}))
  129. ProBusVMap = m["field_criteria"].(map[string]interface{})
  130. } else {
  131. log.Error("InitField", zap.String("field_array", "dws_f_project_business"))
  132. panic("dws_f_project_business")
  133. }
  134. } else {
  135. log.Error("InitField, 未找到field-criteria.json文件")
  136. panic("InitField, 未找到field-criteria.json文件")
  137. }
  138. }
  139. func InitCode() {
  140. //加载地区
  141. data := MysqlTool.SelectBySql(`select * from global_common_data.code_area;`)
  142. if data == nil || len(*data) == 0 {
  143. log.Info("code_area代码表加载失败")
  144. panic("code_area代码表加载失败")
  145. }
  146. for _, v := range *data {
  147. code := gconv.String(v["code"])
  148. area := gconv.String(v["area"])
  149. city := gconv.String(v["city"])
  150. district := gconv.String(v["district"])
  151. if city == "" && district == "" {
  152. //加载省份
  153. AreaCode[area] = code
  154. }
  155. if city != "" && district == "" {
  156. //加载城市
  157. AreaCode[fmt.Sprintf("%s,%s", area, city)] = code
  158. }
  159. if city != "" && district != "" {
  160. //加载区县
  161. AreaCode[fmt.Sprintf("%s,%s,%s", area, city, district)] = code
  162. }
  163. }
  164. //加载采购单位
  165. buyerclassData := MysqlTool.SelectBySql(`select * from global_common_data.code_buyerclass;`)
  166. if buyerclassData == nil || len(*buyerclassData) == 0 {
  167. log.Info("code_buyerclass代码表加载失败")
  168. panic("code_buyerclass代码表加载失败")
  169. }
  170. for _, v := range *buyerclassData {
  171. code := gconv.String(v["code"])
  172. name := gconv.String(v["name"])
  173. BuyerCode[name] = code
  174. }
  175. //加载
  176. bidtopsubtypeData := MysqlTool.Find("code_bidtopsubtype", nil, "", "", -1, -1)
  177. if bidtopsubtypeData == nil || len(*bidtopsubtypeData) == 0 {
  178. log.Info("code_bidtopsubtype代码表加载失败")
  179. panic("code_bidtopsubtype代码表加载失败")
  180. }
  181. for _, m := range *bidtopsubtypeData {
  182. if util.IntAll(m["level"]) == 1 {
  183. TopTypeCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  184. }
  185. if util.IntAll(m["level"]) == 2 {
  186. SubTypeCode[util.ObjToString(m["name"])] = util.ObjToString(m["code"])
  187. }
  188. }
  189. }
  190. func InitNsq() {
  191. if config.Conf.Alarm.Address != "" {
  192. AlertRemind.Addr = config.Conf.Alarm.Address
  193. AlertRemind.Toppic = config.Conf.Alarm.Toppic
  194. AlertRemind.Id = config.Conf.Alarm.Id
  195. }
  196. }