123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517 |
- package main
- import (
- "encoding/json"
- "fmt"
- "io/ioutil"
- "log"
- "mongodb"
- "os"
- "qfw/util"
- "strconv"
- "strings"
- "time"
- )
- type Config struct {
- MgoAddr string `json:"mgoAddr"`
- MgoDbName string `json:"mgoDbName"`
- MgoColl string `json:"mgoColl"`
- MgoSize int `json:"mgoSize"`
- TermFind map[string]interface{} `json:"termFind"`
- KeyWordFind map[string]map[string]interface{} `json:"keyWordFind"`
- FieldSelect map[string]interface{} `json:"fieldSelect"`
- FieldMapping string `json:"fieldMapping"`
- }
- var (
- sysConfig Config
- Mgo *mongodb.MongodbSim
- SE = util.SimpleEncrypt{Key: "topJYBX2019"}
- )
- const (
- ydkey = "中国移动,中移在线,中移系统,中移铁通,中移&&软件技术,中移&&信息技术有限公司,中移建设,中怡金福,中移物联网,中移互联网,中移智行,中移&&产业研究院,中移信息系统,中国移动通信有限公司,中国移动通信集团有限公司,安徽通信服务有限公司,河南省飞达通信开发有限公司,中国铁通集团有限公司,福建迅捷通信技术服务有限公司,宁夏通信服务有限公司,天津通信服务有限公司,山西通信服务有限公司,北京通信服务有限公司,内蒙古通信服务有限责任公司,吉林中移通信服务有限公司,新疆通信服务有限公司,重庆通信服务有限责任公司,湖北通信服务有限公司,河北通信服务有限公司,云南通信服务有限公司,上海通信服务有限公司,广西通信服务公司,陕西通信实业有限公司,海南省信通通信服务有限公司,中移智行网络科技有限公司,贵州中移通信服务有限公司,四川通信服务有限公司,湖南通信服务有限公司,中移金科控股有限公司,中移资本控股有限责任公司,江西中移通信服务有限公司,甘肃通信服务有限公司,西藏通信服务有限责任公司,青海中移通信服务有限公司,辽宁通信服务有限责任公司,黑龙江通信服务有限公司,山东通信服务有限公司,中京通信服务有限公司,中铁通信中心,吉林中移防腐器材有限公司,三沙华海通信服务有限公司,中移创业投资有限责任公司,郑州梨园村实业有限公司,中移(上海)商业保理有限公司,中国移动通信集团江苏有限公司,中移电子商务有限公司,中国移动通信集团上海有限公司,中移动信息技术有限公司,中国移动通信集团青海有限公司,中移物联网有限公司,中移信息系统集成有限公司,中国移动通信集团河北有限公司,中国移动通信集团甘肃有限公司,中国移动通信集团山西有限公司,中国移动通信集团辽宁有限公司,中国移动通信集团广东有限公司,中国移动通信集团北京有限公司,中国移动通信集团广西有限公司,中国移动通信集团福建有限公司,中国移动通信集团湖北有限公司,中国移动通信集团新疆有限公司,中移投资控股有限责任公司,中移系统集成有限公司,咪咕文化科技有限公司,中国移动通信集团四川有限公司,中国移动通信集团浙江有限公司,中国移动通信集团重庆有限公司,中国移动通信集团海南有限公司,中移动金融科技有限公司,中国移动通信集团黑龙江有限公司,中移(苏州)软件技术有限公司,中移园区建设发展有限公司,中国移动通信集团财务有限公司,中移(杭州)信息技术有限公司,中移在线服务有限公司,中国移动通信集团江西有限公司,中移雄安信息通信科技有限公司,中国移动通信集团西藏有限公司,中移互联网有限公司,中国移动通信集团河南有限公司,中国移动通信集团安徽有限公司,中国移动通信集团终端有限公司,中国移动通信集团宁夏有限公司,中移铁通有限公司,中国移动通信集团陕西有限公司,中国移动通信集团设计院有限公司,中国移动通信集团吉林有限公司,中移(上海)信息通信科技有限公司,中国移动通信集团云南有限公司,中国移动通信集团贵州有限公司,中国移动通信集团内蒙古有限公司,中国移动通信集团山东有限公司,中移(成都)信息通信科技有限公司,中国移动通信集团湖南有限公司,中国移动通信集团天津有限公司,上海中移信息技术有限公司,繁星智算科技(北京)有限公司,咪咕音乐有限公司,黑龙江中移通信技术工程有限公司,山东铁通工程建设有限责任公司,湖北中移通信技术工程有限公司,北京移动系统集成有限公司,长三角一体化示范区(上海)中移数智生态科技有限公司,咪咕数字传媒有限公司,山东中移通信技术有限公司,中移互联(广州)孵化器有限公司,中移湾区(广东)创新研究院有限公司,中移铁通云科技有限公司,湖南中移通信技术工程有限公司,咪咕新空文化科技(厦门)有限公司,江苏移动信息系统集成有限公司,四川中移通信技术工程有限公司,中移数智科技有限公司,咪咕互动娱乐有限公司,中移(江西)虚拟现实科技有限公司,北京北方星辰信息技术有限责任公司,上海咪咕新媒体有限公司,中移建设有限公司,中国移动(浙江)创新研究院有限公司,北京煜金桥通信建设监理咨询有限责任公司,浙江移动信息系统集成有限公司,咪咕视讯科技有限公司,辽宁中移通信技术工程有限公司,中国移动紫金(江苏)创新研究院有限公司,贵州移动信息科技有限公司,沈阳华铁通信工程监理有限公司,咪咕艾瓦文化科技(厦门)有限公司"
- ydtag = "运营商-移动"
- ydcompany = "中国移动通信集团有限公司"
- ltkey = "中国联通,联合网络通信,联通数字科技,联通大数据,联通在线信息,联通时科,联通物联网,联通&&产业互联网,联通智网,中讯邮电,中国联合网络通信集团有限公司,中国联合网络通信有限公司,联通智慧科技产业有限公司,联通数字科技有限公司,联通在线信息科技有限公司,联通信息导航有限公司,联通集团财务有限公司,联通融资租赁有限公司,联通支付有限公司,联通华盛通信有限公司,联通创新创业投资有限公司,中讯邮电咨询设计院有限公司,联通视频科技有限公司,临港数智科技(上海)有限公司,联通(海南)产业互联网有限公司,联通(湖南)产业互联网有限公司,联通(福建)产业互联网有限公司,联通(吉林)产业互联网有限公司,联通(四川)产业互联网有限公司,联通(上海)产业互联网有限公司,联通西部创新研究院有限公司,联通沃悦读科技文化有限公司,小沃科技有限公司,联通云数据有限公司,联通(北京)产业互联网有限公司,联通(黑龙江)产业互联网有限公司,联通(广东)产业互联网有限公司,联通智慧安全科技有限公司,联通(辽宁)产业互联网有限公司,联通大数据有限公司,联通(湖北)产业互联网有限公司,联通(河南)产业互联网有限公司,北京沃数媒广告有限公司,联通旅游(北京)有限公司,广东联通通信建设有限公司,联通物联网有限责任公司,联通(江西)产业互联网有限公司,联通沃音乐文化有限公司,沃百富信息科技(天津)有限公司,华夏邮电咨询监理有限公司,联通雄安产业互联网有限公司,联通(山西)产业互联网有限公司,联通灵境视讯(江西)科技有限公司,联通创新创业投资管理(深圳)有限责任公司,郑州凯成实业有限公司,北京电信规划设计院有限公司,联通(浙江)产业互联网有限公司,联通(江苏)产业互联网有限公司,联通(安徽)产业互联网有限公司,联通(山东)产业互联网有限公司,联通(廊坊)云数据有限公司,联通(浙江)云数据有限公司,山东省联通通信有限公司,中国联通集团黑龙江省通信有限公司,中国联通集团北京市通信有限公司,天津市联通通信有限公司,中国联通集团辽宁省通信有限公司,吉林省联通通信有限公司,河南省联通通信有限公司,中国联通集团河北省通信有限公司,联通资产运营有限公司,联通资本投资控股有限公司,四川省联通通信有限公司,内蒙古联通通信有限公司,山西省联通通信有限公司,北京电信投资有限公司,太原市通信实业有限公司,山东丽天大酒店有限公司,大连邮电通信建设有限公司,山西联通顿村培训有限公司,北京联蒙科技发展有限公司,黑龙江省电信技术服务中心有限责任公司,内蒙古通信建设工程有限责任公司,大连泰立达通信工程有限公司"
- lttag = "运营商-联通"
- ltcompany = "中国联合网络通信集团有限公司"
- dxkey = "中国电信,天翼视讯,天翼电信,公众信息产业,中电万维,中电鸿信,中电信数智,中电福富,天翼云,中电领航,中电智能科技,天翼交通,天翼&&物联,天翼&&数字,天翼乡村,中电信智能,天翼数字,上海理想信息产业,中电信量子信息,中电信数字,中电信,中国电信集团有限公司,陕西电信实业有限公司,上海电信实业(集团)有限公司,湖南省电信实业集团有限公司,中国电信集团投资有限公司,重庆电信菲斯特实业有限公司,海南省电信实业集团有限公司,中国电信集团实业资产管理有限公司,贵州电信实业有限公司,湖北电信实业有限责任公司,浙江省电信实业集团有限公司,中国电信集团卫星通信有限公司,甘肃电信实业有限公司,四川电信实业集团有限责任公司,福建省电信实业集团有限公司,江西省电信实业有限责任公司,广东省电信实业集团有限公司,云南电信网信实业集团通信线路器材有限公司,温州国脉集团有限公司,信元公众信息发展有限责任公司,广西电信实业集团有限公司,江苏省电信实业集团有限责任公司,新疆电信实业(集团)有限责任公司,北京辰茂鸿翔酒店有限责任公司,天翼科技创业投资有限公司,安徽电信实业集团有限公司,新疆寰融实业有限公司,上海华新电线电缆有限公司,北京信元电信维护有限责任公司,中电信私募基金管理有限公司,四川宏致通信设备有限责任公司,四川省南充市第九建筑安装工程有限公司,广东邮电人才服务有限公司,广州市电信实业有限公司,北京信捷苑物业管理有限公司,广东南方通信集团有限公司,北京国信苑物业管理有限公司,广西邮电器材有限公司,北海辰茂海滩酒店有限公司,江苏辰茂新世纪大酒店有限公司,迪佛电信集团有限公司,海口电信城市建设投资有限公司,海口电信滨江建设有限公司,湖南省新南天置业有限公司,海振华源能源科技(成都)有限公司,福信新能源(陕西)有限公司"
- dxtag = "运营商-电信"
- dxcompany = "中国电信集团有限公司"
- gdkey = "楚天视讯,中国广电,广播电视网络集团,广电网络,玖云大数据"
- gdtag = "运营商-广电"
- gdcompany = "中国广播电视网络集团有限公司"
- ttkey = "中国铁塔,铁塔能源,铁塔智联"
- tttag = "运营商-铁塔"
- ttcompany = "中国铁塔股份有限公司"
- )
- func init() {
- util.ReadConfig(&sysConfig)
- log.Println("配置加载成功")
- Mgo = &mongodb.MongodbSim{
- MongodbAddr: sysConfig.MgoAddr,
- DbName: sysConfig.MgoDbName,
- Size: 20,
- }
- Mgo.InitPool()
- log.Println("数据库加载成功")
- }
- func PathExists(path string) (bool, error) {
- _, err := os.Stat(path)
- if err == nil {
- return true, nil
- }
- if os.IsNotExist(err) {
- return false, nil
- }
- return false, err
- }
- func main() {
- query := map[string]interface{}{}
- log.Println("config", sysConfig)
- if sysConfig.TermFind != nil && len(sysConfig.TermFind) > 0 {
- for k, v := range sysConfig.TermFind {
- query[k] = v
- }
- }
- if sysConfig.KeyWordFind != nil && len(sysConfig.KeyWordFind) > 0 {
- for k, v := range sysConfig.KeyWordFind {
- keyMap := map[string]interface{}{}
- for kk, vv := range v {
- keyMap[kk] = vv
- }
- query[k] = keyMap
- }
- }
- log.Println("查询条件 ", query)
- count, session := 0, Mgo.GetMgoConn()
- defer func() {
- Mgo.DestoryMongoConn(session)
- }()
- iter := session.DB(sysConfig.MgoDbName).C(sysConfig.MgoColl).Find(&query).Select(sysConfig.FieldSelect).Sort("_id").Iter()
- data := []map[string]interface{}{}
- thisData := map[string]interface{}{}
- for {
- if !iter.Next(&thisData) {
- break
- }
- count++
- log.Println("第", count, "条")
- data = append(data, thisData)
- }
- if len(data) > 0 {
- log.Println("数据条数 ", len(data))
- for _, v := range data {
- fieldMap := map[string]string{}
- json.Unmarshal([]byte(sysConfig.FieldMapping), &fieldMap)
- if len(fieldMap) > 0 {
- subMap := map[string]map[string]string{
- "招标": map[string]string{"0": "3"},
- "竞谈": map[string]string{"0": "3"},
- "单一": map[string]string{"0": "3"},
- "询价": map[string]string{"0": "3"},
- "竞价": map[string]string{"0": "3"},
- "邀标": map[string]string{"0": "3"},
- "论证意见": map[string]string{"1": "2"},
- "预告": map[string]string{"1": "2"},
- "预审": map[string]string{"1": "2"},
- "预审结果": map[string]string{"1": "2"},
- "需求公示": map[string]string{"1": "2"},
- "采购意向": map[string]string{"1": "2"},
- "变更": map[string]string{"2": "5"},
- "废标": map[string]string{"3": "7"},
- "流标": map[string]string{"3": "8"},
- "中标": map[string]string{"3": "10"},
- "成交": map[string]string{"3": "11"},
- "结果变更": map[string]string{"3": "11"},
- "合同": map[string]string{"3": "12"},
- "验收": map[string]string{"5": "13"},
- "违规": map[string]string{"5": "14"},
- }
- if v["filehref"] != nil {
- if filehrefs1, ok := v["filehref"].([]interface{}); ok {
- filehrefs := util.ObjArrToMapArr(filehrefs1)
- filehrefArr := []map[string]interface{}{}
- for _, vv := range filehrefs {
- filehrefMaps := map[string]interface{}{}
- url := util.ObjToString(vv["url"])
- filehrefMaps["infoFileUrl"] = strings.ReplaceAll(url, "jy-datafile.oss-cn-beijing.aliyuncs.com", "60.205.191.245:51235")
- filehrefMaps["infoFileName"] = vv["filename"]
- filehrefArr = append(filehrefArr, filehrefMaps)
- }
- v["filehref"] = filehrefArr
- } else if filehrefs2, ok1 := v["filehref"].([]map[string]interface{}); ok1 {
- filehrefArr := []map[string]interface{}{}
- for _, vv := range filehrefs2 {
- filehrefMaps := map[string]interface{}{}
- url := util.ObjToString(vv["url"])
- filehrefMaps["infoFileUrl"] = strings.ReplaceAll(url, "jy-datafile.oss-cn-beijing.aliyuncs.com", "60.205.191.245:51235")
- filehrefMaps["infoFileName"] = vv["filename"]
- filehrefArr = append(filehrefArr, filehrefMaps)
- }
- v["filehref"] = filehrefArr
- }
- }
- bidtype := util.ObjToString(v["bidtype"])
- toptype := util.ObjToString(v["toptype"])
- subtype := util.ObjToString(v["subtype"])
- if bidtype != "" {
- bidtypeMap := map[string]string{
- "招标": "0",
- "邀标": "1",
- "竞谈": "2",
- "单一": "3",
- "询价": "4",
- "竞价": "6",
- }
- v["bidtype"] = bidtypeMap[bidtype]
- } else {
- subtypeMap := map[string]string{
- "招标": "0",
- "邀标": "1",
- "竞谈": "2",
- "单一": "3",
- "询价": "4",
- "其它": "5",
- "竞价": "6",
- }
- v["bidtype"] = subtypeMap[subtype]
- }
- bidway := util.ObjToString(v["bidway"])
- if bidway == "电子投标" {
- v["bidway"] = "1"
- } else {
- v["bidway"] = "0"
- }
- site := util.ObjToString(v["site"])
- siteStr := "全军武器装备采购信息网,军队采购网,军队采购网新网址"
- for _, vv := range strings.Split(siteStr, ",") {
- if strings.Contains(site, vv) {
- v["armySource"] = "是"
- }
- }
- delete(v, "site")
- publishtime := util.Int64All(v["publishtime"])
- if publishtime > 0 {
- v["publishtime"] = time.Unix(publishtime, 0).Format(util.Date_Full_Layout)
- // v["infoPublishTimeMonth"] = time.Unix(publishtime, 0).Format("2006-01")
- }
- bidopentime := util.Int64All(v["bidopentime"])
- if bidopentime > 0 {
- v["bidopentime"] = time.Unix(bidopentime, 0).Format(util.Date_Full_Layout)
- }
- docstarttime := util.Int64All(v["docstarttime"])
- if docstarttime > 0 {
- v["docstarttime"] = time.Unix(docstarttime, 0).Format(util.Date_Full_Layout)
- }
- docendtime := util.Int64All(v["docendtime"])
- if docendtime > 0 {
- v["docendtime"] = time.Unix(docendtime, 0).Format(util.Date_Full_Layout)
- }
- bidstarttime := util.Int64All(v["bidstarttime"])
- if bidstarttime > 0 {
- v["bidstarttime"] = time.Unix(bidstarttime, 0).Format(util.Date_Full_Layout)
- }
- bidendtime := util.Int64All(v["bidendtime"])
- if bidendtime > 0 {
- v["bidendtime"] = time.Unix(bidendtime, 0).Format(util.Date_Full_Layout)
- }
- tagname := util.ObjToString(v["tagname"])
- tagname2 := util.ObjToString(v["tagname2"])
- buyer := util.ObjToString(v["buyer"])
- buyerperson := util.ObjToString(v["buyerperson"])
- buyertel := util.ObjToString(v["buyertel"])
- s_winner := util.ObjToString(v["s_winner"])
- winnerperson := util.ObjToString(v["winnerperson"])
- winnertel := util.ObjToString(v["winnertel"])
- agency := util.ObjToString(v["agency"])
- agencyperson := util.ObjToString(v["agencyperson"])
- agencytel := util.ObjToString(v["agencytel"])
- v["tagname"] = strings.Split(tagname, ",")
- v["tagname2"] = strings.Split(tagname2, ",")
- v["buyer"] = strings.Split(buyer, ",")
- v["buyerperson"] = strings.Split(buyerperson, ",")
- v["buyertel"] = strings.Split(buyertel, ",")
- winnerArr := strings.Split(s_winner, ",")
- v["winnerperson"] = strings.Split(winnerperson, ",")
- v["winnertel"] = strings.Split(winnertel, ",")
- v["agency"] = strings.Split(agency, ",")
- v["agencyperson"] = strings.Split(agencyperson, ",")
- v["agencytel"] = strings.Split(agencytel, ",")
- if v["budget"] != nil {
- v["budget"] = []map[string]string{
- map[string]string{
- "unit": "",
- "amount": strconv.FormatFloat(util.Float64All(v["budget"]), 'f', -1, 64),
- },
- }
- } else {
- v["budget"] = []map[string]string{
- map[string]string{
- "unit": "",
- "amount": "",
- },
- }
- }
- if v["bidamount"] != nil {
- v["bidamount"] = []map[string]string{
- map[string]string{
- "unit": "",
- "amount": strconv.FormatFloat(util.Float64All(v["bidamount"]), 'f', -1, 64),
- },
- }
- } else {
- v["bidamount"] = []map[string]string{
- map[string]string{
- "unit": "",
- "amount": "",
- },
- }
- }
- multipackage := 0
- isOptimization := 0
- if v["multipackage"] == nil {
- v["multipackage"] = "0"
- } else {
- v["multipackage"] = fmt.Sprint(v["multipackage"])
- multipackage = util.IntAll(v["multipackage"])
- }
- if v["isOptimization"] == nil {
- v["isOptimization"] = "0"
- } else {
- v["isOptimization"] = fmt.Sprint(v["isOptimization"])
- isOptimization = util.IntAll(v["isOptimization"])
- }
- if subtype == "其它" {
- if toptype == "预告" {
- v["toptype"] = "1"
- v["subtype"] = "2"
- } else if toptype == "招标" {
- v["toptype"] = "2"
- v["subtype"] = "6"
- } else if toptype == "结果" {
- v["toptype"] = "3"
- v["subtype"] = "9"
- } else {
- v["toptype"] = "5"
- v["subtype"] = "15"
- }
- } else {
- for t, s := range subMap[subtype] {
- v["toptype"] = t
- v["subtype"] = s
- }
- }
- //多包合并
- if isOptimization == 1 && multipackage == 1 && v["package"] != nil {
- wArr := []string{}
- bArr := []map[string]string{}
- if packages, ok := v["package"].(map[string]interface{}); ok {
- for _, vv := range packages {
- if packages1, oks := vv.(map[string]interface{}); oks {
- if winner_all, wok := packages1["winner_all"].([]map[string]interface{}); wok {
- for _, win := range winner_all {
- winnerStr := util.ObjToString(win["winner"])
- bidamountStr := strconv.FormatFloat(util.Float64All(win["bidamount"]), 'f', -1, 64)
- wArr = append(wArr, winnerStr)
- bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
- }
- } else if winner_all, wok := packages1["winner_all"].([]interface{}); wok {
- for _, win := range winner_all {
- if win1, wok1 := win.(map[string]interface{}); wok1 {
- winnerStr := util.ObjToString(win1["winner"])
- bidamountStr := strconv.FormatFloat(util.Float64All(win1["bidamount"]), 'f', -1, 64)
- wArr = append(wArr, winnerStr)
- bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
- }
- }
- }
- }
- }
- winnerArr = wArr
- v["winner"] = wArr
- v["bidamount"] = bArr
- }
- } else if multipackage == 1 && v["package"] != nil {
- wArr := []string{}
- bArr := []map[string]string{}
- if packages, ok := v["package"].([]map[string]interface{}); ok {
- for _, vv := range packages {
- winnerStr := util.ObjToString(vv["winner"])
- bidamountStr := strconv.FormatFloat(util.Float64All(vv["bidamount"]), 'f', -1, 64)
- wArr = append(wArr, winnerStr)
- bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
- }
- } else if packages, ok := v["package"].([]interface{}); ok {
- for _, vv := range packages {
- if packages1, vvok := vv.(map[string]interface{}); vvok {
- winnerStr := util.ObjToString(packages1["winner"])
- bidamountStr := strconv.FormatFloat(util.Float64All(packages1["bidamount"]), 'f', -1, 64)
- wArr = append(wArr, winnerStr)
- bArr = append(bArr, map[string]string{"unit": "", "amount": bidamountStr})
- }
- }
- }
- winnerArr = wArr
- v["winner"] = wArr
- v["bidamount"] = bArr
- } else if strings.Contains(s_winner, ",") {
- winnerArr = []string{s_winner}
- }
- //
- delete(v, "package")
- v["s_winner"] = winnerArr
- tagNameArr, mainCompanyArr := []string{}, []string{}
- v, tagNameArr, mainCompanyArr = getTag(winnerArr, v, "1")
- v["tagname"] = tagNameArr
- v["tagname2"] = mainCompanyArr
- v = formatWinnerOrder(v)
- for f, m := range fieldMap {
- if v[f] != nil {
- v[m] = v[f]
- if f != m {
- delete(v, f)
- }
- }
- }
- }
- }
- dataMap := map[string]interface{}{"data": data}
- jsonData, err := json.Marshal(dataMap)
- if err != nil {
- fmt.Println("JSON marshaling failed:", err)
- return
- }
- err = ioutil.WriteFile("data.json", jsonData, 0644)
- if err != nil {
- fmt.Println("Writing JSON file failed:", err)
- return
- }
- log.Println("生成json成功")
- }
- }
- func getTag(winnerArr []string, v map[string]interface{}, isType string) (map[string]interface{}, []string, []string) {
- tagNameArr := []string{}
- mainCompanyArr := []string{}
- for _, vv := range winnerArr {
- isOk := false
- if strings.Contains(vv, ",") {
- if isType == "1" {
- v["multipackage"] = "2"
- }
- tagNameArr111 := []string{}
- mainCompanyArr111 := []string{}
- for _, vvv := range strings.Split(vv, ",") {
- isOks := false
- isOks, tagNameArr111, mainCompanyArr111 = lHTag(vvv, ydkey, ydtag, ydcompany, isOks, tagNameArr111, mainCompanyArr111)
- isOks, tagNameArr111, mainCompanyArr111 = lHTag(vvv, ltkey, lttag, ltcompany, isOks, tagNameArr111, mainCompanyArr111)
- isOks, tagNameArr111, mainCompanyArr111 = lHTag(vvv, dxkey, dxtag, dxcompany, isOks, tagNameArr111, mainCompanyArr111)
- isOks, tagNameArr111, mainCompanyArr111 = lHTag(vvv, gdkey, gdtag, gdcompany, isOks, tagNameArr111, mainCompanyArr111)
- isOks, tagNameArr111, mainCompanyArr111 = lHTag(vvv, ttkey, tttag, ttcompany, isOks, tagNameArr111, mainCompanyArr111)
- if !isOks {
- tagNameArr111 = append(tagNameArr111, " ")
- mainCompanyArr111 = append(mainCompanyArr111, " ")
- }
- }
- tagNameArr = append(tagNameArr, strings.Join(tagNameArr111, ","))
- mainCompanyArr = append(mainCompanyArr, strings.Join(mainCompanyArr111, ","))
- } else {
- isOk, tagNameArr, mainCompanyArr = unLHTag(vv, ydkey, ydtag, ydcompany, isOk, tagNameArr, mainCompanyArr)
- isOk, tagNameArr, mainCompanyArr = unLHTag(vv, ltkey, lttag, ltcompany, isOk, tagNameArr, mainCompanyArr)
- isOk, tagNameArr, mainCompanyArr = unLHTag(vv, dxkey, dxtag, dxcompany, isOk, tagNameArr, mainCompanyArr)
- isOk, tagNameArr, mainCompanyArr = unLHTag(vv, gdkey, gdtag, gdcompany, isOk, tagNameArr, mainCompanyArr)
- isOk, tagNameArr, mainCompanyArr = unLHTag(vv, ttkey, tttag, ttcompany, isOk, tagNameArr, mainCompanyArr)
- if !isOk {
- tagNameArr = append(tagNameArr, "")
- mainCompanyArr = append(mainCompanyArr, "")
- }
- }
- }
- return v, tagNameArr, mainCompanyArr
- }
- func lHTag(vvv, ydkey, ydtag, ydcompany string, isOks bool, tagNameArr111, mainCompanyArr111 []string) (bool, []string, []string) {
- for _, yd := range strings.Split(ydkey, ",") {
- if strings.Contains(yd, "&&") {
- keys := strings.Split(yd, "&&")
- key1, key2 := keys[0], keys[1]
- if strings.Contains(vvv, key1) && strings.Contains(vvv, key2) {
- if !isOks {
- isOks = true
- tagNameArr111 = append(tagNameArr111, ydtag)
- mainCompanyArr111 = append(mainCompanyArr111, ydcompany)
- }
- }
- if isOks {
- break
- }
- } else {
- if strings.Contains(vvv, yd) {
- if !isOks {
- isOks = true
- tagNameArr111 = append(tagNameArr111, ydtag)
- mainCompanyArr111 = append(mainCompanyArr111, ydcompany)
- }
- }
- if isOks {
- break
- }
- }
- }
- return isOks, tagNameArr111, mainCompanyArr111
- }
- func unLHTag(vv, ydkey, ydtag, ydcompany string, isOk bool, tagNameArr, mainCompanyArr []string) (bool, []string, []string) {
- for _, yd := range strings.Split(ydkey, ",") {
- if strings.Contains(yd, "&&") {
- keys := strings.Split(yd, "&&")
- key1, key2 := keys[0], keys[1]
- if strings.Contains(vv, key1) && strings.Contains(vv, key2) {
- if !isOk {
- isOk = true
- tagNameArr = append(tagNameArr, ydtag)
- mainCompanyArr = append(mainCompanyArr, ydcompany)
- }
- }
- if isOk {
- break
- }
- } else {
- if strings.Contains(vv, yd) {
- if !isOk {
- isOk = true
- tagNameArr = append(tagNameArr, ydtag)
- mainCompanyArr = append(mainCompanyArr, ydcompany)
- }
- }
- if isOk {
- break
- }
- }
- }
- return isOk, tagNameArr, mainCompanyArr
- }
- func formatWinnerOrder(v map[string]interface{}) map[string]interface{} {
- if v["winnerorder"] != nil {
- if orders, ok := v["winnerorder"].([]interface{}); ok {
- orderArr := util.ObjArrToMapArr(orders)
- for k, order := range orderArr {
- entname := util.ObjToString(order["entname"])
- tagNameArr, mainCompanyArr := []string{}, []string{}
- _, tagNameArr, mainCompanyArr = getTag([]string{entname}, v, "2")
- orderArr[k]["operatorTag"] = tagNameArr
- orderArr[k]["mainCompany"] = mainCompanyArr
- }
- v["winnerorder"] = orderArr
- }
- }
- return v
- }
|