init.go 9.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383
  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. "net/url"
  12. "strings"
  13. "time"
  14. )
  15. func InitGlobalVar() {
  16. qu.ReadConfig(&SysConfig) //加载配置文件
  17. initMgo()
  18. initOther()
  19. initPCD()
  20. }
  21. func InitToolVar() {
  22. qu.ReadConfig("./tool.json", &ToolConfig) //加载配置文件
  23. if len(ToolConfig) == 0 || ToolConfig == nil {
  24. log.Fatal("缺少tool.json文件")
  25. }
  26. initToolMgo()
  27. initToolOther()
  28. initPCD()
  29. InitToolRules()
  30. }
  31. // 其它属性
  32. func initOther() {
  33. //glm-4-air glm-4-flash
  34. FlashModel = qu.ObjToString(SysConfig["flash_model"])
  35. ModelType = qu.ObjToString(SysConfig["model_type"])
  36. MaxUdp = qu.IntAllDef(SysConfig["udp_max"], 10000)
  37. MaxLen = qu.IntAllDef(SysConfig["len_max"], 20000)
  38. MaxByte = qu.IntAllDef(SysConfig["byte_max"], 50000)
  39. }
  40. // 其它属性
  41. func initToolOther() {
  42. //glm-4-air glm-4-flash
  43. FlashModel = qu.ObjToString(ToolConfig["flash_model"])
  44. ModelType = qu.ObjToString(ToolConfig["model_type"])
  45. MaxUdp = qu.IntAllDef(ToolConfig["udp_max"], 10000)
  46. MaxLen = qu.IntAllDef(ToolConfig["len_max"], 20000)
  47. MaxByte = qu.IntAllDef(ToolConfig["byte_max"], 50000)
  48. }
  49. // 初始化mgo
  50. func initMgo() {
  51. Reading = qu.IntAll(SysConfig["reading"])
  52. if Reading == 0 {
  53. Reading = 500
  54. }
  55. Bid_Name, Ext_Name = qu.ObjToString(SysConfig["bid_name"]), qu.ObjToString(SysConfig["ext_name"])
  56. //源数据
  57. b_cfg := *qu.ObjToMap(SysConfig["b_mgo"])
  58. b_local := b_cfg["local"].(bool)
  59. b_addr := qu.ObjToString(b_cfg["addr"])
  60. if b_local {
  61. b_addr = qu.ObjToString(b_cfg["l_addr"])
  62. }
  63. BidMgo = &MongodbSim{
  64. MongodbAddr: b_addr,
  65. DbName: qu.ObjToString(b_cfg["dbname"]),
  66. Size: 10,
  67. UserName: qu.ObjToString(b_cfg["username"]),
  68. Password: qu.ObjToString(b_cfg["password"]),
  69. }
  70. if b_local {
  71. BidMgo.InitPoolDirect()
  72. } else {
  73. BidMgo.InitPool()
  74. }
  75. //源数据
  76. s_cfg := *qu.ObjToMap(SysConfig["s_mgo"])
  77. s_local := s_cfg["local"].(bool)
  78. s_addr := qu.ObjToString(s_cfg["addr"])
  79. if s_local {
  80. s_addr = qu.ObjToString(s_cfg["l_addr"])
  81. }
  82. SourceMgo = &MongodbSim{
  83. MongodbAddr: s_addr,
  84. DbName: qu.ObjToString(s_cfg["dbname"]),
  85. Size: 10,
  86. UserName: qu.ObjToString(s_cfg["username"]),
  87. Password: qu.ObjToString(s_cfg["password"]),
  88. }
  89. if s_local {
  90. SourceMgo.InitPoolDirect()
  91. } else {
  92. SourceMgo.InitPool()
  93. }
  94. //企业数据
  95. qy_cfg := *qu.ObjToMap(SysConfig["qy_mgo"])
  96. qy_local := qy_cfg["local"].(bool)
  97. qy_addr := qu.ObjToString(qy_cfg["addr"])
  98. if qy_local {
  99. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  100. }
  101. QyxyMgo = &MongodbSim{
  102. MongodbAddr: qy_addr,
  103. DbName: qu.ObjToString(qy_cfg["dbname"]),
  104. Size: 10,
  105. UserName: qu.ObjToString(qy_cfg["username"]),
  106. Password: qu.ObjToString(qy_cfg["password"]),
  107. }
  108. if qy_local {
  109. QyxyMgo.InitPoolDirect()
  110. } else {
  111. QyxyMgo.InitPool()
  112. }
  113. //企业数据
  114. py_cfg := *qu.ObjToMap(SysConfig["py_mgo"])
  115. py_local := py_cfg["local"].(bool)
  116. py_addr := qu.ObjToString(py_cfg["addr"])
  117. if py_local {
  118. py_addr = qu.ObjToString(py_cfg["l_addr"])
  119. }
  120. PyMgo = &MongodbSim{
  121. MongodbAddr: py_addr,
  122. DbName: qu.ObjToString(py_cfg["dbname"]),
  123. Size: 10,
  124. UserName: qu.ObjToString(py_cfg["username"]),
  125. Password: qu.ObjToString(py_cfg["password"]),
  126. }
  127. if py_local {
  128. PyMgo.InitPoolDirect()
  129. } else {
  130. PyMgo.InitPool()
  131. }
  132. }
  133. // 初始化mgo
  134. func initToolMgo() {
  135. Reading, Ext_Name = qu.IntAll(ToolConfig["reading"]), qu.ObjToString(ToolConfig["ext_name"])
  136. if Reading == 0 {
  137. Reading = 500
  138. }
  139. //源数据
  140. b_cfg := *qu.ObjToMap(ToolConfig["b_mgo"])
  141. b_local := b_cfg["local"].(bool)
  142. b_addr := qu.ObjToString(b_cfg["addr"])
  143. if b_local {
  144. b_addr = qu.ObjToString(b_cfg["l_addr"])
  145. }
  146. BidMgo = &MongodbSim{
  147. MongodbAddr: b_addr,
  148. DbName: qu.ObjToString(b_cfg["dbname"]),
  149. Size: 10,
  150. UserName: qu.ObjToString(b_cfg["username"]),
  151. Password: qu.ObjToString(b_cfg["password"]),
  152. }
  153. if b_local {
  154. BidMgo.InitPoolDirect()
  155. } else {
  156. BidMgo.InitPool()
  157. }
  158. //源数据
  159. s_cfg := *qu.ObjToMap(ToolConfig["s_mgo"])
  160. s_local := s_cfg["local"].(bool)
  161. s_addr := qu.ObjToString(s_cfg["addr"])
  162. if s_local {
  163. s_addr = qu.ObjToString(s_cfg["l_addr"])
  164. }
  165. SourceMgo = &MongodbSim{
  166. MongodbAddr: s_addr,
  167. DbName: qu.ObjToString(s_cfg["dbname"]),
  168. Size: 10,
  169. UserName: qu.ObjToString(s_cfg["username"]),
  170. Password: qu.ObjToString(s_cfg["password"]),
  171. }
  172. if s_local {
  173. SourceMgo.InitPoolDirect()
  174. } else {
  175. SourceMgo.InitPool()
  176. }
  177. //企业数据
  178. qy_cfg := *qu.ObjToMap(ToolConfig["qy_mgo"])
  179. qy_local := qy_cfg["local"].(bool)
  180. qy_addr := qu.ObjToString(qy_cfg["addr"])
  181. if qy_local {
  182. qy_addr = qu.ObjToString(qy_cfg["l_addr"])
  183. }
  184. QyxyMgo = &MongodbSim{
  185. MongodbAddr: qy_addr,
  186. DbName: qu.ObjToString(qy_cfg["dbname"]),
  187. Size: 10,
  188. UserName: qu.ObjToString(qy_cfg["username"]),
  189. Password: qu.ObjToString(qy_cfg["password"]),
  190. }
  191. if qy_local {
  192. QyxyMgo.InitPoolDirect()
  193. } else {
  194. QyxyMgo.InitPool()
  195. }
  196. }
  197. // 标准化省市区···
  198. func initPCD() {
  199. S_ProvinceDict = make(map[string][]S_Province, 0)
  200. S_CityDict = make(map[string][]S_City, 0)
  201. S_DistrictDict = make(map[string][]S_District, 0)
  202. q := map[string]interface{}{
  203. "town_code": map[string]interface{}{
  204. "$exists": 0,
  205. },
  206. }
  207. dataArr, _ := QyxyMgo.Find("address_jy_2022", q, nil, nil)
  208. for _, tmp := range dataArr {
  209. district_code := qu.IntAll(tmp["district_code"])
  210. city_code := qu.IntAll(tmp["city_code"])
  211. if district_code > 0 {
  212. province := qu.ObjToString(tmp["province"])
  213. city := qu.ObjToString(tmp["city"])
  214. district := qu.ObjToString(tmp["district"])
  215. data := S_District{province, city, district}
  216. if S_DistrictDict[district] == nil {
  217. S_DistrictDict[district] = []S_District{data}
  218. } else {
  219. arr := S_DistrictDict[district]
  220. arr = append(arr, data)
  221. S_DistrictDict[district] = arr
  222. }
  223. } else {
  224. if city_code > 0 {
  225. province := qu.ObjToString(tmp["province"])
  226. city := qu.ObjToString(tmp["city"])
  227. data := S_City{province, city}
  228. if S_CityDict[city] == nil {
  229. S_CityDict[city] = []S_City{data}
  230. } else {
  231. arr := S_CityDict[city]
  232. arr = append(arr, data)
  233. S_CityDict[city] = arr
  234. }
  235. } else {
  236. province := qu.ObjToString(tmp["province"])
  237. data := S_Province{province}
  238. if S_ProvinceDict[province] == nil {
  239. S_ProvinceDict[province] = []S_Province{data}
  240. } else {
  241. arr := S_ProvinceDict[province]
  242. arr = append(arr, data)
  243. S_ProvinceDict[province] = arr
  244. }
  245. }
  246. }
  247. }
  248. log.Debug(fmt.Sprintf("城市配置加载完毕...省~%d 市~%d 区~%d", len(S_ProvinceDict), len(S_CityDict), len(S_DistrictDict)))
  249. }
  250. // 加载规则...
  251. func InitToolRules() {
  252. ReplensihRules = []map[string]interface{}{}
  253. dataArr, _ := BidMgo.Find("bidding_bc", map[string]interface{}{}, nil, nil)
  254. for _, v := range dataArr {
  255. if qu.IntAll(v["isopen"]) == 1 {
  256. ReplensihRules = append(ReplensihRules, v)
  257. }
  258. }
  259. log.Debug("补充校验规则加载完毕···", len(ReplensihRules))
  260. }
  261. func IsMarkInterfaceMap(t interface{}) []map[string]interface{} {
  262. p_list := []map[string]interface{}{}
  263. if list_3, ok_3 := t.([]map[string]interface{}); ok_3 {
  264. p_list = list_3
  265. return p_list
  266. }
  267. if yl_list_1, ok_1 := t.(primitive.A); ok_1 {
  268. p_list = qu.ObjArrToMapArr(yl_list_1)
  269. } else {
  270. if yl_list_2, ok_2 := t.([]interface{}); ok_2 {
  271. p_list = qu.ObjArrToMapArr(yl_list_2)
  272. }
  273. }
  274. return p_list
  275. }
  276. func PostMarkDownText(html string) string {
  277. url := "http://172.17.162.35:18811/md"
  278. if IsLocal {
  279. url = "http://172.17.0.19:8888/md"
  280. }
  281. // 创建请求数据
  282. jsonData, err := json.Marshal(map[string]interface{}{"html": html})
  283. if err != nil {
  284. return ""
  285. }
  286. // 创建HTTP请求
  287. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  288. if err != nil {
  289. return ""
  290. }
  291. // 设置请求头
  292. req.Header.Set("Content-Type", "application/json")
  293. client := &http.Client{}
  294. client.Timeout = 60 * time.Second
  295. resp, err := client.Do(req)
  296. if err != nil {
  297. return ""
  298. }
  299. defer resp.Body.Close()
  300. // 读取响应体
  301. body, err := ioutil.ReadAll(resp.Body)
  302. if err != nil {
  303. return ""
  304. }
  305. info := map[string]interface{}{}
  306. err = json.Unmarshal(body, &info)
  307. if err != nil {
  308. return ""
  309. }
  310. return qu.ObjToString(info["result"])
  311. }
  312. func PostPurchasingList(data map[string]interface{}) map[string]interface{} {
  313. url := "http://172.17.162.35:18787/"
  314. if IsLocal {
  315. url = "http://172.17.0.153:18787/"
  316. }
  317. jsonData, err := json.Marshal(data)
  318. if err != nil {
  319. return map[string]interface{}{}
  320. }
  321. // 创建HTTP请求
  322. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
  323. if err != nil {
  324. return map[string]interface{}{}
  325. }
  326. // 设置请求头
  327. req.Header.Set("Content-Type", "application/json")
  328. client := &http.Client{}
  329. client.Timeout = 180 * time.Second
  330. resp, err := client.Do(req)
  331. if err != nil {
  332. return map[string]interface{}{}
  333. }
  334. defer resp.Body.Close()
  335. // 读取响应体
  336. body, err := ioutil.ReadAll(resp.Body)
  337. if err != nil {
  338. return map[string]interface{}{}
  339. }
  340. info := map[string]interface{}{}
  341. err = json.Unmarshal(body, &info)
  342. if err != nil {
  343. return map[string]interface{}{}
  344. }
  345. return info
  346. }
  347. func PostDetailContentHtmlText(bucket_id string, object_name string) string {
  348. //api_url := "http://172.17.162.27:18011/ossservice/biddetail"
  349. api_url := "https://www.jianyu360.cn/ossservice/biddetail"
  350. data := url.Values{"bucket_id": {bucket_id}, "object_name": {object_name}}
  351. req, _ := http.NewRequest("POST", api_url, strings.NewReader(data.Encode()))
  352. req.Header.Set("Content-Type", "application/x-www-form-urlencoded")
  353. client := &http.Client{}
  354. client.Timeout = 5 * time.Second
  355. resp, _ := client.Do(req)
  356. defer resp.Body.Close()
  357. if resp.StatusCode != 200 {
  358. return ""
  359. }
  360. //读取响应体
  361. body, _ := ioutil.ReadAll(resp.Body)
  362. str := string(body)
  363. return str
  364. }