init.go 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338
  1. package ul
  2. import (
  3. "bytes"
  4. "encoding/json"
  5. "fmt"
  6. log "github.com/donnie4w/go-logger/logger"
  7. "go.mongodb.org/mongo-driver/bson/primitive"
  8. "io/ioutil"
  9. qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
  10. "net/http"
  11. "time"
  12. )
  13. func InitGlobalVar() {
  14. qu.ReadConfig(&SysConfig) //加载配置文件
  15. initMgo()
  16. initPCD()
  17. initOther()
  18. }
  19. func InitToolVar() {
  20. qu.ReadConfig("./tool.json", &ToolConfig) //加载配置文件
  21. if len(ToolConfig) == 0 || ToolConfig == nil {
  22. log.Fatal("缺少tool.json文件")
  23. }
  24. initToolMgo()
  25. initPCD()
  26. initOther()
  27. }
  28. // 其它属性
  29. func initOther() {
  30. //glm-4-air glm-4-flash
  31. FlashModel = "glm-4-air"
  32. //ModelType = "DeepSeek"
  33. ModelType = "Flash"
  34. MaxUdp = qu.IntAllDef(SysConfig["udp_max"], 10000)
  35. }
  36. // 初始化mgo
  37. func initMgo() {
  38. Reading = qu.IntAll(SysConfig["reading"])
  39. if Reading == 0 {
  40. Reading = 500
  41. }
  42. Bid_Name, Ext_Name = qu.ObjToString(SysConfig["bid_name"]), qu.ObjToString(SysConfig["ext_name"])
  43. //源数据
  44. b_cfg := *qu.ObjToMap(SysConfig["b_mgo"])
  45. b_local := b_cfg["local"].(bool)
  46. b_addr := qu.ObjToString(b_cfg["addr"])
  47. if b_local {
  48. b_addr = qu.ObjToString(b_cfg["l_addr"])
  49. }
  50. BidMgo = &MongodbSim{
  51. MongodbAddr: b_addr,
  52. DbName: qu.ObjToString(b_cfg["dbname"]),
  53. Size: 10,
  54. UserName: qu.ObjToString(b_cfg["username"]),
  55. Password: qu.ObjToString(b_cfg["password"]),
  56. }
  57. if b_local {
  58. BidMgo.InitPoolDirect()
  59. } else {
  60. BidMgo.InitPool()
  61. }
  62. //源数据
  63. s_cfg := *qu.ObjToMap(SysConfig["s_mgo"])
  64. s_local := s_cfg["local"].(bool)
  65. s_addr := qu.ObjToString(s_cfg["addr"])
  66. if s_local {
  67. s_addr = qu.ObjToString(s_cfg["l_addr"])
  68. }
  69. SourceMgo = &MongodbSim{
  70. MongodbAddr: s_addr,
  71. DbName: qu.ObjToString(s_cfg["dbname"]),
  72. Size: 10,
  73. UserName: qu.ObjToString(s_cfg["username"]),
  74. Password: qu.ObjToString(s_cfg["password"]),
  75. }
  76. if s_local {
  77. SourceMgo.InitPoolDirect()
  78. } else {
  79. SourceMgo.InitPool()
  80. }
  81. //企业数据
  82. qy_cfg := *qu.ObjToMap(SysConfig["qy_mgo"])
  83. qy_local := qy_cfg["local"].(bool)
  84. qy_addr := qu.ObjToString(qy_cfg["addr"])
  85. if qy_local {
  86. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  87. }
  88. QyxyMgo = &MongodbSim{
  89. MongodbAddr: qy_addr,
  90. DbName: qu.ObjToString(qy_cfg["dbname"]),
  91. Size: 10,
  92. UserName: qu.ObjToString(qy_cfg["username"]),
  93. Password: qu.ObjToString(qy_cfg["password"]),
  94. }
  95. if qy_local {
  96. QyxyMgo.InitPoolDirect()
  97. } else {
  98. QyxyMgo.InitPool()
  99. }
  100. }
  101. // 初始化mgo
  102. func initToolMgo() {
  103. Reading, Ext_Name = qu.IntAll(ToolConfig["reading"]), qu.ObjToString(ToolConfig["ext_name"])
  104. if Reading == 0 {
  105. Reading = 500
  106. }
  107. //源数据
  108. b_cfg := *qu.ObjToMap(ToolConfig["b_mgo"])
  109. b_local := b_cfg["local"].(bool)
  110. b_addr := qu.ObjToString(b_cfg["addr"])
  111. if b_local {
  112. b_addr = qu.ObjToString(b_cfg["l_addr"])
  113. }
  114. BidMgo = &MongodbSim{
  115. MongodbAddr: b_addr,
  116. DbName: qu.ObjToString(b_cfg["dbname"]),
  117. Size: 10,
  118. UserName: qu.ObjToString(b_cfg["username"]),
  119. Password: qu.ObjToString(b_cfg["password"]),
  120. }
  121. if b_local {
  122. BidMgo.InitPoolDirect()
  123. } else {
  124. BidMgo.InitPool()
  125. }
  126. //源数据
  127. s_cfg := *qu.ObjToMap(ToolConfig["s_mgo"])
  128. s_local := s_cfg["local"].(bool)
  129. s_addr := qu.ObjToString(s_cfg["addr"])
  130. if s_local {
  131. s_addr = qu.ObjToString(s_cfg["l_addr"])
  132. }
  133. SourceMgo = &MongodbSim{
  134. MongodbAddr: s_addr,
  135. DbName: qu.ObjToString(s_cfg["dbname"]),
  136. Size: 10,
  137. UserName: qu.ObjToString(s_cfg["username"]),
  138. Password: qu.ObjToString(s_cfg["password"]),
  139. }
  140. if s_local {
  141. SourceMgo.InitPoolDirect()
  142. } else {
  143. SourceMgo.InitPool()
  144. }
  145. //企业数据
  146. qy_cfg := *qu.ObjToMap(ToolConfig["qy_mgo"])
  147. qy_local := qy_cfg["local"].(bool)
  148. qy_addr := qu.ObjToString(qy_cfg["addr"])
  149. if qy_local {
  150. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  151. }
  152. QyxyMgo = &MongodbSim{
  153. MongodbAddr: qy_addr,
  154. DbName: qu.ObjToString(qy_cfg["dbname"]),
  155. Size: 10,
  156. UserName: qu.ObjToString(qy_cfg["username"]),
  157. Password: qu.ObjToString(qy_cfg["password"]),
  158. }
  159. if qy_local {
  160. QyxyMgo.InitPoolDirect()
  161. } else {
  162. QyxyMgo.InitPool()
  163. }
  164. }
  165. // 标准化省市区···
  166. func initPCD() {
  167. S_ProvinceDict = make(map[string][]S_Province, 0)
  168. S_CityDict = make(map[string][]S_City, 0)
  169. S_DistrictDict = make(map[string][]S_District, 0)
  170. q := map[string]interface{}{
  171. "town_code": map[string]interface{}{
  172. "$exists": 0,
  173. },
  174. }
  175. dataArr, _ := QyxyMgo.Find("address_jy_2022", q, nil, nil)
  176. for _, tmp := range dataArr {
  177. district_code := qu.IntAll(tmp["district_code"])
  178. city_code := qu.IntAll(tmp["city_code"])
  179. if district_code > 0 {
  180. province := qu.ObjToString(tmp["province"])
  181. city := qu.ObjToString(tmp["city"])
  182. district := qu.ObjToString(tmp["district"])
  183. data := S_District{province, city, district}
  184. if S_DistrictDict[district] == nil {
  185. S_DistrictDict[district] = []S_District{data}
  186. } else {
  187. arr := S_DistrictDict[district]
  188. arr = append(arr, data)
  189. S_DistrictDict[district] = arr
  190. }
  191. } else {
  192. if city_code > 0 {
  193. province := qu.ObjToString(tmp["province"])
  194. city := qu.ObjToString(tmp["city"])
  195. data := S_City{province, city}
  196. if S_CityDict[city] == nil {
  197. S_CityDict[city] = []S_City{data}
  198. } else {
  199. arr := S_CityDict[city]
  200. arr = append(arr, data)
  201. S_CityDict[city] = arr
  202. }
  203. } else {
  204. province := qu.ObjToString(tmp["province"])
  205. data := S_Province{province}
  206. if S_ProvinceDict[province] == nil {
  207. S_ProvinceDict[province] = []S_Province{data}
  208. } else {
  209. arr := S_ProvinceDict[province]
  210. arr = append(arr, data)
  211. S_ProvinceDict[province] = arr
  212. }
  213. }
  214. }
  215. }
  216. log.Debug(fmt.Sprintf("城市配置加载完毕...省~%d 市~%d 区~%d", len(S_ProvinceDict), len(S_CityDict), len(S_DistrictDict)))
  217. }
  218. // 加载规则...
  219. func InitPnameRules() {
  220. //q := map[string]interface{}{"s_field": "projectname", "pid": "5cdd1c70e138234848c1d776", "delete": false}
  221. //rs, _ := ExtMgo.Find("rule_logicback", q, bson.M{"_id": 1}, nil)
  222. //for _, v := range rs {
  223. // s_rule := qu.ObjToString(v["s_rule"])
  224. // tmp := strings.Split(s_rule, "__")
  225. // pattern := tmp[0]
  226. // if len(tmp) == 2 {
  227. // reg := &ExtReg{Reg: regexp.MustCompile(pattern), Replace: tmp[1]}
  228. // RulesPname = append(RulesPname, reg)
  229. // } else {
  230. // reg := &ExtReg{Reg: regexp.MustCompile(pattern), Replace: ""}
  231. // RulesPname = append(RulesPname, reg)
  232. // }
  233. //}
  234. //log.Debug("加载项目名称规则...", len(RulesPname))
  235. }
  236. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  237. p_list := []map[string]interface{}{}
  238. if list_3, ok_3 := t.([]map[string]interface{}); ok_3 {
  239. p_list = list_3
  240. return p_list
  241. }
  242. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  243. p_list = qu.ObjArrToMapArr(yl_list_1)
  244. } else {
  245. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  246. p_list = qu.ObjArrToMapArr(yl_list_2)
  247. }
  248. }
  249. return p_list
  250. }
  251. func PostMarkDownText(html string) string {
  252. url := "http://172.17.162.35:18811/md"
  253. if IsLocal {
  254. //url = "http://172.17.0.11:8888/md"
  255. url = "http://192.168.3.13:8888/md"
  256. }
  257. // 创建请求数据
  258. jsonData, err := json.Marshal(map[string]interface{}{"html": html})
  259. if err != nil {
  260. return ""
  261. }
  262. // 创建HTTP请求
  263. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  264. if err != nil {
  265. return ""
  266. }
  267. // 设置请求头
  268. req.Header.Set("Content-Type", "application/json")
  269. client := &http.Client{}
  270. client.Timeout = 60 * time.Second
  271. resp, err := client.Do(req)
  272. if err != nil {
  273. return ""
  274. }
  275. defer resp.Body.Close()
  276. // 读取响应体
  277. body, err := ioutil.ReadAll(resp.Body)
  278. if err != nil {
  279. return ""
  280. }
  281. info := map[string]interface{}{}
  282. err = json.Unmarshal(body, &info)
  283. if err != nil {
  284. return ""
  285. }
  286. return qu.ObjToString(info["result"])
  287. }
  288. func PostPurchasingList(data map[string]interface{}) map[string]interface{} {
  289. url := "http://172.17.162.35:18787/"
  290. if IsLocal {
  291. url = "http://172.17.0.153:18787/"
  292. }
  293. jsonData, err := json.Marshal(data)
  294. if err != nil {
  295. return map[string]interface{}{}
  296. }
  297. // 创建HTTP请求
  298. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  299. if err != nil {
  300. return map[string]interface{}{}
  301. }
  302. // 设置请求头
  303. req.Header.Set("Content-Type", "application/json")
  304. client := &http.Client{}
  305. client.Timeout = 180 * time.Second
  306. resp, err := client.Do(req)
  307. if err != nil {
  308. return map[string]interface{}{}
  309. }
  310. defer resp.Body.Close()
  311. // 读取响应体
  312. body, err := ioutil.ReadAll(resp.Body)
  313. if err != nil {
  314. return map[string]interface{}{}
  315. }
  316. info := map[string]interface{}{}
  317. err = json.Unmarshal(body, &info)
  318. if err != nil {
  319. return map[string]interface{}{}
  320. }
  321. return info
  322. }