Browse Source

初始化

Tao Zhang 6 years ago
parent
commit
91c4c87bfe
52 changed files with 6 additions and 11047 deletions
  1. 6 6
      readme.txt
  2. 0 5
      src/getEntpriseCopyRight/config.json
  3. 0 38
      src/getEntpriseCopyRight/entity.go
  4. 0 316
      src/getEntpriseCopyRight/main.go
  5. 0 214
      src/getEntpriseCopyRight/parse.go
  6. 0 1
      src/getEntpriseCopyRight/readme.txt
  7. 0 7
      src/getZhaoPin/config.json
  8. 0 392
      src/getZhaoPin/main.go
  9. 0 8
      src/saveMsg/config.json
  10. 0 176
      src/saveMsg/main.go
  11. 0 5
      src/saveServer/README.md
  12. 0 140
      src/saveServer/bidcheckrepeat/bidcheckrepeat.go.back
  13. 0 38
      src/saveServer/bidcheckrepeat/redischeck.go
  14. 0 11
      src/saveServer/bidcheckrepeat/redischeck_test.go
  15. 0 3136
      src/saveServer/city.json
  16. 0 13
      src/saveServer/config.json
  17. 0 54
      src/saveServer/datamonitor.go
  18. 0 117
      src/saveServer/extractarea/extractarea.go
  19. 0 145
      src/saveServer/extracttime/extracttime.go
  20. 0 90
      src/saveServer/httpserver.go
  21. 0 173
      src/saveServer/main.go
  22. 0 153
      src/saveServer/main_test.go
  23. 0 253
      src/saveServer/savedata.go
  24. 0 97
      src/saveServer/tempinfo/tempinfo.go
  25. 0 12
      src/saveServer/tools/areaval.go
  26. 0 7
      src/saveServer/tools/mgo.go
  27. 0 18
      src/saveServer/tools/tool.go
  28. 0 108
      src/saveServer/tools/tool_test.go
  29. 0 34
      src/spidersitecheck/config.json
  30. 0 62
      src/spidersitecheck/influxdb.go
  31. 0 573
      src/spidersitecheck/main.go
  32. 0 13
      src/spidersitecheck/main_test.go
  33. 0 34
      src/spidersitecheck/task.go
  34. 0 6
      src/企业名称查询服务/config.json
  35. 0 183
      src/企业名称查询服务/dictionary/db.go
  36. 0 11
      src/企业名称查询服务/dictionary/db_test.go
  37. 0 98
      src/企业名称查询服务/initmemdb.go
  38. 0 44
      src/企业名称查询服务/main.go
  39. 0 275
      src/公示增量数据保存服务/main.go
  40. 0 166
      src/异常名录刷新服务/business.go
  41. 0 7
      src/异常名录刷新服务/config.json
  42. 0 93
      src/异常名录刷新服务/main.go
  43. 0 91
      src/服务端4会东/dispatch.go
  44. 0 243
      src/服务端4会东/main.go
  45. 0 3113
      src/股东转名录/city.json
  46. 0 54
      src/股东转名录/citysearch.go
  47. 0 9
      src/股东转名录/config.json
  48. 0 102
      src/股东转名录/eventhandler.go
  49. 0 50
      src/股东转名录/main.go
  50. 0 4
      src/股东转名录/readme.md
  51. 0 49
      src/识别验证码样例/distinguish.go
  52. BIN
      src/识别验证码样例/test.jpg

+ 6 - 6
readme.txt

@@ -1,6 +1,6 @@
-v1.3.2
-
-v1.3.1
-saveserver服务
-+增加redis集群访问
--删除替换临时信息(detail_bak字段)
+v3.0
+重点修改mfw框架;
+清除相关服务;
+框架支持tls,报文提供crc64校验,连接添加token验证;
+接入流程变动:
+1.join;2-n.操作;3.levae;4.close

+ 0 - 5
src/getEntpriseCopyRight/config.json

@@ -1,5 +0,0 @@
-{	
-	"spider_mongodbaddr": "192.168.3.18:27080",
-	"qfw_mongodbaddr": "192.168.3.18:27080"
-    
-}

+ 0 - 38
src/getEntpriseCopyRight/entity.go

@@ -1,38 +0,0 @@
-package main
-
-//发明专利
-type Patent struct {
-	ApplyNo          string //申请号
-	ApplyDate        string //申请日期
-	PublicNo         string //公开号
-	PublicDate       string //公开日
-	PatentName       string //发明专利名称
-	ApplyPerson      string //申请人
-	ParentPersonName string //发明人
-	IpcTypeNo        string //ipc分类号
-}
-
-/*
-计算机软件著作权
-*/
-type ComputerSoftCopyRight struct {
-	RegNo            string //登记号
-	SortNo           string //分类号
-	SoftFullName     string //软件全称
-	SoftSimpleName   string //简称
-	Version          string //版本号
-	CopyRightPerson  string //著作权人
-	FirstPublishDate string //首次发表日期
-	RegDate          string //登记日期
-}
-
-/*作品著作权*/
-type WorkCopyRight struct {
-	RegNo            string //登记号
-	RegDate          string //登记日期
-	WorkName         string //作品名称
-	WorkType         string //作品类别
-	CopyRightPerson  string //著作权人
-	FirstPublishDate string //首次发表日期
-	FinishedDate     string //创作完成日期
-}

+ 0 - 316
src/getEntpriseCopyRight/main.go

@@ -1,316 +0,0 @@
-package main
-
-import (
-	"bytes"
-	"compress/gzip"
-	"container/list"
-	"encoding/base64"
-	"encoding/json"
-	"io/ioutil"
-	"log"
-	"mfw/util"
-	"net/url"
-	util1 "qfw/util"
-	mgu "qfw/util/mongodbutil"
-	"strings"
-
-	"golang.org/x/text/encoding/simplifiedchinese"
-	"golang.org/x/text/transform"
-)
-
-const (
-	MSG_SERVER = "test.qmx.top:7070" //消息服务器地址
-	GC_TIMEOUT = 20                  //客户端检查链接间隔X秒
-)
-
-var client *util.Client
-var spiderdb, webdb1 string
-
-var Config map[string]interface{}
-
-func init() {
-	util1.ReadConfig(&Config)
-	//mongodb.InitMongodbPool(3, "192.168.3.18:27080", "qfw")
-	spiderdb = "spider"
-	webdb1 = "qfw"
-	initConfig(Config["spider_mongodbaddr"].(string), "spider", spiderdb, 10)
-	initConfig(Config["qfw_mongodbaddr"].(string), "web1", webdb1, 10)
-	mgu.InitMongodbPool()
-
-}
-func processEvent(p *util.Packet) {
-	event := int(p.Event)
-	switch event {
-	case util.SERVICE_SPIDER_ECPS: //同步调用,原数据返回
-		//client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, p.GetBusinessData())
-		param := make(map[string]interface{})
-		json.Unmarshal(p.GetBusinessData(), &param)
-		searchEntCopyRight(&param)
-
-	}
-}
-func main() {
-	//log.Printf(MSG_SERVER)
-	client, _ = util.StartClient(processEvent, MSG_SERVER, "企业著作权查询服务", []int{util.SERVICE_SPIDER_ECPS})
-	flag := make(chan bool)
-	<-flag
-}
-
-func searchEntCopyRight(param *map[string]interface{}) {
-	if *param != nil {
-		entName := ""
-		if (*param)["title"] != nil {
-			entName = (*param)["title"].(string)
-		}
-
-		//entId := (*param)["entId"].(string)
-		log.Println("开始下载**  " + entName + " **著作权数据")
-		_map := make(map[string]interface{})
-		_zlArr, zlCount := downLoadZl(entName)
-		//	for _, v := range _zlArr {
-		//		fmt.Println("专利名称:" + (*v).PatentName)
-		//	}
-		var needSave bool = false
-		if zlCount > 0 {
-			_map["Patent"] = _zlArr
-			needSave = true
-		}
-
-		srArray := downLoadSoftWare(entName)
-		if srArray != nil {
-			_map["SoftWareCopyRight"] = srArray
-			needSave = true
-		}
-
-		workArray := downLoadWorkCopyRight(entName)
-		if workArray != nil {
-			_map["WorkCopyRight"] = workArray
-			needSave = true
-		}
-		if needSave {
-			_map["EntName"] = entName
-			dataBaseData := mgu.FindOne("enterprise_copyright", "web1", webdb1, `{"EntName": "`+entName+`"}`)
-			if *dataBaseData != nil {
-				mgu.Update("enterprise_copyright", "web1", webdb1, `{"EntName":"`+entName+`"}`, &map[string]interface{}{
-					"$set": _map}, true, false)
-
-			} else {
-				mgu.Save("enterprise_copyright", "web1", webdb1, _map)
-
-			}
-			log.Println(entName, "  各类著作权数据入库成功")
-		} else {
-			log.Println(entName, "  无任何著作权信息不保存")
-		}
-		log.Println("...........开始补充ecps数据标志位")
-		entInfo := mgu.FindOne("ecps", "spider", spiderdb, &map[string]interface{}{"EntName": entName})
-		if *entInfo != nil {
-			sign := (*entInfo)["signvalue"].(int)
-			entId := (*entInfo)["_id"]
-			_sign := uint8(sign)
-			//log.Printf("%08b", _sign)
-			__sign := _sign << 1
-			//log.Printf("%08b", __sign)
-			___sign := __sign | _sign
-			//log.Printf("%08b", ___sign)
-			____sign := int(___sign)
-			//log.Printf("%d", ____sign)
-			b := mgu.Update("ecps", "spider", spiderdb, map[string]interface{}{"_id": entId}, map[string]interface{}{"$set": map[string]interface{}{"signvalue": ____sign}}, false, false)
-
-			if b {
-				log.Println("...........补充ecps数据标志位成功")
-			} else {
-				log.Println("...........补充ecps数据标志位失败")
-			}
-
-		} else {
-			log.Println("...........ecps库无该企业信息,无法更新标志位")
-		}
-	} else {
-		log.Println("广播参数传递为空")
-	}
-
-}
-
-func downLoadZl(entName string) ([]*Patent, int) {
-	_map := map[string]interface{}{}
-	msgid := util.UUID(8)
-	ret, err := client.Call("", msgid, util.SERVICE_DOWNLOAD, util.SENDTO_TYPE_RAND_RECIVER, map[string]interface{}{
-		"url":      "http://www.pss-system.gov.cn/sipopublicsearch/search/smartSearch-executeSmartSearch.shtml",
-		"method":   "post",
-		"encoding": "utf-8",
-		"useproxy": false,
-		"ishttps":  false,
-		"reqparam": map[string]string{
-			"searchCondition.searchExp":  entName,
-			"searchCondition.dbId":       "VDB",
-			"searchCondition.searchType": "Sino_foreign",
-			"resultPagination.limit":     "10",
-			"wee.bizlog.modulelevel":     "0200101"},
-		"head": map[string]string{
-			"Accept":          "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
-			"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4",
-			"User-Agent":      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",
-			"Host":            "www.pss-system.gov.cn",
-			"Origin":          "http://www.pss-system.gov.cn",
-			"Accept-Encoding": "gzip,deflate, sdch",
-			"Connection":      "keep-alive",
-			"RA-Sid":          "AB0DE612-20150428-121510-bc35f1-48c550",
-			"RA-Ver":          "3.0.7",
-			"Referer":         "http://www.pss-system.gov.cn/sipopublicsearch/search/searchHome-searchIndex.shtml?params=991CFE73D4DF553253D44E119219BF31366856FF4B152226CAE4DB031259396A",
-			"Content-Type":    "application/x-www-form-urlencoded"},
-	}, 60)
-	if err != nil {
-		log.Println("专利下载出错")
-	} else {
-		_map = map[string]interface{}{}
-		json.Unmarshal(ret, &_map)
-		bs, _ := base64.StdEncoding.DecodeString(_map["content"].(string))
-		if bs != nil {
-			gzipreader, _err2 := gzip.NewReader(bytes.NewReader(bs))
-			if _err2 != nil {
-				log.Println("gzip解析出错", _err2.Error(), "***:", _map["content"].(string), "  ***")
-			} else {
-				bs, _ = ioutil.ReadAll(gzipreader)
-				//log.Println(string(bs))
-				zlDataArray := make([]*Patent, 0)
-				zlCount := parsePatent(string(bs), &zlDataArray)
-				log.Printf("专利下载完成获取数据量:%d\n", zlCount)
-				if zlCount > 0 {
-					//log.Println("专利下载完毕,入库")
-					//time.Sleep(20 * time.Second)
-					batchSavePatent(zlDataArray, entName)
-					return zlDataArray, zlCount
-				}
-			}
-		}
-
-	}
-	return nil, 0
-}
-
-func downLoadSoftWare(entName string) []map[string]interface{} {
-
-	bs, _ := ioutil.ReadAll(transform.NewReader(strings.NewReader(entName), simplifiedchinese.GBK.NewEncoder()))
-	v := url.Values{"k": []string{string(bs)}}
-	sql_author := v.Encode()[2:]
-
-	_map := map[string]interface{}{}
-	msgid := util.UUID(8)
-	ret, _ := client.Call("", msgid, util.SERVICE_DOWNLOAD, util.SENDTO_TYPE_RAND_RECIVER, map[string]interface{}{
-		"url":      "http://www.ccopyright.com.cn/cpcc/RRegisterAction.do",
-		"method":   "get",
-		"encoding": "utf-8",
-		"useproxy": false,
-		"ishttps":  false,
-		"reqparam": map[string]string{
-			"method":     "list",
-			"no":         "fck",
-			"sql_author": sql_author,
-			"count":      "1000",
-			"curPage":    "1"},
-		"head": map[string]string{
-			"Accept":          "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
-			"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4",
-			"User-Agent":      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",
-			"Host":            "www.ccopyright.com.cn",
-			"Accept-Encoding": "deflate, sdch",
-			"Connection":      "keep-alive"},
-	}, 60)
-
-	json.Unmarshal(ret, &_map)
-	if _map["content"] != nil {
-		bs, _ = base64.StdEncoding.DecodeString(_map["content"].(string))
-		bs, _ = ioutil.ReadAll(transform.NewReader(bytes.NewReader(bs), simplifiedchinese.GBK.NewDecoder()))
-		computerSoftCopyRightList := list.New()
-		zzqCount := parseComputerSoftCopyRight(string(bs), computerSoftCopyRightList)
-		if zzqCount > 0 {
-			_arr := listConvertToArr(computerSoftCopyRightList)
-			log.Printf("计算机软件著作权下载完成获取数据量:%d\n", zzqCount)
-			return _arr
-		} else {
-			return nil
-		}
-	} else {
-		return nil
-	}
-
-}
-
-func downLoadWorkCopyRight(entName string) []map[string]interface{} {
-	bs, _ := ioutil.ReadAll(transform.NewReader(strings.NewReader(entName), simplifiedchinese.GBK.NewEncoder()))
-	v := url.Values{"k": []string{string(bs)}}
-	sql_obligee := v.Encode()[2:]
-
-	_map := map[string]interface{}{}
-	msgid := util.UUID(8)
-	ret, _ := client.Call("", msgid, util.SERVICE_DOWNLOAD, util.SENDTO_TYPE_RAND_RECIVER, map[string]interface{}{
-		"url":      "http://www.ccopyright.com.cn/cpcc/ZRegisterAction.do",
-		"method":   "get",
-		"encoding": "utf-8",
-		"useproxy": false,
-		"ishttps":  false,
-		"reqparam": map[string]string{
-			"method":      "list",
-			"no":          "fck",
-			"sql_obligee": sql_obligee,
-			"count":       "1000",
-			"curPage":     "1"},
-		"head": map[string]string{
-			"Accept":          "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
-			"Accept-Language": "zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4",
-			"User-Agent":      "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",
-			"Host":            "www.ccopyright.com.cn",
-			"Accept-Encoding": "deflate, sdch",
-			"Connection":      "keep-alive"},
-	}, 60)
-
-	json.Unmarshal(ret, &_map)
-	if _map["content"] != nil {
-		bs, _ = base64.StdEncoding.DecodeString(_map["content"].(string))
-
-		bs, _ = ioutil.ReadAll(transform.NewReader(bytes.NewReader(bs), simplifiedchinese.GBK.NewDecoder()))
-		workCopyRightLists := list.New()
-		zzqCount := parseWorkCopyRight(string(bs), workCopyRightLists)
-		if zzqCount > 0 {
-			_arr := listConvertToArr2(workCopyRightLists)
-			log.Printf("作品著作权下载完成获取数据量:%d\n", zzqCount)
-			return _arr
-		} else {
-			return nil
-		}
-	} else {
-		return nil
-	}
-
-}
-
-func batchSavePatent(zlDataArray []*Patent, entName string) {
-	var b bool
-	_map := make(map[string]interface{})
-
-	_map["EntName"] = entName
-	_map["Patent"] = zlDataArray
-	dataBaseData := mgu.FindOne("enterprise_zl_copyright", "web1", webdb1, `{"EntName": "`+entName+`"}`)
-	if *dataBaseData != nil {
-		b = mgu.Update("enterprise_zl_copyright", "web1", webdb1, `{"EntName":"`+entName+`"}`, &map[string]interface{}{
-			"$set": _map}, true, false)
-		if b {
-			log.Println(entName, "企业专利权更新成功")
-		}
-	} else {
-		_b := mgu.Save("enterprise_zl_copyright", "web1", webdb1, _map)
-		if _b != "" {
-			log.Println(entName, "企业专利权保存成功")
-		}
-	}
-}
-
-func initConfig(addr, alias, db string, dbsize int) {
-	conf := *new(mgu.PoolConfig)
-	conf.Addr = addr
-	conf.Alias = alias
-	conf.DB = db
-	conf.Size = dbsize
-	mgu.Config = append(mgu.Config, conf)
-}

+ 0 - 214
src/getEntpriseCopyRight/parse.go

@@ -1,214 +0,0 @@
-package main
-
-import (
-	"bytes"
-	"container/list"
-	"regexp"
-	"strings"
-
-	"github.com/PuerkitoBio/goquery"
-)
-
-func parsePatent(html string, zlDataArray *[]*Patent) int {
-	_count := 0
-	//nameReg, _ := regexp.Compile(`\s|\r|\n|\t`)
-	//	reg, _ := regexp.Compile("<[^/]*</strong>")
-	//	reg2, _ := regexp.Compile("<[^>]*>")
-	doc, _ := goquery.NewDocumentFromReader(bytes.NewBufferString(html))
-	doc.Find("input[name^='vIdHiddenCN'] ").Each(func(i int, q *goquery.Selection) {
-
-		attr, _ := q.Attr("value")
-
-		//result_inner_left_divCN201510402966
-		_parent := Patent{}
-		doc.Find("div[id=result_inner_left_div" + attr + "] .conter_talbe table tbody tr td strong").Each(func(j int, qq *goquery.Selection) {
-			//_str := strings.TrimSpace(qq.Text())
-			//tmp := []rune(_str)
-			//log.Println(string(tmp[4:]))
-			/*tmp, _ := qq.Html()
-			ret := reg.ReplaceAllString(strings.TrimSpace(tmp), "")
-			ret = reg2.ReplaceAllString(ret, "")
-			log.Println(ret)*/
-			//tmp := qq.Next().Text()
-
-			tmp := qq.Text()
-			switch j {
-			case 0:
-				_parent.ApplyNo = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-			case 1:
-				_parent.ApplyDate = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-			case 2:
-				_parent.PublicNo = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-			case 3:
-				_parent.PublicDate = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-			case 4:
-				_parent.PatentName = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-			case 5:
-				if strings.IndexAny(tmp, "IPC") > -1 {
-					_parent.IpcTypeNo = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-				} else if strings.IndexAny(tmp, "申请") > -1 {
-					if qq.Next().Text() != "" {
-						_parent.ApplyPerson = qq.Next().Text()
-					}
-
-				}
-			case 6:
-				if strings.IndexAny(tmp, "发明") > -1 {
-					_parent.ParentPersonName = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-				} else if strings.IndexAny(tmp, "申请") > -1 {
-					if qq.Next().Text() != "" {
-						_parent.ApplyPerson = qq.Next().Text()
-					}
-				}
-			case 7:
-				if strings.IndexAny(tmp, "发明") > -1 {
-					_parent.ParentPersonName = strings.TrimSpace(qq.Nodes[0].NextSibling.Data)
-				}
-
-			}
-
-		})
-		//log.Println("*************************")
-
-		//_list.PushBack(_parent)
-		*zlDataArray = append(*zlDataArray, &_parent)
-		_count++
-	})
-	return _count
-}
-
-/*
-计算机软件著作权解析
-*/
-func parseComputerSoftCopyRight(html string, _list *list.List) int {
-	//fmt.Println(html)
-	doc, _ := goquery.NewDocumentFromReader(bytes.NewBufferString(html))
-	_count := 0
-	nameReg, _ := regexp.Compile(`\s|\r|\n|\t`)
-
-	doc.Find("form[name='generalForm'] table").Eq(1).Find("tr").Each(func(i int, q *goquery.Selection) {
-		if i < 2 {
-			return
-		}
-		_computerSoftCopyRigt := ComputerSoftCopyRight{}
-		//前两行是表格的表头信息所以忽略
-		//fmt.Printf("序号:%d.", i-1)
-		q.Find("td").Each(func(j int, qq *goquery.Selection) {
-			switch j {
-			case 0:
-				//fmt.Printf(" 登记号:%s", qq.Text())
-				_computerSoftCopyRigt.RegNo = qq.Text()
-			case 1:
-				//fmt.Printf(" 分类号:%s", qq.Text())
-				_computerSoftCopyRigt.SortNo = qq.Text()
-			case 2:
-				//fmt.Printf(" 软件全称:%s", qq.Text())
-				_computerSoftCopyRigt.SoftFullName = nameReg.ReplaceAllString(qq.Text(), "")
-			case 3:
-				//fmt.Printf(" 软件简称:%s", qq.Text())
-				_computerSoftCopyRigt.SoftSimpleName = qq.Text()
-			case 4:
-				//fmt.Printf(" 版本号:%s", qq.Text())
-				_computerSoftCopyRigt.Version = qq.Text()
-			case 5:
-				//fmt.Printf(" 著作权人(国籍):%s", qq.Text())
-				_computerSoftCopyRigt.CopyRightPerson = qq.Text()
-			case 6:
-				//fmt.Printf(" 首次发表日期:%s", qq.Text())
-				_computerSoftCopyRigt.FirstPublishDate = qq.Text()
-			case 7:
-				//fmt.Printf(" 登记日期:%s", qq.Text())
-				_computerSoftCopyRigt.RegDate = qq.Text()
-			}
-		})
-		_list.PushBack(_computerSoftCopyRigt)
-		_count++
-	})
-	return _count
-}
-func parseWorkCopyRight(html string, _list *list.List) int {
-
-	doc, _ := goquery.NewDocumentFromReader(bytes.NewBufferString(html))
-	_count := 0
-	nameReg, _ := regexp.Compile(`\s|\r|\n|\t`)
-
-	doc.Find("form[name='generalForm'] table").Eq(1).Find("tr").Each(func(i int, q *goquery.Selection) {
-		if i < 1 {
-			return
-		}
-		_workCopyRigt := WorkCopyRight{}
-		//前1行是表格的表头信息所以忽略
-		//fmt.Printf("序号:%d.", i-1)
-		q.Find("td").Each(func(j int, qq *goquery.Selection) {
-			switch j {
-			case 0:
-				//fmt.Printf(" 登记号:%s", qq.Text())
-				_workCopyRigt.RegNo = qq.Text()
-			case 1:
-				//fmt.Printf(" 登记日期:%s", qq.Text())
-				_workCopyRigt.RegDate = qq.Text()
-			case 2:
-				//fmt.Printf(" 作品名称:%s", qq.Text())
-				_workCopyRigt.WorkName = nameReg.ReplaceAllString(qq.Text(), "")
-			case 3:
-				//fmt.Printf(" 作品类别:%s", qq.Text())
-				_workCopyRigt.WorkType = qq.Text()
-			case 4:
-				//fmt.Printf(" 著作权人:%s", qq.Text())
-				_workCopyRigt.CopyRightPerson = qq.Text()
-			case 5:
-				//fmt.Printf(" 创作完成日期:%s", qq.Text())
-				_workCopyRigt.FinishedDate = qq.Text()
-			case 6:
-				//fmt.Printf(" 首次发表日期:%s", qq.Text())
-				_workCopyRigt.FirstPublishDate = qq.Text()
-
-			}
-		})
-		_list.PushBack(_workCopyRigt)
-		_count++
-	})
-	return _count
-}
-
-func listConvertToArr(_list *list.List) []map[string]interface{} {
-	_arr := make([]map[string]interface{}, 0)
-	for e := _list.Front(); e != nil; e = e.Next() {
-		_arr = append(_arr, *entityConvertToMap(e.Value.(ComputerSoftCopyRight)))
-	}
-	//log.Print("数据组装完毕开始入库...")
-	return _arr
-}
-func listConvertToArr2(_list *list.List) []map[string]interface{} {
-	_arr := make([]map[string]interface{}, 0)
-	for e := _list.Front(); e != nil; e = e.Next() {
-		_arr = append(_arr, *entityConvertToMap2(e.Value.(WorkCopyRight)))
-	}
-	//	log.Print("数据组装完毕开始入库...")
-	return _arr
-}
-
-func entityConvertToMap(entity ComputerSoftCopyRight) *map[string]interface{} {
-	_map := make(map[string]interface{})
-	_map["RegNo"] = entity.RegNo
-	_map["SortNo"] = entity.SortNo
-	_map["SoftFullName"] = entity.SoftFullName
-	_map["SoftSimpleName"] = entity.SoftSimpleName
-	_map["Version"] = entity.Version
-	_map["CopyRightPerson"] = entity.CopyRightPerson
-	_map["FirstPublishDate"] = entity.FirstPublishDate
-	_map["RegDate"] = entity.RegDate
-	return &_map
-}
-func entityConvertToMap2(entity WorkCopyRight) *map[string]interface{} {
-	_map := make(map[string]interface{})
-	_map["RegNo"] = entity.RegNo
-	_map["RegDate"] = entity.RegDate
-	_map["WorkName"] = entity.WorkName
-	_map["WorkType"] = entity.WorkType
-	_map["CopyRightPerson"] = entity.CopyRightPerson
-	_map["FirstPublishDate"] = entity.FirstPublishDate
-	_map["FinishedDate"] = entity.FinishedDate
-
-	return &_map
-}

+ 0 - 1
src/getEntpriseCopyRight/readme.txt

@@ -1 +0,0 @@
-获取企业软件著作权、作品著作权、专利服务

+ 0 - 7
src/getZhaoPin/config.json

@@ -1,7 +0,0 @@
-{	
-	"spider_mongodbaddr": "192.168.3.18:27080",
-	"qfw_mongodbaddr": "192.168.3.18:27080",
-	"logo_dir":"/Users/smallow/Downloads/",
-	"web_dir":"http://123.56.236.148:6889/logo/"
-    
-}

+ 0 - 392
src/getZhaoPin/main.go

@@ -1,392 +0,0 @@
-package main
-
-import (
-	"bytes"
-	"compress/gzip"
-	"encoding/base64"
-	"encoding/json"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"mfw/util"
-	"os"
-	util1 "qfw/util"
-	mgu "qfw/util/mongodbutil"
-	"strconv"
-	"strings"
-	"time"
-
-	"github.com/PuerkitoBio/goquery"
-)
-
-const (
-	MSG_SERVER = "test.qmx.top:7070" //消息服务器地址
-	GC_TIMEOUT = 20                  //客户端检查链接间隔X秒
-)
-
-var client *util.Client
-var spiderdb, webdb1 string
-var Config map[string]interface{}
-var logo_dir, web_dir string
-
-func processEvent(p *util.Packet) {
-	event := int(p.Event)
-	switch event {
-	case util.SERVICE_SPIDER_ECPS: //同步调用,原数据返回
-		//client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, p.GetBusinessData())
-		param := make(map[string]interface{})
-		json.Unmarshal(p.GetBusinessData(), &param)
-		searchEntZpInfo(&param)
-	}
-}
-func init() {
-	util1.ReadConfig(&Config)
-	spiderdb = "spider"
-	webdb1 = "qfw"
-	logo_dir = Config["logo_dir"].(string)
-	web_dir = Config["web_dir"].(string)
-	initConfig(Config["spider_mongodbaddr"].(string), "spider", spiderdb, 10)
-	initConfig(Config["qfw_mongodbaddr"].(string), "web1", webdb1, 10)
-	mgu.InitMongodbPool()
-}
-func main() {
-	client, _ = util.StartClient(processEvent, MSG_SERVER, "招聘网站查询服务", []int{util.SERVICE_SPIDER_ECPS})
-	flag := make(chan bool)
-	<-flag
-}
-
-func searchEntZpInfo(param *map[string]interface{}) {
-	//downLoadZpInfo((*param)["title"].(string))
-	if *param != nil {
-		entName := ""
-		if (*param)["title"] != nil {
-			entName = (*param)["title"].(string)
-			log.Println("开始下载**  " + entName + " **招聘网站数据")
-			zpData := queryZpInfo(entName)
-			if zpData != nil {
-				log.Println("...........开始补充ecps数据标志位")
-				zp_descript := ""
-				zp_addr := ""
-				zp_logo := ""
-				if zpData["zp_descript"] != nil {
-					zp_descript = zpData["zp_descript"].(string)
-				}
-				if zpData["zp_address"] != nil {
-					zp_addr = zpData["zp_address"].(string)
-				}
-
-				if zpData["zp_avatar"] != nil {
-					zp_logo = zpData["zp_avatar"].(string)
-				}
-
-				entInfo := mgu.FindOne("ecps", "spider", spiderdb, &map[string]interface{}{"EntName": entName})
-				if *entInfo != nil {
-					sign := (*entInfo)["signvalue"].(int)
-					entId := (*entInfo)["_id"]
-					_sign := uint8(sign)
-					//log.Printf("%08b", _sign)
-					__sign := _sign << 1
-					//log.Printf("%08b", __sign)
-					___sign := __sign | _sign
-					//log.Printf("%08b", ___sign)
-					____sign := int(___sign)
-					//log.Printf("%d", ____sign)
-					b := mgu.Update("ecps", "spider", spiderdb, map[string]interface{}{"_id": entId}, map[string]interface{}{"$set": map[string]interface{}{"signvalue": ____sign, "zp_descript": zp_descript, "zp_addr": zp_addr, "zp_avatar": zp_logo}}, false, false)
-					if b {
-						log.Println("...........补充ecps数据标志位成功")
-					} else {
-						log.Println("...........补充ecps数据标志位失败")
-					}
-
-				} else {
-					log.Println("...........ecps库无该企业信息,无法更新标志位")
-				}
-
-			} else {
-				entInfo := mgu.FindOne("ecps", "spider", spiderdb, &map[string]interface{}{"EntName": entName})
-				if *entInfo != nil {
-					sign := (*entInfo)["signvalue"].(int)
-					entId := (*entInfo)["_id"]
-					_sign := uint8(sign)
-					//log.Printf("%08b", _sign)
-					__sign := _sign << 1
-					//log.Printf("%08b", __sign)
-					___sign := __sign | _sign
-					//log.Printf("%08b", ___sign)
-					____sign := int(___sign)
-					//log.Printf("%d", ____sign)
-					b := mgu.Update("ecps", "spider", spiderdb, map[string]interface{}{"_id": entId}, map[string]interface{}{"$set": map[string]interface{}{"signvalue": ____sign}}, false, false)
-					if b {
-						log.Println("...........补充ecps数据标志位成功")
-					} else {
-						log.Println("...........补充ecps数据标志位失败")
-					}
-
-				} else {
-					log.Println("...........ecps库无该企业信息,无法更新标志位")
-				}
-			}
-		}
-	}
-}
-
-func queryZpInfo(entName string) map[string]interface{} {
-	data := make(map[string]interface{})
-	dataBaseData := mgu.FindOne("zlzp", "web1", webdb1, `{"name": "`+entName+`"}`)
-	if *dataBaseData != nil {
-		//		mgu.Update("enterprise_copyright", "web1", webdb1, `{"EntName":"`+entName+`"}`, &map[string]interface{}{
-		//			"$set": _map}, true, false)
-		log.Println("查询到企业:", (*dataBaseData)["name"], " 招聘网站信息")
-		data["zp_descript"] = (*dataBaseData)["cdescribe"]
-		data["zp_address"] = (*dataBaseData)["caddr"]
-		if (*dataBaseData)["clogo"] != nil && (*dataBaseData)["clogo"] != "" {
-			bs, _err := base64.StdEncoding.DecodeString((*dataBaseData)["clogo"].(string))
-			if _err != nil {
-				log.Println("base64解析出错", _err.Error())
-			} else {
-				year := time.Now().Year()
-				month := time.Now().Month()
-				_month := formatMonth(month)
-				os.MkdirAll(logo_dir+"/"+strconv.Itoa(year)+"/"+_month, 0777)
-
-				time := time.Unix(time.Now().Unix(), 0)
-				test := util1.FormatDate(&time, "20060102150405")
-				filename := fmt.Sprintf(logo_dir+"/%s/%s/%s.jpg", strconv.Itoa(year), _month, test)
-				fi, err := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0x777)
-				if err != nil {
-					log.Println(err.Error())
-				}
-				defer fi.Close()
-				fi.Write(bs)
-
-				data["zp_avatar"] = web_dir + strconv.Itoa(year) + "/" + _month + "/" + test + ".jpg"
-			}
-		} else {
-			data["zp_avatar"] = ""
-		}
-		return data
-	} else {
-		log.Println(entName, "库存没有,去网上查")
-		entZpInfo := downLoadZpInfo(entName)
-		if entZpInfo != nil {
-			data["zp_descript"] = entZpInfo["cdescribe"].(string)
-			data["zp_address"] = entZpInfo["caddr"].(string)
-			if entZpInfo["clogo"] != nil && entZpInfo["clogo"] != "" {
-				bs, _err := base64.StdEncoding.DecodeString(entZpInfo["clogo"].(string))
-				if _err != nil {
-					log.Println("base64解析出错", _err.Error())
-				} else {
-					year := time.Now().Year()
-					month := time.Now().Month()
-					_month := formatMonth(month)
-					os.MkdirAll(logo_dir+"/"+strconv.Itoa(year)+"/"+_month, 0777)
-
-					time := time.Unix(time.Now().Unix(), 0)
-					test := util1.FormatDate(&time, "20060102150405")
-					filename := fmt.Sprintf(logo_dir+"/%s/%s/%s.jpg", strconv.Itoa(year), _month, test)
-					//fmt.Println(filename)
-
-					//filename := fmt.Sprintf(logo_dir+"/%s.jpg", entName)
-					fi, err := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0x777)
-					if err != nil {
-						log.Println(err.Error())
-					}
-					defer fi.Close()
-					fi.Write(bs)
-
-					data["zp_avatar"] = web_dir + strconv.Itoa(year) + "/" + _month + "/" + test + ".jpg"
-				}
-			}
-			return data
-		} else {
-			return nil
-		}
-
-	}
-
-}
-
-func downLoadZpInfo(entName string) map[string]interface{} {
-	_map := map[string]interface{}{}
-	msgid := util.UUID(8)
-	//fmt.Println(msgid)
-	fmt.Println("从网上下载", entName, "  招聘网站信息")
-	ret, _ := client.Call("", msgid, util.SERVICE_DOWNLOAD, util.SENDTO_TYPE_RAND_RECIVER, map[string]interface{}{
-		"url":      "http://sou.zhaopin.com/jobs/searchresult.ashx",
-		"method":   "get",
-		"encoding": "utf-8",
-		"useproxy": false,
-		"ishttps":  false,
-		"reqparam": map[string]string{
-			"jl": "选择地区",
-			"kw": entName,
-			"sm": "1",
-			"p":  "1"},
-		"head": map[string]string{
-			"Accept":                    "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8",
-			"Accept-Language":           "zh-CN,zh;q=0.8,en;q=0.6,zh-TW;q=0.4",
-			"User-Agent":                "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/48.0.2564.116 Safari/537.36",
-			"Host":                      "sou.zhaopin.com",
-			"Accept-Encoding":           "gzip,deflate, sdch",
-			"Connection":                "keep-alive",
-			"Upgrade-Insecure-Requests": "1",
-			"Pragma":                    "no-cache",
-			"Referer":                   "http://company.zhaopin.com/",
-			"Content-Type":              "application/x-www-form-urlencoded"},
-	}, 60)
-
-	_map = map[string]interface{}{}
-	json.Unmarshal(ret, &_map)
-
-	if _map["content"] != nil {
-		bs, _ := base64.StdEncoding.DecodeString(_map["content"].(string))
-
-		gzipreader, _ := gzip.NewReader(bytes.NewReader(bs))
-		bs, _ = ioutil.ReadAll(gzipreader)
-
-		doc, _ := goquery.NewDocumentFromReader(bytes.NewBufferString(string(bs)))
-		//fmt.Println(doc.Html())
-		detailUrl, hasTrue := doc.Find("#newlist_list_content_table li.newlist_deatil_three a").Eq(0).Attr("href")
-		if hasTrue {
-			//fmt.Println(detailUrl)
-			fmt.Println("下载企业详细信息...")
-			msgid := util.UUID(8)
-			_ret, _ := client.Call("", msgid, util.SERVICE_DOWNLOAD, util.SENDTO_TYPE_RAND_RECIVER, map[string]interface{}{
-				"url":      detailUrl,
-				"method":   "get",
-				"encoding": "utf-8",
-				"useproxy": false,
-				"ishttps":  false,
-				"reqparam": map[string]string{},
-				"head":     map[string]string{},
-			}, 60)
-
-			__map := map[string]interface{}{}
-			json.Unmarshal(_ret, &__map)
-			_bs, _ := base64.StdEncoding.DecodeString(__map["content"].(string))
-			//fmt.Println(string(_bs))
-			_doc, _ := goquery.NewDocumentFromReader(bytes.NewBufferString(string(_bs)))
-			_entName := strings.TrimSpace(_doc.Find("div.mainLeft h1").Text())
-			//fmt.Println("公司名称:", _entName)
-			_entType := "" //公司性质
-			_entGm := ""   //公司规模
-			_entSite := "" //公司网站
-			_entHy := ""   //公司行业
-			_entAdd := ""  //公司地址
-			_doc.Find("table.comTinyDes tr").Each(func(i int, q *goquery.Selection) {
-				//fmt.Println(q.Find("td span").Eq(0).Text(), q.Find("td span").Eq(1).Text())
-				tmp := strings.TrimSpace(q.Find("td span").Eq(0).Text())
-				tmp2 := strings.TrimSpace(q.Find("td span").Eq(1).Text())
-				index1 := strings.Index(tmp, "公司性质")
-				index2 := strings.Index(tmp, "公司规模")
-				index3 := strings.Index(tmp, "公司网站")
-				index4 := strings.Index(tmp, "公司行业")
-				index5 := strings.Index(tmp, "公司地址")
-				if index1 > -1 {
-					_entType = tmp2
-				}
-				if index2 > -1 {
-					_entGm = tmp2
-				}
-				if index3 > -1 {
-					_entSite = tmp2
-				}
-				if index4 > -1 {
-					_entHy = tmp2
-				}
-				if index5 > -1 {
-					_entAdd = tmp2
-				}
-
-			})
-			_entDesc, _ := _doc.Find("div.company-content").Html()
-			//fmt.Println("公司简介:", _entDesc)
-			_entLogo1, _ := _doc.Find("div.mainLeft img").Eq(0).Attr("src")
-			//fmt.Println("公司logo1", _entLogo1)
-			_entLogo := ""
-			if _entLogo1 != "" {
-				msgid = util.UUID(8)
-				__ret, _ := client.Call("", msgid, util.SERVICE_DOWNLOAD, util.SENDTO_TYPE_RAND_RECIVER, map[string]interface{}{
-					"url":      _entLogo1,
-					"method":   "get",
-					"encoding": "utf-8",
-					"useproxy": false,
-					"ishttps":  false,
-					"reqparam": map[string]string{},
-					"head":     map[string]string{},
-				}, 60)
-				___map := map[string]interface{}{}
-				json.Unmarshal(__ret, &___map)
-				_entLogo = ___map["content"].(string)
-			}
-
-			entZpInfo := make(map[string]interface{})
-			entZpInfo["name"] = _entName
-			entZpInfo["title"] = _entName
-			entZpInfo["ctype"] = _entType
-			entZpInfo["chy"] = _entHy
-			entZpInfo["caddr"] = _entAdd
-			entZpInfo["clogo"] = _entLogo
-			entZpInfo["cdescribe"] = _entDesc
-			entZpInfo["comeintime"] = time.Now().Unix()
-			//__bs, _ := base64.StdEncoding.DecodeString(___map["content"].(string))
-			//		filename := fmt.Sprintf(logo_dir+"/%s.png", "河南拓扑")
-			//		fi, err := os.OpenFile(filename, os.O_CREATE|os.O_TRUNC|os.O_RDWR, 0x777)
-			//		if err != nil {
-			//			log.Println(err.Error())
-			//		}
-			//		defer fi.Close()
-			//		fi.Write(__bs)
-			//fmt.Println(entZpInfo)
-			fmt.Println("下载详细信息完成,入库保存..")
-			isSuccessSave := mgu.Save("zlzp", "web1", webdb1, entZpInfo)
-			fmt.Println("保存:", isSuccessSave)
-			return entZpInfo
-		} else {
-			fmt.Println("网上查询不到企业招聘网站信息")
-		}
-	} else {
-		fmt.Println("从网上下载", entName, "信息失败")
-	}
-
-	return nil
-}
-
-func initConfig(addr, alias, db string, dbsize int) {
-	conf := *new(mgu.PoolConfig)
-	conf.Addr = addr
-	conf.Alias = alias
-	conf.DB = db
-	conf.Size = dbsize
-	mgu.Config = append(mgu.Config, conf)
-}
-
-func formatMonth(month time.Month) string {
-	switch month {
-	case time.January:
-		return "01"
-	case time.February:
-		return "02"
-	case time.March:
-		return "03"
-	case time.April:
-		return "04"
-	case time.May:
-		return "05"
-	case time.June:
-		return "06"
-	case time.July:
-		return "07"
-	case time.August:
-		return "08"
-	case time.September:
-		return "09"
-	case time.October:
-		return "10"
-	case time.November:
-		return "11"
-	case time.December:
-		return "12"
-	}
-	return month.String()
-}

+ 0 - 8
src/saveMsg/config.json

@@ -1,8 +0,0 @@
-{
-    "msgAddr": "test.qmx.top:7070",
-    "mongodbAddr": "192.168.3.18:27080",
-    "mongodbSize": "10",
-    "mongodbName": "qfw",
-    "elasticAddr": "http://192.168.3.18:9800",
-    "elasticSize": "10"
-}

+ 0 - 176
src/saveMsg/main.go

@@ -1,176 +0,0 @@
-// main
-package main
-
-import (
-	"encoding/json"
-	"gopkg.in/mgo.v2/bson"
-	"log"
-	"mfw/util"
-	qutil "qfw/util"
-	"qfw/util/elastic"
-	"qfw/util/mongodb"
-	"sync"
-	"time"
-)
-
-const (
-	EVENT_SAVETODB                   = 4100 //保存数据到mgo库
-	EVENT_SAVETODB_CHECK             = 4101 //判重,保存数据到mgo库
-	EVENT_SAVETODB_CHECK_CREATEINDEX = 4102 //判重,保存数据到mgo库,并生索引数据
-)
-
-var client *util.Client
-var config map[string]string
-var pool chan bool
-var lock *sync.Mutex = new(sync.Mutex)
-
-func init() {
-	qutil.ReadConfig(&config)
-	mongodb.InitMongodbPool(qutil.IntAll(config["mongodbSize"]), qutil.ObjToString(config["mongodbAddr"]), qutil.ObjToString(config["mongodbName"]))
-	elastic.InitElasticSize(qutil.ObjToString(config["elasticAddr"]), qutil.IntAll(config["elasticSize"]))
-}
-func main() {
-	pool = make(chan bool, 10)
-	client, _ = util.StartClient(processevent, qutil.ObjToString(config["msgAddr"]), "消息存储、elastic索引服务", []int{EVENT_SAVETODB, EVENT_SAVETODB_CHECK, EVENT_SAVETODB_CHECK_CREATEINDEX})
-	//进入服务等待
-	wait := make(chan bool)
-	<-wait
-}
-
-func processevent(p *util.Packet) {
-	pool <- true
-	defer func() {
-		<-pool
-	}()
-	qutil.Try(func() {
-		switch p.Event {
-		case EVENT_SAVETODB:
-			para := []interface{}{}
-			err := json.Unmarshal(p.GetBusinessData(), &para)
-			b := false
-			if err != nil {
-				log.Println(EVENT_SAVETODB, err)
-			} else {
-				b = SaveToDB("", para[1].([]interface{}))
-			}
-			client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, b)
-		case EVENT_SAVETODB_CHECK:
-			para := []interface{}{}
-			err := json.Unmarshal(p.GetBusinessData(), &para)
-			b := false
-			if err != nil {
-				log.Println(EVENT_SAVETODB, err)
-			} else {
-				b = SaveToDB(para[0].(string), para[1].([]interface{}))
-			}
-			client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, b)
-		case EVENT_SAVETODB_CHECK_CREATEINDEX:
-			para := []interface{}{}
-			err := json.Unmarshal(p.GetBusinessData(), &para)
-			b := false
-			if err != nil {
-				log.Println(EVENT_SAVETODB_CHECK_CREATEINDEX, err)
-			} else {
-				b = SaveToDBCheckRepeat(para[0].(string), para[1].([]interface{}))
-			}
-			client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, b)
-		}
-	}, func(e interface{}) {
-		log.Println("processevent err:", e)
-	})
-}
-
-func SaveToDBCheckRepeat(field string, obj []interface{}) bool {
-	b := true
-	if len(obj) > 0 {
-		for _, v := range obj {
-			qutil.Try(func() {
-				lock.Lock()
-				defer lock.Unlock()
-				tmp := v.(map[string]interface{})
-				T := qutil.ObjToString(tmp["T"])
-				if len(T) > 0 {
-					tmp = dealDoc(tmp)
-					n := *mongodb.FindOne(T, &map[string]interface{}{field: tmp[field]})
-					if len(n) == 0 {
-						_id := mongodb.Save(T, tmp)
-						if _id != "" {
-							tmp["_id"] = bson.ObjectIdHex(_id)
-							delete(tmp, "contenthtml")
-							if !elastic.Save(T, T, &tmp) {
-								b = false
-							}
-						}
-					}
-				}
-			}, func(e interface{}) {})
-		}
-	}
-	return b
-}
-
-func SaveToDB(check string, obj []interface{}) bool {
-	b := true
-	qutil.Try(func() {
-		if len(obj) > 0 {
-			msave := map[string][]map[string]interface{}{}
-			for _, v := range obj {
-				qutil.Try(func() {
-					if tmp, ok := v.(map[string]interface{}); ok {
-						T := qutil.ObjToString(tmp["T"])
-						if len(T) > 0 {
-							tmp = dealDoc(tmp)
-							if nil == msave[T] {
-								msave[T] = []map[string]interface{}{tmp}
-							} else {
-								msave[T] = append(msave[T], tmp)
-							}
-						}
-					}
-				}, func(e interface{}) {})
-			}
-			if check == "" {
-				for k, v := range msave {
-					if !mongodb.SaveBulk(k, v...) {
-						b = false
-					}
-				}
-			} else {
-				for k, v := range msave {
-					for _, tmp := range v {
-						data := *mongodb.FindOneByField(k, `{"`+check+`":"`+qutil.ObjToString(tmp[check])+`"}`, `{"title":1}`)
-						if len(data) < 1 {
-							mongodb.Save(k, tmp)
-						}
-					}
-				}
-			}
-		}
-	}, func(e interface{}) {
-		log.Println("SaveToDB err:", e)
-	})
-	return b
-}
-
-func dealDoc(tmp map[string]interface{}) map[string]interface{} {
-	delete(tmp, "T")
-	qutil.Try(func() {
-		for k, val := range tmp {
-			switch k[:2] {
-			case "s_": //string型
-				tmp[k] = qutil.ObjToString(val)
-			case "l_": //int64位
-				if len(k) > 5 && k[2:5] == "np_" {
-					tm := k
-					k = tm[5:]
-					delete(tmp, tm)
-				}
-				tmp[k] = qutil.Int64All(val)
-			case "i_": //int型
-				tmp[k] = qutil.IntAll(val)
-			}
-		}
-	}, func(e interface{}) {})
-	tmp["comeintime"] = time.Now().Unix()
-	return tmp
-}

+ 0 - 5
src/saveServer/README.md

@@ -1,5 +0,0 @@
-config.json
-	port 配置项目是提供网页端保存、日志开启服务,节点切换时注意端口冲突
-
-dev2.0.1分支
-1、增加数据监控

+ 0 - 140
src/saveServer/bidcheckrepeat/bidcheckrepeat.go.back

@@ -1,140 +0,0 @@
-package bidcheckrepeat
-
-import (
-	"log"
-	"os"
-	"qfw/util"
-	"saveServer/tools"
-	"strings"
-	"sync"
-	"time"
-)
-
-type Infosite struct {
-	Site       string
-	Comeintime int64
-}
-
-var Collections = []string{"bidding", "bidding_back"}
-var TitleMap = map[string]*Infosite{}
-var HrefMap = map[string]bool{}
-var TLock = sync.Mutex{}
-var HLock = sync.Mutex{}
-
-//URL全部判重-标题只判断最近几天,URL只取实时库中的
-func BidCheckInit2(days int) {
-	if days < 1 {
-		days = 3
-	}
-	TM := int64(days * 86400)
-	//加载数据
-	util.Try(func() {
-		sess := tools.Mgo.GetMgoConn()
-		defer tools.Mgo.DestoryMongoConn(sess)
-		i := 0
-		now := time.Now().Unix()
-		for _, coll := range Collections {
-			cur := sess.DB(tools.Mgo.DbName).C(coll).Find(nil).Select(&map[string]interface{}{
-				"_id":        -1,
-				"title":      1,
-				"href":       1,
-				"comeintime": 1,
-				"site":       1,
-			}).Iter()
-			log.Println("初始化collection", coll, i)
-			for tmp := make(map[string]interface{}); cur.Next(&tmp); i++ {
-				href := util.ObjToString(tmp["href"])
-				if href != "" {
-					if strings.HasPrefix(href, "http://") {
-						href = href[7:]
-					}
-					HrefMap[href] = true
-				}
-				if coll == "bidding" {
-					comeintime := util.Int64All(tmp["comeintime"])
-					if now-comeintime < TM {
-						title := util.ObjToString(tmp["title"])
-						site := util.ObjToString(tmp["site"])
-						if title != "" && site != "" {
-							tmpInfo := &Infosite{
-								Site:       site,
-								Comeintime: comeintime,
-							}
-							TitleMap[title] = tmpInfo
-						}
-					}
-				}
-				if i%20000 == 0 {
-					log.Println("i=", i)
-				}
-			}
-		}
-		log.Println("加载完成-t-h:", i, len(TitleMap), len(HrefMap))
-	}, func(e interface{}) {
-		log.Println("初始化判重Error:", e)
-		os.Exit(0)
-	})
-
-	go BidMapTask(TM)
-}
-
-//判断是否是数据
-func BidCheck(title, url, site string) (res bool) {
-	if strings.HasPrefix(url, "http://") {
-		url = url[7:]
-	}
-	HLock.Lock()
-	res = HrefMap[url]
-	HLock.Unlock()
-	if !res { //url不重,//判断标题
-		TLock.Lock()
-		tmpSite := TitleMap[title]
-		TLock.Unlock()
-		if tmpSite != nil && tmpSite.Site != site {
-			res = true
-		}
-	}
-	return
-}
-
-//增加数据
-func BidAdd(title, url, site string, ctime int64) {
-	if strings.HasPrefix(url, "http://") {
-		url = url[7:]
-	}
-	HLock.Lock()
-	HrefMap[url] = true
-	HLock.Unlock()
-	tmp := &Infosite{
-		Site:       site,
-		Comeintime: ctime,
-	}
-	TLock.Lock()
-	TitleMap[title] = tmp
-	TLock.Unlock()
-}
-
-//定时清理数据
-func BidMapTask(TM int64) {
-	for {
-		time.Sleep(5 * time.Minute)
-		now := time.Now()
-		next := time.Date(now.Year(), now.Month(), now.Day()+1, 0, 0, 0, 0, now.Location())
-		timer := time.NewTimer(next.Sub(now))
-		select {
-		case <-timer.C:
-			//过滤数据
-			log.Println("清理数据")
-			TN := time.Now().Unix()
-			log.Println("Len-titlemap:", len(TitleMap))
-			TLock.Lock()
-			for k, v := range TitleMap {
-				if TN-v.Comeintime > TM {
-					delete(TitleMap, k)
-				}
-			}
-			TLock.Unlock()
-			log.Println("Len-titlemap:", len(TitleMap))
-		}
-	}
-}

+ 0 - 38
src/saveServer/bidcheckrepeat/redischeck.go

@@ -1,38 +0,0 @@
-package bidcheckrepeat
-
-import (
-	"log"
-	"qfw/util/redis"
-)
-
-const (
-	RDB = "redisdb"
-	EX  = 5184000
-	sha = "e6d1f45ff6176304f9d2394ed57e518d28f6a8a4b92982e2a2af168496e4b43b"
-)
-
-var KS = []string{}
-
-func BidCheck(href, shaid string) (res bool) {
-	var e error
-	for _, k := range KS {
-		res, e = redis.Exists(k, href)
-		if e == nil && !res && shaid != "-1" {
-			res, e = redis.Exists(k, shaid)
-		}
-		if res {
-			break
-		}
-	}
-	if e != nil {
-		log.Println("redis-check-error", e)
-	}
-	return
-}
-
-func BidAdd(href, shaid string) {
-	redis.Put(RDB, href, 1, EX)
-	if shaid != "-1" {
-		redis.Put(RDB, shaid, 1, EX)
-	}
-}

File diff suppressed because it is too large
+ 0 - 11
src/saveServer/bidcheckrepeat/redischeck_test.go


+ 0 - 3136
src/saveServer/city.json

@@ -1,3136 +0,0 @@
-{
-    "city": {
-        "金银川镇": "新疆",
-        "郑东新区": "河南",
-        "信阳客整所": "湖北",
-        "北屯": "新疆",
-        "鼓楼区": "江苏",
-        "辽河": "辽宁",
-        "南大港": "河北",
-        "北京": "北京",
-        "密云": "北京",
-        "延庆": "北京",
-        "天津": "天津",
-        "宁河": "天津",
-        "静海": "天津",
-        "蓟县": "天津",
-        "河北": "河北",
-        "石家庄": "河北",
-        "井陉": "河北",
-        "正定": "河北",
-        "栾城": "河北",
-        "行唐": "河北",
-        "灵寿": "河北",
-        "高邑": "河北",
-        "深泽": "河北",
-        "赞皇": "河北",
-        "无极县": "河北",
-        "平山县": "河北",
-        "元氏": "河北",
-        "赵县": "河北",
-        "辛集市": "河北",
-        "藁城": "河北",
-        "晋州": "河北",
-        "新乐": "河北",
-        "鹿泉": "河北",
-        "唐山": "河北",
-        "滦县": "河北",
-        "滦南": "河北",
-        "乐亭": "河北",
-        "迁西": "河北",
-        "玉田": "河北",
-        "唐海": "河北",
-        "遵化": "河北",
-        "迁安市": "河北",
-        "秦皇岛": "河北",
-        "青龙县": "河北",
-        "青龙满族自治县": "河北",
-        "昌黎": "河北",
-        "抚宁": "河北",
-        "卢龙": "河北",
-        "邯郸": "河北",
-        "临漳": "河北",
-        "成安": "河北",
-        "大名县": "河北",
-        "涉县": "河北",
-        "磁县": "河北",
-        "肥乡": "河北",
-        "永年": "河北",
-        "邱县": "河北",
-        "鸡泽": "河北",
-        "广平县": "河北",
-        "馆陶": "河北",
-        "魏县": "河北",
-        "曲周": "河北",
-        "武安": "河北",
-        "邢台": "河北",
-        "临城": "河北",
-        "内丘": "河北",
-        "柏乡县": "河北",
-        "隆尧": "河北",
-        "任县": "河北",
-        "南和": "河北",
-        "宁晋": "河北",
-        "巨鹿": "河北",
-        "新河县": "河北",
-        "广宗": "河北",
-        "平乡": "河北",
-        "威县": "河北",
-        "清河": "河北",
-        "临西": "河北",
-        "南宫": "河北",
-        "沙河市": "河北",
-        "保定": "河北",
-        "满城": "河北",
-        "清苑": "河北",
-        "涞水": "河北",
-        "阜平": "河北",
-        "徐水": "河北",
-        "定兴": "河北",
-        "唐县": "河北",
-        "高阳": "河北",
-        "容城": "河北",
-        "涞源": "河北",
-        "望都": "河北",
-        "安新": "河北",
-        "易县": "河北",
-        "曲阳": "河北",
-        "蠡县": "河北",
-        "顺平": "河北",
-        "博野": "河北",
-        "雄县": "河北",
-        "涿州": "河北",
-        "定州": "河北",
-        "安国": "河北",
-        "高碑店": "河北",
-        "张家口": "河北",
-        "宣化": "河北",
-        "张北": "河北",
-        "康保": "河北",
-        "沽源": "河北",
-        "尚义": "河北",
-        "蔚县": "河北",
-        "阳原": "河北",
-        "怀安": "河北",
-        "万全县": "河北",
-        "怀来": "河北",
-        "涿鹿": "河北",
-        "赤城": "河北",
-        "崇礼": "河北",
-        "承德": "河北",
-        "兴隆": "河北",
-        "平泉县": "河北",
-        "滦平": "河北",
-        "隆化": "河北",
-        "丰宁": "河北",
-        "宽城满族自治县": "河北",
-        "宽城县": "河北",
-        "围场": "河北",
-        "沧州": "河北",
-        "沧县": "河北",
-        "青县": "河北",
-        "东光县": "河北",
-        "海兴": "河北",
-        "盐山": "河北",
-        "肃宁": "河北",
-        "南皮": "河北",
-        "吴桥县": "河北",
-        "献县": "河北",
-        "孟村回族自治县": "河北",
-        "孟村县": "河北",
-        "泊头": "河北",
-        "任丘": "河北",
-        "黄骅": "河北",
-        "河间市": "河北",
-        "廊坊": "河北",
-        "固安": "河北",
-        "永清": "河北",
-        "香河": "河北",
-        "大城县": "河北",
-        "文安": "河北",
-        "大厂回族自治县": "河北",
-        "大厂县": "河北",
-        "霸州": "河北",
-        "三河": "河北",
-        "衡水": "河北",
-        "枣强": "河北",
-        "武邑": "河北",
-        "武强": "河北",
-        "饶阳": "河北",
-        "安平": "河北",
-        "故城县": "河北",
-        "景县": "河北",
-        "阜城县": "河北",
-        "冀州": "河北",
-        "深州": "河北",
-        "山西": "山西",
-        "太原": "山西",
-        "清徐": "山西",
-        "阳曲": "山西",
-        "娄烦": "山西",
-        "古交": "山西",
-        "大同市": "山西",
-        "阳高": "山西",
-        "天镇": "山西",
-        "广灵": "山西",
-        "灵丘": "山西",
-        "浑源": "山西",
-        "左云": "山西",
-        "阳泉": "山西",
-        "平定": "山西",
-        "盂县": "山西",
-        "长治": "山西",
-        "襄垣": "山西",
-        "屯留": "山西",
-        "平顺": "山西",
-        "黎城": "山西",
-        "壶关": "山西",
-        "长子": "山西",
-        "武乡": "山西",
-        "沁县": "山西",
-        "沁源": "山西",
-        "潞城": "山西",
-        "晋城": "山西",
-        "沁水": "山西",
-        "阳城": "山西",
-        "陵川": "山西",
-        "泽州": "山西",
-        "高平": "山西",
-        "朔州": "山西",
-        "山阴": "山西",
-        "应县": "山西",
-        "右玉": "山西",
-        "怀仁": "山西",
-        "晋中": "山西",
-        "榆社": "山西",
-        "左权县": "山西",
-        "和顺": "山西",
-        "昔阳": "山西",
-        "寿阳": "山西",
-        "太谷": "山西",
-        "祁县": "山西",
-        "平遥": "山西",
-        "灵石": "山西",
-        "介休": "山西",
-        "运城": "山西",
-        "临猗": "山西",
-        "万荣": "山西",
-        "闻喜": "山西",
-        "稷山": "山西",
-        "新绛": "山西",
-        "绛县": "山西",
-        "垣曲": "山西",
-        "夏县": "山西",
-        "平陆": "山西",
-        "芮城": "山西",
-        "永济": "山西",
-        "河津市": "山西",
-        "忻州": "山西",
-        "定襄": "山西",
-        "五台县": "山西",
-        "代县": "山西",
-        "繁峙": "山西",
-        "宁武": "山西",
-        "静乐": "山西",
-        "神池": "山西",
-        "五寨": "山西",
-        "岢岚": "山西",
-        "河曲": "山西",
-        "保德": "山西",
-        "偏关": "山西",
-        "原平": "山西",
-        "临汾": "山西",
-        "曲沃": "山西",
-        "翼城": "山西",
-        "襄汾": "山西",
-        "洪洞": "山西",
-        "古县": "山西",
-        "安泽": "山西",
-        "浮山": "山西",
-        "吉县": "山西",
-        "乡宁": "山西",
-        "大宁": "山西",
-        "隰县": "山西",
-        "永和": "山西",
-        "蒲县": "山西",
-        "汾西": "山西",
-        "侯马": "山西",
-        "霍州": "山西",
-        "吕梁": "山西",
-        "文水": "山西",
-        "交城": "山西",
-        "兴县": "山西",
-        "临县": "山西",
-        "柳林": "山西",
-        "石楼": "山西",
-        "岚县": "山西",
-        "方山县": "山西",
-        "中阳县": "山西",
-        "交口县": "山西",
-        "孝义市": "山西",
-        "汾阳": "山西",
-        "内蒙古": "内蒙古",
-        "呼和浩特": "内蒙古",
-        "土默特左旗": "内蒙古",
-        "托克托": "内蒙古",
-        "和林格尔": "内蒙古",
-        "清水河": "内蒙古",
-        "武川": "内蒙古",
-        "包头": "内蒙古",
-        "土默特右旗": "内蒙古",
-        "固阳": "内蒙古",
-        "达尔罕茂明安联合旗": "内蒙古",
-        "乌海": "内蒙古",
-        "赤峰": "内蒙古",
-        "阿鲁科尔沁旗": "内蒙古",
-        "巴林左旗": "内蒙古",
-        "巴林右旗": "内蒙古",
-        "林西": "内蒙古",
-        "克什克腾旗": "内蒙古",
-        "翁牛特旗": "内蒙古",
-        "喀喇沁旗": "内蒙古",
-        "宁城": "内蒙古",
-        "敖汉旗": "内蒙古",
-        "通辽": "内蒙古",
-        "科尔沁左翼中旗": "内蒙古",
-        "科尔沁左翼后旗": "内蒙古",
-        "开鲁": "内蒙古",
-        "库伦旗": "内蒙古",
-        "奈曼旗": "内蒙古",
-        "扎鲁特旗": "内蒙古",
-        "霍林郭勒": "内蒙古",
-        "鄂尔多斯": "内蒙古",
-        "达拉特旗": "内蒙古",
-        "准格尔旗": "内蒙古",
-        "鄂托克前旗": "内蒙古",
-        "鄂托克旗": "内蒙古",
-        "杭锦旗": "内蒙古",
-        "乌审旗": "内蒙古",
-        "伊金霍洛旗": "内蒙古",
-        "呼伦贝尔": "内蒙古",
-        "阿荣旗": "内蒙古",
-        "莫力达瓦达斡尔族自治旗": "内蒙古",
-        "鄂伦春自治旗": "内蒙古",
-        "鄂温克族自治旗": "内蒙古",
-        "陈巴尔虎旗": "内蒙古",
-        "新巴尔虎左旗": "内蒙古",
-        "新巴尔虎右旗": "内蒙古",
-        "满洲里": "内蒙古",
-        "牙克石": "内蒙古",
-        "扎兰屯": "内蒙古",
-        "额尔古纳": "内蒙古",
-        "根河": "内蒙古",
-        "巴彦淖尔": "内蒙古",
-        "五原": "内蒙古",
-        "磴口": "内蒙古",
-        "乌拉特前旗": "内蒙古",
-        "乌拉特中旗": "内蒙古",
-        "乌拉特后旗": "内蒙古",
-        "杭锦后旗": "内蒙古",
-        "乌兰察布": "内蒙古",
-        "卓资": "内蒙古",
-        "化德": "内蒙古",
-        "商都县": "内蒙古",
-        "兴和县": "内蒙古",
-        "凉城": "内蒙古",
-        "察哈尔右翼前旗": "内蒙古",
-        "察哈尔右翼中旗": "内蒙古",
-        "察哈尔右翼后旗": "内蒙古",
-        "四子王旗": "内蒙古",
-        "丰镇": "内蒙古",
-        "兴安盟": "内蒙古",
-        "乌兰浩特": "内蒙古",
-        "阿尔山": "内蒙古",
-        "科尔沁右翼前旗": "内蒙古",
-        "科尔沁右翼中旗": "内蒙古",
-        "扎赉特旗": "内蒙古",
-        "突泉": "内蒙古",
-        "锡林郭勒盟": "内蒙古",
-        "二连浩特": "内蒙古",
-        "锡林浩特": "内蒙古",
-        "阿巴嘎旗": "内蒙古",
-        "苏尼特左旗": "内蒙古",
-        "苏尼特右旗": "内蒙古",
-        "东乌珠穆沁旗": "内蒙古",
-        "西乌珠穆沁旗": "内蒙古",
-        "太仆寺旗": "内蒙古",
-        "镶黄旗": "内蒙古",
-        "正镶白旗": "内蒙古",
-        "正蓝旗": "内蒙古",
-        "多伦": "内蒙古",
-        "阿拉善盟": "内蒙古",
-        "阿拉善左旗": "内蒙古",
-        "阿拉善右旗": "内蒙古",
-        "额济纳旗": "内蒙古",
-        "辽宁": "辽宁",
-        "沈阳": "辽宁",
-        "辽中": "辽宁",
-        "康平": "辽宁",
-        "法库": "辽宁",
-        "新民市": "辽宁",
-        "大连": "辽宁",
-        "长海": "辽宁",
-        "瓦房店": "辽宁",
-        "普兰店": "辽宁",
-        "庄河": "辽宁",
-        "鞍山": "辽宁",
-        "台安县": "辽宁",
-        "岫岩": "辽宁",
-        "海城市": "辽宁",
-        "抚顺": "辽宁",
-        "新宾": "辽宁",
-        "清原": "辽宁",
-        "本溪": "辽宁",
-        "桓仁": "辽宁",
-        "丹东": "辽宁",
-        "宽甸": "辽宁",
-        "东港市": "辽宁",
-        "凤城": "辽宁",
-        "锦州": "辽宁",
-        "黑山县": "辽宁",
-        "义县": "辽宁",
-        "凌海": "辽宁",
-        "北镇": "辽宁",
-        "营口": "辽宁",
-        "盖州": "辽宁",
-        "大石桥市": "辽宁",
-        "阜新": "辽宁",
-        "彰武": "辽宁",
-        "辽阳": "辽宁",
-        "灯塔市": "辽宁",
-        "盘锦": "辽宁",
-        "大洼": "辽宁",
-        "盘山": "辽宁",
-        "铁岭": "辽宁",
-        "西丰": "辽宁",
-        "昌图": "辽宁",
-        "调兵山": "辽宁",
-        "开原": "辽宁",
-        "朝阳市": "辽宁",
-        "建平": "辽宁",
-        "喀喇沁": "辽宁",
-        "北票": "辽宁",
-        "凌源": "辽宁",
-        "葫芦岛": "辽宁",
-        "绥中": "辽宁",
-        "建昌": "辽宁",
-        "兴城": "辽宁",
-        "吉林": "吉林",
-        "长春": "吉林",
-        "农安": "吉林",
-        "九台": "吉林",
-        "榆树": "吉林",
-        "德惠": "吉林",
-        "吉林": "吉林",
-        "永吉": "吉林",
-        "蛟河": "吉林",
-        "桦甸": "吉林",
-        "舒兰": "吉林",
-        "磐石": "吉林",
-        "四平": "吉林",
-        "梨树县": "吉林",
-        "伊通": "吉林",
-        "公主岭": "吉林",
-        "双辽": "吉林",
-        "辽源": "吉林",
-        "东丰": "吉林",
-        "东辽": "吉林",
-        "通化": "吉林",
-        "辉南": "吉林",
-        "柳河": "吉林",
-        "梅河口": "吉林",
-        "集安": "吉林",
-        "白山市": "吉林",
-        "抚松": "吉林",
-        "靖宇": "吉林",
-        "长白": "吉林",
-        "临江": "吉林",
-        "松原": "吉林",
-        "前郭尔罗斯": "吉林",
-        "长岭": "吉林",
-        "乾安": "吉林",
-        "扶余": "吉林",
-        "白城": "吉林",
-        "镇赉": "吉林",
-        "通榆": "吉林",
-        "洮南": "吉林",
-        "大安市": "吉林",
-        "延边州": "吉林",
-        "延吉": "吉林",
-        "图们": "吉林",
-        "敦化": "吉林",
-        "珲春": "吉林",
-        "龙井市": "吉林",
-        "和龙": "吉林",
-        "汪清": "吉林",
-        "安图县": "吉林",
-        "黑龙江": "黑龙江",
-        "哈尔滨": "黑龙江",
-        "依兰县": "黑龙江",
-        "方正县": "黑龙江",
-        "宾县": "黑龙江",
-        "巴彦": "黑龙江",
-        "木兰县": "黑龙江",
-        "通河县": "黑龙江",
-        "延寿": "黑龙江",
-        "双城区": "黑龙江",
-        "尚志": "黑龙江",
-        "五常市": "黑龙江",
-        "齐齐哈尔": "黑龙江",
-        "龙江县": "黑龙江",
-        "依安": "黑龙江",
-        "泰来": "黑龙江",
-        "甘南": "黑龙江",
-        "富裕县": "黑龙江",
-        "克山县": "黑龙江",
-        "克东县": "黑龙江",
-        "拜泉": "黑龙江",
-        "讷河": "黑龙江",
-        "鸡西市": "黑龙江",
-        "鸡东县": "黑龙江",
-        "虎林": "黑龙江",
-        "密山": "黑龙江",
-        "鹤岗": "黑龙江",
-        "萝北": "黑龙江",
-        "绥滨": "黑龙江",
-        "双鸭山": "黑龙江",
-        "集贤": "黑龙江",
-        "友谊县": "黑龙江",
-        "宝清": "黑龙江",
-        "饶河": "黑龙江",
-        "大庆": "黑龙江",
-        "肇州": "黑龙江",
-        "肇源": "黑龙江",
-        "林甸": "黑龙江",
-        "杜尔伯特": "黑龙江",
-        "伊春市": "黑龙江",
-        "嘉荫": "黑龙江",
-        "铁力": "黑龙江",
-        "佳木斯": "黑龙江",
-        "桦南": "黑龙江",
-        "桦川": "黑龙江",
-        "汤原": "黑龙江",
-        "抚远": "黑龙江",
-        "同江市": "黑龙江",
-        "富锦": "黑龙江",
-        "七台河": "黑龙江",
-        "勃利": "黑龙江",
-        "牡丹江": "黑龙江",
-        "东宁": "黑龙江",
-        "林口": "黑龙江",
-        "绥芬河": "黑龙江",
-        "海林": "黑龙江",
-        "宁安": "黑龙江",
-        "穆棱": "黑龙江",
-        "黑河": "黑龙江",
-        "嫩江": "黑龙江",
-        "逊克": "黑龙江",
-        "孙吴": "黑龙江",
-        "北安": "黑龙江",
-        "五大连池": "黑龙江",
-        "绥化": "黑龙江",
-        "望奎": "黑龙江",
-        "兰西": "黑龙江",
-        "青冈": "黑龙江",
-        "庆安": "黑龙江",
-        "明水": "黑龙江",
-        "绥棱": "黑龙江",
-        "安达": "黑龙江",
-        "肇东": "黑龙江",
-        "海伦": "黑龙江",
-        "呼玛": "黑龙江",
-        "塔河": "黑龙江",
-        "漠河": "黑龙江",
-        "上海": "上海",
-        "崇明": "上海",
-        "江苏": "江苏",
-        "南京": "江苏",
-        "溧水": "江苏",
-        "高淳": "江苏",
-        "无锡": "江苏",
-        "江阴": "江苏",
-        "宜兴": "江苏",
-        "徐州": "江苏",
-        "丰县": "江苏",
-        "沛县": "江苏",
-        "铜山": "江苏",
-        "睢宁": "江苏",
-        "新沂": "江苏",
-        "邳州": "江苏",
-        "常州": "江苏",
-        "溧阳": "江苏",
-        "金坛": "江苏",
-        "苏州": "江苏",
-        "常熟": "江苏",
-        "张家港": "江苏",
-        "昆山": "江苏",
-        "吴江": "江苏",
-        "太仓": "江苏",
-        "南通": "江苏",
-        "海安": "江苏",
-        "如东": "江苏",
-        "启东": "江苏",
-        "如皋": "江苏",
-        "通州": "江苏",
-        "海门": "江苏",
-        "连云港": "江苏",
-        "赣榆": "江苏",
-        "东海": "江苏",
-        "灌云": "江苏",
-        "灌南": "江苏",
-        "淮安": "江苏",
-        "涟水": "江苏",
-        "洪泽区": "江苏",
-        "洪泽县": "江苏",
-        "盱眙": "江苏",
-        "金湖": "江苏",
-        "盐城": "江苏",
-        "响水": "江苏",
-        "滨海县": "江苏",
-        "阜宁": "江苏",
-        "射阳": "江苏",
-        "建湖": "江苏",
-        "东台": "江苏",
-        "大丰": "江苏",
-        "扬州": "江苏",
-        "宝应": "江苏",
-        "仪征": "江苏",
-        "高邮": "江苏",
-        "江都": "江苏",
-        "镇江": "江苏",
-        "丹阳": "江苏",
-        "扬中": "江苏",
-        "句容": "江苏",
-        "泰州": "江苏",
-        "兴化": "江苏",
-        "靖江": "江苏",
-        "泰兴市": "江苏",
-        "泰兴镇": "四川",
-        "姜堰": "江苏",
-        "宿迁": "江苏",
-        "沭阳": "江苏",
-        "泗阳": "江苏",
-        "泗洪": "江苏",
-        "浙江": "浙江",
-        "杭州": "浙江",
-        "桐庐": "浙江",
-        "淳安": "浙江",
-        "建德": "浙江",
-        "富阳区": "浙江",
-        "临安": "浙江",
-        "宁波": "浙江",
-        "象山": "浙江",
-        "宁海": "浙江",
-        "余姚": "浙江",
-        "慈溪": "浙江",
-        "奉化": "浙江",
-        "温州": "浙江",
-        "洞头": "浙江",
-        "永嘉": "浙江",
-        "平阳": "浙江",
-        "苍南": "浙江",
-        "文成县": "浙江",
-        "泰顺": "浙江",
-        "瑞安": "浙江",
-        "乐清": "浙江",
-        "嘉兴": "浙江",
-        "嘉善": "浙江",
-        "海盐": "浙江",
-        "海宁": "浙江",
-        "平湖": "浙江",
-        "桐乡": "浙江",
-        "湖州": "浙江",
-        "德清": "浙江",
-        "长兴": "浙江",
-        "安吉": "浙江",
-        "绍兴": "浙江",
-        "新昌": "浙江",
-        "诸暨": "浙江",
-        "上虞": "浙江",
-        "嵊州": "浙江",
-        "金华": "浙江",
-        "武义": "浙江",
-        "浦江": "浙江",
-        "磐安": "浙江",
-        "兰溪": "浙江",
-        "义乌": "浙江",
-        "东阳": "浙江",
-        "永康": "浙江",
-        "衢州": "浙江",
-        "常山": "浙江",
-        "开化": "浙江",
-        "龙游": "浙江",
-        "江山市": "浙江",
-        "舟山": "浙江",
-        "岱山": "浙江",
-        "嵊泗": "浙江",
-        "台州": "浙江",
-        "玉环": "浙江",
-        "三门县": "浙江",
-        "天台县": "浙江",
-        "仙居": "浙江",
-        "温岭": "浙江",
-        "临海": "浙江",
-        "丽水": "浙江",
-        "青田": "浙江",
-        "缙云": "浙江",
-        "遂昌": "浙江",
-        "松阳": "浙江",
-        "云和": "浙江",
-        "庆元": "浙江",
-        "景宁": "浙江",
-        "龙泉市": "浙江",
-        "安徽": "安徽",
-        "合肥": "安徽",
-        "长丰": "安徽",
-        "肥东": "安徽",
-        "肥西": "安徽",
-        "芜湖": "安徽",
-        "繁昌": "安徽",
-        "南陵": "安徽",
-        "蚌埠": "安徽",
-        "怀远": "安徽",
-        "五河": "安徽",
-        "固镇": "安徽",
-        "淮南": "安徽",
-        "凤台": "安徽",
-        "马鞍山": "安徽",
-        "当涂": "安徽",
-        "含山": "安徽",
-        "和县": "安徽",
-        "淮北": "安徽",
-        "濉溪": "安徽",
-        "铜陵": "安徽",
-        "安庆": "安徽",
-        "怀宁": "安徽",
-        "枞阳": "安徽",
-        "潜山": "安徽",
-        "太湖县": "安徽",
-        "宿松": "安徽",
-        "望江": "安徽",
-        "岳西": "安徽",
-        "桐城": "安徽",
-        "黄山": "安徽",
-        "歙县": "安徽",
-        "休宁": "安徽",
-        "黟县": "安徽",
-        "祁门": "安徽",
-        "滁州": "安徽",
-        "来安": "安徽",
-        "全椒": "安徽",
-        "定远": "安徽",
-        "凤阳": "安徽",
-        "天长市": "安徽",
-        "明光市": "安徽",
-        "阜阳": "安徽",
-        "临泉": "安徽",
-        "太和县": "安徽",
-        "阜南": "安徽",
-        "颍上": "安徽",
-        "界首": "安徽",
-        "宿州": "安徽",
-        "砀山": "安徽",
-        "萧县": "安徽",
-        "灵璧": "安徽",
-        "泗县": "安徽",
-        "巢湖": "安徽",
-        "庐江": "安徽",
-        "无为县": "安徽",
-        "六安": "安徽",
-        "寿县": "安徽",
-        "霍邱": "安徽",
-        "舒城": "安徽",
-        "金寨": "安徽",
-        "霍山": "安徽",
-        "亳州": "安徽",
-        "涡阳": "安徽",
-        "蒙城": "安徽",
-        "利辛": "安徽",
-        "池州": "安徽",
-        "东至县": "安徽",
-        "石台": "安徽",
-        "青阳": "安徽",
-        "宣城": "安徽",
-        "郎溪": "安徽",
-        "广德": "安徽",
-        "泾县": "安徽",
-        "绩溪": "安徽",
-        "旌德": "安徽",
-        "宁国市": "安徽",
-        "福建": "福建",
-        "福州": "福建",
-        "闽侯": "福建",
-        "连江": "福建",
-        "罗源": "福建",
-        "闽清": "福建",
-        "永泰县": "福建",
-        "平潭": "福建",
-        "福清": "福建",
-        "长乐": "福建",
-        "厦门": "福建",
-        "莆田": "福建",
-        "仙游": "福建",
-        "三明": "福建",
-        "明溪": "福建",
-        "清流": "福建",
-        "宁化": "福建",
-        "大田": "福建",
-        "尤溪": "福建",
-        "沙县": "福建",
-        "将乐": "福建",
-        "泰宁": "福建",
-        "建宁": "福建",
-        "永安": "福建",
-        "泉州": "福建",
-        "惠安县": "福建",
-        "安溪": "福建",
-        "永春": "福建",
-        "德化": "福建",
-        "金门": "福建",
-        "石狮": "福建",
-        "晋江": "福建",
-        "南安": "福建",
-        "漳州": "福建",
-        "云霄": "福建",
-        "漳浦": "福建",
-        "诏安": "福建",
-        "长泰": "福建",
-        "东山县": "福建",
-        "南靖": "福建",
-        "平和县": "福建",
-        "华安": "福建",
-        "龙海": "福建",
-        "南平": "福建",
-        "顺昌": "福建",
-        "浦城": "福建",
-        "光泽": "福建",
-        "松溪": "福建",
-        "政和县": "福建",
-        "邵武": "福建",
-        "武夷山": "福建",
-        "建瓯": "福建",
-        "建阳": "福建",
-        "龙岩": "福建",
-        "长汀": "福建",
-        "永定": "福建",
-        "上杭": "福建",
-        "武平": "福建",
-        "连城": "福建",
-        "漳平": "福建",
-        "宁德": "福建",
-        "霞浦": "福建",
-        "古田": "福建",
-        "屏南": "福建",
-        "寿宁": "福建",
-        "周宁": "福建",
-        "柘荣": "福建",
-        "福安": "福建",
-        "福鼎": "福建",
-        "江西": "江西",
-        "南昌": "江西",
-        "新建区": "江西",
-        "安义": "江西",
-        "进贤": "江西",
-        "景德镇": "江西",
-        "浮梁": "江西",
-        "乐平市": "江西",
-        "萍乡": "江西",
-        "莲花": "江西",
-        "上栗": "江西",
-        "芦溪": "江西",
-        "九江市": "江西",
-        "武宁": "江西",
-        "修水县": "江西",
-        "永修": "江西",
-        "德安": "江西",
-        "星子县": "江西",
-        "都昌": "江西",
-        "湖口县": "江西",
-        "彭泽": "江西",
-        "瑞昌": "江西",
-        "新余": "江西",
-        "分宜": "江西",
-        "鹰潭": "江西",
-        "余江": "江西",
-        "贵溪": "江西",
-        "赣州": "江西",
-        "赣县": "江西",
-        "信丰": "江西",
-        "大余": "江西",
-        "上犹": "江西",
-        "崇义": "江西",
-        "安远": "江西",
-        "龙南县": "江西",
-        "定南": "江西",
-        "全南": "江西",
-        "宁都": "江西",
-        "于都": "江西",
-        "兴国县": "江西",
-        "会昌": "江西",
-        "寻乌": "江西",
-        "石城": "江西",
-        "瑞金": "江西",
-        "南康": "江西",
-        "吉安": "江西",
-        "吉水": "江西",
-        "峡江": "江西",
-        "新干": "江西",
-        "永丰": "江西",
-        "泰和县": "江西",
-        "遂川": "江西",
-        "万安县": "江西",
-        "安福县": "江西",
-        "永新县": "江西",
-        "井冈山": "江西",
-        "宜春": "江西",
-        "奉新": "江西",
-        "万载县": "江西",
-        "上高": "江西",
-        "宜丰": "江西",
-        "靖安": "江西",
-        "铜鼓": "江西",
-        "丰城": "江西",
-        "樟树": "江西",
-        "高安": "江西",
-        "抚州": "江西",
-        "南城": "江西",
-        "黎川": "江西",
-        "南丰": "江西",
-        "崇仁": "江西",
-        "乐安": "江西",
-        "宜黄": "江西",
-        "金溪": "江西",
-        "资溪": "江西",
-        "东乡县": "江西",
-        "广昌": "江西",
-        "上饶": "江西",
-        "广丰": "江西",
-        "玉山": "江西",
-        "铅山": "江西",
-        "横峰": "江西",
-        "弋阳": "江西",
-        "余干": "江西",
-        "鄱阳": "江西",
-        "万年县": "江西",
-        "婺源": "江西",
-        "德兴": "江西",
-        "山东": "山东",
-        "济南": "山东",
-        "平阴": "山东",
-        "济阳": "山东",
-        "商河县": "山东",
-        "章丘": "山东",
-        "青岛": "山东",
-        "胶州": "山东",
-        "即墨": "山东",
-        "平度市": "山东",
-        "胶南": "山东",
-        "莱西": "山东",
-        "淄博": "山东",
-        "桓台": "山东",
-        "高青": "山东",
-        "沂源": "山东",
-        "枣庄": "山东",
-        "滕州": "山东",
-        "东营市": "山东",
-        "东营区": "山东",
-        "垦利": "山东",
-        "利津": "山东",
-        "广饶": "山东",
-        "烟台": "山东",
-        "长岛县": "山东",
-        "龙口市": "山东",
-        "莱阳": "山东",
-        "莱州": "山东",
-        "蓬莱": "山东",
-        "招远": "山东",
-        "栖霞市": "山东",
-        "海阳": "山东",
-        "潍坊": "山东",
-        "临朐": "山东",
-        "昌乐": "山东",
-        "青州": "山东",
-        "诸城": "山东",
-        "寿光": "山东",
-        "安丘": "山东",
-        "高密": "山东",
-        "昌邑市": "山东",
-        "济宁": "山东",
-        "微山": "山东",
-        "鱼台": "山东",
-        "金乡": "山东",
-        "嘉祥": "山东",
-        "汶上": "山东",
-        "泗水": "山东",
-        "梁山": "山东",
-        "曲阜": "山东",
-        "兖州": "山东",
-        "邹城": "山东",
-        "泰安": "山东",
-        "宁阳": "山东",
-        "东平": "山东",
-        "新泰": "山东",
-        "肥城": "山东",
-        "威海": "山东",
-        "文登": "山东",
-        "荣成": "山东",
-        "乳山": "山东",
-        "日照": "山东",
-        "五莲": "山东",
-        "莒县": "山东",
-        "莱芜": "山东",
-        "临沂": "山东",
-        "沂南": "山东",
-        "郯城": "山东",
-        "沂水": "山东",
-        "苍山": "山东",
-        "费县": "山东",
-        "平邑": "山东",
-        "莒南": "山东",
-        "蒙阴": "山东",
-        "临沭": "山东",
-        "德州": "山东",
-        "陵县": "山东",
-        "宁津": "山东",
-        "庆云": "山东",
-        "临邑": "山东",
-        "齐河": "山东",
-        "平原": "山东",
-        "夏津": "山东",
-        "武城": "山东",
-        "乐陵": "山东",
-        "禹城": "山东",
-        "聊城": "山东",
-        "阳谷": "山东",
-        "莘县": "山东",
-        "茌平": "山东",
-        "东阿": "山东",
-        "冠县": "山东",
-        "高唐": "山东",
-        "临清": "山东",
-        "滨州": "山东",
-        "惠民": "山东",
-        "阳信": "山东",
-        "无棣": "山东",
-        "沾化": "山东",
-        "博兴": "山东",
-        "邹平": "山东",
-        "菏泽": "山东",
-        "曹县": "山东",
-        "单县": "山东",
-        "成武": "山东",
-        "巨野": "山东",
-        "郓城": "山东",
-        "鄄城": "山东",
-        "定陶": "山东",
-        "东明县": "山东",
-        "河南": "河南",
-        "郑州": "河南",
-        "管城": "河南",
-        "中牟": "河南",
-        "巩义": "河南",
-        "荥阳": "河南",
-        "新密": "河南",
-        "新郑": "河南",
-        "登封": "河南",
-        "开封": "河南",
-        "杞县": "河南",
-        "通许": "河南",
-        "尉氏": "河南",
-        "兰考": "河南",
-        "洛阳": "河南",
-        "孟津": "河南",
-        "新安": "河南",
-        "栾川": "河南",
-        "嵩县": "河南",
-        "汝阳": "河南",
-        "宜阳": "河南",
-        "洛宁": "河南",
-        "伊川": "河南",
-        "偃师": "河南",
-        "平顶山": "河南",
-        "宝丰": "河南",
-        "叶县": "河南",
-        "鲁山": "河南",
-        "郏县": "河南",
-        "舞钢": "河南",
-        "汝州": "河南",
-        "安阳": "河南",
-        "汤阴": "河南",
-        "滑县": "河南",
-        "内黄": "河南",
-        "林州": "河南",
-        "鹤壁": "河南",
-        "浚县": "河南",
-        "淇县": "河南",
-        "新乡": "河南",
-        "获嘉": "河南",
-        "原阳": "河南",
-        "延津": "河南",
-        "封丘": "河南",
-        "长垣": "河南",
-        "卫辉": "河南",
-        "辉市": "河南",
-        "焦作": "河南",
-        "修武": "河南",
-        "博爱": "河南",
-        "武陟": "河南",
-        "温县": "河南",
-        "沁阳": "河南",
-        "孟州": "河南",
-        "濮阳": "河南",
-        "清丰": "河南",
-        "南乐": "河南",
-        "范县": "河南",
-        "台前": "河南",
-        "许昌": "河南",
-        "鄢陵": "河南",
-        "襄城县": "河南",
-        "禹州": "河南",
-        "长葛": "河南",
-        "漯河": "河南",
-        "舞阳": "河南",
-        "临颍": "河南",
-        "三门峡": "河南",
-        "渑池": "河南",
-        "陕县": "河南",
-        "卢氏": "河南",
-        "义马": "河南",
-        "灵宝": "河南",
-        "南阳": "河南",
-        "南召": "河南",
-        "方城": "河南",
-        "西峡": "河南",
-        "镇平县": "河南",
-        "内乡": "河南",
-        "淅川": "河南",
-        "社旗": "河南",
-        "唐河": "河南",
-        "新野": "河南",
-        "桐柏": "河南",
-        "邓州": "河南",
-        "商丘": "河南",
-        "民权": "河南",
-        "睢县": "河南",
-        "宁陵": "河南",
-        "柘城": "河南",
-        "虞城": "河南",
-        "夏邑": "河南",
-        "永城": "河南",
-        "信阳": "河南",
-        "罗山": "河南",
-        "光山": "河南",
-        "新县": "河南",
-        "商城": "河南",
-        "固始": "河南",
-        "潢川": "河南",
-        "淮滨": "河南",
-        "息县": "河南",
-        "周口": "河南",
-        "扶沟": "河南",
-        "西华": "河南",
-        "商水": "河南",
-        "沈丘": "河南",
-        "郸城": "河南",
-        "淮阳": "河南",
-        "太康": "河南",
-        "鹿邑": "河南",
-        "项城": "河南",
-        "驻马店": "河南",
-        "西平": "河南",
-        "上蔡": "河南",
-        "平舆": "河南",
-        "正阳": "河南",
-        "确山": "河南",
-        "泌阳": "河南",
-        "汝南": "河南",
-        "遂平": "河南",
-        "新蔡": "河南",
-        "济源": "河南",
-        "湖北": "湖北",
-        "武汉": "湖北",
-        "黄石市": "湖北",
-        "阳新县": "湖北",
-        "大冶": "湖北",
-        "十堰": "湖北",
-        "郧县": "湖北",
-        "郧西": "湖北",
-        "竹山": "湖北",
-        "竹溪": "湖北",
-        "房县": "湖北",
-        "丹江口": "湖北",
-        "宜昌": "湖北",
-        "远安": "湖北",
-        "兴山": "湖北",
-        "秭归": "湖北",
-        "长阳": "湖北",
-        "五峰": "湖北",
-        "宜都": "湖北",
-        "当阳": "湖北",
-        "枝江": "湖北",
-        "襄阳": "湖北",
-        "南漳": "湖北",
-        "谷城": "湖北",
-        "保康": "湖北",
-        "老河口": "湖北",
-        "枣阳": "湖北",
-        "宜城": "湖北",
-        "鄂州": "湖北",
-        "荆门": "湖北",
-        "京山县": "湖北",
-        "沙洋": "湖北",
-        "钟祥": "湖北",
-        "屈家岭": "湖北",
-        "孝感": "湖北",
-        "孝昌": "湖北",
-        "大悟": "湖北",
-        "云梦": "湖北",
-        "应城": "湖北",
-        "安陆": "湖北",
-        "汉川": "湖北",
-        "荆州": "湖北",
-        "公安县": "湖北",
-        "监利": "湖北",
-        "江陵": "湖北",
-        "石首": "湖北",
-        "洪湖": "湖北",
-        "松滋": "湖北",
-        "黄冈市": "湖北",
-        "团风县": "湖北",
-        "红安": "湖北",
-        "罗田": "湖北",
-        "英山": "湖北",
-        "浠水": "湖北",
-        "蕲春": "湖北",
-        "黄梅": "湖北",
-        "麻城": "湖北",
-        "武穴": "湖北",
-        "咸宁": "湖北",
-        "嘉鱼": "湖北",
-        "通城": "湖北",
-        "崇阳": "湖北",
-        "通山": "湖北",
-        "赤壁": "湖北",
-        "随州": "湖北",
-        "随县": "湖北",
-        "广水": "湖北",
-        "恩施州": "湖北",
-        "恩施": "湖北",
-        "利川": "湖北",
-        "建始县": "湖北",
-        "巴东": "湖北",
-        "宣恩": "湖北",
-        "咸丰": "湖北",
-        "来凤": "湖北",
-        "鹤峰": "湖北",
-        "仙桃": "湖北",
-        "潜江": "湖北",
-        "天门市": "湖北",
-        "神农架": "湖北",
-        "江汉油田": "湖北",
-        "湖南": "湖南",
-        "长沙": "湖南",
-        "望城": "湖南",
-        "宁乡": "湖南",
-        "浏阳": "湖南",
-        "株洲": "湖南",
-        "攸县": "湖南",
-        "茶陵": "湖南",
-        "炎陵": "湖南",
-        "醴陵": "湖南",
-        "湘潭": "湖南",
-        "湘乡": "湖南",
-        "韶山": "湖南",
-        "衡阳": "湖南",
-        "衡南": "湖南",
-        "衡山": "湖南",
-        "衡东": "湖南",
-        "祁东": "湖南",
-        "耒阳": "湖南",
-        "常宁": "湖南",
-        "邵阳": "湖南",
-        "邵东": "湖南",
-        "新邵": "湖南",
-        "隆回": "湖南",
-        "洞口县": "湖南",
-        "绥宁": "湖南",
-        "新宁县": "湖南",
-        "城步": "湖南",
-        "武冈": "湖南",
-        "岳阳": "湖南",
-        "华容县": "湖南",
-        "湘阴": "湖南",
-        "平江": "湖南",
-        "汨罗": "湖南",
-        "临湘": "湖南",
-        "常德": "湖南",
-        "安乡县": "湖南",
-        "汉寿": "湖南",
-        "澧县": "湖南",
-        "临澧": "湖南",
-        "桃源县": "湖南",
-        "石门": "湖南",
-        "津市市": "湖南",
-        "张家界": "湖南",
-        "慈利": "湖南",
-        "桑植": "湖南",
-        "益阳": "湖南",
-        "南县": "湖南",
-        "桃江": "湖南",
-        "安化": "湖南",
-        "沅江": "湖南",
-        "郴州": "湖南",
-        "桂阳": "湖南",
-        "宜章": "湖南",
-        "永兴": "湖南",
-        "嘉禾": "湖南",
-        "临武": "湖南",
-        "汝城": "湖南",
-        "桂东": "湖南",
-        "安仁": "湖南",
-        "资兴": "湖南",
-        "永州": "湖南",
-        "祁阳": "湖南",
-        "东安县": "湖南",
-        "双牌": "湖南",
-        "道县": "湖南",
-        "江永": "湖南",
-        "宁远": "湖南",
-        "蓝山": "湖南",
-        "新田": "湖南",
-        "江华": "湖南",
-        "怀化": "湖南",
-        "中方县": "湖南",
-        "沅陵": "湖南",
-        "辰溪": "湖南",
-        "溆浦": "湖南",
-        "会同": "湖南",
-        "麻阳": "湖南",
-        "新晃": "湖南",
-        "芷江": "湖南",
-        "靖州": "湖南",
-        "通道县": "湖南",
-        "通道侗族自治县": "湖南",
-        "洪江": "湖南",
-        "娄底": "湖南",
-        "双峰": "湖南",
-        "新化": "湖南",
-        "冷水江": "湖南",
-        "涟源": "湖南",
-        "湘西": "湖南",
-        "吉首": "湖南",
-        "泸溪": "湖南",
-        "凤凰县": "湖南",
-        "花垣": "湖南",
-        "保靖": "湖南",
-        "古丈": "湖南",
-        "永顺": "湖南",
-        "龙山县": "湖南",
-        "广东": "广东",
-        "广州": "广东",
-        "增城": "广东",
-        "从化": "广东",
-        "韶关": "广东",
-        "始兴": "广东",
-        "仁化": "广东",
-        "翁源": "广东",
-        "乳源": "广东",
-        "新丰": "广东",
-        "乐昌": "广东",
-        "南雄": "广东",
-        "深圳": "广东",
-        "珠海": "广东",
-        "汕头": "广东",
-        "南澳": "广东",
-        "佛山": "广东",
-        "江门市": "广东",
-        "台山市": "广东",
-        "开平市": "广东",
-        "鹤山市": "广东",
-        "恩平": "广东",
-        "湛江": "广东",
-        "遂溪": "广东",
-        "徐闻": "广东",
-        "廉江": "广东",
-        "雷州": "广东",
-        "吴川": "广东",
-        "茂名": "广东",
-        "电白": "广东",
-        "高州": "广东",
-        "化州": "广东",
-        "信宜": "广东",
-        "肇庆": "广东",
-        "广宁": "广东",
-        "怀集": "广东",
-        "封开": "广东",
-        "德庆": "广东",
-        "高要区": "广东",
-        "四会市": "广东",
-        "惠州": "广东",
-        "博罗": "广东",
-        "惠东": "广东",
-        "龙门县": "广东",
-        "梅州": "广东",
-        "梅县": "广东",
-        "大埔": "广东",
-        "丰顺": "广东",
-        "五华县": "广东",
-        "平远": "广东",
-        "蕉岭": "广东",
-        "兴宁市": "广东",
-        "汕尾": "广东",
-        "海丰": "广东",
-        "陆河": "广东",
-        "陆丰": "广东",
-        "河源": "广东",
-        "紫金县": "广东",
-        "龙川": "广东",
-        "连平": "广东",
-        "和平县": "广东",
-        "东源": "广东",
-        "阳江市": "广东",
-        "阳西": "广东",
-        "阳东": "广东",
-        "阳春": "广东",
-        "清远": "广东",
-        "佛冈": "广东",
-        "阳山": "广东",
-        "连山县": "广东",
-        "连山壮族瑶族自治县": "广东",
-        "连南": "广东",
-        "清新区": "广东",
-        "英德": "广东",
-        "连州": "广东",
-        "东莞": "广东",
-        "中山市": "广东",
-        "潮州": "广东",
-        "潮安": "广东",
-        "饶平": "广东",
-        "揭阳": "广东",
-        "揭东": "广东",
-        "揭西": "广东",
-        "惠来": "广东",
-        "普宁": "广东",
-        "云浮": "广东",
-        "新兴": "广东",
-        "郁南": "广东",
-        "云安": "广东",
-        "罗定": "广东",
-        "广西": "广西",
-        "南宁": "广西",
-        "武鸣": "广西",
-        "隆安": "广西",
-        "马山": "广西",
-        "上林": "广西",
-        "宾阳": "广西",
-        "横县": "广西",
-        "柳州": "广西",
-        "柳江": "广西",
-        "柳城": "广西",
-        "鹿寨": "广西",
-        "融安": "广西",
-        "融水": "广西",
-        "三江侗族自治县": "广西",
-        "三江县": "广西",
-        "桂林": "广西",
-        "阳朔": "广西",
-        "临桂": "广西",
-        "灵川": "广西",
-        "全州": "广西",
-        "兴安": "广西",
-        "永福": "广西",
-        "灌阳": "广西",
-        "龙胜": "广西",
-        "资源县": "广西",
-        "平乐": "广西",
-        "荔蒲": "广西",
-        "恭城": "广西",
-        "梧州": "广西",
-        "苍梧": "广西",
-        "藤县": "广西",
-        "蒙山": "广西",
-        "岑溪": "广西",
-        "北海市": "广西",
-        "北海经济开发区": "山东",
-        "合浦": "广西",
-        "防城港": "广西",
-        "上思": "广西",
-        "东兴市": "广西",
-        "钦州": "广西",
-        "灵山县": "广西",
-        "浦北": "广西",
-        "贵港": "广西",
-        "平南": "广西",
-        "桂平": "广西",
-        "玉林": "广西",
-        "容县": "广西",
-        "陆川": "广西",
-        "博白": "广西",
-        "兴业县": "广西",
-        "北流": "广西",
-        "百色": "广西",
-        "田阳": "广西",
-        "田东": "广西",
-        "平果县": "广西",
-        "德保": "广西",
-        "靖西": "广西",
-        "那坡": "广西",
-        "凌云县": "广西",
-        "乐业县": "广西",
-        "田林县": "广西",
-        "西林": "广西",
-        "隆林": "广西",
-        "贺州": "广西",
-        "昭平": "广西",
-        "钟山县": "广西",
-        "富川": "广西",
-        "河池": "广西",
-        "南丹": "广西",
-        "天峨": "广西",
-        "凤山": "广西",
-        "东兰": "广西",
-        "罗城": "广西",
-        "环江": "广西",
-        "巴马": "广西",
-        "都安": "广西",
-        "大化": "广西",
-        "宜州": "广西",
-        "来宾": "广西",
-        "忻城": "广西",
-        "象州": "广西",
-        "武宣": "广西",
-        "金秀": "广西",
-        "合山": "广西",
-        "崇左": "广西",
-        "扶绥": "广西",
-        "宁明": "广西",
-        "龙州": "广西",
-        "大新县": "广西",
-        "天等": "广西",
-        "凭祥": "广西",
-        "海南": "海南",
-        "三沙": "海南",
-        "海口": "海南",
-        "三亚": "海南",
-        "五指山": "海南",
-        "琼海": "海南",
-        "儋州": "海南",
-        "文昌": "海南",
-        "万宁": "海南",
-        "东方市": "海南",
-        "定安": "海南",
-        "屯昌": "海南",
-        "澄迈": "海南",
-        "临高": "海南",
-        "白沙县": "海南",
-        "白沙黎族自治县": "海南",
-        "昌江自治县": "海南",
-        "乐东": "海南",
-        "陵水": "海南",
-        "保亭": "海南",
-        "琼中": "海南",
-        "重庆": "重庆",
-        "綦江": "重庆",
-        "潼南": "重庆",
-        "铜梁": "重庆",
-        "大足": "重庆",
-        "荣昌": "重庆",
-        "璧山": "重庆",
-        "梁平": "重庆",
-        "城口县": "重庆",
-        "丰都": "重庆",
-        "垫江": "重庆",
-        "武隆": "重庆",
-        "忠县": "重庆",
-        "开县": "重庆",
-        "云阳": "重庆",
-        "奉节": "重庆",
-        "巫山": "重庆",
-        "巫溪": "重庆",
-        "石柱土家族自治": "重庆",
-        "秀山土家族苗族自治": "重庆",
-        "酉阳土家族苗族自治": "重庆",
-        "彭水苗族土家族自治": "重庆",
-        "四川": "四川",
-        "成都": "四川",
-        "金堂": "四川",
-        "双流": "四川",
-        "郫县": "四川",
-        "大邑": "四川",
-        "蒲江": "四川",
-        "新津": "四川",
-        "都江堰": "四川",
-        "彭州": "四川",
-        "邛崃": "四川",
-        "崇州": "四川",
-        "自贡": "四川",
-        "荣县": "四川",
-        "富顺": "四川",
-        "攀枝花": "四川",
-        "米易": "四川",
-        "盐边": "四川",
-        "泸州": "四川",
-        "泸县": "四川",
-        "合江": "四川",
-        "叙永": "四川",
-        "古蔺": "四川",
-        "南部县": "四川",
-        "德阳": "四川",
-        "中江": "四川",
-        "罗江": "四川",
-        "广汉": "四川",
-        "什邡": "四川",
-        "绵竹": "四川",
-        "绵阳": "四川",
-        "三台县": "四川",
-        "盐亭": "四川",
-        "安县": "四川",
-        "梓潼": "四川",
-        "北川羌族自治": "四川",
-        "平武": "四川",
-        "江油": "四川",
-        "广元": "四川",
-        "旺苍": "四川",
-        "青川": "四川",
-        "剑阁": "四川",
-        "苍溪": "四川",
-        "遂宁": "四川",
-        "蓬溪": "四川",
-        "射洪": "四川",
-        "大英": "四川",
-        "内江": "四川",
-        "威远": "四川",
-        "资中": "四川",
-        "隆昌": "四川",
-        "乐山": "四川",
-        "犍为": "四川",
-        "井研": "四川",
-        "夹江": "四川",
-        "沐川": "四川",
-        "峨边彝族自治": "四川",
-        "马边彝族自治": "四川",
-        "峨眉山": "四川",
-        "南充": "四川",
-        "营山": "四川",
-        "蓬安": "四川",
-        "仪陇": "四川",
-        "西充": "四川",
-        "阆中": "四川",
-        "眉山": "四川",
-        "仁寿": "四川",
-        "彭山": "四川",
-        "洪雅": "四川",
-        "丹棱": "四川",
-        "青神": "四川",
-        "宜宾": "四川",
-        "南溪": "四川",
-        "江安": "四川",
-        "长宁县": "四川",
-        "高县": "四川",
-        "珙县": "四川",
-        "筠连": "四川",
-        "兴文": "四川",
-        "屏山": "四川",
-        "广安": "四川",
-        "岳池": "四川",
-        "武胜": "四川",
-        "邻水": "四川",
-        "华蓥": "四川",
-        "达州": "四川",
-        "达县": "四川",
-        "宣汉": "四川",
-        "开江县": "四川",
-        "大竹县": "四川",
-        "渠县": "四川",
-        "万源市": "四川",
-        "雅安市": "四川",
-        "名山县": "四川",
-        "荥经": "四川",
-        "汉源": "四川",
-        "石棉县": "四川",
-        "天全": "四川",
-        "芦山": "四川",
-        "宝兴": "四川",
-        "巴中": "四川",
-        "通江": "四川",
-        "南江县": "四川",
-        "平昌": "四川",
-        "资阳": "四川",
-        "安岳": "四川",
-        "乐至县": "四川",
-        "简阳": "四川",
-        "阿坝州": "四川",
-        "汶川": "四川",
-        "理县": "四川",
-        "茂县": "四川",
-        "松潘": "四川",
-        "九寨沟": "四川",
-        "金川县": "四川",
-        "小金县": "四川",
-        "黑水县": "四川",
-        "马尔康": "四川",
-        "壤塘": "四川",
-        "阿坝": "四川",
-        "若尔盖": "四川",
-        "红原": "四川",
-        "甘孜": "四川",
-        "康定": "四川",
-        "泸定": "四川",
-        "丹巴": "四川",
-        "九龙县": "四川",
-        "雅江": "四川",
-        "道孚": "四川",
-        "炉霍": "四川",
-        "新龙": "四川",
-        "德格": "四川",
-        "白玉县": "四川",
-        "石渠": "四川",
-        "色达": "四川",
-        "理塘": "四川",
-        "巴塘": "四川",
-        "乡城县": "四川",
-        "稻城": "四川",
-        "得荣": "四川",
-        "凉山": "四川",
-        "西昌": "四川",
-        "木里": "四川",
-        "盐源": "四川",
-        "德昌": "四川",
-        "会理": "四川",
-        "会东": "四川",
-        "宁南": "四川",
-        "普格": "四川",
-        "布拖": "四川",
-        "金阳": "四川",
-        "昭觉": "四川",
-        "喜德": "四川",
-        "冕宁": "四川",
-        "越西": "四川",
-        "甘洛": "四川",
-        "美姑": "四川",
-        "雷波": "四川",
-        "贵州": "贵州",
-        "贵阳": "贵州",
-        "开阳": "贵州",
-        "息烽": "贵州",
-        "修文": "贵州",
-        "清镇": "贵州",
-        "六盘水": "贵州",
-        "水城": "贵州",
-        "盘县": "贵州",
-        "遵义": "贵州",
-        "桐梓": "贵州",
-        "绥阳": "贵州",
-        "正安": "贵州",
-        "道真": "贵州",
-        "务川": "贵州",
-        "凤冈": "贵州",
-        "湄潭": "贵州",
-        "余庆": "贵州",
-        "习水": "贵州",
-        "赤水": "贵州",
-        "仁怀": "贵州",
-        "安顺": "贵州",
-        "平坝": "贵州",
-        "普定": "贵州",
-        "镇宁": "贵州",
-        "关岭": "贵州",
-        "紫云县": "贵州",
-        "紫云苗族布依族自治县": "贵州",
-        "毕节": "贵州",
-        "大方县": "贵州",
-        "黔西": "贵州",
-        "金沙县": "贵州",
-        "织金": "贵州",
-        "纳雍": "贵州",
-        "威宁": "贵州",
-        "赫章": "贵州",
-        "铜仁": "贵州",
-        "江口县": "贵州",
-        "玉屏": "贵州",
-        "石阡": "贵州",
-        "思南": "贵州",
-        "印江": "贵州",
-        "德江": "贵州",
-        "沿河": "贵州",
-        "松桃": "贵州",
-        "黔西南": "贵州",
-        "兴义": "贵州",
-        "兴仁": "贵州",
-        "普安": "贵州",
-        "晴隆": "贵州",
-        "贞丰": "贵州",
-        "望谟": "贵州",
-        "册亨": "贵州",
-        "安龙县": "贵州",
-        "黔东南": "贵州",
-        "凯里市": "贵州",
-        "黄平县": "贵州",
-        "施秉": "贵州",
-        "三穗": "贵州",
-        "镇远县": "贵州",
-        "岑巩": "贵州",
-        "天柱": "贵州",
-        "锦屏": "贵州",
-        "剑河": "贵州",
-        "台江县": "贵州",
-        "台江区": "福建",
-        "黎平": "贵州",
-        "榕江": "贵州",
-        "从江": "贵州",
-        "雷山": "贵州",
-        "麻江": "贵州",
-        "丹寨": "贵州",
-        "黔南布": "贵州",
-        "都匀": "贵州",
-        "福泉": "贵州",
-        "荔波": "贵州",
-        "贵定": "贵州",
-        "瓮安": "贵州",
-        "独山县": "贵州",
-        "平塘": "贵州",
-        "罗甸": "贵州",
-        "长顺": "贵州",
-        "龙里": "贵州",
-        "惠水": "贵州",
-        "三都": "贵州",
-        "云南": "云南",
-        "昆明": "云南",
-        "呈贡": "云南",
-        "晋宁": "云南",
-        "富民县": "云南",
-        "宜良": "云南",
-        "石林": "云南",
-        "嵩明": "云南",
-        "禄劝": "云南",
-        "寻甸": "云南",
-        "安宁": "云南",
-        "曲靖": "云南",
-        "马龙": "云南",
-        "陆良": "云南",
-        "师宗": "云南",
-        "罗平县": "云南",
-        "富源": "云南",
-        "会泽": "云南",
-        "沾益": "云南",
-        "宣威": "云南",
-        "玉溪": "云南",
-        "江川": "云南",
-        "澄江": "云南",
-        "通海": "云南",
-        "华宁": "云南",
-        "易门": "云南",
-        "峨山": "云南",
-        "新平": "云南",
-        "元江": "云南",
-        "保山": "云南",
-        "施甸": "云南",
-        "腾冲": "云南",
-        "龙陵": "云南",
-        "昌宁": "云南",
-        "昭通": "云南",
-        "鲁甸": "云南",
-        "巧家": "云南",
-        "盐津": "云南",
-        "大关县": "云南",
-        "永善": "云南",
-        "绥江": "云南",
-        "镇雄": "云南",
-        "彝良": "云南",
-        "威信": "云南",
-        "水富": "云南",
-        "丽江": "云南",
-        "玉龙县": "云南",
-        "玉龙纳西族自治县": "云南",
-        "永胜": "云南",
-        "华坪": "云南",
-        "宁蒗": "云南",
-        "普洱": "云南",
-        "宁洱": "云南",
-        "墨江": "云南",
-        "景东县": "云南",
-        "景东彝族自治县": "云南",
-        "景谷": "云南",
-        "镇沅": "云南",
-        "江城自治县": "云南",
-        "江城县": "云南",
-        "孟连": "云南",
-        "澜沧": "云南",
-        "西盟": "云南",
-        "临沧": "云南",
-        "凤庆": "云南",
-        "云县": "云南",
-        "永德": "云南",
-        "镇康": "云南",
-        "双江": "云南",
-        "耿马": "云南",
-        "沧源": "云南",
-        "楚雄": "云南",
-        "双柏": "云南",
-        "牟定": "云南",
-        "南华": "云南",
-        "姚安": "云南",
-        "大姚": "云南",
-        "永仁": "云南",
-        "元谋": "云南",
-        "武定": "云南",
-        "禄丰": "云南",
-        "红河": "云南",
-        "个旧": "云南",
-        "开远": "云南",
-        "蒙自": "云南",
-        "屏边": "云南",
-        "建水": "云南",
-        "石屏": "云南",
-        "弥勒": "云南",
-        "泸西": "云南",
-        "元阳": "云南",
-        "金平自治县": "云南",
-        "金平县": "云南",
-        "绿春": "云南",
-        "河口自治县": "云南",
-        "文山": "云南",
-        "砚山": "云南",
-        "西畴": "云南",
-        "麻栗坡": "云南",
-        "马关县": "云南",
-        "丘北县": "云南",
-        "广南": "云南",
-        "富宁": "云南",
-        "西双版纳": "云南",
-        "景洪": "云南",
-        "勐海": "云南",
-        "勐腊": "云南",
-        "大理白族自治州": "云南",
-        "大理州": "云南",
-        "大理市": "云南",
-        "漾濞": "云南",
-        "祥云": "云南",
-        "宾川": "云南",
-        "弥渡": "云南",
-        "南涧": "云南",
-        "巍山": "云南",
-        "永平": "云南",
-        "云龙": "云南",
-        "洱源": "云南",
-        "剑川": "云南",
-        "鹤庆": "云南",
-        "德宏": "云南",
-        "瑞丽": "云南",
-        "潞西": "云南",
-        "梁河": "云南",
-        "盈江": "云南",
-        "陇川": "云南",
-        "怒江": "云南",
-        "泸水": "云南",
-        "福贡": "云南",
-        "贡山": "云南",
-        "兰坪": "云南",
-        "迪庆": "云南",
-        "香格里拉": "云南",
-        "德钦": "云南",
-        "维西": "云南",
-        "西藏": "西藏",
-        "拉萨": "西藏",
-        "林周": "西藏",
-        "当雄": "西藏",
-        "尼木": "西藏",
-        "曲水": "西藏",
-        "堆龙德庆": "西藏",
-        "达孜": "西藏",
-        "墨竹工卡": "西藏",
-        "昌都": "西藏",
-        "江达": "西藏",
-        "贡觉": "西藏",
-        "类乌齐": "西藏",
-        "丁青": "西藏",
-        "察雅": "西藏",
-        "八宿": "西藏",
-        "左贡": "西藏",
-        "芒康": "西藏",
-        "洛隆": "西藏",
-        "边坝": "西藏",
-        "乃东": "西藏",
-        "扎囊": "西藏",
-        "贡嘎": "西藏",
-        "桑日": "西藏",
-        "琼结": "西藏",
-        "曲松": "西藏",
-        "措美": "西藏",
-        "洛扎": "西藏",
-        "加查": "西藏",
-        "隆子": "西藏",
-        "错那": "西藏",
-        "浪卡子": "西藏",
-        "日喀则": "西藏",
-        "南木林": "西藏",
-        "江孜": "西藏",
-        "定日": "西藏",
-        "萨迦": "西藏",
-        "拉孜": "西藏",
-        "昂仁": "西藏",
-        "谢通门": "西藏",
-        "白朗": "西藏",
-        "仁布": "西藏",
-        "康马": "西藏",
-        "定结": "西藏",
-        "仲巴": "西藏",
-        "亚东": "西藏",
-        "吉隆": "西藏",
-        "聂拉木": "西藏",
-        "萨嘎": "西藏",
-        "岗巴": "西藏",
-        "那曲": "西藏",
-        "嘉黎": "西藏",
-        "比如县": "西藏",
-        "聂荣县": "西藏",
-        "安多县": "西藏",
-        "申扎": "西藏",
-        "索县": "西藏",
-        "班戈": "西藏",
-        "巴青": "西藏",
-        "尼玛": "西藏",
-        "普兰": "西藏",
-        "札达": "西藏",
-        "噶尔": "西藏",
-        "日土": "西藏",
-        "革吉": "西藏",
-        "改则": "西藏",
-        "措勤": "西藏",
-        "林芝市": "西藏",
-        "林芝县": "西藏",
-        "工布江达": "西藏",
-        "米林": "西藏",
-        "墨脱": "西藏",
-        "波密": "西藏",
-        "察隅": "西藏",
-        "朗县": "西藏",
-        "陕西": "陕西",
-        "西安": "陕西",
-        "蓝田": "陕西",
-        "周至": "陕西",
-        "户县": "陕西",
-        "高陵": "陕西",
-        "铜川": "陕西",
-        "宜君": "陕西",
-        "宝鸡": "陕西",
-        "凤翔县": "陕西",
-        "岐山": "陕西",
-        "扶风": "陕西",
-        "眉县": "陕西",
-        "陇县": "陕西",
-        "千阳": "陕西",
-        "麟游": "陕西",
-        "凤县": "陕西",
-        "太白县": "陕西",
-        "咸阳": "陕西",
-        "三原县": "陕西",
-        "泾阳": "陕西",
-        "乾县": "陕西",
-        "礼泉": "陕西",
-        "永寿": "陕西",
-        "彬县": "陕西",
-        "长武": "陕西",
-        "旬邑": "陕西",
-        "淳化": "陕西",
-        "武功县": "陕西",
-        "兴平": "陕西",
-        "渭南": "陕西",
-        "潼关": "陕西",
-        "大荔": "陕西",
-        "合阳": "陕西",
-        "澄城": "陕西",
-        "蒲城": "陕西",
-        "白水": "陕西",
-        "富平": "陕西",
-        "韩城": "陕西",
-        "华阴": "陕西",
-        "延安": "陕西",
-        "延长县": "陕西",
-        "延川": "陕西",
-        "子长": "陕西",
-        "安塞": "陕西",
-        "志丹": "陕西",
-        "吴起": "陕西",
-        "甘泉": "陕西",
-        "富县": "陕西",
-        "洛川": "陕西",
-        "宜川": "陕西",
-        "黄龙": "陕西",
-        "黄陵": "陕西",
-        "汉中": "陕西",
-        "南郑县": "陕西",
-        "城固": "陕西",
-        "洋县": "陕西",
-        "西乡": "陕西",
-        "勉县": "陕西",
-        "宁强": "陕西",
-        "略阳": "陕西",
-        "镇巴": "陕西",
-        "留坝": "陕西",
-        "佛坪": "陕西",
-        "榆林": "陕西",
-        "神木": "陕西",
-        "府谷": "陕西",
-        "横山": "陕西",
-        "靖边": "陕西",
-        "定边": "陕西",
-        "绥德": "陕西",
-        "米脂": "陕西",
-        "佳县": "陕西",
-        "吴堡": "陕西",
-        "清涧": "陕西",
-        "子洲": "陕西",
-        "安康": "陕西",
-        "汉阴": "陕西",
-        "石泉": "陕西",
-        "宁陕": "陕西",
-        "紫阳": "陕西",
-        "岚皋": "陕西",
-        "平利": "陕西",
-        "镇坪": "陕西",
-        "旬阳": "陕西",
-        "白河县": "陕西",
-        "商洛": "陕西",
-        "洛南": "陕西",
-        "丹凤": "陕西",
-        "商南": "陕西",
-        "山阳": "陕西",
-        "镇安县": "陕西",
-        "柞水": "陕西",
-        "甘肃": "甘肃",
-        "兰州": "甘肃",
-        "东乡自治县": "甘肃",
-        "永登": "甘肃",
-        "皋兰": "甘肃",
-        "榆中": "甘肃",
-        "嘉峪关": "甘肃",
-        "金昌": "甘肃",
-        "永昌": "甘肃",
-        "白银市": "甘肃",
-        "靖远": "甘肃",
-        "会宁": "甘肃",
-        "景泰县": "甘肃",
-        "天水": "甘肃",
-        "清水县": "甘肃",
-        "秦安": "甘肃",
-        "甘谷": "甘肃",
-        "武山": "甘肃",
-        "张家川": "甘肃",
-        "武威": "甘肃",
-        "民勤": "甘肃",
-        "古浪": "甘肃",
-        "天祝": "甘肃",
-        "张掖": "甘肃",
-        "肃南": "甘肃",
-        "民乐县": "甘肃",
-        "临泽": "甘肃",
-        "高台": "甘肃",
-        "山丹": "甘肃",
-        "平凉": "甘肃",
-        "泾川": "甘肃",
-        "灵台": "甘肃",
-        "崇信": "甘肃",
-        "华亭": "甘肃",
-        "庄浪": "甘肃",
-        "静宁": "甘肃",
-        "酒泉": "甘肃",
-        "金塔": "甘肃",
-        "瓜州": "甘肃",
-        "肃北": "甘肃",
-        "阿克塞": "甘肃",
-        "玉门": "甘肃",
-        "敦煌": "甘肃",
-        "庆阳": "甘肃",
-        "庆城": "甘肃",
-        "环县": "甘肃",
-        "华池": "甘肃",
-        "合水县": "甘肃",
-        "正宁": "甘肃",
-        "宁县": "甘肃",
-        "镇原县": "甘肃",
-        "定西": "甘肃",
-        "通渭": "甘肃",
-        "陇西": "甘肃",
-        "渭源": "甘肃",
-        "临洮": "甘肃",
-        "漳县": "甘肃",
-        "岷县": "甘肃",
-        "陇南": "甘肃",
-        "成县": "甘肃",
-        "文县": "甘肃",
-        "宕昌": "甘肃",
-        "康县": "甘肃",
-        "西和": "甘肃",
-        "礼县": "甘肃",
-        "徽县": "甘肃",
-        "两当县": "甘肃",
-        "临夏": "甘肃",
-        "康乐县": "甘肃",
-        "永靖": "甘肃",
-        "广河": "甘肃",
-        "和政": "甘肃",
-        "积石山": "甘肃",
-        "合作市": "甘肃",
-        "临潭": "甘肃",
-        "卓尼": "甘肃",
-        "舟曲": "甘肃",
-        "迭部": "甘肃",
-        "玛曲": "甘肃",
-        "碌曲": "甘肃",
-        "夏河": "甘肃",
-        "青海": "青海",
-        "共和县": "青海",
-        "西宁": "青海",
-        "大通自治县": "青海",
-        "大通县": "青海",
-        "湟中": "青海",
-        "湟源": "青海",
-        "平安县": "青海",
-        "民和": "青海",
-        "乐都": "青海",
-        "河南蒙古族自治县": "青海",
-        "互助土族自治县": "青海",
-        "互助县": "青海",
-        "化隆": "青海",
-        "循化": "青海",
-        "海北州": "青海",
-        "海北藏族自治州": "青海",
-        "门源": "青海",
-        "祁连": "青海",
-        "海晏": "青海",
-        "刚察": "青海",
-        "黄南": "青海",
-        "同仁": "青海",
-        "尖扎": "青海",
-        "泽库": "青海",
-        "同德": "青海",
-        "贵德": "青海",
-        "兴海": "青海",
-        "贵南": "青海",
-        "果洛": "青海",
-        "玛沁": "青海",
-        "班玛": "青海",
-        "甘德": "青海",
-        "达日": "青海",
-        "久治": "青海",
-        "玛多": "青海",
-        "玉树": "青海",
-        "杂多": "青海",
-        "称多": "青海",
-        "治多": "青海",
-        "囊谦": "青海",
-        "曲麻莱": "青海",
-        "海西州": "青海",
-        "海西蒙古族藏族自治州": "青海",
-        "格尔木": "青海",
-        "德令哈": "青海",
-        "乌兰": "青海",
-        "都兰": "青海",
-        "天峻": "青海",
-        "宁夏": "宁夏",
-        "银川": "宁夏",
-        "永宁": "宁夏",
-        "贺兰": "宁夏",
-        "灵武": "宁夏",
-        "石嘴山": "宁夏",
-        "平罗": "宁夏",
-        "吴忠": "宁夏",
-        "盐池": "宁夏",
-        "同心县": "宁夏",
-        "青铜峡": "宁夏",
-        "固原": "宁夏",
-        "西吉": "宁夏",
-        "隆德": "宁夏",
-        "泾源": "宁夏",
-        "彭阳": "宁夏",
-        "中卫": "宁夏",
-        "中宁": "宁夏",
-        "海原": "宁夏",
-        "新疆": "新疆",
-        "乌鲁木齐": "新疆",
-        "克拉玛依": "新疆",
-        "吐鲁番": "新疆",
-        "鄯善": "新疆",
-        "托克逊": "新疆",
-        "哈密": "新疆",
-        "巴里坤": "新疆",
-        "伊吾": "新疆",
-        "昌吉": "新疆",
-        "阜康": "新疆",
-        "呼图壁": "新疆",
-        "玛纳斯": "新疆",
-        "奇台": "新疆",
-        "吉木萨尔": "新疆",
-        "木垒哈萨克": "新疆",
-        "博尔塔拉": "新疆",
-        "博乐": "新疆",
-        "精河": "新疆",
-        "温泉县": "新疆",
-        "巴音郭楞": "新疆",
-        "库尔勒": "新疆",
-        "轮台": "新疆",
-        "尉犁": "新疆",
-        "若羌": "新疆",
-        "且末": "新疆",
-        "焉耆": "新疆",
-        "和静": "新疆",
-        "和硕": "新疆",
-        "博湖": "新疆",
-        "阿克苏": "新疆",
-        "温宿": "新疆",
-        "库车": "新疆",
-        "沙雅": "新疆",
-        "新和县": "新疆",
-        "拜城": "新疆",
-        "乌什": "新疆",
-        "阿瓦提": "新疆",
-        "柯坪": "新疆",
-        "克孜勒": "新疆",
-        "阿图什": "新疆",
-        "阿克陶": "新疆",
-        "阿合奇": "新疆",
-        "乌恰": "新疆",
-        "喀什": "新疆",
-        "疏附": "新疆",
-        "疏勒": "新疆",
-        "英吉沙": "新疆",
-        "泽普": "新疆",
-        "莎车": "新疆",
-        "叶城": "新疆",
-        "麦盖提": "新疆",
-        "岳普湖": "新疆",
-        "伽师": "新疆",
-        "巴楚": "新疆",
-        "塔什": "新疆",
-        "和田": "新疆",
-        "墨玉": "新疆",
-        "皮山": "新疆",
-        "洛浦": "新疆",
-        "策勒": "新疆",
-        "于田县": "新疆",
-        "民丰": "新疆",
-        "伊犁": "新疆",
-        "伊宁": "新疆",
-        "奎屯": "新疆",
-        "察布查尔锡伯": "新疆",
-        "霍城": "新疆",
-        "巩留": "新疆",
-        "新源": "新疆",
-        "昭苏": "新疆",
-        "特克斯": "新疆",
-        "尼勒克": "新疆",
-        "塔城": "新疆",
-        "乌苏": "新疆",
-        "额敏": "新疆",
-        "沙湾": "新疆",
-        "托里": "新疆",
-        "裕民": "新疆",
-        "和布克赛尔": "新疆",
-        "阿勒泰": "新疆",
-        "布尔津": "新疆",
-        "富蕴": "新疆",
-        "福海": "新疆",
-        "哈巴河": "新疆",
-        "青河": "新疆",
-        "吉木乃": "新疆",
-        "石河子": "新疆",
-        "阿拉尔": "新疆",
-        "图木舒克": "新疆",
-        "五家渠": "新疆",
-        "台湾": "台湾",
-        "台北": "台湾",
-        "高雄": "台湾",
-        "基隆": "台湾",
-        "台中市": "台湾",
-        "台南": "台湾",
-        "新竹": "台湾",
-        "嘉义": "台湾",
-        "宜兰": "台湾",
-        "桃园市": "台湾",
-        "苗栗": "台湾",
-        "彰化": "台湾",
-        "南投": "台湾",
-        "云林": "台湾",
-        "屏东": "台湾",
-        "台东": "台湾",
-        "花莲": "台湾",
-        "澎湖": "台湾",
-        "香港": "香港",
-        "澳门": "澳门",
-        "东城区": "北京",
-        "西城区": "北京",
-        "崇文": "北京",
-        "宣武": "北京",
-        "丰台": "北京",
-        "石景山": "北京",
-        "海淀": "北京",
-        "门头沟": "北京",
-        "房山": "北京",
-        "顺义": "北京",
-        "昌平": "北京",
-        "大兴区": "北京",
-        "怀柔": "北京",
-        "平谷": "北京",
-        "河西区": "天津",
-        "滨海新区": "天津",
-        "南开区": "天津",
-        "红桥区": "天津",
-        "塘沽": "天津",
-        "汉沽": "天津",
-        "大港": "天津",
-        "东丽": "天津",
-        "西青": "天津",
-        "津南": "天津",
-        "北辰": "天津",
-        "武清": "天津",
-        "宝坻": "天津",
-        "井陉矿": "河北",
-        "裕华": "河北",
-        "路南区": "河北",
-        "路北区": "河北",
-        "古冶": "河北",
-        "丰南": "河北",
-        "丰润": "河北",
-        "海港区": "河北",
-        "山海关": "河北",
-        "北戴河": "河北",
-        "邯山": "河北",
-        "丛台": "河北",
-        "复兴区": "河北",
-        "峰峰矿": "河北",
-        "北市区": "河北",
-        "南市区": "河北",
-        "下花园": "河北",
-        "双滦": "河北",
-        "鹰手营子矿": "河北",
-        "运河区": "河北",
-        "安次": "河北",
-        "广阳": "河北",
-        "桃城": "河北",
-        "小店区": "山西",
-        "迎泽": "山西",
-        "杏花岭": "山西",
-        "尖草坪": "山西",
-        "万柏林": "山西",
-        "晋源": "山西",
-        "南郊区": "山西",
-        "新荣": "山西",
-        "朔城": "山西",
-        "平鲁": "山西",
-        "榆次": "山西",
-        "盐湖": "山西",
-        "忻府": "山西",
-        "尧都": "山西",
-        "离石": "山西",
-        "玉泉": "内蒙古",
-        "赛罕": "内蒙古",
-        "东河区": "内蒙古",
-        "昆都仑": "内蒙古",
-        "石拐": "内蒙古",
-        "白云矿": "内蒙古",
-        "九原": "内蒙古",
-        "海勃湾": "内蒙古",
-        "乌达": "内蒙古",
-        "红山区": "内蒙古",
-        "元宝山": "内蒙古",
-        "松山": "内蒙古",
-        "科尔沁": "内蒙古",
-        "东胜": "内蒙古",
-        "海拉尔": "内蒙古",
-        "临河": "内蒙古",
-        "集宁": "内蒙古",
-        "沈河": "辽宁",
-        "大东区": "辽宁",
-        "皇姑区": "辽宁",
-        "苏家屯": "辽宁",
-        "东陵区": "辽宁",
-        "沈北新": "辽宁",
-        "于洪": "辽宁",
-        "西岗区": "辽宁",
-        "沙河口": "辽宁",
-        "甘井子": "辽宁",
-        "旅顺口": "辽宁",
-        "金州": "辽宁",
-        "立山": "辽宁",
-        "千山": "辽宁",
-        "新抚": "辽宁",
-        "东洲": "辽宁",
-        "望花": "辽宁",
-        "顺城": "辽宁",
-        "溪湖": "辽宁",
-        "明山区": "辽宁",
-        "南芬": "辽宁",
-        "元宝区": "辽宁",
-        "振兴区": "辽宁",
-        "振安": "辽宁",
-        "古塔区": "辽宁",
-        "凌河": "辽宁",
-        "站前区": "辽宁",
-        "西市区": "辽宁",
-        "鲅鱼圈": "辽宁",
-        "老边": "辽宁",
-        "新邱": "辽宁",
-        "太平区": "辽宁",
-        "清河门": "辽宁",
-        "细河": "辽宁",
-        "白塔": "辽宁",
-        "文圣区": "辽宁",
-        "宏伟区": "辽宁",
-        "弓长岭": "辽宁",
-        "太子河": "辽宁",
-        "双台子": "辽宁",
-        "兴隆台": "辽宁",
-        "银州": "辽宁",
-        "双塔区": "辽宁",
-        "龙城区": "辽宁",
-        "龙港区": "辽宁",
-        "南票区": "辽宁",
-        "杨家杖子开发": "辽宁",
-        "南关区": "吉林",
-        "二道区": "吉林",
-        "绿园区": "吉林",
-        "双阳区": "吉林",
-        "龙潭区": "吉林",
-        "船营": "吉林",
-        "丰满区": "吉林",
-        "东昌区": "吉林",
-        "东昌府区": "山东",
-        "二道江": "吉林",
-        "八道江": "吉林",
-        "江源区": "吉林",
-        "宁江": "吉林",
-        "洮北": "吉林",
-        "道里": "黑龙江",
-        "南岗区": "黑龙江",
-        "道外区": "黑龙江",
-        "平房区": "黑龙江",
-        "松北": "黑龙江",
-        "香坊": "黑龙江",
-        "呼兰": "黑龙江",
-        "阿城": "黑龙江",
-        "龙沙": "黑龙江",
-        "建华区": "黑龙江",
-        "铁锋": "黑龙江",
-        "昂昂溪": "黑龙江",
-        "富拉尔基": "黑龙江",
-        "碾子山": "黑龙江",
-        "梅里斯达斡尔族": "黑龙江",
-        "鸡冠区": "黑龙江",
-        "恒山": "黑龙江",
-        "滴道": "黑龙江",
-        "城子河": "黑龙江",
-        "麻山": "黑龙江",
-        "工农区": "黑龙江",
-        "尖山": "黑龙江",
-        "岭东": "黑龙江",
-        "四方台区": "黑龙江",
-        "萨尔图": "黑龙江",
-        "龙凤区": "黑龙江",
-        "让胡路": "黑龙江",
-        "红岗区": "黑龙江",
-        "南岔": "黑龙江",
-        "友好区": "黑龙江",
-        "翠峦": "黑龙江",
-        "新青区": "黑龙江",
-        "美溪": "黑龙江",
-        "金山屯": "黑龙江",
-        "五营区": "黑龙江",
-        "乌马河": "黑龙江",
-        "汤旺河": "黑龙江",
-        "带岭": "黑龙江",
-        "乌伊岭": "黑龙江",
-        "上甘岭": "黑龙江",
-        "东风区": "黑龙江",
-        "桃山": "黑龙江",
-        "茄子河": "黑龙江",
-        "阳明区": "黑龙江",
-        "爱民区": "黑龙江",
-        "爱辉区": "黑龙江",
-        "北林区": "黑龙江",
-        "大兴安岭": "黑龙江",
-        "加格达奇": "黑龙江",
-        "松岭区": "黑龙江",
-        "新林区": "黑龙江",
-        "呼中": "黑龙江",
-        "黄浦": "上海",
-        "徐汇": "上海",
-        "静安": "上海",
-        "闸北": "上海",
-        "虹口": "上海",
-        "杨浦": "上海",
-        "闵行": "上海",
-        "嘉定": "上海",
-        "浦东新": "上海",
-        "金山区 ": "上海",
-        "松江": "上海",
-        "青浦": "上海",
-        "奉贤": "上海",
-        "玄武": "江苏",
-        "白下": "江苏",
-        "秦淮": "江苏",
-        "建邺": "江苏",
-        "下关区": "江苏",
-        "浦口区": "江苏",
-        "雨花台": "江苏",
-        "江宁": "江苏",
-        "六合": "江苏",
-        "崇安": "江苏",
-        "南长": "江苏",
-        "北塘": "江苏",
-        "锡山": "江苏",
-        "惠山": "江苏",
-        "滨湖": "江苏",
-        "九里": "江苏",
-        "贾汪": "江苏",
-        "泉山": "江苏",
-        "天宁": "江苏",
-        "钟楼": "江苏",
-        "戚墅堰": "江苏",
-        "新北": "江苏",
-        "武进": "江苏",
-        "沧浪": "江苏",
-        "金阊": "江苏",
-        "虎丘": "江苏",
-        "吴中": "江苏",
-        "相城": "江苏",
-        "崇川": "江苏",
-        "港闸": "江苏",
-        "新浦": "江苏",
-        "楚州": "江苏",
-        "淮阴区": "江苏",
-        "清浦": "江苏",
-        "亭湖": "江苏",
-        "盐都": "江苏",
-        "广陵": "江苏",
-        "邗江": "江苏",
-        "维扬": "江苏",
-        "京口": "江苏",
-        "润州": "江苏",
-        "丹徒": "江苏",
-        "海陵": "江苏",
-        "高港": "江苏",
-        "宿城": "江苏",
-        "宿豫": "江苏",
-        "上城区": "浙江",
-        "下城区": "浙江",
-        "江干区": "浙江",
-        "拱墅": "浙江",
-        "滨江区": "浙江",
-        "萧山": "浙江",
-        "余杭": "浙江",
-        "海曙": "浙江",
-        "江东区": "浙江",
-        "北仑": "浙江",
-        "镇海": "浙江",
-        "鄞州": "浙江",
-        "鹿城": "浙江",
-        "龙湾区": "浙江",
-        "瓯海": "浙江",
-        "南湖区": "浙江",
-        "秀洲": "浙江",
-        "吴兴": "浙江",
-        "南浔": "浙江",
-        "越城": "浙江",
-        "婺城": "浙江",
-        "金东": "浙江",
-        "柯城": "浙江",
-        "衢江": "浙江",
-        "定海": "浙江",
-        "椒江": "浙江",
-        "黄岩": "浙江",
-        "路桥区": "浙江",
-        "莲都": "浙江",
-        "瑶海": "安徽",
-        "庐阳": "安徽",
-        "蜀山": "安徽",
-        "新站": "安徽",
-        "包河": "安徽",
-        "镜湖区": "安徽",
-        "镜湖新区": "浙江",
-        "弋江": "安徽",
-        "鸠江": "安徽",
-        "三山区": "安徽",
-        "蚌山": "安徽",
-        "禹会": "安徽",
-        "淮上": "安徽",
-        "田家庵": "安徽",
-        "谢家集": "安徽",
-        "八公山": "安徽",
-        "潘集": "安徽",
-        "金家庄": "安徽",
-        "花山区": "安徽",
-        "雨山": "安徽",
-        "博望新": "安徽",
-        "杜集区": "安徽",
-        "相山": "安徽",
-        "烈山": "安徽",
-        "铜官山": "安徽",
-        "狮子山": "安徽",
-        "迎江": "安徽",
-        "大观区": "安徽",
-        "宜秀": "安徽",
-        "屯溪": "安徽",
-        "徽州": "安徽",
-        "琅琊区": "安徽",
-        "南谯": "安徽",
-        "颍州": "安徽",
-        "颍东": "安徽",
-        "颍泉": "安徽",
-        "埇桥": "安徽",
-        "居巢区": "安徽",
-        "金安": "安徽",
-        "裕安": "安徽",
-        "谯城": "安徽",
-        "贵池": "安徽",
-        "宣州": "安徽",
-        "仓山": "福建",
-        "马尾": "福建",
-        "晋安": "福建",
-        "思明区": "福建",
-        "海沧": "福建",
-        "湖里": "福建",
-        "集美区": "福建",
-        "同安区": "福建",
-        "同安县": "福建",
-        "翔安区": "福建",
-        "城厢": "福建",
-        "涵江": "福建",
-        "荔城": "福建",
-        "秀屿区": "福建",
-        "梅列": "福建",
-        "三元区": "福建",
-        "鲤城": "福建",
-        "丰泽区": "福建",
-        "洛江": "福建",
-        "泉港": "福建",
-        "芗城": "福建",
-        "龙文": "福建",
-        "延平": "福建",
-        "新罗": "福建",
-        "蕉城": "福建",
-        "东湖区": "江西",
-        "青云谱": "江西",
-        "湾里区": "江西",
-        "青山湖": "江西",
-        "珠山": "江西",
-        "安源": "江西",
-        "湘东": "江西",
-        "庐山": "江西",
-        "浔阳": "江西",
-        "渝水": "江西",
-        "月湖区": "江西",
-        "章贡": "江西",
-        "吉州": "江西",
-        "青原区": "江西",
-        "袁州": "江西",
-        "临川": "江西",
-        "信州": "江西",
-        "历下": "山东",
-        "槐荫": "山东",
-        "天桥区": "山东",
-        "历城": "山东",
-        "长清": "山东",
-        "市南区": "山东",
-        "市北区": "山东",
-        "四方区": "山东",
-        "黄岛": "山东",
-        "崂山": "山东",
-        "李沧": "山东",
-        "城阳": "山东",
-        "淄川": "山东",
-        "张店": "山东",
-        "博山": "山东",
-        "临淄": "山东",
-        "周村": "山东",
-        "薛城": "山东",
-        "峄城": "山东",
-        "台儿庄": "山东",
-        "山亭": "山东",
-        "芝罘": "山东",
-        "福山": "山东",
-        "牟平": "山东",
-        "莱山": "山东",
-        "潍城": "山东",
-        "寒亭": "山东",
-        "坊子": "山东",
-        "奎文": "山东",
-        "任城": "山东",
-        "泰山区": "山东",
-        "岱岳": "山东",
-        "环翠": "山东",
-        "岚山": "山东",
-        "莱城": "山东",
-        "钢城区": "山东",
-        "兰山": "山东",
-        "罗庄区": "山东",
-        "德城区": "山东",
-        "东昌府": "山东",
-        "滨城区": "山东",
-        "牡丹区": "山东",
-        "中原区": "河南",
-        "二七区": "河南",
-        "金水区": "河南",
-        "上街": "河南",
-        "惠济区": "河南",
-        "龙亭区": "河南",
-        "顺河回族": "河南",
-        "禹王台": "河南",
-        "金明": "河南",
-        "西工区": "河南",
-        "瀍河回族": "河南",
-        "涧西": "河南",
-        "吉利区": "河南",
-        "洛龙": "河南",
-        "卫东区": "河南",
-        "石龙": "河南",
-        "湛河": "河南",
-        "文峰": "河南",
-        "北关区": "河南",
-        "殷都": "河南",
-        "龙安": "河南",
-        "山城区": "河南",
-        "淇滨": "河南",
-        "红旗区": "河南",
-        "卫滨": "河南",
-        "凤泉": "河南",
-        "牧野区": "河南",
-        "中站区": "河南",
-        "马村区": "河南",
-        "华龙区": "河南",
-        "魏都": "河南",
-        "源汇": "河南",
-        "郾城": "河南",
-        "召陵": "河南",
-        "湖滨": "河南",
-        "宛城": "河南",
-        "卧龙区": "河南",
-        "梁园": "河南",
-        "睢阳": "河南",
-        "浉河": "河南",
-        "平桥区": "河南",
-        "川汇": "河南",
-        "驿城": "河南",
-        "江岸区": "湖北",
-        "江汉区": "湖北",
-        "硚口": "湖北",
-        "汉阳": "湖北",
-        "武昌": "湖北",
-        "洪山": "湖北",
-        "东西湖": "湖北",
-        "汉南": "湖北",
-        "蔡甸": "湖北",
-        "江夏": "湖北",
-        "黄陂": "湖北",
-        "新洲区": "湖北",
-        "东湖开发": "湖北",
-        "武汉经济开发": "湖北",
-        "黄石港": "湖北",
-        "西塞山": "湖北",
-        "下陆": "湖北",
-        "铁山区": "湖北",
-        "黄石经济开发": "湖北",
-        "茅箭": "湖北",
-        "张湾": "湖北",
-        "十堰经济开发": "湖北",
-        "武当山旅游经济特": "湖北",
-        "西陵": "湖北",
-        "伍家岗": "湖北",
-        "点军": "湖北",
-        "猇亭": "湖北",
-        "夷陵": "湖北",
-        "樊城": "湖北",
-        "隆中风景": "湖北",
-        "高新开发": "湖北",
-        "鱼梁洲开发": "湖北",
-        "梁子湖": "湖北",
-        "鄂城": "湖北",
-        "葛店开发": "湖北",
-        "鄂州经济开发": "湖北",
-        "东宝": "湖北",
-        "掇刀": "湖北",
-        "荆门经济开发": "湖北",
-        "孝南": "湖北",
-        "沙市": "湖北",
-        "荆州经济开发": "湖北",
-        "黄州": "湖北",
-        "龙感湖管理": "湖北",
-        "咸安": "湖北",
-        "曾都": "湖北",
-        "芙蓉区": "湖南",
-        "天心区": "湖南",
-        "岳麓": "湖南",
-        "开福": "湖南",
-        "雨花区": "湖南",
-        "荷塘区": "湖南",
-        "芦淞": "湖南",
-        "石峰": "湖南",
-        "天元区": "湖南",
-        "雨湖": "湖南",
-        "岳塘": "湖南",
-        "珠晖": "湖南",
-        "雁峰": "湖南",
-        "石鼓": "湖南",
-        "蒸湘": "湖南",
-        "南岳": "湖南",
-        "双清": "湖南",
-        "大祥": "湖南",
-        "北塔区": "湖南",
-        "岳阳楼": "湖南",
-        "云溪": "湖南",
-        "君山": "湖南",
-        "武陵": "湖南",
-        "鼎城": "湖南",
-        "武陵源": "湖南",
-        "赫山": "湖南",
-        "北湖": "湖南",
-        "苏仙": "湖南",
-        "零陵": "湖南",
-        "冷水滩": "湖南",
-        "鹤城": "湖南",
-        "娄星": "湖南",
-        "荔湾": "广东",
-        "越秀": "广东",
-        "海珠": "广东",
-        "天河区": "广东",
-        "黄埔": "广东",
-        "番禺": "广东",
-        "花都区": "广东",
-        "南沙区": "广东",
-        "萝岗": "广东",
-        "武江": "广东",
-        "浈江": "广东",
-        "曲江": "广东",
-        "罗湖": "广东",
-        "福田": "广东",
-        "宝安": "广东",
-        "龙岗": "广东",
-        "盐田": "广东",
-        "香洲": "广东",
-        "斗门区": "广东",
-        "斗门镇": "广东",
-        "金湾区": "广东",
-        "龙湖区": "广东",
-        "濠江": "广东",
-        "潮阳": "广东",
-        "潮南": "广东",
-        "澄海": "广东",
-        "禅城": "广东",
-        "南海区": "广东",
-        "顺德": "广东",
-        "三水": "广东",
-        "高明区": "广东",
-        "蓬江": "广东",
-        "江海区": "广东",
-        "新会": "广东",
-        "赤坎": "广东",
-        "霞山": "广东",
-        "坡头区": "广东",
-        "麻章": "广东",
-        "茂南": "广东",
-        "茂港": "广东",
-        "端州": "广东",
-        "鼎湖": "广东",
-        "惠城": "广东",
-        "惠阳": "广东",
-        "梅江": "广东",
-        "源城": "广东",
-        "清城": "广东",
-        "枫溪": "广东",
-        "湘桥": "广东",
-        "榕城": "广东",
-        "云城": "广东",
-        "青秀": "广西",
-        "江南区": "广西",
-        "西乡塘": "广西",
-        "良庆": "广西",
-        "邕宁": "广西",
-        "鱼峰": "广西",
-        "柳南": "广西",
-        "柳北": "广西",
-        "秀峰区": "广西",
-        "叠彩": "广西",
-        "七星区": "广西",
-        "雁山区": "广西",
-        "万秀区": "广西",
-        "蝶山": "广西",
-        "长洲": "广西",
-        "银海": "广西",
-        "铁山港": "广西",
-        "港口区": "广西",
-        "防城": "广西",
-        "钦南": "广西",
-        "钦北": "广西",
-        "港北": "广西",
-        "港南": "广西",
-        "覃塘": "广西",
-        "玉州": "广西",
-        "右江区": "广西",
-        "八步": "广西",
-        "金城江": "广西",
-        "兴宾": "广西",
-        "江洲": "广西",
-        "秀英区": "海南",
-        "龙华区": "海南",
-        "琼山": "海南",
-        "美兰": "海南",
-        "洋浦经济开发": "海南",
-        "万州": "重庆",
-        "涪陵": "重庆",
-        "渝中": "重庆",
-        "大渡口区": "重庆",
-        "沙坪坝": "重庆",
-        "九龙坡": "重庆",
-        "南岸区": "重庆",
-        "北碚": "重庆",
-        "万盛区": "重庆",
-        "渝北": "重庆",
-        "巴南": "重庆",
-        "黔江": "重庆",
-        "长寿区": "重庆",
-        "江津区": "重庆",
-        "合川": "重庆",
-        "南川": "重庆",
-        "永川": "重庆",
-        "北部新": "重庆",
-        "锦江": "四川",
-        "青羊": "四川",
-        "金牛": "四川",
-        "武侯": "四川",
-        "成华": "四川",
-        "龙泉驿": "四川",
-        "青白江": "四川",
-        "新都区": "四川",
-        "温江区": "四川",
-        "自流井": "四川",
-        "贡井": "四川",
-        "沿滩区": "四川",
-        "仁和区": "四川",
-        "江阳区": "四川",
-        "纳溪": "四川",
-        "龙马潭": "四川",
-        "旌阳": "四川",
-        "涪城": "四川",
-        "游仙": "四川",
-        "元坝": "四川",
-        "朝天区": "四川",
-        "船山": "四川",
-        "安居区": "四川",
-        "五通桥": "四川",
-        "金口河": "四川",
-        "顺庆": "四川",
-        "高坪": "四川",
-        "嘉陵": "四川",
-        "东坡区": "四川",
-        "翠屏": "四川",
-        "通川": "四川",
-        "雨城": "四川",
-        "巴州": "四川",
-        "雁江": "四川",
-        "南明": "贵州",
-        "云岩": "贵州",
-        "花溪": "贵州",
-        "乌当": "贵州",
-        "小河区": "贵州",
-        "金阳新": "贵州",
-        "六枝特": "贵州",
-        "红花岗": "贵州",
-        "汇川": "贵州",
-        "新浦新": "贵州",
-        "西秀": "贵州",
-        "黄果树开发": "贵州",
-        "七星关": "贵州",
-        "碧江": "贵州",
-        "万山特": "贵州",
-        "凯里经济开发": "贵州",
-        "盘龙": "云南",
-        "官渡区": "云南",
-        "西山区": "云南",
-        "东川区": "云南",
-        "麒麟区": "云南",
-        "红塔区": "云南",
-        "隆阳": "云南",
-        "昭阳": "云南",
-        "古城区": "云南",
-        "思茅": "云南",
-        "临翔": "云南",
-        "山南市": "西藏",
-        "阿里地区": "西藏",
-        "碑林": "陕西",
-        "莲湖": "陕西",
-        "灞桥": "陕西",
-        "未央": "陕西",
-        "雁塔": "陕西",
-        "阎良": "陕西",
-        "临潼": "陕西",
-        "沣渭新": "陕西",
-        "王益": "陕西",
-        "印台": "陕西",
-        "耀州": "陕西",
-        "渭滨": "陕西",
-        "金台": "陕西",
-        "陈仓": "陕西",
-        "秦都": "陕西",
-        "渭城": "陕西",
-        "临渭": "陕西",
-        "宝塔区": "陕西",
-        "汉台": "陕西",
-        "榆阳": "陕西",
-        "汉滨": "陕西",
-        "商州": "陕西",
-        "杨凌示范": "陕西",
-        "七里河区": "甘肃",
-        "西固": "甘肃",
-        "红古": "甘肃",
-        "平川": "甘肃",
-        "秦州": "甘肃",
-        "麦积": "甘肃",
-        "凉州": "甘肃",
-        "甘州": "甘肃",
-        "崆峒": "甘肃",
-        "肃州": "甘肃",
-        "西峰": "甘肃",
-        "安定": "甘肃",
-        "武都": "甘肃",
-        "海东": "青海",
-        "兴庆": "宁夏",
-        "西夏区": "宁夏",
-        "金凤": "宁夏",
-        "大武口": "宁夏",
-        "惠农": "宁夏",
-        "利通": "宁夏",
-        "红寺堡": "宁夏",
-        "原州": "宁夏",
-        "沙坡头": "宁夏",
-        "天山区": "新疆",
-        "沙依巴克": "新疆",
-        "水磨沟": "新疆",
-        "头屯河": "新疆",
-        "达坂城": "新疆",
-        "米东": "新疆",
-        "独山子": "新疆",
-        "白碱滩": "新疆",
-        "乌尔禾": "新疆",
-        "中西区": "香港",
-        "九龙城": "香港",
-        "观塘": "香港",
-        "深水埗": "香港",
-        "湾仔区": "香港",
-        "黄大仙": "香港",
-        "油尖旺": "香港",
-        "离岛": "香港",
-        "葵青": "香港",
-        "西贡": "香港",
-        "沙田": "香港",
-        "屯门": "香港",
-        "荃湾": "香港",
-        "元朗": "香港",
-        "花地玛堂": "澳门",
-        "圣安多尼堂": "澳门",
-        "大堂": "澳门",
-        "望德堂": "澳门",
-        "风顺堂": "澳门",
-        "嘉模堂": "澳门",
-        "圣方济各堂": "澳门"
-    }
-}

+ 0 - 13
src/saveServer/config.json

@@ -1,13 +0,0 @@
-{
-    "mongodbServers": "192.168.3.18:27080",
-    "mongodbPoolSize": "5",
-    "mongodbName": "qfw",
-    "tempinfosavehour": "24",
-    "tempsite": "中国建设招标网,宝钢集团有限公司,中国铁路招标网,三峡国际招标有限公司",
-    "templength": "80",
-    "defauldetail": "由于网络故障,信息无法正常显示,请查看来源网站。",
-    "redisServer": "redisdb=192.168.3.18:6379,old=192.168.3.18:6379",
-    "port": "7999",
-    "mustfield": "title,site,href",
-    "field": "comeintime,extracttype,spidercode,agency,bidamount,area,type,bidopendate,buyer,channel,city,contenthtml,descript,detail,infoformat,keywords,projectcode,projectinfo,projectname,publishtime,result,summary,urltop,winner,budget,projectscope"
-}

+ 0 - 54
src/saveServer/datamonitor.go

@@ -1,54 +0,0 @@
-package main
-
-import (
-	"saveServer/tools"
-	"sync"
-	"time"
-)
-
-type InfoStatus struct {
-	Starttime int64
-	Endtime   int64
-	Val       map[int]int
-	Lock      *sync.Mutex
-}
-
-func (is *InfoStatus) Add(v int) {
-	is.Lock.Lock()
-	is.Val[v]++
-	is.Lock.Unlock()
-}
-
-func (is *InfoStatus) Save() {
-	is.Lock.Lock()
-	is.Endtime = time.Now().Unix()
-	save := map[string]interface{}{}
-	all := 0
-	for i := 0; i < 6; i++ {
-		v := is.Val[i]
-		all += v
-		switch i {
-		case 1: //正常处理
-			save["normal"] = v
-		case 2: //少字段丢弃
-			save["missfield"] = v
-		case 3: //信息错误,标题为空
-			save["infoerr"] = v
-		case 4: //重复
-			save["repeat"] = v
-		case 5: //延时入库信息量
-			save["delay"] = v
-		}
-	}
-	if all > 0 {
-		save["receive"] = all
-		save["starttime"] = is.Starttime
-		save["endtime"] = is.Endtime
-		save["flag"] = "saveser"
-		go tools.Mgo.Save("datamonitor", save)
-	}
-	is.Val = map[int]int{}
-	is.Starttime = is.Endtime
-	is.Lock.Unlock()
-	time.AfterFunc(15*time.Minute, is.Save)
-}

+ 0 - 117
src/saveServer/extractarea/extractarea.go

@@ -1,117 +0,0 @@
-package extractarea
-
-import (
-	"qfw/util"
-)
-
-var CityConfig map[string]interface{}
-var City2Province map[string]string //地区对省份
-var AreaGet DFA                     //敏感词
-
-func init() {
-	util.ReadConfig("city.json", &CityConfig)
-	City2Province = make(map[string]string)
-	cp := CityConfig["city"].(map[string]interface{})
-	citys := []string{}
-	for k, v := range cp {
-		City2Province[k] = v.(string)
-		citys = append(citys, k)
-	}
-	AreaGet = DFA{}
-	AreaGet.AddWord(citys...)
-}
-
-type DFA struct {
-	Link map[string]interface{}
-}
-
-func DealString(title, urltop string) (area string) {
-	util.Try(func() {
-		area = AreaGet.CheckSensitiveWord(title)
-		if area == "" && urltop != "" {
-			area = AreaGet.CheckSensitiveWord(urltop)
-		}
-		area = City2Province[area]
-	}, func(e interface{}) {})
-	if area == "" {
-		area = "A"
-	}
-	return
-}
-
-func (d *DFA) AddWordAll(haskey bool, keys ...string) {
-	if d.Link == nil {
-		d.Link = make(map[string]interface{})
-	}
-	for _, key := range keys {
-		nowMap := &d.Link
-		for i := 0; i < len(key); i++ {
-			kc := key[i : i+1]
-			if v, ok := (*nowMap)[kc]; ok {
-				nowMap, _ = v.(*map[string]interface{})
-			} else {
-				newMap := map[string]interface{}{}
-				newMap["YN"] = "0"
-				(*nowMap)[kc] = &newMap
-				nowMap = &newMap
-			}
-			if i == len(key)-1 {
-				(*nowMap)["YN"] = "1"
-				if haskey {
-					(*nowMap)["K"] = key
-				}
-			}
-		}
-	}
-}
-
-func (d *DFA) AddWord(keys ...string) {
-	d.AddWordAll(true, keys...)
-}
-
-//从头开始匹配,不记位置
-func (d *DFA) CheckSensitiveWordBool(src string) (res bool) {
-	nowMap := &d.Link
-	for i := 0; i < len(src); i++ {
-		word := src[i : i+1]
-		nowMap, _ = (*nowMap)[word].(*map[string]interface{})
-		if nowMap != nil { // 存在,则判断是否为最后一个
-			if "1" == util.ObjToString((*nowMap)["YN"]) { // 如果为最后一个匹配规则,结束循环,返回匹配标识数
-				res = true
-				break
-			}
-		} else {
-			break
-		}
-	}
-	//log.Println("check title", src, res)
-	return res
-}
-
-//适合一次查找
-func (d *DFA) CheckSensitiveWord(src string) string {
-	pos := 0
-	nowMap := &d.Link
-	res := ""
-	for i := 0; i < len(src); i++ {
-		word := src[i : i+1]
-		nowMap, _ = (*nowMap)[word].(*map[string]interface{})
-		if nowMap != nil { // 存在,则判断是否为最后一个
-			if pos == 0 {
-				pos = i
-			}
-			if "1" == util.ObjToString((*nowMap)["YN"]) { // 如果为最后一个匹配规则,结束循环,返回匹配标识数
-				res = util.ObjToString((*nowMap)["K"])
-				pos = 0
-				break
-			}
-		} else {
-			nowMap = &d.Link
-			if pos > 0 {
-				i = pos
-				pos = 0
-			}
-		}
-	}
-	return res
-}

+ 0 - 145
src/saveServer/extracttime/extracttime.go

@@ -1,145 +0,0 @@
-package extracttime
-
-import (
-	"qfw/util"
-	"regexp"
-	"strings"
-	"time"
-)
-
-var m1 = map[string]string{
-	"一": "1",
-	"二": "2",
-	"三": "3",
-	"四": "4",
-	"五": "5",
-	"六": "6",
-	"七": "7",
-	"八": "8",
-	"九": "9",
-	"十": "1",
-	"零": "0",
-	"〇": "0",
-	"1": "1",
-	"2": "2",
-	"3": "3",
-	"4": "4",
-	"5": "5",
-	"6": "6",
-	"7": "7",
-	"8": "8",
-	"9": "9",
-	"0": "0",
-}
-var reg_d1 = regexp.MustCompile("开标(时间|日期|开始时间).{0,30}?(20\\d{2}[  " + string(rune(160)) + "\\-\\::年月日号?上下午时点\\d]{6,50})")
-var reg_d2 = regexp.MustCompile("开标(时间|日期|开始时间).{0,30}?([一二三四五六七八九零0-90-9〇]{4}年.{1,2}月.{1,3}日)")
-var reg_ymd = regexp.MustCompile("[年月日]")
-var reg_space = regexp.MustCompile("<[^>]*>|\\n|( +)|( +)|(" + string(rune(160)) + "+)")
-var reg_line = regexp.MustCompile("\\-+")
-var reg_noNum = regexp.MustCompile("[^\\d-]+")
-
-func DealString(detail string, pt int64) (b bool, str_date string, ltime int64) {
-	util.Try(func() {
-
-		ns := strings.Index(detail, "开标")
-		if ns > -1 {
-			detail = detail[ns:]
-			detail = reg_space.ReplaceAllString(detail, "")
-			n := strings.Index(detail, "开标时间")
-			if n < 0 {
-				n = strings.Index(detail, "开标日期")
-			}
-			if n > -1 {
-				if n+160 <= len(detail) {
-					detail = detail[n : n+160]
-				} else {
-					detail = detail[n:]
-				}
-				s := reg_d1.FindStringSubmatch(detail)
-				dates := []string{}
-				if len(s) == 3 {
-					t := reg_noNum.ReplaceAllString(s[2], "-")
-					t = reg_line.ReplaceAllString(strings.Trim(t, "-"), "-")
-					dates = strings.Split(t, "-")
-				} else {
-					s = reg_d2.FindStringSubmatch(detail)
-					if len(s) == 3 {
-						s2 := reg_ymd.ReplaceAllString(s[2], "-")
-						s2 = strings.Trim(s2, "-")
-						s2s := strings.Split(s2, "-")
-						//log.Println("----"+detail, dealYear(s2s[0]), dealMD(s2s[1]), dealMD(s2s[2]))
-						dates = append(dates, dealYear(s2s[0]), dealMD(s2s[1]), dealMD(s2s[2]))
-					} else {
-						//go log.Println("======", detail)
-					}
-				}
-				len_date := len(dates)
-				if len_date > 2 {
-					for v := 0; v < 5-len_date; v++ {
-						dates = append(dates, "00")
-					}
-					for v := 1; v < len(dates); v++ {
-						tmpv := dates[v]
-						if len(tmpv) == 1 {
-							dates[v] = "0" + dates[v]
-						} else if len(tmpv) > 2 {
-							dates[v] = tmpv[:2]
-							dates = append(dates[:v+1], append([]string{tmpv[2:]}, dates[v+1:]...)...)
-						}
-					}
-					dates = dates[:5]
-					tm, _ := time.Parse("2006-01-02-15-04", strings.Join(dates, "-"))
-					tn := time.Now().Unix()
-					ltime = tm.Unix()
-					str_date = strings.Join(dates, "-")
-					if len(str_date) == 16 && ltime > pt && ltime < tn+86400*365*3 && ltime > tn-3*365*86400 {
-						b = true
-					}
-				} else {
-					//log.Println("----************-", detail)
-				}
-			}
-		}
-	}, func(e interface{}) {})
-	return
-}
-
-func dealYear(y string) string {
-	arr := strings.Split(y, "")
-	for k, v := range arr {
-		tmp := m1[v]
-		if tmp != "" {
-			arr[k] = tmp
-		}
-	}
-	return strings.Join(arr, "")
-}
-
-func dealMD(md string) string {
-	mdlen := len([]rune(md))
-	if mdlen == 1 {
-		if md != "十" {
-			tmp := m1[md]
-			if tmp != "" {
-				md = "0" + tmp
-			}
-		} else {
-			md = "10"
-		}
-	} else {
-		mds := strings.Split(md, "")
-		if len(mds) == 3 && mds[1] == "十" {
-			mds = append(mds[:1], mds[2:]...)
-		} else if len(mds) == 2 && mds[1] == "十" {
-			mds = append(mds[:1], "0")
-		}
-		for k, v := range mds {
-			tmp := m1[v]
-			if tmp != "" {
-				mds[k] = tmp
-			}
-		}
-		md = strings.Join(mds, "")
-	}
-	return md
-}

+ 0 - 90
src/saveServer/httpserver.go

@@ -1,90 +0,0 @@
-package main
-
-import (
-	"html/template"
-	"log"
-	"net/http"
-)
-
-const (
-	TPL_ADMIN = `
-<html>
-<body>
-<div>
-<a href="/save?u={{.u}}&p={{.p}}">保存</a><br/>
-<a href="/reload?u={{.u}}&p={{.p}}">加载配置</a><br/>
-<a href="/log?u={{.u}}&p={{.p}}">日志状态:{{.log}}</a><br/>
-</div>
-</body>
-</html>
-`
-)
-
-func HttpServer(port string) {
-	tpl, _ := template.New("index").Parse(TPL_ADMIN)
-	http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
-		b, res := CheckAdmin(r)
-		if b {
-			err := tpl.Execute(w, res)
-			if err != nil {
-				log.Println(err)
-			}
-		}
-	})
-
-	http.HandleFunc("/save", func(w http.ResponseWriter, r *http.Request) {
-		b, _ := CheckAdmin(r)
-		if b {
-			lock.Lock()
-			if len(SaveCache) > 0 {
-				saveMust()
-			}
-			lock.Unlock()
-			mlock.Lock()
-			if mnum > 0 {
-				saveCommMust()
-			}
-			mlock.Unlock()
-			http.Redirect(w, r, "/?status=save_ok", 302)
-			return
-		}
-		http.Redirect(w, r, "/?status=save_err", 302)
-	})
-
-	http.HandleFunc("/reload", func(w http.ResponseWriter, r *http.Request) {
-		b, _ := CheckAdmin(r)
-		if b {
-			if loadConfig() {
-				http.Redirect(w, r, "/?status=reload_ok", 302)
-				return
-			}
-		}
-		http.Redirect(w, r, "/?status=reload_err", 302)
-	})
-
-	http.HandleFunc("/log", func(w http.ResponseWriter, r *http.Request) {
-		b, _ := CheckAdmin(r)
-		if b {
-			LogLEVEL = !LogLEVEL
-			http.Redirect(w, r, "/?status=log_ok", 302)
-			return
-		}
-		http.Redirect(w, r, "/?status=log_err", 302)
-	})
-
-	http.ListenAndServe(":"+port, nil)
-
-}
-
-func CheckAdmin(r *http.Request) (bool, map[string]interface{}) {
-	u := r.FormValue("u")
-	p := r.FormValue("p")
-	if u == "rr" && p == "topnettest" {
-		return true, map[string]interface{}{
-			"u":   u,
-			"p":   p,
-			"log": LogLEVEL,
-		}
-	}
-	return false, nil
-}

+ 0 - 173
src/saveServer/main.go

@@ -1,173 +0,0 @@
-package main
-
-import (
-	"encoding/json"
-	"flag"
-	"fmt"
-	"log"
-	"mfw/util"
-	"os"
-	qutil "qfw/util"
-	"qfw/util/mongodb"
-	"qfw/util/redis"
-	"saveServer/bidcheckrepeat"
-	"saveServer/tempinfo"
-	"saveServer/tools"
-	"strings"
-	"sync"
-	"time"
-
-	"gopkg.in/mgo.v2/bson"
-)
-
-const (
-	EVENT_SAVETODB         = 4000 //保存数据到mgo库
-	EVENT_SAVETODB_BIDDING = 4002 //招投标的保存处理(处理areava、处理开标日期)
-)
-
-var client *util.Client
-var config map[string]interface{}
-var port string
-var mustfield []string
-var field []string
-
-func loadConfig() bool {
-	log.Println("reload config ...")
-	qutil.ReadConfig(&config)
-	ts := strings.TrimSpace(qutil.ObjToString(config["mustfield"]))
-	tf := strings.TrimSpace(qutil.ObjToString(config["field"]))
-	if ts != "" && tf != "" {
-		tmpmustfield := strings.Split(ts, ",")
-		tmpfield := strings.Split(tf, ",")
-		mustfield = tmpmustfield
-		field = tmpfield
-		return true
-	} else {
-		log.Println("配置文件加载错误,属性字段为空")
-		return false
-	}
-}
-
-func inits() {
-	if !loadConfig() {
-		log.Println("配置错误,系统退出。")
-		os.Exit(0)
-	}
-	port = qutil.ObjToString(config["port"])
-	tools.Mgo = mongodb.MongodbSim{
-		MongodbAddr: qutil.ObjToString(config["mongodbServers"]),
-		Size:        qutil.IntAll(config["mongodbPoolSize"]),
-		DbName:      qutil.ObjToString(config["mongodbName"]),
-	}
-	tools.Mgo.InitPool()
-	tempinfo.Hour = qutil.IntAll(config["tempinfosavehour"])
-	tempinfo.TempLen = qutil.IntAllDef(config["templength"], 80)
-	tempsites := strings.Split(qutil.ObjToString(config["tempsite"]), ",")
-
-	redisServer := qutil.ObjToString(config["redisServer"])
-	redis.InitRedisBySize(redisServer, 100, 50, 240)
-	for k, _ := range redis.RedisPool {
-		bidcheckrepeat.KS = append(bidcheckrepeat.KS, k)
-	}
-
-	for _, v := range tempsites {
-		tempinfo.TempSite[v] = true
-	}
-	go tempinfo.Task()
-	go TimerSave()
-	//更新没有生成sha的数据
-	func() {
-		sess := tools.Mgo.GetMgoConn()
-		defer tools.Mgo.DestoryMongoConn(sess)
-		q := bson.M{"s_sha": bson.M{"$exists": false}}
-		i := 0
-		log.Println(mongodb.DB, q)
-		coll := "bidding"
-		pool := make(chan bool, 5)
-		query := sess.DB(tools.Mgo.DbName).C(coll).Find(&q).Select(map[string]interface{}{
-			"detail":     1,
-			"href":       1,
-			"detail_bak": 1,
-		}).Iter()
-		for tmp := make(map[string]interface{}); query.Next(tmp); i++ {
-			id := ""
-			if tmp["detail_bak"] != nil {
-				id = tools.Sha(qutil.ObjToString(tmp["detail_bak"]))
-			} else {
-				id = tools.Sha(qutil.ObjToString(tmp["detail"]))
-			}
-			href := qutil.ObjToString(tmp["href"])
-			pool <- true
-			go func(coll, id, href string, tid interface{}) {
-				defer func() {
-					<-pool
-				}()
-				//保存-存储
-				tools.Mgo.Update(coll, &map[string]interface{}{"_id": tid}, `{"$set":{"s_sha":"`+id+`"}}`, false, false)
-				bidcheckrepeat.BidAdd(href, id)
-			}(coll, id, href, tmp["_id"])
-		}
-		log.Println("new-sha-createNum:", i)
-	}()
-}
-
-var IS = &InfoStatus{time.Now().Unix(), 0, map[int]int{}, &sync.Mutex{}}
-
-func main() {
-	inits()
-	go IS.Save()
-	go HttpServer(port)
-	runNew()
-	w := make(chan bool, 1)
-	<-w
-}
-
-func runNew() {
-	var serveraddr string
-	flag.StringVar(&serveraddr, "s", "127.0.0.1:7070", "服务端地址")
-	flag.Parse()
-	cf := &util.ClientConfig{
-		ClientName:      fmt.Sprintf("存储服务,%d保存不判重/%d招投标类判重", EVENT_SAVETODB, EVENT_SAVETODB_BIDDING),
-		EventHandler:    handler,
-		MsgServerAddr:   serveraddr,
-		CanHandleEvents: []int{EVENT_SAVETODB, EVENT_SAVETODB_BIDDING},
-		OnRequestConnect: func() {
-			//立即保存
-			lock.Lock()
-			saveMust()
-			lock.Unlock()
-			mlock.Lock()
-			saveCommMust()
-			mlock.Unlock()
-		},
-		OnConnectSuccess: func() {
-			log.Println("c.")
-		},
-		ReadBufferSize:  100,
-		WriteBufferSize: 100,
-	}
-	client, _ = util.NewClient(cf)
-}
-func handler(p *util.Packet) {
-	qutil.Try(func() {
-		para := []interface{}{}
-		err := json.Unmarshal(p.GetBusinessData(), &para)
-		b := false
-		if err != nil {
-			log.Println(err, p.Event)
-		} else {
-			if p.Event == EVENT_SAVETODB {
-				b = SaveToDB(para)
-			} else if p.Event == EVENT_SAVETODB_BIDDING {
-				res := 0
-				b, res = SaveBidding((para[1].([]interface{}))[0].(map[string]interface{}))
-				go IS.Add(res)
-			}
-		}
-		client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, b)
-	}, func(e interface{}) {
-		if len(p.Raw) > 50 {
-			log.Println(p.Raw[:50], string(p.Raw[36:50]))
-		}
-	})
-}

+ 0 - 153
src/saveServer/main_test.go

@@ -1,153 +0,0 @@
-package main
-
-import (
-	"fmt"
-	"log"
-	"qfw/util"
-	"regexp"
-	"strconv"
-	"time"
-	//"saveServer/extracttime"
-	mu "mfw/util"
-	"saveServer/extractarea"
-	"saveServer/tools"
-	"testing"
-)
-
-func Test_1(t *testing.T) {
-	//b, str, l := extracttime.DealString("开标时间:2015年1月11上午9:5(北京时间)八、投标保证金投标保证金必须在投标截止时间前转到指定账户(以")
-	//.Println("==========", tools.GetChoiceCode("新疆"), b, str, l)
-	var f float32 = 1455.225
-	log.Println(util.Int64All(f))
-}
-
-func Test_area(t *testing.T) {
-	log.Println(":=", tools.GetChoiceCode("A"), extractarea.DealString("郑市政府呵呵", "连市政"))
-}
-
-func Test_space(t *testing.T) {
-	reg := regexp.MustCompile("( +)|( +)|(" + string(rune(160)) + "+)")
-	log.Printf(reg.ReplaceAllString(" 你好 k啊 是 ", ""))
-
-}
-
-func Test_fn(t *testing.T) {
-	for i := 0; i < 5; i++ {
-		func() {
-			log.Println("in", i)
-			if i > 3 {
-				return
-			}
-			log.Println("fn", i)
-		}()
-		log.Println("end", i)
-	}
-}
-
-func Test_client(t *testing.T) {
-	client, _ := mu.StartClient(func(p *mu.Packet) {
-		fmt.Println("异步调用的结果", string(p.GetBusinessData()))
-	}, "127.0.0.1:7070", "测试调用", []int{mu.EVENT_RECIVE_CALLBACK})
-	time.Sleep(5 * time.Second)
-	//同步调用方法
-	for i := 0; i < 3; i++ {
-		//同步调用
-		msgid := mu.UUID(8)
-
-		ret, err := client.Call("", msgid, 4002, mu.SENDTO_TYPE_RAND_RECIVER, []interface{}{
-			"title",
-			[]map[string]interface{}{
-				map[string]interface{}{
-					"title":       "9oooo_" + strconv.Itoa(i),
-					"detail":      "我是0090内容" + GetStr(100) + strconv.Itoa(i),
-					"href":        "http://9oo.com" + strconv.Itoa(i),
-					"publishtime": 1995555555,
-					"site":        "22宝钢集团有限公司",
-					"projectinfo": map[string]interface{}{
-						"f1": "a2",
-						"f2": []string{"aa", "nn"},
-					},
-					"T": "bidding",
-				},
-			}}, 2)
-
-		/**
-		ret, err := client.Call("", msgid, 4000, mu.SENDTO_TYPE_RAND_RECIVER, []map[string]interface{}{
-			map[string]interface{}{
-				"title":       "你好pnpp0p0__" + strconv.Itoa(i),
-				"detail":      "我是pppp00内容" + GetStr(100) + strconv.Itoa(i),
-				"href":        "http://123p0ppp0.com" + strconv.Itoa(i),
-				"publishtime": 1995555555,
-				"site":        "22宝钢集团有限公司",
-				"T":           "bidding",
-			},
-		}, 2)
-		**/
-		fmt.Println("jg:::", string(ret), err)
-	}
-
-	//异步调用,一直给服务器发垃圾,直到超时
-	//	for i := 0; i < 1000000; i++ {
-	//		sendbs := bytes.Repeat([]byte{0, 0}, i%1000)
-	//		msgid := util.UUID(8)
-	//		client.WriteObj("", msgid, 2004, util.SENDTO_TYPE_RAND_RECIVER, sendbs)
-	//		fmt.Print("+")
-	//		if i%500 == 0 {
-	//			time.Sleep(1 * time.Second)
-	//		}
-	//	}
-	//	time.Sleep(480 * time.Second)
-}
-
-func GetStr(i int) string {
-	str := "aaa"
-	for n := 0; n < i; n++ {
-		str += "aa"
-	}
-	return str
-}
-
-func Test_len(t *testing.T) {
-	log.Println(len("抱歉!该信息无法正常显示,请查看来源网站。"))
-}
-
-func Test_array(t *testing.T) {
-	a1 := []int{}
-	for i := 0; i < 10; i++ {
-		a1 = append(a1, i)
-	}
-	go func() {
-		for i := 0; i < 10; i++ {
-			go func(n int) {
-				for _, v := range a1 {
-					log.Println(n, "=", v)
-				}
-			}(i)
-		}
-	}()
-	go func() {
-		for i := 0; i < 1000; i++ {
-			go func(k int) {
-				a2 := []int{}
-				for n := k + 100; n < k+110; i++ {
-					a2 = append(a2, n)
-				}
-				a1 = a2
-			}(i)
-		}
-	}()
-	time.Sleep(10 * time.Minute)
-}
-
-func Test_map(t *testing.T) {
-	m1 := map[string]interface{}{
-		"aa": map[string]interface{}{
-			"bb": 1,
-			"cc": 2,
-		},
-	}
-	m2 := map[string]interface{}{
-		"cc": m1["aa"],
-	}
-	log.Println(m2)
-}

+ 0 - 253
src/saveServer/savedata.go

@@ -1,253 +0,0 @@
-package main
-
-import (
-	"log"
-	qutil "qfw/util"
-	"regexp"
-	"saveServer/bidcheckrepeat"
-	"saveServer/extractarea"
-	//	"saveServer/tempinfo"
-	"saveServer/tools"
-	"sync"
-	"time"
-
-	"gopkg.in/mgo.v2/bson"
-)
-
-var reg_space = regexp.MustCompile("( +)|( +)|(" + string(rune(160)) + "+)")
-var savenum = 0
-var lock *sync.Mutex = new(sync.Mutex)
-var SaveCache = []map[string]interface{}{}
-var SaveLastTime = time.Now().Unix()
-var SaveColl = "bidding"
-
-//批量保存
-func saveMust() {
-	savenum += len(SaveCache)
-	tools.Mgo.SaveBulk(SaveColl, SaveCache...)
-	go log.Println("saveMust:", savenum)
-	SaveCache = []map[string]interface{}{}
-	SaveLastTime = time.Now().Unix()
-}
-
-//定时保存
-func TimerSave() {
-	go func() {
-		for {
-			now := time.Now().Unix()
-			lock.Lock()
-			if now-SaveLastTime > 60 && len(SaveCache) > 0 {
-				saveMust()
-			}
-			lock.Unlock()
-			time.Sleep(30 * time.Second)
-		}
-	}()
-
-	go func() {
-		for {
-			now := time.Now().Unix()
-			mlock.Lock()
-			if now-msaveLastTime > 60 && mnum > 0 {
-				saveCommMust()
-			}
-			mlock.Unlock()
-			time.Sleep(25 * time.Second)
-		}
-	}()
-}
-
-//实时处理招标信息
-var LogLEVEL = false
-
-func SaveBidding(tmp map[string]interface{}) (b bool, res int) {
-	T := qutil.ObjToString(tmp["T"])
-	if T != SaveColl {
-		b = true
-		go log.Println("abandon:", T, tmp["spidercode"])
-		res = 2
-		return
-	}
-	if LogLEVEL {
-		log.Println("receive:", tmp["spidercode"], tmp["title"], tmp["href"])
-	}
-	tmp = dealDoc(tmp)
-
-	if tmp != nil {
-		//增加抽取状态字段+信息格式(招标、审批数据)
-		tmp["extracttype"] = 0
-		if tmp["infoformat"] == nil {
-			tmp["infoformat"] = 1
-		}
-		infoformat := qutil.IntAll(tmp["infoformat"])
-
-		if infoformat == 1 && tmp["detail"] == nil {
-			log.Println("detail nil:", tmp["spidercode"], tmp["href"])
-		}
-		area := qutil.ObjToString(tmp["area"])
-		if area == "" || area == "A" {
-			tmp["area"] = extractarea.DealString(qutil.ObjToString(tmp["title"]), qutil.ObjToString(tmp["urltop"]))
-		}
-		tmp["areaval"] = tools.GetChoiceCode(qutil.ObjToString(tmp["area"]))
-		//处理临时信息
-		//		if infoformat == 1 {
-		//			btemp, binsert := tempinfo.CheckTempInfo(tmp)
-		//			if btemp {
-		//				res = 5
-		//				b = binsert
-		//				return
-		//			}
-		//		}
-		href := qutil.ObjToString(tmp["href"])
-		uuid := "-1"
-		if infoformat == 1 {
-			detail := qutil.ObjToString(tmp["detail"])
-			uuid = tools.Sha(detail)
-		}
-		tmp["s_sha"] = uuid
-		lock.Lock()
-		if !bidcheckrepeat.BidCheck(href, uuid) {
-			res = 1
-			SaveCache = append(SaveCache, tmp)
-			bidcheckrepeat.BidAdd(href, uuid)
-			if len(SaveCache) > 200 {
-				saveMust()
-			}
-		} else {
-			res = 4
-			go log.Println("repeat:", tmp["href"], uuid)
-		}
-		lock.Unlock()
-	} else {
-		res = 3
-		return
-	}
-	b = true
-	return
-}
-
-//通用保存服务
-var msave = map[string][]map[string]interface{}{}
-var mlock = sync.Mutex{}
-var mnum = 0     //判断是否需要保存
-var msavenum = 0 //已经保存总量
-var msaveLastTime = time.Now().Unix()
-
-func saveCommMust() {
-	for k, v := range msave {
-		b := tools.Mgo.SaveBulk(k, v...)
-		if b {
-			msavenum += len(v)
-			go log.Println("saveto:", k, "=", len(v), "=", msavenum)
-		} else {
-			go log.Println("通用保存到库出错!")
-		}
-	}
-	msave = map[string][]map[string]interface{}{}
-	msaveLastTime = time.Now().Unix()
-	mnum = 0
-}
-
-func SaveToDB(obj []interface{}) bool {
-	b := true
-	qutil.Try(func() {
-		if len(obj) > 0 {
-			for _, v := range obj {
-				qutil.Try(func() {
-					tmp := v.(map[string]interface{})
-					T := qutil.ObjToString(tmp["T"])
-					if len(T) > 0 {
-						tmp = dealDocComm(tmp)
-						if tmp != nil {
-							mlock.Lock()
-							if nil == msave[T] {
-								msave[T] = []map[string]interface{}{tmp}
-							} else {
-								msave[T] = append(msave[T], tmp)
-							}
-							mnum++
-							mlock.Unlock()
-						}
-					}
-				}, func(e interface{}) {})
-			}
-			mlock.Lock()
-			if mnum > 100 {
-				saveCommMust()
-			}
-			mlock.Unlock()
-		}
-	}, func(e interface{}) {
-		b = false
-	})
-	return b
-}
-
-//通用信息处理
-func dealDocComm(tmp map[string]interface{}) map[string]interface{} {
-	defer qutil.Catch()
-	delete(tmp, "T")
-	for k, val := range tmp {
-		switch k[:2] {
-		case "s_": //string型
-			tmp[k] = qutil.ObjToString(val)
-		case "l_": //int64位
-			if len(k) > 5 && k[2:5] == "np_" {
-				tm := k
-				k = tm[5:]
-				delete(tmp, tm)
-			}
-			tmp[k] = qutil.Int64All(val)
-		case "i_": //int型
-			if len(k) > 5 && k[2:5] == "np_" {
-				tm := k
-				k = tm[5:]
-				delete(tmp, tm)
-			}
-			tmp[k] = qutil.IntAll(val)
-		case "_i": //mgo的id
-			tmp[k] = bson.ObjectIdHex(qutil.ObjToString(val))
-		case "_d": //增加服务器端时间戳
-			tmp[tmp[k].(string)] = time.Now().Unix()
-			delete(tmp, k)
-		}
-	}
-	tmp["comeintime"] = time.Now().Unix()
-	return tmp
-}
-
-//bidding的信息处理
-func dealDoc(tmp2 map[string]interface{}) map[string]interface{} {
-	//限制发布时间不能大于当前时间
-	tmp2 = dealDocComm(tmp2)
-	tmp := map[string]interface{}{}
-	for _, f := range mustfield {
-		if tmp2[f] == nil {
-			go log.Println("field not exists", f, tmp2["spidercode"], tmp2["href"])
-			return nil
-		} else {
-			tmp[f] = tmp2[f]
-		}
-	}
-	for _, f := range field {
-		if tmp2[f] != nil {
-			tmp[f] = tmp2[f]
-		}
-	}
-	p := qutil.Int64All(tmp["publishtime"])
-	if p < 0 {
-		return nil
-	}
-	now := time.Now().Unix()
-	if p > now {
-		p = now
-	}
-	tmp["publishtime"] = p
-	//处理标题空格
-	title := reg_space.ReplaceAllString(qutil.ObjToString(tmp["title"]), "")
-	if title != "" {
-		tmp["title"] = title
-		return tmp
-	}
-	return nil
-}

+ 0 - 97
src/saveServer/tempinfo/tempinfo.go

@@ -1,97 +0,0 @@
-package tempinfo
-
-import (
-	"log"
-	qutil "qfw/util"
-	"saveServer/bidcheckrepeat"
-	. "saveServer/tools"
-	"time"
-)
-
-func init() {
-
-}
-
-var NN = 500
-var Hour = 4
-var TempTable = "temp_bidding"
-var Table = "bidding"
-var TempSite = map[string]bool{}
-var DefaultDeatil = "由于网络故障,信息无法正常显示,请查看来源网站。"
-var TempLen = 80
-
-//判断是否是需要存临时表、并存入临时表
-func CheckTempInfo(info map[string]interface{}) (btemp, binsert bool) {
-	detail := qutil.ObjToString(info["detail"])
-	dlen := len([]rune(detail))
-	site := qutil.ObjToString(info["site"])
-	if TempSite[site] || dlen < TempLen {
-		//info["detail_bak"] = detail
-		//info["detail"] = DefaultDeatil
-		btemp = true
-	}
-	if btemp {
-		//检查库中有没有数据
-		m, _ := Mgo.FindOne(TempTable, &map[string]interface{}{
-			"title": info["title"],
-		})
-		if m != nil && *m != nil && len(*m) > 0 {
-			binsert = true
-		} else {
-			id := Mgo.Save(TempTable, info)
-			if id != "" {
-				binsert = true
-			}
-		}
-	}
-	//查询站点是不是要临时的
-	return
-}
-
-//定时保存到正式库
-func Task() {
-	qutil.Try(func() {
-		log.Println("save tempinfo to bidding...")
-		now := time.Now().Unix()
-		time := now - int64(Hour*3600)
-		sess := Mgo.GetMgoConn()
-		defer Mgo.DestoryMongoConn(sess)
-		m := map[string]interface{}{
-			"comeintime": map[string]interface{}{
-				"$lte": time,
-			},
-		}
-		query := sess.DB(Mgo.DbName).C(TempTable).Find(&m).Iter()
-		arr := []map[string]interface{}{}
-		for tmp := make(map[string]interface{}); query.Next(tmp); {
-			uuid := ""
-			if tmp["detail_bak"] != nil {
-				uuid = Sha(qutil.ObjToString(tmp["detail_bak"]))
-			} else {
-				uuid = Sha(qutil.ObjToString(tmp["detail"]))
-			}
-			href := qutil.ObjToString(tmp["href"])
-			tmp["s_sha"] = uuid
-			if !bidcheckrepeat.BidCheck(href, uuid) {
-				delete(tmp, "_id")
-				bidcheckrepeat.BidAdd(href, uuid)
-				//不加最新时间戳,会影响老微信号的推送
-				//tmp["comeintime"] = now
-				arr = append(arr, tmp)
-				if len(arr) >= NN {
-					Mgo.SaveBulk(Table, arr...)
-					arr = []map[string]interface{}{}
-				}
-			}
-			tmp = make(map[string]interface{})
-		}
-		if len(arr) > 0 {
-			Mgo.SaveBulk(Table, arr...)
-		}
-		//删除动作
-		Mgo.Del(TempTable, &m)
-	}, func(e interface{}) {
-
-	})
-	time.AfterFunc(30*time.Minute, Task)
-}

+ 0 - 12
src/saveServer/tools/areaval.go

@@ -1,12 +0,0 @@
-package tools
-
-var area_map = map[string]uint{"上海": 9, "云南": 25, "内蒙古": 5, "北京": 1, "台湾": 32, "吉林": 7, "四川": 13, "天津": 2, "宁夏": 30, "安徽": 12, "山东": 15, "山西": 4, "广东": 19, "广西": 20, "新疆": 31, "江苏": 10, "江西": 14, "河北": 3, "河南": 16, "浙江": 11, "海南": 21, "湖北": 17, "湖南": 18, "澳门": 34, "甘肃": 28, "福建": 23, "西藏": 26, "贵州": 24, "辽宁": 6, "重庆": 22, "陕西": 27, "青海": 29, "香港": 33, "黑龙江": 8}
-
-func GetChoiceCode(choice ...string) (ret uint64) {
-	for _, v := range choice {
-		if tmp, ok := area_map[v]; ok {
-			ret += 1 << (tmp - 1)
-		}
-	}
-	return
-}

+ 0 - 7
src/saveServer/tools/mgo.go

@@ -1,7 +0,0 @@
-package tools
-
-import (
-	"qfw/util/mongodb"
-)
-
-var Mgo mongodb.MongodbSim

+ 0 - 18
src/saveServer/tools/tool.go

@@ -1,18 +0,0 @@
-package tools
-
-import (
-	"crypto/sha256"
-	"fmt"
-	"regexp"
-)
-
-var reg = regexp.MustCompile("[^0-9A-Za-z\u4e00-\u9fa5]+")
-var h = sha256.New()
-var filter = regexp.MustCompile("<[^>]*?>|[\\s\u3000\u2003\u00a0]")
-
-func Sha(con string) string {
-	h.Reset()
-	con = reg.ReplaceAllString(filter.ReplaceAllString(con, ""), "")
-	h.Write([]byte(con))
-	return fmt.Sprintf("%x", h.Sum(nil))
-}

+ 0 - 108
src/saveServer/tools/tool_test.go

@@ -1,108 +0,0 @@
-package tools
-
-import (
-	"log"
-	"testing"
-)
-
-var Test1 = `招标公告
- 
-根据《中华人民共和国政府采购法》之规定,上海宏同万邦建设工程咨询有限公司受委托,对上海市交通委员会行政服务中心-出租汽车营运证副证采购采购项目进行国内公开招投标采购,特邀请合格的供应商前来投标。
-一、合格的投标人必须具备以下条件:
-1、符合《中华人民共和国政府采购法》第二十二条规定的供应商。
-2、根据《上海市政府采购供应商登记及诚信管理办法》已登记入库的供应商。
-3、其他资格要求:
- (1)、具有相关部门核发的《企业法人营业执照》,并具有相应的经营范围; (2)、本项目不接受联合体投标。 
-二、项目概况:
-1、项目名称:上海市交通委员会行政服务中心-出租汽车营运证副证采购
-2、招标编号:SHXM-00-20161226-0263(代理机构内部编号:)
-3、预算编号:00-17-05254
-4、项目主要内容、数量及简要规格描述或项目基本概况介绍:
- 出租汽车营运证副证采购项目,具体详见招标文件
-5、交付地址:业主指定地址
-6、交付日期:业主指定日期
-7、采购预算金额:380000(国库资金:380000;自筹资金:0)
-8、采购项目需要落实的政府采购政策情况:已落实
-三、招标文件的获取
-合格的供应商可于2016-12-30本公告发布之日起至2017-01-09截止,登录“上海政府采购网”(http://www.zfcg.sh.gov.cn)在网上招标系统中上传如下材料:
- ①营业执照、②法定代表人授权书、③被授权人身份证等材料的原件彩色扫描件,提出开通网上投标申请。同时委派授权代表人携带以上材料原件及加盖公章的复印件至上海宏同万邦建设工程咨询有限公司现场进行报名。校验通过后,缴纳标书费,只有报名通过及领取招标文件的投标人才可参加本次投标,逾期不予办理。
-合格供应商可在上述规定的时间内下载招标文件并按照招标文件要求参加投标。
-凡愿参加投标的合格供应商应在上述规定的时间内按照规定获取招标文件,逾期不再办理。未按规定获取招标文件的投标将被拒绝。
-注:投标人须保证报名及获得招标文件需提交的资料和所填写内容真实、完整、有效、一致,如因投标人递交虚假材料或填写信息错误导致的与本项目有关的任何损失由投标人承担。
-四、投标截止时间及开标时间:
-1、投标截止时间:2017-01-20 10:00,迟到或不符合规定的投标文件恕不接受。
-2、开标时间:2017-01-20 10:00。
-五、投标地点和开标地点
-1、投标地点:上海市漕宝路509号新漕河泾大厦8层
-2、开标地点:上海市漕宝路509号新漕河泾大厦8层。届时请投标人代表持投标时所使用的数字证书(CA证书)参加开标。
-3、开标所需携带其他材料:
- 1、投标时所使用的CA证书; 2、加盖公章的网上投标确认回执原件; 3、疑问函或无疑问确认函原件; 4、密封的纸质版投标文件。 
-六、发布公告的媒介:
-以上信息若有变更我们会通过“上海政府采购网”、“”通知,请供应商关注。
- 
-七、其他事项
- 本项目招标文件售价每本500元,售后不退。 现场报名时间:2016年12月30日起至2017年1月9日(国定节假日除外,每天上午9:00-11:00,下午14:00-16:00) 现场报名地址:上海市漕宝路509号8楼 合格供应商可在上述规定的时间内下载招标文件并按照招标文件要求参加投标。 注: 潜在供应商须保证报名及领取招标文件所填写的内容真实、完整、有效、一致,如因潜在供应商填写信息错误导致的与本项目有关的任何损失由潜在供应商或填表者承担。 
-八、联系方式
-采购人:	上海市交通委员会行政服务中心(上海市邮政业安全监管事务中心)	采购代理机构:	上海宏同万邦建设工程咨询有限公司
-地址:	建国东路525号407	地址:	漕宝路509号8楼
-邮编:	200025	邮编:	200023
-联系人:	杨易在	联系人:	张羽
-电话:	51528086	电话:	33688305*8535
-传真:	51528086	传真:	33688306`
-var Test2 = `招标公告
-
-根据《中华人民共和国政府采购法》之规定,上海宏同万邦建设工程咨询有限公司受委托,对上海市交通委员会行政服务中心-出租汽车营运证副证采购采购项目进行国内公开招投标采购,特邀请合格的供应商前来投标。
-一、合格的投标人必须具备以下条件:
-1、符合《中华人民共和国政府采购法》第二十二条规定的供应商。
-2、根据《上海市政府采购供应商登记及诚信管理办法》已登记入库的供应商。
-3、其他资格要求:
-(1)、具有相关部门核发的《企业法人营业执照》,并具有相应的经营范围;
-(2)、本项目不接受联合体投标。
-二、项目概况:
-1、项目名称:上海市交通委员会行政服务中心-出租汽车营运证副证采购
-2、招标编号:SHXM-00-20161226-0263(代理机构内部编号:)
-3、预算编号:00-17-05254
-4、项目主要内容、数量及简要规格描述或项目基本概况介绍:
-出租汽车营运证副证采购项目,具体详见招标文件
-5、交付地址:业主指定地址
-6、交付日期:业主指定日期
-7、采购预算金额:380000(国库资金:380000;自筹资金:0)
-8、采购项目需要落实的政府采购政策情况:已落实
-三、招标文件的获取
-合格的供应商可于2016-12-30本公告发布之日起至2017-01-09截止,登录“上海政府采购网”(http://www.zfcg.sh.gov.cn)在网上招标系统中上传如下材料:
-①营业执照、②法定代表人授权书、③被授权人身份证等材料的原件彩色扫描件,提出开通网上投标申请。同时委派授权代表人携带以上材料原件及加盖公章的复印件至上海宏同万邦建设工程咨询有限公司现场进行报名。校验通过后,缴纳标书费,只有报名通过及领取招标文件的投标人才可参加本次投标,逾期不予办理。
-合格供应商可在上述规定的时间内下载招标文件并按照招标文件要求参加投标。
-凡愿参加投标的合格供应商应在上述规定的时间内按照规定获取招标文件,逾期不再办理。未按规定获取招标文件的投标将被拒绝。
-注:投标人须保证报名及获得招标文件需提交的资料和所填写内容真实、完整、有效、一致,如因投标人递交虚假材料或填写信息错误导致的与本项目有关的任何损失由投标人承担。
-四、投标截止时间及开标时间:
-1、投标截止时间:2017-01-2010:00,迟到或不符合规定的投标文件恕不接受。
-2、开标时间:2017-01-2010:00。
-五、投标地点和开标地点
-1、投标地点:上海市漕宝路509号新漕河泾大厦8层
-2、开标地点:上海市漕宝路509号新漕河泾大厦8层。届时请投标人代表持投标时所使用的数字证书(CA证书)参加开标。
-3、开标所需携带其他材料:
-1、投标时所使用的CA证书;
-2、加盖公章的网上投标确认回执原件;
-3、疑问函或无疑问确认函原件;
-4、密封的纸质版投标文件。
-六、发布公告的媒介:
-以上信息若有变更我们会通过“上海政府采购网”、“”通知,请供应商关注。
-
-七、其他事项
-本项目招标文件售价每本500元,售后不退。
-现场报名时间:2016年12月30日起至2017年1月9日(国定节假日除外,每天上午9:00-11:00,下午14:00-16:00)
-现场报名地址:上海市漕宝路509号8楼
-合格供应商可在上述规定的时间内下载招标文件并按照招标文件要求参加投标。
-注:潜在供应商须保证报名及领取招标文件所填写的内容真实、完整、有效、一致,如因潜在供应商填写信息错误导致的与本项目有关的任何损失由潜在供应商或填表者承担。
-八、联系方式
-采购人:	上海市交通委员会行政服务中心(上海市邮政业安全监管事务中心)	采购代理机构:	上海宏同万邦建设工程咨询有限公司
-地址:	建国东路525号407	地址:	漕宝路509号8楼
-邮编:	200025	邮编:	200023
-联系人:	杨易在	联系人:	张羽
-电话:	51528086	电话:	33688305*8535
-传真:	51528086	传真:	33688306
-`
-
-func Test_str(t *testing.T) {
-	log.Println(Sha(Test1) == Sha(Test2))
-}

+ 0 - 34
src/spidersitecheck/config.json

@@ -1,34 +0,0 @@
-{
-    "mongodbServers": "192.168.3.207:27080",
-    "mongodbPoolSize": "5",
-    "mongodbName": "spider",
-    "influxdb": "https://jianyu:Topnet@20150501@wxlmjy.qmx.top:443",
-    "checkcoll": "spidersitecheck",
-    "totalcoll": "spidersitetotal",
-    "alarmtime": [
-        6,
-        23
-    ],
-    "useremail": [
-        "renzheng@topnet.net.cn"
-    ],
-    "smtp": {
-        "addr": "smtp.exmail.qq.com",
-        "port": 465,
-        "user": "qyfw@topnet.net.cn",
-        "pwd": "QYfw@123456",
-        "fromuser": "爬虫监控",
-        "title": "爬虫监控预警"
-    },
-    "taskduration": 40,
-    "maxalarmcount": 1,
-    "requestthread": 65,
-    "brequestbody": 0,
-    "requestretry": 2,
-    "reqduration": 16,
-    "dayreport": 8,
-    "alarmmode": 1,
-    "excludecode": [
-        200
-    ]
-}

+ 0 - 62
src/spidersitecheck/influxdb.go

@@ -1,62 +0,0 @@
-package main
-
-import (
-	"time"
-
-	"github.com/influxdata/influxdb-client"
-)
-
-var influxdburl string
-
-//
-func InitInfluxdb(url string) {
-	influxdburl = url
-}
-
-//
-func InsertInto(dbname string, measurement string, tags []influxdb.Tag, fields map[string]interface{}, timestamp time.Time, rp /*数据保留策略,默认autogen*/ string) error {
-	client, err := influxdb.NewClient(influxdburl)
-	if err != nil {
-		return err
-	}
-	writer := client.Writer()
-	writer.Database = dbname
-	writer.RetentionPolicy = rp
-	pt := influxdb.Point{
-		Name:   measurement,
-		Tags:   tags,
-		Fields: fields,
-		Time:   timestamp,
-	}
-
-	if _, err := pt.WriteTo(writer); err != nil {
-		return err
-	}
-	return nil
-}
-
-//查询接口
-func Search(dbname string, fn func(row influxdb.Row) error, query string, queryoption ...influxdb.QueryOption) error {
-	client, err := influxdb.NewClient(influxdburl)
-	if err != nil {
-		return err
-	}
-
-	querier := client.Querier()
-	querier.Database = dbname
-	cur, err := querier.Select(query, queryoption...)
-	if err != nil {
-		return err
-	}
-	defer cur.Close()
-	result, err := cur.NextSet()
-	if err != nil {
-		return err
-	}
-	series, err := result.NextSeries()
-	if err != nil {
-		return err
-	}
-	influxdb.EachRow(series, fn)
-	return nil
-}

+ 0 - 573
src/spidersitecheck/main.go

@@ -1,573 +0,0 @@
-package main
-
-import (
-	"bufio"
-	"fmt"
-	"io/ioutil"
-	"log"
-	"net"
-	"net/http"
-	"qfw/util"
-	"qfw/util/mail"
-	"qfw/util/mongodb"
-	"sort"
-	"strings"
-	"sync"
-	"time"
-
-	"github.com/influxdata/influxdb-client"
-)
-
-var (
-	config          map[string]interface{} //全局配置文件
-	mgo             mongodb.MongodbSim     //mongodb连接
-	Spiders         []*spiderobj           //每次所有加载爬虫
-	Requestthread   chan bool              //请求线程数
-	Brequestbody    int                    //是否解析请求正文
-	wg                                     = &sync.WaitGroup{}
-	msave                                  = []map[string]interface{}{}
-	lock            *sync.Mutex            = new(sync.Mutex)
-	checkcoll       string
-	totalcoll       string
-	Client          *http.Client
-	Retry           = 2                  //请求重试次数
-	reqduration     = 2                  //请求延时
-	taskduration    = 20                 //每次检测间隔,分钟
-	dayreport       = -1                 //每天整点报告前一天的结果 -1不报告
-	alarmmode       = 0                  //报警模式,0 每次出错每次报警 1天一个爬虫只报一次 2 连续出错只报一次,间隔出错报多次
-	MAP_STATUS      map[int][]*spiderobj //返回代码-爬虫
-	MAP_ALARM       = map[string]bool{}  //报警MAP
-	stopspidercount int
-	excludecode     = map[int]bool{}
-	alarmtime       = []int{}
-	Mail            *mail.MailAuth
-	useremail       = []string{}
-	MAP_site_all    map[string]int
-	MAP_site_run    map[string]int
-	MAP_site_stop   map[string]int
-	MAP_site_error  map[string][]*spiderobj
-)
-
-type spiderobj struct {
-	Id           string //爬虫id
-	Site         string //站点
-	Channel      string //爬虫栏目
-	Code         string //爬虫代码
-	ListUrl      string //列表url
-	Cuser        string
-	Muser        string //修改人
-	Mtime        int64  //修改时间
-	Status       int    //爬虫状态
-	I_old        int    //是否是老爬虫{luacontent:{$exists:1}}
-	ResponseCode int    //响应码
-	ResponseStr  string //响应码串
-	ResponseBody string //响应内容
-	Requesttime  int64  //请求时间
-	I_err        int    //1,有错
-}
-
-func init() {
-	//加载配置
-	util.ReadConfig(&config)
-	//初始化
-	InitInfluxdb(fmt.Sprint(config["influxdb"]))
-	mgo = mongodb.MongodbSim{
-		MongodbAddr: config["mongodbServers"].(string),
-		Size:        util.IntAll(config["mongodbPoolSize"]),
-		DbName:      config["mongodbName"].(string),
-	}
-	mgo.InitPool()
-	Requestthread = make(chan bool, util.IntAllDef(config["requestthread"], 20))
-	Brequestbody = util.IntAll(config["brequestbody"])
-	checkcoll = util.ObjToString(config["checkcoll"])
-	totalcoll = util.ObjToString(config["totalcoll"])
-	reqduration = util.IntAll(config["reqduration"])
-	Retry = util.IntAll(config["requestretry"])
-	taskduration = util.IntAll(config["taskduration"])
-	dayreport = util.IntAll(config["dayreport"])
-	alarmmode = util.IntAll(config["alarmmode"])
-	excludecodearr := config["excludecode"].([]interface{})
-	for _, cv := range excludecodearr {
-		excludecode[util.IntAll(cv)] = true
-	}
-
-	useremailarr := config["useremail"].([]interface{})
-	for _, cv := range useremailarr {
-		useremail = append(useremail, cv.(string))
-	}
-	for _, cv := range config["alarmtime"].([]interface{}) {
-		alarmtime = append(alarmtime, util.IntAll(cv))
-	}
-	Client = &http.Client{Transport: &http.Transport{
-		Dial: func(netw, addr string) (net.Conn, error) {
-			deadline := time.Now().Add(time.Duration(reqduration) * time.Second)
-			c, err := net.DialTimeout(netw, addr, time.Duration(reqduration*2)*time.Second)
-			if err != nil {
-				return nil, err
-			}
-			tcp_conn := c.(*net.TCPConn)
-			tcp_conn.SetKeepAlive(false)
-			tcp_conn.SetDeadline(deadline)
-			return tcp_conn, nil
-		},
-		DisableKeepAlives: true,
-	}}
-	M := config["smtp"].(map[string]interface{})
-	Mail = &mail.MailAuth{M["addr"].(string),
-		util.IntAll(M["port"]),
-		util.ObjToString(M["user"]),
-		util.ObjToString(M["pwd"]),
-	}
-
-	log.Println("dayreport:", dayreport, config)
-	if dayreport > 0 {
-		//启动线程,报告每天监测情况
-		go func() {
-			for {
-				tn := time.Now()
-				nowh := tn.Hour()
-				var tnext time.Time
-				if nowh >= dayreport {
-					tnext = time.Date(tn.Year(), tn.Month(), tn.Day()+1, dayreport, 0, 0, 0, tn.Location())
-				} else {
-					tnext = time.Date(tn.Year(), tn.Month(), tn.Day(), dayreport, 0, 0, 0, tn.Location())
-				}
-				t := time.NewTimer(tnext.Sub(tn))
-				select {
-				case <-t.C:
-					log.Println("定时报告任务")
-				}
-			}
-		}()
-	}
-}
-
-func main() {
-	go checktask()
-	go ClearMap()
-	time.Sleep(999999 * time.Hour)
-}
-
-//检测任务
-func checktask() {
-	func() {
-		defer util.Catch()
-		MAP_site_all = map[string]int{}
-		MAP_site_run = map[string]int{}
-		MAP_site_stop = map[string]int{}
-		MAP_site_error = map[string][]*spiderobj{}
-		//加载所有爬虫代码,站点名称、代码、列表url、状态、作者、修改时间
-		res, b := mgo.Find("luaconfig", nil, nil, `{"param_common":1,"modifytime":1,"createuser":1,"modifyuser":1,"code":1,"iupload":1,"luacontent":1}`, false, -1, -1)
-		Spiders = []*spiderobj{}
-		stopspidercount = 0
-		if b && res != nil && (*res) != nil && len(*res) > 0 {
-			for _, spider := range *res {
-				defer util.Catch()
-				sp := &spiderobj{}
-				sp.Status = util.IntAll(spider["iupload"])
-				sp.Cuser = util.ObjToString(spider["createuser"])
-				if spider["param_common"] != nil {
-					pc := spider["param_common"].([]interface{})
-					if len(pc) > 1 && len(pc) < 10 {
-						sp.Site = util.ObjToString(pc[1])
-						if len(pc) > 2 {
-							sp.Channel = util.ObjToString(pc[2])
-						}
-					} else if len(pc) > 12 {
-						sp.ListUrl = util.ObjToString(pc[11])
-						sp.Channel = util.ObjToString(pc[2])
-						sp.Site = util.ObjToString(pc[1])
-					} else {
-						continue
-					}
-				}
-				if sp.Status == 1 {
-					sp.Id = util.BsonIdToSId(spider["_id"])
-					if spider["luacontent"] != nil {
-						sp.I_old = 1
-						//从脚本中取
-						con := spider["luacontent"].(string)
-						sr := strings.NewReader(con)
-						br := bufio.NewReader(sr)
-						n := 0
-						siteUrl := ""
-						for n < 150 {
-							n++
-							str, e := br.ReadString('\n')
-							if e == nil {
-								if strings.HasPrefix(str, "local siteUrl") {
-									siteUrl = str[strings.Index(str, `"`)+1 : strings.LastIndex(str, `"`)]
-								} else if strings.HasPrefix(str, "spiderTargetChannelUrl") {
-									if strings.Index(str, "siteUrl") > 0 {
-										sp.ListUrl = siteUrl
-									} else {
-										s1, s2 := strings.Index(str, `"`), strings.LastIndex(str, `"`)
-										sp.ListUrl = str[s1+1 : s2]
-									}
-									break
-								}
-							} else if e != nil {
-								break
-							}
-						}
-					}
-					sp.Mtime = util.Int64All(spider["modifytime"])
-					sp.Muser = util.ObjToString(spider["modifyuser"])
-					sp.Code = util.ObjToString(spider["code"])
-					if sp.ListUrl != "" {
-						if !strings.HasPrefix(sp.ListUrl, "http") {
-							sp.ListUrl = "http://" + sp.ListUrl
-						}
-						Spiders = append(Spiders, sp)
-					}
-					MAP_site_run[sp.Site]++
-					MAP_site_all[sp.Site]++
-				} else {
-					stopspidercount++
-					MAP_site_stop[sp.Site]++
-					MAP_site_all[sp.Site]++
-				}
-			}
-		}
-		log.Println("load url size:", len(Spiders), "stopped spider count:", stopspidercount)
-		tn := time.Now()
-		now := tn.Unix()
-		year := tn.Year()
-		mon := tn.Month()
-		day := tn.Day()
-		hour := tn.Hour()
-		minute := tn.Minute()
-		reqn := 0
-		MAP_STATUS = map[int][]*spiderobj{}
-		//根据站点打乱爬虫顺序
-		NewSP := make(map[string]chan *spiderobj)
-		for _, sp1 := range Spiders {
-			chansp := NewSP[sp1.Site]
-			if chansp == nil {
-				chansp = make(chan *spiderobj, MAP_site_run[sp1.Site])
-			}
-			chansp <- sp1
-			NewSP[sp1.Site] = chansp
-		}
-		Newspiders := []*spiderobj{}
-		for {
-			if len(NewSP) == 0 {
-				break
-			}
-			for site, chansp := range NewSP {
-				sp := <-chansp
-				Newspiders = append(Newspiders, sp)
-				MAP_site_run[site]--
-				if MAP_site_run[site] == 0 {
-					delete(NewSP, site)
-				}
-			}
-		}
-		for _, sp1 := range Newspiders {
-			Requestthread <- true
-			wg.Add(1)
-			go func(sp *spiderobj) {
-				defer func() {
-					<-Requestthread
-					wg.Done()
-				}()
-				res, err := Client.Get(sp.ListUrl)
-				for i := 0; i < Retry; i++ {
-					if err != nil {
-						res, err = Client.Get(sp.ListUrl)
-						time.Sleep(time.Duration(reqduration/5) * time.Second)
-					}
-					if err == nil {
-						break
-					}
-				}
-				restr := ""
-				if err != nil {
-					sp.I_err = 1
-					restr = err.Error()
-					if res != nil {
-						if res.Body != nil {
-							defer res.Body.Close()
-						}
-						sp.ResponseCode = res.StatusCode
-						sp.ResponseStr = res.Status
-					} else {
-						sp.ResponseCode = 600
-					}
-				} else {
-					defer res.Body.Close()
-					sp.ResponseCode = res.StatusCode
-					sp.ResponseStr = res.Status
-					if Brequestbody == 1 {
-						bs, e := ioutil.ReadAll(res.Body)
-						if e == nil {
-							restr = string(bs)
-						}
-					}
-				}
-				sp.Requesttime = time.Now().Unix()
-				sp.ResponseBody = restr
-				m := map[string]interface{}{
-					"s_spiderid":    sp.Id,
-					"l_time":        now,
-					"l_modifytime":  sp.Mtime,
-					"s_modifyuser":  sp.Muser,
-					"s_listurl":     sp.ListUrl,
-					"s_site":        sp.Site,
-					"s_channel":     sp.Channel,
-					"i_res_code":    sp.ResponseCode,
-					"s_res_codestr": sp.ResponseStr,
-					"s_res_body":    sp.ResponseBody,
-					"s_code":        sp.Code,
-					"l_requesttime": sp.Requesttime,
-					"i_oldspider":   sp.I_old,
-					"i_err":         sp.I_err,
-					"year":          year,
-					"month":         mon,
-					"day":           day,
-					"hour":          hour,
-					"minute":        minute,
-				}
-				lock.Lock()
-				ss := MAP_STATUS[sp.ResponseCode]
-				if ss == nil {
-					ss = []*spiderobj{}
-				}
-				ss = append(ss, sp)
-				MAP_STATUS[sp.ResponseCode] = ss
-				msave = append(msave, m)
-				if len(msave) >= 100 {
-					reqn += len(msave)
-					//go mgo.SaveBulk(checkcoll, msave...)
-					msave = []map[string]interface{}{}
-					log.Println("save...", reqn)
-				}
-				if sp.ResponseCode != 200 {
-					if sp.Channel == "" {
-						sp.Channel = sp.Site
-					}
-					InsertInto(
-						"jy_logs",
-						"sp_healthcheck",
-						[]influxdb.Tag{
-							{Key: "s_site", Value: sp.Site},
-							{Key: "s_errcode", Value: "s_" + fmt.Sprint(sp.ResponseCode)},
-							{Key: "s_code", Value: sp.Code},
-						},
-						map[string]interface{}{
-							"channel":  "<a href='" + sp.ListUrl + "' target='_blank'>" + sp.Channel + "</a>",
-							"code":     sp.Code,
-							"code_del": "<a href='http://test.qmx.top:6123/delete/bycode?code=" + sp.Code + "' target='_blank'>删除</a>",
-							"cuser":    sp.Cuser,
-							"muser":    sp.Muser,
-							"repcode":  sp.ResponseCode,
-							"reqtime":  sp.Requesttime,
-							"i_old":    sp.I_old,
-						},
-						time.Now(),
-						"7d",
-					)
-				}
-				lock.Unlock()
-			}(sp1)
-			time.Sleep(150 * time.Millisecond)
-		}
-		wg.Wait()
-		lock.Lock()
-		if len(msave) > 0 {
-			reqn += len(msave)
-			//go mgo.SaveBulk(checkcoll, msave...)
-			msave = []map[string]interface{}{}
-			log.Println("save...", reqn)
-		}
-		lock.Unlock()
-		log.Println("request over...")
-		//报警
-		alarmtask()
-	}()
-	time.AfterFunc(time.Duration(taskduration)*time.Minute, checktask)
-}
-
-var (
-	html = `<style>td{border-width: 1px;padding: 1px;border-style: solid;border-color: #666666;background-color: #ffffff;} table{margin:5px;border-collapse: collapse;border-width: 1px;border-color: #666666;} div{font-size:16px;line-height:1.5em} .sp{font-size:14px}</style>` +
-		`<div class="row"><table><tr><td>爬虫总量:%d</td><td>运行爬虫量:%d</td><td>暂停爬虫量:%d</td><td>运行爬虫出错量:%d</td></tr><tr><td>站点总量:%d</td><td>运行站点量:%d</td><td>暂停站点量:%d</td><td>运行站点出错量:%d</td></tr></table></div>` +
-		`<div class="row">%s</div>`
-	as = `<div class='mode'>报警模式:%s</div>`
-	//errsite   = `<div class='cls'>出错站点明细:<table><tr style='font-weight:bold'><td style='width:230px'>站点</td><td style='width:480px'>出错爬虫</td></tr>%s</table></div>`
-	//errsitetr = `<tr><td>%s</td><td>%s</td></tr>`
-	cs = `<div class='cls'><div style='font-weight:bold;margin:5px;color:red'>出错状态码:%d | 爬虫出错总量:%d | 站点出错总量:%d</div><table><tr style='font-weight:bold'><td style='width:230px'>站点</td><td style='width:195px'>代码</td><td style='width:65px'>维护人</td><td style='width:180px'>栏目</td><td style='width:380px'>URL</td></tr>%s</table></div>`
-	ss = `<tr>%s<td>%s</td><td>%s</td><td>%s</td><td>`
-)
-
-var alarmLock = sync.Mutex{}
-
-//报警任务
-func alarmtask() {
-	//看时间点
-	alarmLock.Lock()
-	defer alarmLock.Unlock()
-	statuscode := []int{}
-	for c, _ := range MAP_STATUS {
-		statuscode = append(statuscode, c)
-	}
-	sort.Ints(statuscode)
-	tn := time.Now().Hour()
-	if tn >= alarmtime[0] && tn <= alarmtime[1] {
-		if len(MAP_STATUS[200]) == len(Spiders) {
-			//本轮次没有出错脚本
-		} else {
-			as1 := ""
-			allcs := ""
-			cs1 := ""
-			ss1 := ""
-			errcount := 0
-			switch alarmmode {
-			case 0: //每次报
-				as1 = fmt.Sprintf(as, "每次出错报警")
-				for _, kc := range statuscode {
-					kv := MAP_STATUS[kc]
-					if !excludecode[kc] {
-						errcount += len(kv)
-						msite := map[string]bool{}
-						minMap := map[string][]*spiderobj{}
-						for _, sp := range kv {
-							sp1 := minMap[sp.Site]
-							if sp1 == nil {
-								sp1 = []*spiderobj{}
-							}
-							sp1 = append(sp1, sp)
-							minMap[sp.Site] = sp1
-						}
-						for _, sp1 := range minMap {
-							for n, sp := range sp1 {
-								MAP_ALARM[sp.Code] = true
-								if n == 0 {
-									ss1 += fmt.Sprintf(ss, fmt.Sprintf("<td rowspan='%d'>%s</td>", len(sp1), sp.Site), sp.Code, sp.Cuser, sp.Channel) + sp.ListUrl + "</td></tr>"
-								} else {
-									ss1 += fmt.Sprintf(ss, "", sp.Code, sp.Cuser, sp.Channel) + sp.ListUrl + "</td></tr>"
-								}
-								asp := MAP_site_error[sp.Site]
-								if asp == nil {
-									asp = []*spiderobj{}
-								}
-								asp = append(asp, sp)
-								MAP_site_error[sp.Site] = asp
-								msite[sp.Site] = true
-							}
-						}
-						cs1 = fmt.Sprintf(cs, kc, len(kv), len(msite), "%s")
-						allcs += fmt.Sprintf(cs1, ss1)
-						ss1 = ""
-					}
-				}
-			case 1: //一天只报一次
-				as1 = fmt.Sprintf(as, "同一爬虫出错每天只报警一次")
-				for _, kc := range statuscode {
-					kv := MAP_STATUS[kc]
-					if !excludecode[kc] {
-						msite := map[string]bool{}
-						minMap := map[string][]*spiderobj{}
-						for _, sp := range kv {
-							if !MAP_ALARM[sp.Code] {
-								errcount++
-								sp1 := minMap[sp.Site]
-								if sp1 == nil {
-									sp1 = []*spiderobj{}
-								}
-								sp1 = append(sp1, sp)
-								minMap[sp.Site] = sp1
-							}
-						}
-						for _, sp1 := range minMap {
-							for n, sp := range sp1 {
-								MAP_ALARM[sp.Code] = true
-								if n == 0 {
-									ss1 += fmt.Sprintf(ss, fmt.Sprintf("<td rowspan='%d'>%s</td>", len(sp1), sp.Site), sp.Code, sp.Cuser, sp.Channel) + sp.ListUrl + "</td></tr>"
-								} else {
-									ss1 += fmt.Sprintf(ss, "", sp.Code, sp.Cuser, sp.Channel) + sp.ListUrl + "</td></tr>"
-								}
-								asp := MAP_site_error[sp.Site]
-								if asp == nil {
-									asp = []*spiderobj{}
-								}
-								asp = append(asp, sp)
-								MAP_site_error[sp.Site] = asp
-								msite[sp.Site] = true
-							}
-						}
-						cs1 = fmt.Sprintf(cs, kc, len(kv), len(msite), "%s")
-						allcs += fmt.Sprintf(cs1, ss1)
-						ss1 = ""
-					}
-				}
-			case 2: //连续只报一次,间隔报多次
-				as1 = fmt.Sprintf(as, "同一爬虫连续出错只报一次")
-				for _, kc := range statuscode {
-					kv := MAP_STATUS[kc]
-					if !excludecode[kc] {
-						msite := map[string]bool{}
-						minMap := map[string][]*spiderobj{}
-						for _, sp := range kv {
-							if !MAP_ALARM[sp.Code] {
-								errcount++
-								MAP_ALARM[sp.Code] = true
-								sp1 := minMap[sp.Site]
-								if sp1 == nil {
-									sp1 = []*spiderobj{}
-								}
-								sp1 = append(sp1, sp)
-								minMap[sp.Site] = sp1
-							}
-						}
-						for _, sp1 := range minMap {
-							for n, sp := range sp1 {
-								MAP_ALARM[sp.Code] = true
-								if n == 0 {
-									ss1 += fmt.Sprintf(ss, fmt.Sprintf("<td rowspan='%d'>%s</td>", len(sp1), sp.Site), sp.Code, sp.Cuser, sp.Channel) + sp.ListUrl + "</td></tr>"
-								} else {
-									ss1 += fmt.Sprintf(ss, "", sp.Code, sp.Cuser, sp.Channel) + sp.ListUrl + "</td></tr>"
-								}
-								asp := MAP_site_error[sp.Site]
-								if asp == nil {
-									asp = []*spiderobj{}
-								}
-								asp = append(asp, sp)
-								MAP_site_error[sp.Site] = asp
-								msite[sp.Site] = true
-							}
-						}
-						cs1 = fmt.Sprintf(cs, kc, len(kv), len(msite), "%s")
-						allcs += fmt.Sprintf(cs1, ss1)
-						ss1 = ""
-					} else {
-						for _, sp := range kv {
-							if MAP_ALARM[sp.Code] {
-								delete(MAP_ALARM, sp.Code)
-							}
-						}
-					}
-				}
-			}
-
-			if allcs != "" {
-				//				errstr := ""
-				//				for k1, v1 := range MAP_site_error {
-				//					strsp1 := ""
-				//					for _, sp1 := range v1 {
-				//						strsp1 += sp1.Code + ":" + sp1.ListUrl + "<br/>"
-				//					}
-				//					errstr += fmt.Sprintf(errsitetr, k1, strsp1)
-				//				}
-				str := fmt.Sprintf(html, len(Spiders)+stopspidercount, len(Spiders), stopspidercount, errcount, len(MAP_site_all), len(MAP_site_run), len(MAP_site_stop), len(MAP_site_error), as1+allcs)
-				for _, email := range useremail {
-					SendEmail(email, "<div>"+str+"</div>", fmt.Sprintf("爬虫报警-%s", time.Now().Format(util.Date_Full_Layout)))
-				}
-			}
-		}
-	}
-}
-
-//发送邮件
-func SendEmail(email, str, title string) {
-	mail.SendMail(Mail, &mail.Message{title, "爬虫站点检测系统", []string{email}, str})
-}

+ 0 - 13
src/spidersitecheck/main_test.go

@@ -1,13 +0,0 @@
-package main
-
-import (
-	"log"
-	"sort"
-	"testing"
-)
-
-func Test_sort(t *testing.T) {
-	S1 := []int{3, 4, 9, 6, 1, 0, 11}
-	sort.Ints(S1)
-	log.Println(S1)
-}

+ 0 - 34
src/spidersitecheck/task.go

@@ -1,34 +0,0 @@
-package main
-
-import (
-	"time"
-)
-
-func ClearMap() {
-	now := time.Now()
-	h, day := now.Hour(), now.Day()
-	if h >= 0 {
-		day++
-	}
-	newDate := time.Date(now.Year(), now.Month(), day, 0, 0, 10, 0, time.Local)
-	des := newDate.Unix() - now.Unix()
-	if des > 0 {
-		time.AfterFunc(time.Duration(des)*time.Second, func() {
-			go cm()
-			ticker := time.NewTicker(time.Hour * 24)
-			go func() {
-				for _ = range ticker.C {
-					cm()
-				}
-			}()
-		})
-	}
-}
-
-func cm() {
-	alarmLock.Lock()
-	defer alarmLock.Unlock()
-	//清除alarm
-	MAP_ALARM = map[string]bool{}
-
-}

+ 0 - 6
src/企业名称查询服务/config.json

@@ -1,6 +0,0 @@
-{
-	"mongodbServers": "192.168.3.18:27080",
-    "mongodbPoolSize": "1",
-    "mongodbName": "qfw",
-    "collection": "down_ent"
-}

+ 0 - 183
src/企业名称查询服务/dictionary/db.go

@@ -1,183 +0,0 @@
-//数据库存储结构
-package dictionary
-
-import (
-	"log"
-	"sort"
-	"sync"
-)
-
-//原数据
-type BaseData struct {
-	Word  string
-	Check uint64
-	Data  interface{}
-}
-
-//
-type BaseDataList []*BaseData
-
-//
-type BaseDataTable struct {
-	Max      int
-	Min      int
-	TmpTable map[int][]*BaseData //临时用的,未排序
-	Table    map[int]BaseDataList
-}
-
-//排序
-func (l BaseDataList) Len() int {
-	return len(l)
-}
-func (l BaseDataList) Less(i, j int) bool {
-	return l[i].Check < l[j].Check
-}
-func (l BaseDataList) Swap(i, j int) {
-	l[i], l[j] = l[j], l[i]
-}
-func (l BaseDataList) Equal(index int, check uint64) bool {
-	return l[index].Check == check
-}
-
-//
-var db map[string]*BaseDataTable = map[string]*BaseDataTable{} //数据库
-var mux sync.Mutex                                             //同步锁
-
-//
-func getFirstWord(word string) string {
-	return string([]rune(word)[0])
-}
-
-//
-func getCheck(word string) (ret uint64) {
-	tmp := []rune(word)
-	for _, v := range tmp {
-		ret += uint64(v)
-	}
-	return
-}
-
-/**
- *加如数据
- */
-func Insert(word string, data interface{}) {
-	length := len([]rune(word))
-	if length < 3 { //词条长度不够
-		return
-	}
-	firtword := getFirstWord(word)
-	item := BaseData{Word: word, Check: getCheck(word), Data: data}
-	//
-	var table *BaseDataTable
-	var ok bool
-	mux.Lock()
-	if table, ok = db[firtword]; ok {
-		table.TmpTable[length] = append(table.TmpTable[length], &item)
-	} else {
-		table = &BaseDataTable{Min: 100, Max: 0}
-		db[firtword] = table
-		table.TmpTable = map[int][]*BaseData{}
-		table.TmpTable[length] = append(table.TmpTable[length], &item)
-	}
-	//设置最大最小值
-	title_len := len([]rune(word))
-	if table.Min > title_len {
-		table.Min = title_len
-	}
-	if table.Max < title_len {
-		table.Max = title_len
-	}
-	mux.Unlock()
-
-}
-
-//TODO 删除、修改、批量更新
-
-/**
- *插入数据后,要生成索引
- */
-func CreateIndex() {
-	//排序
-	for _, v := range db {
-		for length, k := range v.TmpTable {
-			if v.Table == nil {
-				v.Table = map[int]BaseDataList{}
-			}
-			v.Table[length] = BaseDataList(k)
-			v.TmpTable = nil
-			sort.Sort(v.Table[length])
-
-		}
-
-	}
-}
-
-/**/
-func GetMaxByFirstWord(firstword string) int {
-	if v, ok := db[firstword]; ok {
-		return v.Max
-	} else {
-		return 0
-	}
-}
-
-/**查询,只要最大匹配的值*/
-func Search(keyword string) (ret *BaseData) {
-	tmp := []rune(keyword)
-	v, ok := db[string(tmp[0])]
-	if !ok {
-		return nil
-	}
-	find_len := 0
-	for i := v.Min; i <= len(tmp) && i <= v.Max; i++ {
-		tmpkey := string(tmp[:i])
-		if k, ok := v.Table[i]; ok {
-			check := getCheck(tmpkey)
-			listlen := len(k)
-			index := binSearch(check, listlen, &k)
-			if index > -1 && index < listlen {
-				obj := k[index]
-				if obj.Word != tmpkey {
-					continue
-				}
-				//要最大的匹配
-				if len(obj.Word) > find_len {
-					find_len = len(obj.Word)
-					ret = obj
-				}
-			}
-		}
-
-	}
-	return
-}
-
-/**
- *精确配置
- */
-func AccurateSearch(keyword string) (ret *BaseData) {
-	tmp := []rune(keyword)
-	v, ok := db[string(tmp[0])]
-	if !ok {
-		log.Println("首字找不到")
-		return nil
-	}
-	if k, ok := v.Table[len(tmp)]; ok {
-		check := getCheck(keyword)
-		listlen := len(k)
-		index := binSearch(check, listlen, &k)
-		if index > -1 && index < listlen {
-			obj := k[index]
-			ret = obj
-		}
-	}
-
-	return
-}
-
-//2分查找
-func binSearch(check uint64, listlen int, list *BaseDataList) int {
-	return sort.Search(listlen, func(i int) bool {
-		return (*list)[i].Check >= check
-	})
-}

+ 0 - 11
src/企业名称查询服务/dictionary/db_test.go

@@ -1,11 +0,0 @@
-package dictionary
-
-import (
-	"log"
-	"testing"
-)
-
-func TestInsert(t *testing.T) {
-	Insert("中国人民解放军", "解放军济南分区")
-	log.Println(db)
-}

+ 0 - 98
src/企业名称查询服务/initmemdb.go

@@ -1,98 +0,0 @@
-package main
-
-import (
-	"log"
-	"qfw/util"
-	"qfw/util/mongodb"
-	"regexp"
-	"sync"
-	"sync/atomic"
-	"time"
-	dict "企业名称查询服务/dictionary"
-)
-
-var wg = sync.WaitGroup{}
-var mgo mongodb.MongodbSim
-var config map[string]string
-var count, step uint64 = 0, 1
-var viewloadlog bool = true
-var lock chan bool = make(chan bool, 2)
-
-func inits() {
-	util.ReadConfig(&config)
-	mgo = mongodb.MongodbSim{
-		MongodbAddr: config["mongodbServers"],
-		Size:        util.IntAll(config["mongodbPoolSize"]),
-	}
-	mgo.InitPool()
-	LoadEntData()
-}
-
-func LoadEntData() {
-	go viewLoadLog()
-	sess := mgo.GetMgoConn()
-	defer mgo.DestoryMongoConn(sess)
-	cursor := sess.DB(config["mongodbName"]).C(config["collection"]).Find(nil).Iter()
-	i := 0
-	for tmp := map[string]interface{}{}; cursor.Next(tmp); i++ {
-		wg.Add(1)
-		go func(name, _id string) {
-			defer wg.Done()
-			dict.Insert(name, _id)
-			atomic.AddUint64(&count, step)
-		}(tmp["EntName"].(string), util.BsonIdToSId(tmp["_id"]))
-	}
-	wg.Wait()
-	log.Println("加载数据完成。")
-	viewloadlog = false
-	dict.CreateIndex()
-}
-
-func viewLoadLog() {
-	log.Println("加载", atomic.LoadUint64(&count), "条")
-	if viewloadlog {
-		time.AfterFunc(5*time.Second, viewLoadLog)
-	}
-}
-
-//
-func SearchEnt(param *map[string]interface{}) (err error, repl *map[string]map[string]bool) {
-	repl = &(map[string]map[string]bool{})
-	if param != nil && len(*param) > 0 {
-		for _id, msg := range *param {
-			serach(_id, msg.(string), repl)
-		}
-	}
-	return
-}
-
-//查询方法
-func serach(_id, msg string, replay *map[string]map[string]bool) {
-	reg, _ := regexp.Compile("\\r|\\n|\\s| ")
-	msg = reg.ReplaceAllString(msg, "")
-	tmp := []rune(msg)
-	maxlen := len(tmp)
-	//公司名称小于2没意义
-	for i := 0; i < maxlen-2; i++ {
-		//每个字取一次
-		max := dict.GetMaxByFirstWord(string(tmp[i]))
-		if max < 1 {
-			continue
-		} else if max > maxlen-1-i {
-			max = maxlen - i - 1
-		}
-		maxstr := string(tmp[i : i+max])
-		ret := dict.Search(maxstr)
-		if ret != nil {
-			i += len([]rune(ret.Word)) - 1
-			if (*replay)[_id] == nil {
-				(*replay)[_id] = map[string]bool{
-					ret.Data.(string): true,
-				}
-			} else {
-				(*replay)[_id][ret.Data.(string)] = true
-			}
-			log.Println("找到:", ret.Word, ret.Data)
-		}
-	}
-}

+ 0 - 44
src/企业名称查询服务/main.go

@@ -1,44 +0,0 @@
-package main
-
-import (
-	"encoding/json"
-	"flag"
-	"log"
-	"mfw/util"
-)
-
-//本服务相关的事件定义
-const (
-	EVENT_SEARCH_ENT  = 3000 //企业名称查询
-	EVENT_EXTRACT_ENT = 3001 //企业名称抽取
-)
-
-var client *util.Client
-
-//出事化内存数据库
-func init() {
-	inits()
-}
-
-func main() {
-	var serveraddr string
-	flag.StringVar(&serveraddr, "s", "127.0.0.1:7070", "服务端地址")
-	flag.Parse()
-	client, _ = util.StartClient(func(p *util.Packet) {
-		event := int(p.Event)
-		switch event {
-		case EVENT_EXTRACT_ENT: //抽取公司名称
-			para := map[string]interface{}{}
-			json.Unmarshal(p.GetBusinessData(), &para)
-			_, ret := SearchEnt(&para)
-			client.WriteObj(p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, *ret)
-		case EVENT_SEARCH_ENT: //查询公司名称(精准匹配)
-			//log.Println(data)
-		default:
-			log.Println("服务器发过来的请求,我无法处理", p.From, p.Event)
-		}
-	}, serveraddr, []int{EVENT_EXTRACT_ENT, EVENT_SEARCH_ENT}, 20)
-	//进入服务等待
-	wait := make(chan bool)
-	<-wait
-}

+ 0 - 275
src/公示增量数据保存服务/main.go

@@ -1,275 +0,0 @@
-/**
- * 公示增量数据保存服务
- */
-package main
-
-import (
-	"encoding/json"
-	"flag"
-	"log"
-	mu "mfw/util"
-	qu "qfw/util"
-	"qfw/util/mongodb"
-	"time"
-)
-
-var client *mu.Client
-var msg string
-var mog string
-
-//初始化
-func init() {
-	flag.StringVar(&msg, "msg", "127.0.0.1:7070", "消息总线地址")
-	flag.StringVar(&mog, "mog", "127.0.0.1:27080", "mongodb地址")
-	flag.Parse()
-	mongodb.InitMongodbPool(10, mog, "spider")
-	cc := &mu.ClientConfig{
-		MsgServerAddr:   msg,
-		EventHandler:    eventHandler,
-		ClientName:      "公示增量数据保存服务",
-		CanHandleEvents: []int{mu.SERVICE_ECPS_INC},
-		ReadBufferSize:  10,
-		WriteBufferSize: 10,
-	}
-	client, _ = mu.NewClient(cc)
-}
-
-func main() {
-	go reCallMsg()
-	lock := make(chan bool)
-	<-lock
-}
-
-//事件处理
-func eventHandler(p *mu.Packet) {
-	switch p.Event {
-	case mu.SERVICE_ECPS_INC: //更新数据
-		tmp := []interface{}{}
-		json.Unmarshal(p.GetBusinessData(), &tmp)
-		falg := false
-		if len(tmp) > 0 {
-			saveData(tmp)
-			falg = true
-		}
-		client.WriteObj(p.From, p.Msgid, mu.EVENT_RECIVE_CALLBACK, mu.SENDTO_TYPE_P2P, falg)
-	}
-}
-
-func saveData(data []interface{}) {
-	querys := []interface{}{}
-	list := []interface{}{}
-	area := ""
-	lasttime := ""
-	for _, v := range data {
-		if tmp, ok := v.(map[string]interface{}); ok {
-			if area == "" {
-				area = tmp["Area"].(string)
-				lasttime = time.Unix(qu.Int64All(tmp["Timestamp"]), 0).Format(qu.Date_Full_Layout)
-			}
-			query := map[string]interface{}{}
-			tmp["title"] = tmp["EntName"]
-			tmp["signvalue"] = 7
-			query["title"] = tmp["title"]
-			querys = append(querys, query)
-			tmp = transDateTime(tmp)
-			list = append(list, tmp)
-		}
-	}
-	mongodb.UpdateBulk("ecps", querys, data, true, true)
-	log.Println(area, "更新", len(list), "条数据,最后时间", lasttime)
-}
-
-func transDateTime(info map[string]interface{}) map[string]interface{} {
-	//基本信息时间转换
-	info["ID"] = qu.Int64All(info["ID"])
-	info["OpFrom"] = qu.Int64All(info["OpFrom"])
-	info["OpTo"] = qu.Int64All(info["OpTo"])
-	info["EstDate"] = qu.Int64All(info["EstDate"])
-	info["IssBLicDate"] = qu.Int64All(info["IssBLicDate"])
-	info["Timestamp"] = qu.Int64All(info["Timestamp"])
-	//企业变更
-	if ls, ok := info["alterInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-				v["AltDate"] = qu.Int64All(v["AltDate"])
-			}
-		}
-	}
-	//企业出资人
-	if ls, ok := info["investor"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["ConDate"] = qu.Int64All(v["ConDate"])
-				v["RealConDate"] = qu.Int64All(v["RealConDate"])
-				v["BalDelPerFrom"] = qu.Int64All(v["BalDelPerFrom"])
-				v["BalDelPerTo"] = qu.Int64All(v["BalDelPerTo"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//行政处罚
-	if ls, ok := info["punishInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["PenDecIssDate"] = qu.Int64All(v["PenDecIssDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//主要人员
-	if ls, ok := info["staffinfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//分支机构
-	if ls, ok := info["childent"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["OpFrom"] = qu.Int64All(v["OpFrom"])
-				v["OpTo"] = qu.Int64All(v["OpTo"])
-				v["RegDate"] = qu.Int64All(v["RegDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//清算组
-	if ls, ok := info["liquidationo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["LigEndDate"] = qu.Int64All(v["LigEndDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//动产抵押
-	if ls, ok := info["mortInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["PefPerForm"] = qu.Int64All(v["PefPerForm"])
-				v["PefPerTo"] = qu.Int64All(v["PefPerTo"])
-				v["RegiDate"] = qu.Int64All(v["RegiDate"])
-				v["CanDate"] = qu.Int64All(v["CanDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//股权出质登记
-	if ls, ok := info["pledgeInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["RegDate"] = qu.Int64All(v["RegDate"])
-				v["RevDate"] = qu.Int64All(v["RevDate"])
-				v["PledgeDate"] = qu.Int64All(v["PledgeDate"])
-				v["CanDate"] = qu.Int64All(v["CanDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//异常名录
-	if ls, ok := info["excDirect"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["AbnTime"] = qu.Int64All(v["AbnTime"])
-				v["OutSpeTime"] = qu.Int64All(v["OutSpeTime"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//严重违法
-	if ls, ok := info["serIllInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["LisDate"] = qu.Int64All(v["LisDate"])
-				v["OutLisDate"] = qu.Int64All(v["OutLisDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//抽查检查
-	if ls, ok := info["spotCheck"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["InsDate"] = qu.Int64All(v["InsDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//企业年报
-	if ls, ok := info["entYearExamInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["CreateDate"] = qu.Int64All(v["CreateDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//投资信息之变更
-	if ls, ok := info["altInvCapInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["AltDate"] = qu.Int64All(v["AltDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//股权变更
-	if ls, ok := info["equityTransferInfo"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["Createdate"] = qu.Int64All(v["Createdate"])
-				v["AltDate"] = qu.Int64All(v["AltDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//行政许可设立
-	if ls, ok := info["licenseReg"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["GrantDate"] = qu.Int64All(v["GrantDate"])
-				v["ValFrom"] = qu.Int64All(v["ValFrom"])
-				v["ValTo"] = qu.Int64All(v["ValTo"])
-				v["CreateDate"] = qu.Int64All(v["CreateDate"])
-				v["Timestamp"] = qu.Int64All(v["Timestamp"])
-			}
-		}
-	}
-	//知识产权出质登记
-	if ls, ok := info["intellectualRight"].([]interface{}); ok {
-		for _, tmp := range ls {
-			if v, ok := tmp.(map[string]interface{}); ok {
-				v["ID"] = qu.Int64All(v["ID"])
-				v["PleRegPerFrom"] = qu.Int64All(v["PleRegPerFrom"])
-				v["PleRegPerTo"] = qu.Int64All(v["PleRegPerTo"])
-				v["CreateDate"] = qu.Int64All(v["CreateDate"])
-				v["ModifyDate"] = qu.Int64All(v["ModifyDate"])
-			}
-		}
-	}
-	return info
-}
-
-//保持消息总线连接
-func reCallMsg() {
-	client.WriteObj("", "", 99999, mu.SENDTO_TYPE_ALL_RECIVER, nil)
-	time.AfterFunc(10*time.Second, reCallMsg)
-}

+ 0 - 166
src/异常名录刷新服务/business.go

@@ -1,166 +0,0 @@
-//业务处理
-package main
-
-import (
-	"encoding/json"
-	"log"
-	"mfw/util"
-	"qfw/util/elastic"
-	"qfw/util/mongodb"
-	"qfw/util/redis"
-	"strings"
-	"time"
-
-	"github.com/tidwall/buntdb"
-)
-
-//保存异常公司名称到内存数据库
-//传入的数据格式要求:必须是string数组,第一个Item是省份代码,后边是异常公司名称
-func saveAbnormalEntname2tmpdb(src []byte) {
-	defer util.Catch()
-	tmp := []interface{}{}
-	err := json.Unmarshal(src, &tmp)
-	if err != nil || len(tmp) < 2 {
-		return
-	}
-	if datas, ok := tmp[1].([]interface{}); ok {
-		for _, data := range datas {
-			if v, s := data.(map[string]interface{}); s {
-				dbname := strings.ToUpper(v["area"].(string))
-				if db, ok := cachedb[dbname]; ok { //验证数据库是否存在
-					db.Update(func(tx *buntdb.Tx) error {
-						tx.Set(v["title"].(string), "", nil)
-						return nil
-					})
-				}
-			}
-		}
-	}
-}
-
-//刷新指定省份的全文检索异常字段值
-func flushIndexDbAbnormalField(city string) {
-	defer util.Catch()
-	if db, ok := cachedb[city]; ok { //验证数据库是否存在
-		//TODO 从全文检索中,提取所有的异常公司名称
-		query := `{"query": {"bool":{"must":[{"query_string":{"default_field":"Area","query":"` + city + `"}},{"query_string":{"default_field":"Ycml","query":true}}]}},"_source": ["_id","EntName"],"from": 0,"size": 999999}`
-		//query = `{"query": {"bool":{"must":[{"query_string":{"default_field":"Ycml","query":true}}]}},"_source": ["_id","EntName"],"from": 0,"size": 999999}`
-		list := *elastic.GetNoLimit("enterprise", "enterprise", query)
-		upids := []string{} //需要更新elastic by id
-		for _, v := range list {
-			//查询内存数据库
-			db.Update(func(tx *buntdb.Tx) error {
-				_, err := tx.Get(v["EntName"].(string))
-				if err != nil { //已经移除了
-					upids = append(upids, v["_id"].(string)) //TODO 修改索引字段值,再这里可以加到队列,到时候走批量更新
-				} else {
-					tx.Delete(v["EntName"].(string)) //TODO 还在异常名录里,这里删除内存库中的数据即可
-				}
-				return nil
-			})
-		}
-		upElasticByIds(upids, 1000)
-		log.Println(city, "更新elastic检索库完成", len(upids))
-		delRedis(upids)
-		log.Println(city, "清除缓存完成", len(upids))
-		//TODO 现在内存数据库里的全部要进爬取名录
-		ycmlList := []interface{}{}
-		querys := []interface{}{}
-		db.View(func(tx *buntdb.Tx) error {
-			tx.Ascend("", func(k, v string) bool {
-				query := map[string]interface{}{}
-				query["enterprisename"] = k
-				querys = append(querys, query)
-				tmp := map[string]interface{}{}
-				tmp["area"] = city
-				tmp["priority"] = 90
-				tmp["source"] = "ycml"
-				tmp["used"] = "0"
-				tmp["enterprisename"] = k
-				tmp["publishtime"] = time.Now().Unix()
-				ycmlList = append(ycmlList, tmp)
-				return true //返回false后边的数据,就不处理了
-			})
-			return nil
-		})
-		updateBulk(querys, ycmlList, 1000)
-		log.Println(city, "内存数据库里的数据库存入爬虫名录完成", len(ycmlList))
-		saveYcmlLog(ycmlList, 1000)
-		//TODO 清理内存数据库,等待下一轮入库处理。(直接关闭,是最快的释放内存)
-		db.Close()
-		db, _ = buntdb.Open(":memory:")
-		cachedb[city] = db
-		log.Println(city, "异常名录更新完成...")
-	}
-}
-
-//批量入库
-func updateBulk(querys, list []interface{}, num int) {
-	defer util.Catch()
-	if len(list) > 0 {
-		page := (len(list) + num - 1) / num
-		for i := 0; i < page; i++ {
-			querylist := []interface{}{}
-			tmplist := []interface{}{}
-			if (i + 1) < page {
-				querylist = querys[i*num : (i+1)*1000]
-				tmplist = list[i*num : (i+1)*1000]
-			} else {
-				querylist = querys[i*num:]
-				tmplist = list[i*num:]
-			}
-			mongodb.UpdateBulk("entnames", querylist, tmplist, true, false)
-		}
-	}
-}
-
-//批量更新索引库by id
-func upElasticByIds(ids []string, num int) {
-	defer util.Catch()
-	if len(ids) > 0 {
-		page := (len(ids) + num - 1) / num
-		for i := 0; i < page; i++ {
-			tmpids := []string{}
-			if (i + 1) < page {
-				tmpids = ids[i*num : (i+1)*1000]
-			} else {
-				tmpids = ids[i*num:]
-			}
-			elastic.BulkUpdate("enterprise", "enterprise", tmpids, `ctx._source.Ycml=false`)
-		}
-	}
-}
-
-//异常数据增量记录
-func saveYcmlLog(list []interface{}, num int) {
-	defer util.Catch()
-	tmp := []map[string]interface{}{}
-	count := 0
-	for k, v := range list {
-		if ycml, ok := v.(map[string]interface{}); ok {
-			delete(ycml, "used")
-			delete(ycml, "priority")
-			delete(ycml, "source")
-			tmp = append(tmp, ycml)
-		}
-		if k%num == 0 {
-			mongodb.SaveBulk("ycml_log", tmp...)
-			tmp = []map[string]interface{}{}
-		}
-		count += 1
-	}
-	if len(tmp) > 0 {
-		mongodb.SaveBulk("ycml_log", tmp...)
-	}
-	log.Println("异常数据增量记录", count)
-}
-
-//清除缓存
-func delRedis(ids []string) {
-	defer util.Catch()
-	for _, id := range ids {
-		redis.Del("enterprise", "enterpriseInfo_"+id)
-		redis.Del("enterprise", "menterpriseInfo_"+id)
-	}
-	redis.DelByCodePattern("enterprise", "ipcity_*")
-}

+ 0 - 7
src/异常名录刷新服务/config.json

@@ -1,7 +0,0 @@
-{
-    "dbaddr": "192.168.3.18:27080",
-    "dbname": "spider",
-    "elsaddr": "http://192.168.3.18:9800",
-    "redisaddr": "enterprise=192.168.3.14:1379",
-    "msgaddr": "test.qmx.top:7070"
-} 

+ 0 - 93
src/异常名录刷新服务/main.go

@@ -1,93 +0,0 @@
-/**
- * 公示异常名录刷新服务
- * 流程如下::
- * 爬虫程序下载异常清单,写入此服务
- * 下载完成后,发送事件通知,此服务开始刷新全文索引,
- * 并把新数据加入下载名录库
- */
-package main
-
-import (
-	mu "mfw/util"
-	qu "qfw/util"
-	"qfw/util/elastic"
-	"qfw/util/mongodb"
-	"qfw/util/redis"
-	"time"
-
-	"github.com/tidwall/buntdb"
-)
-
-var client *mu.Client                                           //
-var cachedb map[string]*buntdb.DB = make(map[string]*buntdb.DB) //内存数据库
-var city []string = []string{"AH", "BJ", "FJ", "GS", "GD", "GX", "GZ", "HI", "HE", "HA", "HL", "HB", "HN", "JL", "JS", "JX", "LN", "NM", "NX", "QH", "SD", "SX", "SN", "SH", "SC", "TJ", "XZ", "XJ", "YN", "ZJ", "CQ"}
-var notice chan string = make(chan string, 31) //通知channel
-var config map[string]interface{}
-
-//初始化
-func init() {
-	qu.ReadConfig(&config)
-	mongodb.InitMongodbPool(5, config["dbaddr"].(string), config["dbname"].(string))
-	elastic.InitElasticSize(config["elsaddr"].(string), 5)
-	redis.InitRedis(config["redisaddr"].(string))
-	cc := &mu.ClientConfig{
-		MsgServerAddr:   config["msgaddr"].(string),
-		EventHandler:    eventHandler,
-		ClientName:      "公示异常名录刷新服务",
-		CanHandleEvents: []int{mu.SERVICE_YCML_NOTICE, mu.SERVICE_YCML_SAVE},
-		ReadBufferSize:  300,
-		WriteBufferSize: 300,
-	}
-	client, _ = mu.NewClient(cc)
-	//初始化内存数据库(并建立索引,在此使用默认的KEY索引,就可以了)
-	for _, c := range city {
-		db, _ := buntdb.Open(":memory:")
-		cachedb[c] = db
-	}
-}
-
-//清理
-func destory() {
-	for _, c := range city {
-		cachedb[c].Close()
-	}
-}
-
-//事件处理
-func eventHandler(p *mu.Packet) {
-	switch p.Event {
-	case mu.SERVICE_YCML_SAVE: //存储数据
-		saveAbnormalEntname2tmpdb(p.GetBusinessData())
-	case mu.SERVICE_YCML_NOTICE: //更新异常名录
-		city := string(p.GetBusinessData())
-		notice <- city
-	}
-}
-
-//收到通知后,更新异常字段,每次只执行1个省份
-func flushAbnormal() {
-	for {
-		select {
-		case city := <-notice:
-			{
-				//要想异步操作,这里用GO协程
-				flushIndexDbAbnormalField(city)
-			}
-		}
-	}
-}
-
-//保持消息总线连接
-func reCallMsg() {
-	client.WriteObj("", "", 99999, mu.SENDTO_TYPE_RAND_RECIVER, nil)
-	time.AfterFunc(2*time.Minute, reCallMsg)
-}
-
-//
-func main() {
-	go flushAbnormal()
-	go reCallMsg()
-	defer destory() //
-	lock := make(chan bool)
-	<-lock
-}

+ 0 - 91
src/服务端4会东/dispatch.go

@@ -1,91 +0,0 @@
-package main
-
-import (
-	"encoding/json"
-	"math/rand"
-	"mfw/util"
-)
-
-//默认事件分发处理
-func dispatchEvent(msg *util.Packet) {
-	//识别发送类型
-	event := int(msg.Event)
-	sttype := int(msg.SentToType)
-	if sttype == util.SENDTO_TYPE_ALL { //发送给所有节点
-		for service_machine_id, v := range allclient { //发所有,不支持的不处理
-			if service_machine_id == msg.From { //广播不用发给自己
-				continue
-			}
-			_, err := v.conn.Write(msg.Raw)
-			if err == nil {
-				updateheartbeat(service_machine_id)
-			}
-		}
-	} else if sttype == util.SENDTO_TYPE_P2P { //点对点发消息,不用注册服务
-		//仅仅p2p支持按名称发送消息,在消息内容JSON中,需要包含to字段,指明要发送到的客户端名称
-		var client *Client
-		var find bool = false
-		var err error
-		if msg.To == "ffffffff" {
-			data := map[string]interface{}{}
-			json.Unmarshal(msg.GetBusinessData(), &data)
-			if v, ok := data["to"]; ok {
-				if client, err = findClientByName(v.(string)); err != nil {
-					find = true
-				}
-			}
-		} else {
-			if v, ok := allclient[msg.To]; ok {
-				client = v
-				find = true
-			}
-		}
-		if find {
-			_, err = client.conn.Write(msg.Raw)
-			if err == nil {
-				updateheartbeat(client.id)
-			}
-		}
-
-	}
-	if v, ok := allservice[event]; ok {
-		switch sttype {
-		case util.SENDTO_TYPE_RAND_RECIVER: //随机选择一个节点提供服务,允许出错尝试3次
-			for i := 0; i < 3; i++ {
-				if len(v) < 1 {
-					break
-				}
-				service_machine_id := v[rand.Intn(len(v))]
-				lock.Lock()
-				client, ok := allclient[service_machine_id]
-				lock.Unlock()
-				if ok {
-					_, err := client.conn.Write(msg.Raw)
-					if err == nil {
-						updateheartbeat(service_machine_id)
-						break
-					} else {
-						removeClient(service_machine_id)
-					}
-				}
-
-			}
-		case util.SENDTO_TYPE_ALL_RECIVER:
-			if v, ok := allservice[event]; ok {
-				for _, service_machine_id := range v {
-					if service_machine_id == msg.From { //广播不用发给自己
-						continue
-					}
-					if v2, ok2 := allclient[service_machine_id]; ok2 {
-						_, err := v2.conn.Write(msg.Raw)
-						if err == nil {
-							updateheartbeat(service_machine_id)
-						}
-					}
-				}
-			}
-		}
-
-	}
-
-}

+ 0 - 243
src/服务端4会东/main.go

@@ -1,243 +0,0 @@
-package main
-
-//v1.3.1 分离出来,支持按client名称收发消息
-import (
-	"encoding/json"
-	"errors"
-	"flag"
-	"fmt"
-	"mfw/util"
-	"net"
-	"sync"
-	"time"
-)
-
-//
-type Client struct {
-	conn            net.Conn
-	timestamp       int64
-	name            string //
-	canhandlerevent []int  //
-	id              string
-	ip              string
-}
-
-//
-var lock sync.Mutex
-
-//所有的请求
-var allclient map[string]*Client = make(map[string]*Client)
-
-//服务与提供者对应表
-var allservice map[int][]string = make(map[int][]string)
-
-//心跳检测规则重新定义::
-//每次读写都会刷新心跳时间,
-//长时间未发生读写时发送心跳查询,
-//3倍检测时间后仍未响应的,自动剔除队列
-func GC() {
-	now := time.Now().Unix()
-	now_bs := util.Int2Byte(int32(now))
-	for k, v := range allclient {
-		if now-v.timestamp > gcinterval*3 {
-			//3次GC未回应心跳
-			v.conn.Close()
-			removeClient(k)
-			continue
-		} else if now-v.timestamp > gcinterval {
-			_, err := v.conn.Write(util.Enpacket("", k, "", util.EVENT_REQUEST_HEARTBEAT,
-				util.SENDTO_TYPE_P2P, now_bs))
-			if err != nil { //发心跳包出错
-				v.conn.Close()
-				removeClient(k)
-			}
-		}
-
-	}
-	time.AfterFunc(time.Duration(gcinterval)*time.Second, GC)
-}
-
-//删除服务节点
-func removeClient(myid string) {
-	lock.Lock()
-	defer lock.Unlock()
-	defer util.Catch()
-	if v, ok := allclient[myid]; ok {
-		v.conn.Close()
-	}
-	delete(allclient, myid)
-	for k, v := range allservice {
-		for j, smid := range v {
-			if smid == myid {
-				allservice[k] = append(v[:j], v[j+1:]...)
-				break
-			}
-		}
-	}
-
-	fmt.Println()
-	fmt.Println("删除节点", myid, "全部服务", allservice)
-}
-
-//通过名称查找客户端
-func findClientByName(name string) (*Client, error) {
-	for _, c := range allclient {
-		if c.name == name {
-			return c, nil
-		}
-	}
-	return nil, errors.New("cant't find the client")
-}
-
-//发布服务
-func publishservice(myid string, s []int) {
-	if myid == "00000000" { //无效请求验证
-		return
-	}
-	lock.Lock()
-	defer lock.Unlock()
-	defer util.Catch()
-	if allclient[myid] != nil {
-		allclient[myid].canhandlerevent = s
-		//删除该ID以前发布的服务
-		for k, v := range allservice {
-			for j, smid := range v {
-				if smid == myid {
-					allservice[k] = append(v[:j], v[j+1:]...)
-					break
-				}
-			}
-		}
-		//追加新发布的服务
-		for _, v := range s {
-			if v == util.EVENT_RECIVE_CALLBACK { //回调的不再作为服务注册
-				continue
-			}
-			allservice[v] = append(allservice[v], myid)
-		}
-	}
-	fmt.Println()
-	fmt.Println("全部服务", allservice)
-}
-
-//更新心跳
-func updateheartbeat(from string) {
-	lock.Lock()
-	defer lock.Unlock()
-	defer util.Catch()
-	if v, ok := allclient[from]; ok {
-		v.timestamp = time.Now().Unix()
-	}
-
-}
-
-//查看所有服务提供者
-func viewallservice(p *util.Packet) {
-	defer util.Catch()
-	ret := []interface{}{}
-	lock.Lock()
-	for k, v := range allclient {
-		ret = append(ret, map[string]interface{}{
-			"handle": fmt.Sprintf("%v", v.canhandlerevent),
-			"name":   v.name,
-			"myid":   k,
-			"ip":     v.ip,
-		})
-	}
-	lock.Unlock()
-	bs, _ := json.Marshal(ret)
-	allclient[p.From].conn.Write(util.Enpacket("", p.From, p.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, bs))
-}
-
-//更新客户端名称
-func updatemyname(myid, name string) {
-	fmt.Println("updatename", myid, name)
-	lock.Lock()
-	defer lock.Unlock()
-	if v, ok := allclient[myid]; ok {
-		v.name = name
-	}
-
-}
-
-//处理客户端发过来的消息
-func processmsg(msg *util.Packet) {
-	defer util.Catch()
-	from := msg.From
-	event := int(msg.Event)
-	//直接更新发送人心跳
-	updateheartbeat(from)
-	switch event {
-	//TODO 只写需要特殊处理的时间,其他都走default
-	case util.EVENT_RETURN_HEARTBEAT: //心跳回应包处理
-		fmt.Print(".")
-	case util.EVENT_PUBLISH_MYSERVICES: //客户端发布了自己的服务
-		data := msg.GetBusinessData()
-		services := []int{}
-		for i := 0; i < len(data)/4; i++ {
-			start := i * 4
-			service := int(util.Byte2Int(data[start : start+4]))
-			services = append(services, service)
-		}
-		publishservice(from, services)
-	case util.EVENT_VIEWALL_SERVICE: //
-		go viewallservice(msg)
-	case util.EVENT_REMOVE_CLIENT: //服务端强制删除节点
-		removeClient(string(msg.GetBusinessData()))
-	case util.EVENT_BYE: //客户端主动要求断开
-		removeClient(from)
-	case util.EVENT_SYSTEM_COMMAND: //转发系统消息
-		if v, ok := allclient[msg.To]; ok {
-			_, err := v.conn.Write(msg.Raw)
-			if err == nil {
-				updateheartbeat(from)
-			}
-		}
-	case util.EVENT_UPDATE_MYNAME:
-		updatemyname(from, string(msg.GetBusinessData()))
-	case util.EVENT_GET_ALLDOWNLOADER:
-		if v, ok := allservice[util.SERVICE_DOWNLOAD]; ok {
-			if v1, ok1 := allclient[msg.From]; ok1 {
-				v1.conn.Write(util.Enpacket("", msg.From, msg.Msgid, util.EVENT_RECIVE_CALLBACK, util.SENDTO_TYPE_P2P, v))
-			}
-		}
-	default: //处理业务事件
-		dispatchEvent(msg)
-	}
-}
-
-var port string
-var gcinterval int64
-
-//
-func main() {
-	flag.StringVar(&port, "p", "7070", "开放端口")
-	flag.Int64Var(&gcinterval, "g", 10, "GC间隔时间")
-	flag.Parse()
-	//心跳检测
-	go GC()
-	//启动服务
-	util.StartServer(func(data *util.Packet) {
-		//接受消息处理
-		processmsg(data)
-	}, func(c net.Conn) { //连接后返回UUID
-		uuid := util.UUID(8)
-		//防止重复
-		for {
-			if allclient[uuid] == nil {
-				break
-			} else {
-				uuid = util.UUID(8)
-			}
-		}
-
-		c.Write(util.Enpacket("", "", "", util.EVENT_RETURN_MACHINE_ID, util.SENDTO_TYPE_P2P, []byte(uuid)))
-		allclient[uuid] = &Client{conn: c,
-			timestamp: time.Now().Unix(),
-			name:      c.RemoteAddr().String(),
-			ip:        c.RemoteAddr().String(),
-			id:        uuid,
-		}
-	}, ":"+port)
-
-}

+ 0 - 3113
src/股东转名录/city.json

@@ -1,3113 +0,0 @@
-{
-    "city": {
-        "辽河": "辽宁",
-        "南大港": "河北",
-        "北京": "北京",
-        "密云": "北京",
-        "延庆": "北京",
-        "天津": "天津",
-        "宁河": "天津",
-        "静海": "天津",
-        "蓟县": "天津",
-        "河北": "河北",
-        "石家庄": "河北",
-        "井陉": "河北",
-        "正定": "河北",
-        "栾城": "河北",
-        "行唐": "河北",
-        "灵寿": "河北",
-        "高邑": "河北",
-        "深泽": "河北",
-        "赞皇": "河北",
-        "无极": "河北",
-        "平山": "河北",
-        "元氏": "河北",
-        "赵县": "河北",
-        "辛集": "河北",
-        "藁城": "河北",
-        "晋州": "河北",
-        "新乐": "河北",
-        "鹿泉": "河北",
-        "唐山": "河北",
-        "滦县": "河北",
-        "滦南": "河北",
-        "乐亭": "河北",
-        "迁西": "河北",
-        "玉田": "河北",
-        "唐海": "河北",
-        "遵化": "河北",
-        "迁安": "河北",
-        "秦皇岛": "河北",
-        "青龙": "河北",
-        "昌黎": "河北",
-        "抚宁": "河北",
-        "卢龙": "河北",
-        "邯郸": "河北",
-        "临漳": "河北",
-        "成安": "河北",
-        "大名": "河北",
-        "涉县": "河北",
-        "磁县": "河北",
-        "肥乡": "河北",
-        "永年": "河北",
-        "邱县": "河北",
-        "鸡泽": "河北",
-        "广平": "河北",
-        "馆陶": "河北",
-        "魏县": "河北",
-        "曲周": "河北",
-        "武安": "河北",
-        "邢台": "河北",
-        "临城": "河北",
-        "内丘": "河北",
-        "柏乡": "河北",
-        "隆尧": "河北",
-        "任县": "河北",
-        "南和": "河北",
-        "宁晋": "河北",
-        "巨鹿": "河北",
-        "新河": "河北",
-        "广宗": "河北",
-        "平乡": "河北",
-        "威县": "河北",
-        "清河": "河北",
-        "临西": "河北",
-        "南宫": "河北",
-        "沙河": "河北",
-        "保定": "河北",
-        "满城": "河北",
-        "清苑": "河北",
-        "涞水": "河北",
-        "阜平": "河北",
-        "徐水": "河北",
-        "定兴": "河北",
-        "唐县": "河北",
-        "高阳": "河北",
-        "容城": "河北",
-        "涞源": "河北",
-        "望都": "河北",
-        "安新": "河北",
-        "易县": "河北",
-        "曲阳": "河北",
-        "蠡县": "河北",
-        "顺平": "河北",
-        "博野": "河北",
-        "雄县": "河北",
-        "涿州": "河北",
-        "定州": "河北",
-        "安国": "河北",
-        "高碑店": "河北",
-        "张家口": "河北",
-        "宣化": "河北",
-        "张北": "河北",
-        "康保": "河北",
-        "沽源": "河北",
-        "尚义": "河北",
-        "蔚县": "河北",
-        "阳原": "河北",
-        "怀安": "河北",
-        "万全": "河北",
-        "怀来": "河北",
-        "涿鹿": "河北",
-        "赤城": "河北",
-        "崇礼": "河北",
-        "承德": "河北",
-        "兴隆": "河北",
-        "平泉": "河北",
-        "滦平": "河北",
-        "隆化": "河北",
-        "丰宁": "河北",
-        "宽城": "河北",
-        "围场": "河北",
-        "沧州": "河北",
-        "沧县": "河北",
-        "青县": "河北",
-        "东光": "河北",
-        "海兴": "河北",
-        "盐山": "河北",
-        "肃宁": "河北",
-        "南皮": "河北",
-        "吴桥": "河北",
-        "献县": "河北",
-        "孟村": "河北",
-        "泊头": "河北",
-        "任丘": "河北",
-        "黄骅": "河北",
-        "河间": "河北",
-        "廊坊": "河北",
-        "固安": "河北",
-        "永清": "河北",
-        "香河": "河北",
-        "大城": "河北",
-        "文安": "河北",
-        "大厂": "河北",
-        "霸州": "河北",
-        "三河": "河北",
-        "衡水": "河北",
-        "枣强": "河北",
-        "武邑": "河北",
-        "武强": "河北",
-        "饶阳": "河北",
-        "安平": "河北",
-        "故城": "河北",
-        "景县": "河北",
-        "阜城": "河北",
-        "冀州": "河北",
-        "深州": "河北",
-        "山西": "山西",
-        "太原": "山西",
-        "清徐": "山西",
-        "阳曲": "山西",
-        "娄烦": "山西",
-        "古交": "山西",
-        "大同": "山西",
-        "阳高": "山西",
-        "天镇": "山西",
-        "广灵": "山西",
-        "灵丘": "山西",
-        "浑源": "山西",
-        "左云": "山西",
-        "阳泉": "山西",
-        "平定": "山西",
-        "盂县": "山西",
-        "长治": "山西",
-        "襄垣": "山西",
-        "屯留": "山西",
-        "平顺": "山西",
-        "黎城": "山西",
-        "壶关": "山西",
-        "长子": "山西",
-        "武乡": "山西",
-        "沁县": "山西",
-        "沁源": "山西",
-        "潞城": "山西",
-        "晋城": "山西",
-        "沁水": "山西",
-        "阳城": "山西",
-        "陵川": "山西",
-        "泽州": "山西",
-        "高平": "山西",
-        "朔州": "山西",
-        "山阴": "山西",
-        "应县": "山西",
-        "右玉": "山西",
-        "怀仁": "山西",
-        "晋中": "山西",
-        "榆社": "山西",
-        "左权": "山西",
-        "和顺": "山西",
-        "昔阳": "山西",
-        "寿阳": "山西",
-        "太谷": "山西",
-        "祁县": "山西",
-        "平遥": "山西",
-        "灵石": "山西",
-        "介休": "山西",
-        "运城": "山西",
-        "临猗": "山西",
-        "万荣": "山西",
-        "闻喜": "山西",
-        "稷山": "山西",
-        "新绛": "山西",
-        "绛县": "山西",
-        "垣曲": "山西",
-        "夏县": "山西",
-        "平陆": "山西",
-        "芮城": "山西",
-        "永济": "山西",
-        "河津": "山西",
-        "忻州": "山西",
-        "定襄": "山西",
-        "五台": "山西",
-        "代县": "山西",
-        "繁峙": "山西",
-        "宁武": "山西",
-        "静乐": "山西",
-        "神池": "山西",
-        "五寨": "山西",
-        "岢岚": "山西",
-        "河曲": "山西",
-        "保德": "山西",
-        "偏关": "山西",
-        "原平": "山西",
-        "临汾": "山西",
-        "曲沃": "山西",
-        "翼城": "山西",
-        "襄汾": "山西",
-        "洪洞": "山西",
-        "古县": "山西",
-        "安泽": "山西",
-        "浮山": "山西",
-        "吉县": "山西",
-        "乡宁": "山西",
-        "大宁": "山西",
-        "隰县": "山西",
-        "永和": "山西",
-        "蒲县": "山西",
-        "汾西": "山西",
-        "侯马": "山西",
-        "霍州": "山西",
-        "吕梁": "山西",
-        "文水": "山西",
-        "交城": "山西",
-        "兴县": "山西",
-        "临县": "山西",
-        "柳林": "山西",
-        "石楼": "山西",
-        "岚县": "山西",
-        "方山": "山西",
-        "中阳": "山西",
-        "交口": "山西",
-        "孝义": "山西",
-        "汾阳": "山西",
-        "内蒙古": "内蒙古",
-        "呼和浩特": "内蒙古",
-        "土默特左旗": "内蒙古",
-        "托克托": "内蒙古",
-        "和林格尔": "内蒙古",
-        "清水河": "内蒙古",
-        "武川": "内蒙古",
-        "包头": "内蒙古",
-        "土默特右旗": "内蒙古",
-        "固阳": "内蒙古",
-        "达尔罕茂明安联合旗": "内蒙古",
-        "乌海": "内蒙古",
-        "赤峰": "内蒙古",
-        "阿鲁科尔沁旗": "内蒙古",
-        "巴林左旗": "内蒙古",
-        "巴林右旗": "内蒙古",
-        "林西": "内蒙古",
-        "克什克腾旗": "内蒙古",
-        "翁牛特旗": "内蒙古",
-        "喀喇沁旗": "内蒙古",
-        "宁城": "内蒙古",
-        "敖汉旗": "内蒙古",
-        "通辽": "内蒙古",
-        "科尔沁左翼中旗": "内蒙古",
-        "科尔沁左翼后旗": "内蒙古",
-        "开鲁": "内蒙古",
-        "库伦旗": "内蒙古",
-        "奈曼旗": "内蒙古",
-        "扎鲁特旗": "内蒙古",
-        "霍林郭勒": "内蒙古",
-        "鄂尔多斯": "内蒙古",
-        "达拉特旗": "内蒙古",
-        "准格尔旗": "内蒙古",
-        "鄂托克前旗": "内蒙古",
-        "鄂托克旗": "内蒙古",
-        "杭锦旗": "内蒙古",
-        "乌审旗": "内蒙古",
-        "伊金霍洛旗": "内蒙古",
-        "呼伦贝尔": "内蒙古",
-        "阿荣旗": "内蒙古",
-        "莫力达瓦达斡尔族自治旗": "内蒙古",
-        "鄂伦春自治旗": "内蒙古",
-        "鄂温克族自治旗": "内蒙古",
-        "陈巴尔虎旗": "内蒙古",
-        "新巴尔虎左旗": "内蒙古",
-        "新巴尔虎右旗": "内蒙古",
-        "满洲里": "内蒙古",
-        "牙克石": "内蒙古",
-        "扎兰屯": "内蒙古",
-        "额尔古纳": "内蒙古",
-        "根河": "内蒙古",
-        "巴彦淖尔": "内蒙古",
-        "五原": "内蒙古",
-        "磴口": "内蒙古",
-        "乌拉特前旗": "内蒙古",
-        "乌拉特中旗": "内蒙古",
-        "乌拉特后旗": "内蒙古",
-        "杭锦后旗": "内蒙古",
-        "乌兰察布": "内蒙古",
-        "卓资": "内蒙古",
-        "化德": "内蒙古",
-        "商都": "内蒙古",
-        "兴和": "内蒙古",
-        "凉城": "内蒙古",
-        "察哈尔右翼前旗": "内蒙古",
-        "察哈尔右翼中旗": "内蒙古",
-        "察哈尔右翼后旗": "内蒙古",
-        "四子王旗": "内蒙古",
-        "丰镇": "内蒙古",
-        "兴安盟": "内蒙古",
-        "乌兰浩特": "内蒙古",
-        "阿尔山": "内蒙古",
-        "科尔沁右翼前旗": "内蒙古",
-        "科尔沁右翼中旗": "内蒙古",
-        "扎赉特旗": "内蒙古",
-        "突泉": "内蒙古",
-        "锡林郭勒盟": "内蒙古",
-        "二连浩特": "内蒙古",
-        "锡林浩特": "内蒙古",
-        "阿巴嘎旗": "内蒙古",
-        "苏尼特左旗": "内蒙古",
-        "苏尼特右旗": "内蒙古",
-        "东乌珠穆沁旗": "内蒙古",
-        "西乌珠穆沁旗": "内蒙古",
-        "太仆寺旗": "内蒙古",
-        "镶黄旗": "内蒙古",
-        "正镶白旗": "内蒙古",
-        "正蓝旗": "内蒙古",
-        "多伦": "内蒙古",
-        "阿拉善盟": "内蒙古",
-        "阿拉善左旗": "内蒙古",
-        "阿拉善右旗": "内蒙古",
-        "额济纳旗": "内蒙古",
-        "辽宁": "辽宁",
-        "沈阳": "辽宁",
-        "辽中": "辽宁",
-        "康平": "辽宁",
-        "法库": "辽宁",
-        "新民": "辽宁",
-        "大连": "辽宁",
-        "长海": "辽宁",
-        "瓦房店": "辽宁",
-        "普兰店": "辽宁",
-        "庄河": "辽宁",
-        "鞍山": "辽宁",
-        "台安": "辽宁",
-        "岫岩": "辽宁",
-        "海城": "辽宁",
-        "抚顺": "辽宁",
-        "新宾": "辽宁",
-        "清原": "辽宁",
-        "本溪": "辽宁",
-        "桓仁": "辽宁",
-        "丹东": "辽宁",
-        "宽甸": "辽宁",
-        "东港": "辽宁",
-        "凤城": "辽宁",
-        "锦州": "辽宁",
-        "黑山": "辽宁",
-        "义县": "辽宁",
-        "凌海": "辽宁",
-        "北镇": "辽宁",
-        "营口": "辽宁",
-        "盖州": "辽宁",
-        "大石桥": "辽宁",
-        "阜新": "辽宁",
-        "彰武": "辽宁",
-        "辽阳": "辽宁",
-        "灯塔": "辽宁",
-        "盘锦": "辽宁",
-        "大洼": "辽宁",
-        "盘山": "辽宁",
-        "铁岭": "辽宁",
-        "西丰": "辽宁",
-        "昌图": "辽宁",
-        "调兵山": "辽宁",
-        "开原": "辽宁",
-        "朝阳市": "辽宁",
-        "建平": "辽宁",
-        "喀喇沁": "辽宁",
-        "北票": "辽宁",
-        "凌源": "辽宁",
-        "葫芦岛": "辽宁",
-        "绥中": "辽宁",
-        "建昌": "辽宁",
-        "兴城": "辽宁",
-        "吉林": "吉林",
-        "长春": "吉林",
-        "农安": "吉林",
-        "九台": "吉林",
-        "榆树": "吉林",
-        "德惠": "吉林",
-        "吉林": "吉林",
-        "永吉": "吉林",
-        "蛟河": "吉林",
-        "桦甸": "吉林",
-        "舒兰": "吉林",
-        "磐石": "吉林",
-        "四平": "吉林",
-        "梨树": "吉林",
-        "伊通": "吉林",
-        "公主岭": "吉林",
-        "双辽": "吉林",
-        "辽源": "吉林",
-        "东丰": "吉林",
-        "东辽": "吉林",
-        "通化": "吉林",
-        "辉南": "吉林",
-        "柳河": "吉林",
-        "梅河口": "吉林",
-        "集安": "吉林",
-        "白山": "吉林",
-        "抚松": "吉林",
-        "靖宇": "吉林",
-        "长白": "吉林",
-        "临江": "吉林",
-        "松原": "吉林",
-        "前郭尔罗斯": "吉林",
-        "长岭": "吉林",
-        "乾安": "吉林",
-        "扶余": "吉林",
-        "白城": "吉林",
-        "镇赉": "吉林",
-        "通榆": "吉林",
-        "洮南": "吉林",
-        "大安": "吉林",
-        "延边州": "吉林",
-        "延吉": "吉林",
-        "图们": "吉林",
-        "敦化": "吉林",
-        "珲春": "吉林",
-        "龙井": "吉林",
-        "和龙": "吉林",
-        "汪清": "吉林",
-        "安图": "吉林",
-        "黑龙江": "黑龙江",
-        "哈尔滨": "黑龙江",
-        "依兰": "黑龙江",
-        "方正": "黑龙江",
-        "宾县": "黑龙江",
-        "巴彦": "黑龙江",
-        "木兰": "黑龙江",
-        "通河": "黑龙江",
-        "延寿": "黑龙江",
-        "双城": "黑龙江",
-        "尚志": "黑龙江",
-        "五常": "黑龙江",
-        "齐齐哈尔": "黑龙江",
-        "龙江": "黑龙江",
-        "依安": "黑龙江",
-        "泰来": "黑龙江",
-        "甘南": "黑龙江",
-        "富裕": "黑龙江",
-        "克山": "黑龙江",
-        "克东": "黑龙江",
-        "拜泉": "黑龙江",
-        "讷河": "黑龙江",
-        "鸡西": "黑龙江",
-        "鸡东": "黑龙江",
-        "虎林": "黑龙江",
-        "密山": "黑龙江",
-        "鹤岗": "黑龙江",
-        "萝北": "黑龙江",
-        "绥滨": "黑龙江",
-        "双鸭山": "黑龙江",
-        "集贤": "黑龙江",
-        "友谊": "黑龙江",
-        "宝清": "黑龙江",
-        "饶河": "黑龙江",
-        "大庆": "黑龙江",
-        "肇州": "黑龙江",
-        "肇源": "黑龙江",
-        "林甸": "黑龙江",
-        "杜尔伯特": "黑龙江",
-        "伊春": "黑龙江",
-        "嘉荫": "黑龙江",
-        "铁力": "黑龙江",
-        "佳木斯": "黑龙江",
-        "桦南": "黑龙江",
-        "桦川": "黑龙江",
-        "汤原": "黑龙江",
-        "抚远": "黑龙江",
-        "同江": "黑龙江",
-        "富锦": "黑龙江",
-        "七台河": "黑龙江",
-        "勃利": "黑龙江",
-        "牡丹江": "黑龙江",
-        "东宁": "黑龙江",
-        "林口": "黑龙江",
-        "绥芬河": "黑龙江",
-        "海林": "黑龙江",
-        "宁安": "黑龙江",
-        "穆棱": "黑龙江",
-        "黑河": "黑龙江",
-        "嫩江": "黑龙江",
-        "逊克": "黑龙江",
-        "孙吴": "黑龙江",
-        "北安": "黑龙江",
-        "五大连池": "黑龙江",
-        "绥化": "黑龙江",
-        "望奎": "黑龙江",
-        "兰西": "黑龙江",
-        "青冈": "黑龙江",
-        "庆安": "黑龙江",
-        "明水": "黑龙江",
-        "绥棱": "黑龙江",
-        "安达": "黑龙江",
-        "肇东": "黑龙江",
-        "海伦": "黑龙江",
-        "呼玛": "黑龙江",
-        "塔河": "黑龙江",
-        "漠河": "黑龙江",
-        "上海": "上海",
-        "崇明": "上海",
-        "江苏": "江苏",
-        "南京": "江苏",
-        "溧水": "江苏",
-        "高淳": "江苏",
-        "无锡": "江苏",
-        "江阴": "江苏",
-        "宜兴": "江苏",
-        "徐州": "江苏",
-        "丰县": "江苏",
-        "沛县": "江苏",
-        "铜山": "江苏",
-        "睢宁": "江苏",
-        "新沂": "江苏",
-        "邳州": "江苏",
-        "常州": "江苏",
-        "溧阳": "江苏",
-        "金坛": "江苏",
-        "苏州": "江苏",
-        "常熟": "江苏",
-        "张家港": "江苏",
-        "昆山": "江苏",
-        "吴江": "江苏",
-        "太仓": "江苏",
-        "南通": "江苏",
-        "海安": "江苏",
-        "如东": "江苏",
-        "启东": "江苏",
-        "如皋": "江苏",
-        "通州": "江苏",
-        "海门": "江苏",
-        "连云港": "江苏",
-        "赣榆": "江苏",
-        "东海": "江苏",
-        "灌云": "江苏",
-        "灌南": "江苏",
-        "淮安": "江苏",
-        "涟水": "江苏",
-        "洪泽": "江苏",
-        "盱眙": "江苏",
-        "金湖": "江苏",
-        "盐城": "江苏",
-        "响水": "江苏",
-        "滨海": "江苏",
-        "阜宁": "江苏",
-        "射阳": "江苏",
-        "建湖": "江苏",
-        "东台": "江苏",
-        "大丰": "江苏",
-        "扬州": "江苏",
-        "宝应": "江苏",
-        "仪征": "江苏",
-        "高邮": "江苏",
-        "江都": "江苏",
-        "镇江": "江苏",
-        "丹阳": "江苏",
-        "扬中": "江苏",
-        "句容": "江苏",
-        "泰州": "江苏",
-        "兴化": "江苏",
-        "靖江": "江苏",
-        "泰兴": "江苏",
-        "姜堰": "江苏",
-        "宿迁": "江苏",
-        "沭阳": "江苏",
-        "泗阳": "江苏",
-        "泗洪": "江苏",
-        "浙江": "浙江",
-        "杭州": "浙江",
-        "桐庐": "浙江",
-        "淳安": "浙江",
-        "建德": "浙江",
-        "富阳": "浙江",
-        "临安": "浙江",
-        "宁波": "浙江",
-        "象山": "浙江",
-        "宁海": "浙江",
-        "余姚": "浙江",
-        "慈溪": "浙江",
-        "奉化": "浙江",
-        "温州": "浙江",
-        "洞头": "浙江",
-        "永嘉": "浙江",
-        "平阳": "浙江",
-        "苍南": "浙江",
-        "文成": "浙江",
-        "泰顺": "浙江",
-        "瑞安": "浙江",
-        "乐清": "浙江",
-        "嘉兴": "浙江",
-        "嘉善": "浙江",
-        "海盐": "浙江",
-        "海宁": "浙江",
-        "平湖": "浙江",
-        "桐乡": "浙江",
-        "湖州": "浙江",
-        "德清": "浙江",
-        "长兴": "浙江",
-        "安吉": "浙江",
-        "绍兴": "浙江",
-        "新昌": "浙江",
-        "诸暨": "浙江",
-        "上虞": "浙江",
-        "嵊州": "浙江",
-        "金华": "浙江",
-        "武义": "浙江",
-        "浦江": "浙江",
-        "磐安": "浙江",
-        "兰溪": "浙江",
-        "义乌": "浙江",
-        "东阳": "浙江",
-        "永康": "浙江",
-        "衢州": "浙江",
-        "常山": "浙江",
-        "开化": "浙江",
-        "龙游": "浙江",
-        "江山": "浙江",
-        "舟山": "浙江",
-        "岱山": "浙江",
-        "嵊泗": "浙江",
-        "台州": "浙江",
-        "玉环": "浙江",
-        "三门": "浙江",
-        "天台": "浙江",
-        "仙居": "浙江",
-        "温岭": "浙江",
-        "临海": "浙江",
-        "丽水": "浙江",
-        "青田": "浙江",
-        "缙云": "浙江",
-        "遂昌": "浙江",
-        "松阳": "浙江",
-        "云和": "浙江",
-        "庆元": "浙江",
-        "景宁": "浙江",
-        "龙泉": "浙江",
-        "安徽": "安徽",
-        "合肥": "安徽",
-        "长丰": "安徽",
-        "肥东": "安徽",
-        "肥西": "安徽",
-        "芜湖": "安徽",
-        "繁昌": "安徽",
-        "南陵": "安徽",
-        "蚌埠": "安徽",
-        "怀远": "安徽",
-        "五河": "安徽",
-        "固镇": "安徽",
-        "淮南": "安徽",
-        "凤台": "安徽",
-        "马鞍山": "安徽",
-        "当涂": "安徽",
-        "含山": "安徽",
-        "和县": "安徽",
-        "淮北": "安徽",
-        "濉溪": "安徽",
-        "铜陵": "安徽",
-        "安庆": "安徽",
-        "怀宁": "安徽",
-        "枞阳": "安徽",
-        "潜山": "安徽",
-        "太湖": "安徽",
-        "宿松": "安徽",
-        "望江": "安徽",
-        "岳西": "安徽",
-        "桐城": "安徽",
-        "黄山": "安徽",
-        "歙县": "安徽",
-        "休宁": "安徽",
-        "黟县": "安徽",
-        "祁门": "安徽",
-        "滁州": "安徽",
-        "来安": "安徽",
-        "全椒": "安徽",
-        "定远": "安徽",
-        "凤阳": "安徽",
-        "天长": "安徽",
-        "明光": "安徽",
-        "阜阳": "安徽",
-        "临泉": "安徽",
-        "太和": "安徽",
-        "阜南": "安徽",
-        "颍上": "安徽",
-        "界首": "安徽",
-        "宿州": "安徽",
-        "砀山": "安徽",
-        "萧县": "安徽",
-        "灵璧": "安徽",
-        "泗县": "安徽",
-        "巢湖": "安徽",
-        "庐江": "安徽",
-        "无为": "安徽",
-        "六安": "安徽",
-        "寿县": "安徽",
-        "霍邱": "安徽",
-        "舒城": "安徽",
-        "金寨": "安徽",
-        "霍山": "安徽",
-        "亳州": "安徽",
-        "涡阳": "安徽",
-        "蒙城": "安徽",
-        "利辛": "安徽",
-        "池州": "安徽",
-        "东至": "安徽",
-        "石台": "安徽",
-        "青阳": "安徽",
-        "宣城": "安徽",
-        "郎溪": "安徽",
-        "广德": "安徽",
-        "泾县": "安徽",
-        "绩溪": "安徽",
-        "旌德": "安徽",
-        "宁国": "安徽",
-        "福建": "福建",
-        "福州": "福建",
-        "闽侯": "福建",
-        "连江": "福建",
-        "罗源": "福建",
-        "闽清": "福建",
-        "永泰": "福建",
-        "平潭": "福建",
-        "福清": "福建",
-        "长乐": "福建",
-        "厦门": "福建",
-        "莆田": "福建",
-        "仙游": "福建",
-        "三明": "福建",
-        "明溪": "福建",
-        "清流": "福建",
-        "宁化": "福建",
-        "大田": "福建",
-        "尤溪": "福建",
-        "沙县": "福建",
-        "将乐": "福建",
-        "泰宁": "福建",
-        "建宁": "福建",
-        "永安": "福建",
-        "泉州": "福建",
-        "惠安": "福建",
-        "安溪": "福建",
-        "永春": "福建",
-        "德化": "福建",
-        "金门": "福建",
-        "石狮": "福建",
-        "晋江": "福建",
-        "南安": "福建",
-        "漳州": "福建",
-        "云霄": "福建",
-        "漳浦": "福建",
-        "诏安": "福建",
-        "长泰": "福建",
-        "东山": "福建",
-        "南靖": "福建",
-        "平和": "福建",
-        "华安": "福建",
-        "龙海": "福建",
-        "南平": "福建",
-        "顺昌": "福建",
-        "浦城": "福建",
-        "光泽": "福建",
-        "松溪": "福建",
-        "政和": "福建",
-        "邵武": "福建",
-        "武夷山": "福建",
-        "建瓯": "福建",
-        "建阳": "福建",
-        "龙岩": "福建",
-        "长汀": "福建",
-        "永定": "福建",
-        "上杭": "福建",
-        "武平": "福建",
-        "连城": "福建",
-        "漳平": "福建",
-        "宁德": "福建",
-        "霞浦": "福建",
-        "古田": "福建",
-        "屏南": "福建",
-        "寿宁": "福建",
-        "周宁": "福建",
-        "柘荣": "福建",
-        "福安": "福建",
-        "福鼎": "福建",
-        "江西": "江西",
-        "南昌": "江西",
-        "新建": "江西",
-        "安义": "江西",
-        "进贤": "江西",
-        "景德镇": "江西",
-        "浮梁": "江西",
-        "乐平": "江西",
-        "萍乡": "江西",
-        "莲花": "江西",
-        "上栗": "江西",
-        "芦溪": "江西",
-        "九江": "江西",
-        "武宁": "江西",
-        "修水": "江西",
-        "永修": "江西",
-        "德安": "江西",
-        "星子": "江西",
-        "都昌": "江西",
-        "湖口": "江西",
-        "彭泽": "江西",
-        "瑞昌": "江西",
-        "新余": "江西",
-        "分宜": "江西",
-        "鹰潭": "江西",
-        "余江": "江西",
-        "贵溪": "江西",
-        "赣州": "江西",
-        "赣县": "江西",
-        "信丰": "江西",
-        "大余": "江西",
-        "上犹": "江西",
-        "崇义": "江西",
-        "安远": "江西",
-        "龙南": "江西",
-        "定南": "江西",
-        "全南": "江西",
-        "宁都": "江西",
-        "于都": "江西",
-        "兴国": "江西",
-        "会昌": "江西",
-        "寻乌": "江西",
-        "石城": "江西",
-        "瑞金": "江西",
-        "南康": "江西",
-        "吉安": "江西",
-        "吉水": "江西",
-        "峡江": "江西",
-        "新干": "江西",
-        "永丰": "江西",
-        "泰和": "江西",
-        "遂川": "江西",
-        "万安": "江西",
-        "安福": "江西",
-        "永新": "江西",
-        "井冈山": "江西",
-        "宜春": "江西",
-        "奉新": "江西",
-        "万载": "江西",
-        "上高": "江西",
-        "宜丰": "江西",
-        "靖安": "江西",
-        "铜鼓": "江西",
-        "丰城": "江西",
-        "樟树": "江西",
-        "高安": "江西",
-        "抚州": "江西",
-        "南城": "江西",
-        "黎川": "江西",
-        "南丰": "江西",
-        "崇仁": "江西",
-        "乐安": "江西",
-        "宜黄": "江西",
-        "金溪": "江西",
-        "资溪": "江西",
-        "东乡": "江西",
-        "广昌": "江西",
-        "上饶": "江西",
-        "广丰": "江西",
-        "玉山": "江西",
-        "铅山": "江西",
-        "横峰": "江西",
-        "弋阳": "江西",
-        "余干": "江西",
-        "鄱阳": "江西",
-        "万年": "江西",
-        "婺源": "江西",
-        "德兴": "江西",
-        "山东": "山东",
-        "济南": "山东",
-        "平阴": "山东",
-        "济阳": "山东",
-        "商河": "山东",
-        "章丘": "山东",
-        "青岛": "山东",
-        "胶州": "山东",
-        "即墨": "山东",
-        "平度": "山东",
-        "胶南": "山东",
-        "莱西": "山东",
-        "淄博": "山东",
-        "桓台": "山东",
-        "高青": "山东",
-        "沂源": "山东",
-        "枣庄": "山东",
-        "滕州": "山东",
-        "东营": "山东",
-        "垦利": "山东",
-        "利津": "山东",
-        "广饶": "山东",
-        "烟台": "山东",
-        "长岛": "山东",
-        "龙口": "山东",
-        "莱阳": "山东",
-        "莱州": "山东",
-        "蓬莱": "山东",
-        "招远": "山东",
-        "栖霞": "山东",
-        "海阳": "山东",
-        "潍坊": "山东",
-        "临朐": "山东",
-        "昌乐": "山东",
-        "青州": "山东",
-        "诸城": "山东",
-        "寿光": "山东",
-        "安丘": "山东",
-        "高密": "山东",
-        "昌邑": "山东",
-        "济宁": "山东",
-        "微山": "山东",
-        "鱼台": "山东",
-        "金乡": "山东",
-        "嘉祥": "山东",
-        "汶上": "山东",
-        "泗水": "山东",
-        "梁山": "山东",
-        "曲阜": "山东",
-        "兖州": "山东",
-        "邹城": "山东",
-        "泰安": "山东",
-        "宁阳": "山东",
-        "东平": "山东",
-        "新泰": "山东",
-        "肥城": "山东",
-        "威海": "山东",
-        "文登": "山东",
-        "荣成": "山东",
-        "乳山": "山东",
-        "日照": "山东",
-        "五莲": "山东",
-        "莒县": "山东",
-        "莱芜": "山东",
-        "临沂": "山东",
-        "沂南": "山东",
-        "郯城": "山东",
-        "沂水": "山东",
-        "苍山": "山东",
-        "费县": "山东",
-        "平邑": "山东",
-        "莒南": "山东",
-        "蒙阴": "山东",
-        "临沭": "山东",
-        "德州": "山东",
-        "陵县": "山东",
-        "宁津": "山东",
-        "庆云": "山东",
-        "临邑": "山东",
-        "齐河": "山东",
-        "平原": "山东",
-        "夏津": "山东",
-        "武城": "山东",
-        "乐陵": "山东",
-        "禹城": "山东",
-        "聊城": "山东",
-        "阳谷": "山东",
-        "莘县": "山东",
-        "茌平": "山东",
-        "东阿": "山东",
-        "冠县": "山东",
-        "高唐": "山东",
-        "临清": "山东",
-        "滨州": "山东",
-        "惠民": "山东",
-        "阳信": "山东",
-        "无棣": "山东",
-        "沾化": "山东",
-        "博兴": "山东",
-        "邹平": "山东",
-        "菏泽": "山东",
-        "曹县": "山东",
-        "单县": "山东",
-        "成武": "山东",
-        "巨野": "山东",
-        "郓城": "山东",
-        "鄄城": "山东",
-        "定陶": "山东",
-        "东明": "山东",
-        "河南": "河南",
-        "郑州": "河南",
-        "管城": "河南",
-        "中牟": "河南",
-        "巩义": "河南",
-        "荥阳": "河南",
-        "新密": "河南",
-        "新郑": "河南",
-        "登封": "河南",
-        "开封": "河南",
-        "杞县": "河南",
-        "通许": "河南",
-        "尉氏": "河南",
-        "兰考": "河南",
-        "洛阳": "河南",
-        "孟津": "河南",
-        "新安": "河南",
-        "栾川": "河南",
-        "嵩县": "河南",
-        "汝阳": "河南",
-        "宜阳": "河南",
-        "洛宁": "河南",
-        "伊川": "河南",
-        "偃师": "河南",
-        "平顶山": "河南",
-        "宝丰": "河南",
-        "叶县": "河南",
-        "鲁山": "河南",
-        "郏县": "河南",
-        "舞钢": "河南",
-        "汝州": "河南",
-        "安阳": "河南",
-        "汤阴": "河南",
-        "滑县": "河南",
-        "内黄": "河南",
-        "林州": "河南",
-        "鹤壁": "河南",
-        "浚县": "河南",
-        "淇县": "河南",
-        "新乡": "河南",
-        "获嘉": "河南",
-        "原阳": "河南",
-        "延津": "河南",
-        "封丘": "河南",
-        "长垣": "河南",
-        "卫辉": "河南",
-        "辉市": "河南",
-        "焦作": "河南",
-        "修武": "河南",
-        "博爱": "河南",
-        "武陟": "河南",
-        "温县": "河南",
-        "沁阳": "河南",
-        "孟州": "河南",
-        "濮阳": "河南",
-        "清丰": "河南",
-        "南乐": "河南",
-        "范县": "河南",
-        "台前": "河南",
-        "许昌": "河南",
-        "鄢陵": "河南",
-        "襄城": "河南",
-        "禹州": "河南",
-        "长葛": "河南",
-        "漯河": "河南",
-        "舞阳": "河南",
-        "临颍": "河南",
-        "三门峡": "河南",
-        "渑池": "河南",
-        "陕县": "河南",
-        "卢氏": "河南",
-        "义马": "河南",
-        "灵宝": "河南",
-        "南阳": "河南",
-        "南召": "河南",
-        "方城": "河南",
-        "西峡": "河南",
-        "镇平": "河南",
-        "内乡": "河南",
-        "淅川": "河南",
-        "社旗": "河南",
-        "唐河": "河南",
-        "新野": "河南",
-        "桐柏": "河南",
-        "邓州": "河南",
-        "商丘": "河南",
-        "民权": "河南",
-        "睢县": "河南",
-        "宁陵": "河南",
-        "柘城": "河南",
-        "虞城": "河南",
-        "夏邑": "河南",
-        "永城": "河南",
-        "信阳": "河南",
-        "罗山": "河南",
-        "光山": "河南",
-        "新县": "河南",
-        "商城": "河南",
-        "固始": "河南",
-        "潢川": "河南",
-        "淮滨": "河南",
-        "息县": "河南",
-        "周口": "河南",
-        "扶沟": "河南",
-        "西华": "河南",
-        "商水": "河南",
-        "沈丘": "河南",
-        "郸城": "河南",
-        "淮阳": "河南",
-        "太康": "河南",
-        "鹿邑": "河南",
-        "项城": "河南",
-        "驻马店": "河南",
-        "西平": "河南",
-        "上蔡": "河南",
-        "平舆": "河南",
-        "正阳": "河南",
-        "确山": "河南",
-        "泌阳": "河南",
-        "汝南": "河南",
-        "遂平": "河南",
-        "新蔡": "河南",
-        "济源": "河南",
-        "湖北": "湖北",
-        "武汉": "湖北",
-        "黄石": "湖北",
-        "阳新": "湖北",
-        "大冶": "湖北",
-        "十堰": "湖北",
-        "郧县": "湖北",
-        "郧西": "湖北",
-        "竹山": "湖北",
-        "竹溪": "湖北",
-        "房县": "湖北",
-        "丹江口": "湖北",
-        "宜昌": "湖北",
-        "远安": "湖北",
-        "兴山": "湖北",
-        "秭归": "湖北",
-        "长阳": "湖北",
-        "五峰": "湖北",
-        "宜都": "湖北",
-        "当阳": "湖北",
-        "枝江": "湖北",
-        "襄阳": "湖北",
-        "南漳": "湖北",
-        "谷城": "湖北",
-        "保康": "湖北",
-        "老河口": "湖北",
-        "枣阳": "湖北",
-        "宜城": "湖北",
-        "鄂州": "湖北",
-        "荆门": "湖北",
-        "京山": "湖北",
-        "沙洋": "湖北",
-        "钟祥": "湖北",
-        "屈家岭": "湖北",
-        "孝感": "湖北",
-        "孝昌": "湖北",
-        "大悟": "湖北",
-        "云梦": "湖北",
-        "应城": "湖北",
-        "安陆": "湖北",
-        "汉川": "湖北",
-        "荆州": "湖北",
-        "公安": "湖北",
-        "监利": "湖北",
-        "江陵": "湖北",
-        "石首": "湖北",
-        "洪湖": "湖北",
-        "松滋": "湖北",
-        "黄冈": "湖北",
-        "团风": "湖北",
-        "红安": "湖北",
-        "罗田": "湖北",
-        "英山": "湖北",
-        "浠水": "湖北",
-        "蕲春": "湖北",
-        "黄梅": "湖北",
-        "麻城": "湖北",
-        "武穴": "湖北",
-        "咸宁": "湖北",
-        "嘉鱼": "湖北",
-        "通城": "湖北",
-        "崇阳": "湖北",
-        "通山": "湖北",
-        "赤壁": "湖北",
-        "随州": "湖北",
-        "随县": "湖北",
-        "广水": "湖北",
-        "恩施州": "湖北",
-        "恩施": "湖北",
-        "利川": "湖北",
-        "建始": "湖北",
-        "巴东": "湖北",
-        "宣恩": "湖北",
-        "咸丰": "湖北",
-        "来凤": "湖北",
-        "鹤峰": "湖北",
-        "仙桃": "湖北",
-        "潜江": "湖北",
-        "天门": "湖北",
-        "神农架": "湖北",
-        "江汉油田": "湖北",
-        "湖南": "湖南",
-        "长沙": "湖南",
-        "望城": "湖南",
-        "宁乡": "湖南",
-        "浏阳": "湖南",
-        "株洲": "湖南",
-        "攸县": "湖南",
-        "茶陵": "湖南",
-        "炎陵": "湖南",
-        "醴陵": "湖南",
-        "湘潭": "湖南",
-        "湘乡": "湖南",
-        "韶山": "湖南",
-        "衡阳": "湖南",
-        "衡南": "湖南",
-        "衡山": "湖南",
-        "衡东": "湖南",
-        "祁东": "湖南",
-        "耒阳": "湖南",
-        "常宁": "湖南",
-        "邵阳": "湖南",
-        "邵东": "湖南",
-        "新邵": "湖南",
-        "隆回": "湖南",
-        "洞口": "湖南",
-        "绥宁": "湖南",
-        "新宁": "湖南",
-        "城步": "湖南",
-        "武冈": "湖南",
-        "岳阳": "湖南",
-        "华容": "湖南",
-        "湘阴": "湖南",
-        "平江": "湖南",
-        "汨罗": "湖南",
-        "临湘": "湖南",
-        "常德": "湖南",
-        "安乡": "湖南",
-        "汉寿": "湖南",
-        "澧县": "湖南",
-        "临澧": "湖南",
-        "桃源": "湖南",
-        "石门": "湖南",
-        "津市": "湖南",
-        "张家界": "湖南",
-        "慈利": "湖南",
-        "桑植": "湖南",
-        "益阳": "湖南",
-        "南县": "湖南",
-        "桃江": "湖南",
-        "安化": "湖南",
-        "沅江": "湖南",
-        "郴州": "湖南",
-        "桂阳": "湖南",
-        "宜章": "湖南",
-        "永兴": "湖南",
-        "嘉禾": "湖南",
-        "临武": "湖南",
-        "汝城": "湖南",
-        "桂东": "湖南",
-        "安仁": "湖南",
-        "资兴": "湖南",
-        "永州": "湖南",
-        "祁阳": "湖南",
-        "东安": "湖南",
-        "双牌": "湖南",
-        "道县": "湖南",
-        "江永": "湖南",
-        "宁远": "湖南",
-        "蓝山": "湖南",
-        "新田": "湖南",
-        "江华": "湖南",
-        "怀化": "湖南",
-        "中方": "湖南",
-        "沅陵": "湖南",
-        "辰溪": "湖南",
-        "溆浦": "湖南",
-        "会同": "湖南",
-        "麻阳": "湖南",
-        "新晃": "湖南",
-        "芷江": "湖南",
-        "靖州": "湖南",
-        "通道": "湖南",
-        "洪江": "湖南",
-        "娄底": "湖南",
-        "双峰": "湖南",
-        "新化": "湖南",
-        "冷水江": "湖南",
-        "涟源": "湖南",
-        "湘西": "湖南",
-        "吉首": "湖南",
-        "泸溪": "湖南",
-        "凤凰": "湖南",
-        "花垣": "湖南",
-        "保靖": "湖南",
-        "古丈": "湖南",
-        "永顺": "湖南",
-        "龙山": "湖南",
-        "广东": "广东",
-        "广州": "广东",
-        "增城": "广东",
-        "从化": "广东",
-        "韶关": "广东",
-        "始兴": "广东",
-        "仁化": "广东",
-        "翁源": "广东",
-        "乳源": "广东",
-        "新丰": "广东",
-        "乐昌": "广东",
-        "南雄": "广东",
-        "深圳": "广东",
-        "珠海": "广东",
-        "汕头": "广东",
-        "南澳": "广东",
-        "佛山": "广东",
-        "江门": "广东",
-        "台山": "广东",
-        "开平": "广东",
-        "鹤山": "广东",
-        "恩平": "广东",
-        "湛江": "广东",
-        "遂溪": "广东",
-        "徐闻": "广东",
-        "廉江": "广东",
-        "雷州": "广东",
-        "吴川": "广东",
-        "茂名": "广东",
-        "电白": "广东",
-        "高州": "广东",
-        "化州": "广东",
-        "信宜": "广东",
-        "肇庆": "广东",
-        "广宁": "广东",
-        "怀集": "广东",
-        "封开": "广东",
-        "德庆": "广东",
-        "高要": "广东",
-        "四会": "广东",
-        "惠州": "广东",
-        "博罗": "广东",
-        "惠东": "广东",
-        "龙门": "广东",
-        "梅州": "广东",
-        "梅县": "广东",
-        "大埔": "广东",
-        "丰顺": "广东",
-        "五华": "广东",
-        "平远": "广东",
-        "蕉岭": "广东",
-        "兴宁": "广东",
-        "汕尾": "广东",
-        "海丰": "广东",
-        "陆河": "广东",
-        "陆丰": "广东",
-        "河源": "广东",
-        "紫金": "广东",
-        "龙川": "广东",
-        "连平": "广东",
-        "和平": "广东",
-        "东源": "广东",
-        "阳江": "广东",
-        "阳西": "广东",
-        "阳东": "广东",
-        "阳春": "广东",
-        "清远": "广东",
-        "佛冈": "广东",
-        "阳山": "广东",
-        "连山": "广东",
-        "连南": "广东",
-        "清新": "广东",
-        "英德": "广东",
-        "连州": "广东",
-        "东莞": "广东",
-        "中山": "广东",
-        "潮州": "广东",
-        "潮安": "广东",
-        "饶平": "广东",
-        "揭阳": "广东",
-        "揭东": "广东",
-        "揭西": "广东",
-        "惠来": "广东",
-        "普宁": "广东",
-        "云浮": "广东",
-        "新兴": "广东",
-        "郁南": "广东",
-        "云安": "广东",
-        "罗定": "广东",
-        "广西": "广西",
-        "南宁": "广西",
-        "武鸣": "广西",
-        "隆安": "广西",
-        "马山": "广西",
-        "上林": "广西",
-        "宾阳": "广西",
-        "横县": "广西",
-        "柳州": "广西",
-        "柳江": "广西",
-        "柳城": "广西",
-        "鹿寨": "广西",
-        "融安": "广西",
-        "融水": "广西",
-        "三江": "广西",
-        "桂林": "广西",
-        "阳朔": "广西",
-        "临桂": "广西",
-        "灵川": "广西",
-        "全州": "广西",
-        "兴安": "广西",
-        "永福": "广西",
-        "灌阳": "广西",
-        "龙胜": "广西",
-        "资源": "广西",
-        "平乐": "广西",
-        "荔蒲": "广西",
-        "恭城": "广西",
-        "梧州": "广西",
-        "苍梧": "广西",
-        "藤县": "广西",
-        "蒙山": "广西",
-        "岑溪": "广西",
-        "北海": "广西",
-        "合浦": "广西",
-        "防城港": "广西",
-        "上思": "广西",
-        "东兴": "广西",
-        "钦州": "广西",
-        "灵山": "广西",
-        "浦北": "广西",
-        "贵港": "广西",
-        "平南": "广西",
-        "桂平": "广西",
-        "玉林": "广西",
-        "容县": "广西",
-        "陆川": "广西",
-        "博白": "广西",
-        "兴业": "广西",
-        "北流": "广西",
-        "百色": "广西",
-        "田阳": "广西",
-        "田东": "广西",
-        "平果": "广西",
-        "德保": "广西",
-        "靖西": "广西",
-        "那坡": "广西",
-        "凌云": "广西",
-        "乐业": "广西",
-        "田林": "广西",
-        "西林": "广西",
-        "隆林": "广西",
-        "贺州": "广西",
-        "昭平": "广西",
-        "钟山": "广西",
-        "富川": "广西",
-        "河池": "广西",
-        "南丹": "广西",
-        "天峨": "广西",
-        "凤山": "广西",
-        "东兰": "广西",
-        "罗城": "广西",
-        "环江": "广西",
-        "巴马": "广西",
-        "都安": "广西",
-        "大化": "广西",
-        "宜州": "广西",
-        "来宾": "广西",
-        "忻城": "广西",
-        "象州": "广西",
-        "武宣": "广西",
-        "金秀": "广西",
-        "合山": "广西",
-        "崇左": "广西",
-        "扶绥": "广西",
-        "宁明": "广西",
-        "龙州": "广西",
-        "大新": "广西",
-        "天等": "广西",
-        "凭祥": "广西",
-        "海南": "海南",
-        "海口": "海南",
-        "三亚": "海南",
-        "五指山": "海南",
-        "琼海": "海南",
-        "儋州": "海南",
-        "文昌": "海南",
-        "万宁": "海南",
-        "东方市": "海南",
-        "定安": "海南",
-        "屯昌": "海南",
-        "澄迈": "海南",
-        "临高": "海南",
-        "白沙县": "海南",
-        "白沙黎族自治县": "海南",
-        "昌江": "海南",
-        "乐东": "海南",
-        "陵水": "海南",
-        "保亭": "海南",
-        "琼中": "海南",
-        "重庆": "重庆",
-        "綦江": "重庆",
-        "潼南": "重庆",
-        "铜梁": "重庆",
-        "大足": "重庆",
-        "荣昌": "重庆",
-        "璧山": "重庆",
-        "梁平": "重庆",
-        "城口": "重庆",
-        "丰都": "重庆",
-        "垫江": "重庆",
-        "武隆": "重庆",
-        "忠县": "重庆",
-        "开县": "重庆",
-        "云阳": "重庆",
-        "奉节": "重庆",
-        "巫山": "重庆",
-        "巫溪": "重庆",
-        "石柱土家族自治": "重庆",
-        "秀山土家族苗族自治": "重庆",
-        "酉阳土家族苗族自治": "重庆",
-        "彭水苗族土家族自治": "重庆",
-        "四川": "四川",
-        "成都": "四川",
-        "金堂": "四川",
-        "双流": "四川",
-        "郫县": "四川",
-        "大邑": "四川",
-        "蒲江": "四川",
-        "新津": "四川",
-        "都江堰": "四川",
-        "彭州": "四川",
-        "邛崃": "四川",
-        "崇州": "四川",
-        "自贡": "四川",
-        "荣县": "四川",
-        "富顺": "四川",
-        "攀枝花": "四川",
-        "米易": "四川",
-        "盐边": "四川",
-        "泸州": "四川",
-        "泸县": "四川",
-        "合江": "四川",
-        "叙永": "四川",
-        "古蔺": "四川",
-        "南部县": "四川",
-        "德阳": "四川",
-        "中江": "四川",
-        "罗江": "四川",
-        "广汉": "四川",
-        "什邡": "四川",
-        "绵竹": "四川",
-        "绵阳": "四川",
-        "三台": "四川",
-        "盐亭": "四川",
-        "安县": "四川",
-        "梓潼": "四川",
-        "北川羌族自治": "四川",
-        "平武": "四川",
-        "江油": "四川",
-        "广元": "四川",
-        "旺苍": "四川",
-        "青川": "四川",
-        "剑阁": "四川",
-        "苍溪": "四川",
-        "遂宁": "四川",
-        "蓬溪": "四川",
-        "射洪": "四川",
-        "大英": "四川",
-        "内江": "四川",
-        "威远": "四川",
-        "资中": "四川",
-        "隆昌": "四川",
-        "乐山": "四川",
-        "犍为": "四川",
-        "井研": "四川",
-        "夹江": "四川",
-        "沐川": "四川",
-        "峨边彝族自治": "四川",
-        "马边彝族自治": "四川",
-        "峨眉山": "四川",
-        "南充": "四川",
-        "营山": "四川",
-        "蓬安": "四川",
-        "仪陇": "四川",
-        "西充": "四川",
-        "阆中": "四川",
-        "眉山": "四川",
-        "仁寿": "四川",
-        "彭山": "四川",
-        "洪雅": "四川",
-        "丹棱": "四川",
-        "青神": "四川",
-        "宜宾": "四川",
-        "南溪": "四川",
-        "江安": "四川",
-        "长宁": "四川",
-        "高县": "四川",
-        "珙县": "四川",
-        "筠连": "四川",
-        "兴文": "四川",
-        "屏山": "四川",
-        "广安": "四川",
-        "岳池": "四川",
-        "武胜": "四川",
-        "邻水": "四川",
-        "华蓥": "四川",
-        "达州": "四川",
-        "达县": "四川",
-        "宣汉": "四川",
-        "开江": "四川",
-        "大竹": "四川",
-        "渠县": "四川",
-        "万源": "四川",
-        "雅安": "四川",
-        "名山": "四川",
-        "荥经": "四川",
-        "汉源": "四川",
-        "石棉": "四川",
-        "天全": "四川",
-        "芦山": "四川",
-        "宝兴": "四川",
-        "巴中": "四川",
-        "通江": "四川",
-        "南江": "四川",
-        "平昌": "四川",
-        "资阳": "四川",
-        "安岳": "四川",
-        "乐至": "四川",
-        "简阳": "四川",
-        "阿坝州": "四川",
-        "汶川": "四川",
-        "理县": "四川",
-        "茂县": "四川",
-        "松潘": "四川",
-        "九寨沟": "四川",
-        "金川": "四川",
-        "小金": "四川",
-        "黑水": "四川",
-        "马尔康": "四川",
-        "壤塘": "四川",
-        "阿坝": "四川",
-        "若尔盖": "四川",
-        "红原": "四川",
-        "甘孜": "四川",
-        "康定": "四川",
-        "泸定": "四川",
-        "丹巴": "四川",
-        "九龙": "四川",
-        "雅江": "四川",
-        "道孚": "四川",
-        "炉霍": "四川",
-        "新龙": "四川",
-        "德格": "四川",
-        "白玉": "四川",
-        "石渠": "四川",
-        "色达": "四川",
-        "理塘": "四川",
-        "巴塘": "四川",
-        "乡城": "四川",
-        "稻城": "四川",
-        "得荣": "四川",
-        "凉山": "四川",
-        "西昌": "四川",
-        "木里": "四川",
-        "盐源": "四川",
-        "德昌": "四川",
-        "会理": "四川",
-        "会东": "四川",
-        "宁南": "四川",
-        "普格": "四川",
-        "布拖": "四川",
-        "金阳": "四川",
-        "昭觉": "四川",
-        "喜德": "四川",
-        "冕宁": "四川",
-        "越西": "四川",
-        "甘洛": "四川",
-        "美姑": "四川",
-        "雷波": "四川",
-        "贵州": "贵州",
-        "贵阳": "贵州",
-        "开阳": "贵州",
-        "息烽": "贵州",
-        "修文": "贵州",
-        "清镇": "贵州",
-        "六盘水": "贵州",
-        "水城": "贵州",
-        "盘县": "贵州",
-        "遵义": "贵州",
-        "桐梓": "贵州",
-        "绥阳": "贵州",
-        "正安": "贵州",
-        "道真": "贵州",
-        "务川": "贵州",
-        "凤冈": "贵州",
-        "湄潭": "贵州",
-        "余庆": "贵州",
-        "习水": "贵州",
-        "赤水": "贵州",
-        "仁怀": "贵州",
-        "安顺": "贵州",
-        "平坝": "贵州",
-        "普定": "贵州",
-        "镇宁": "贵州",
-        "关岭": "贵州",
-        "紫云": "贵州",
-        "毕节": "贵州",
-        "大方": "贵州",
-        "黔西": "贵州",
-        "金沙": "贵州",
-        "织金": "贵州",
-        "纳雍": "贵州",
-        "威宁": "贵州",
-        "赫章": "贵州",
-        "铜仁": "贵州",
-        "江口": "贵州",
-        "玉屏": "贵州",
-        "石阡": "贵州",
-        "思南": "贵州",
-        "印江": "贵州",
-        "德江": "贵州",
-        "沿河": "贵州",
-        "松桃": "贵州",
-        "黔西南": "贵州",
-        "兴义": "贵州",
-        "兴仁": "贵州",
-        "普安": "贵州",
-        "晴隆": "贵州",
-        "贞丰": "贵州",
-        "望谟": "贵州",
-        "册亨": "贵州",
-        "安龙": "贵州",
-        "黔东南": "贵州",
-        "凯里": "贵州",
-        "黄平": "贵州",
-        "施秉": "贵州",
-        "三穗": "贵州",
-        "镇远": "贵州",
-        "岑巩": "贵州",
-        "天柱": "贵州",
-        "锦屏": "贵州",
-        "剑河": "贵州",
-        "台江": "贵州",
-        "黎平": "贵州",
-        "榕江": "贵州",
-        "从江": "贵州",
-        "雷山": "贵州",
-        "麻江": "贵州",
-        "丹寨": "贵州",
-        "黔南布": "贵州",
-        "都匀": "贵州",
-        "福泉": "贵州",
-        "荔波": "贵州",
-        "贵定": "贵州",
-        "瓮安": "贵州",
-        "独山": "贵州",
-        "平塘": "贵州",
-        "罗甸": "贵州",
-        "长顺": "贵州",
-        "龙里": "贵州",
-        "惠水": "贵州",
-        "三都": "贵州",
-        "云南": "云南",
-        "昆明": "云南",
-        "呈贡": "云南",
-        "晋宁": "云南",
-        "富民": "云南",
-        "宜良": "云南",
-        "石林": "云南",
-        "嵩明": "云南",
-        "禄劝": "云南",
-        "寻甸": "云南",
-        "安宁": "云南",
-        "曲靖": "云南",
-        "马龙": "云南",
-        "陆良": "云南",
-        "师宗": "云南",
-        "罗平": "云南",
-        "富源": "云南",
-        "会泽": "云南",
-        "沾益": "云南",
-        "宣威": "云南",
-        "玉溪": "云南",
-        "江川": "云南",
-        "澄江": "云南",
-        "通海": "云南",
-        "华宁": "云南",
-        "易门": "云南",
-        "峨山": "云南",
-        "新平": "云南",
-        "元江": "云南",
-        "保山": "云南",
-        "施甸": "云南",
-        "腾冲": "云南",
-        "龙陵": "云南",
-        "昌宁": "云南",
-        "昭通": "云南",
-        "鲁甸": "云南",
-        "巧家": "云南",
-        "盐津": "云南",
-        "大关": "云南",
-        "永善": "云南",
-        "绥江": "云南",
-        "镇雄": "云南",
-        "彝良": "云南",
-        "威信": "云南",
-        "水富": "云南",
-        "丽江": "云南",
-        "玉龙": "云南",
-        "永胜": "云南",
-        "华坪": "云南",
-        "宁蒗": "云南",
-        "普洱": "云南",
-        "宁洱": "云南",
-        "墨江": "云南",
-        "景东": "云南",
-        "景谷": "云南",
-        "镇沅": "云南",
-        "江城": "云南",
-        "孟连": "云南",
-        "澜沧": "云南",
-        "西盟": "云南",
-        "临沧": "云南",
-        "凤庆": "云南",
-        "云县": "云南",
-        "永德": "云南",
-        "镇康": "云南",
-        "双江": "云南",
-        "耿马": "云南",
-        "沧源": "云南",
-        "楚雄": "云南",
-        "双柏": "云南",
-        "牟定": "云南",
-        "南华": "云南",
-        "姚安": "云南",
-        "大姚": "云南",
-        "永仁": "云南",
-        "元谋": "云南",
-        "武定": "云南",
-        "禄丰": "云南",
-        "红河": "云南",
-        "个旧": "云南",
-        "开远": "云南",
-        "蒙自": "云南",
-        "屏边": "云南",
-        "建水": "云南",
-        "石屏": "云南",
-        "弥勒": "云南",
-        "泸西": "云南",
-        "元阳": "云南",
-        "金平": "云南",
-        "绿春": "云南",
-        "河口": "云南",
-        "文山": "云南",
-        "砚山": "云南",
-        "西畴": "云南",
-        "麻栗坡": "云南",
-        "马关": "云南",
-        "丘北": "云南",
-        "广南": "云南",
-        "富宁": "云南",
-        "西双版纳": "云南",
-        "景洪": "云南",
-        "勐海": "云南",
-        "勐腊": "云南",
-        "大理": "云南",
-        "漾濞": "云南",
-        "祥云": "云南",
-        "宾川": "云南",
-        "弥渡": "云南",
-        "南涧": "云南",
-        "巍山": "云南",
-        "永平": "云南",
-        "云龙": "云南",
-        "洱源": "云南",
-        "剑川": "云南",
-        "鹤庆": "云南",
-        "德宏": "云南",
-        "瑞丽": "云南",
-        "潞西": "云南",
-        "梁河": "云南",
-        "盈江": "云南",
-        "陇川": "云南",
-        "怒江": "云南",
-        "泸水": "云南",
-        "福贡": "云南",
-        "贡山": "云南",
-        "兰坪": "云南",
-        "迪庆": "云南",
-        "香格里拉": "云南",
-        "德钦": "云南",
-        "维西": "云南",
-        "西藏": "西藏",
-        "拉萨": "西藏",
-        "林周": "西藏",
-        "当雄": "西藏",
-        "尼木": "西藏",
-        "曲水": "西藏",
-        "堆龙德庆": "西藏",
-        "达孜": "西藏",
-        "墨竹工卡": "西藏",
-        "昌都": "西藏",
-        "江达": "西藏",
-        "贡觉": "西藏",
-        "类乌齐": "西藏",
-        "丁青": "西藏",
-        "察雅": "西藏",
-        "八宿": "西藏",
-        "左贡": "西藏",
-        "芒康": "西藏",
-        "洛隆": "西藏",
-        "边坝": "西藏",
-        "乃东": "西藏",
-        "扎囊": "西藏",
-        "贡嘎": "西藏",
-        "桑日": "西藏",
-        "琼结": "西藏",
-        "曲松": "西藏",
-        "措美": "西藏",
-        "洛扎": "西藏",
-        "加查": "西藏",
-        "隆子": "西藏",
-        "错那": "西藏",
-        "浪卡子": "西藏",
-        "日喀则": "西藏",
-        "南木林": "西藏",
-        "江孜": "西藏",
-        "定日": "西藏",
-        "萨迦": "西藏",
-        "拉孜": "西藏",
-        "昂仁": "西藏",
-        "谢通门": "西藏",
-        "白朗": "西藏",
-        "仁布": "西藏",
-        "康马": "西藏",
-        "定结": "西藏",
-        "仲巴": "西藏",
-        "亚东": "西藏",
-        "吉隆": "西藏",
-        "聂拉木": "西藏",
-        "萨嘎": "西藏",
-        "岗巴": "西藏",
-        "那曲": "西藏",
-        "嘉黎": "西藏",
-        "比如": "西藏",
-        "聂荣": "西藏",
-        "安多": "西藏",
-        "申扎": "西藏",
-        "索县": "西藏",
-        "班戈": "西藏",
-        "巴青": "西藏",
-        "尼玛": "西藏",
-        "普兰": "西藏",
-        "札达": "西藏",
-        "噶尔": "西藏",
-        "日土": "西藏",
-        "革吉": "西藏",
-        "改则": "西藏",
-        "措勤": "西藏",
-        "林芝": "西藏",
-        "工布江达": "西藏",
-        "米林": "西藏",
-        "墨脱": "西藏",
-        "波密": "西藏",
-        "察隅": "西藏",
-        "朗县": "西藏",
-        "陕西": "陕西",
-        "西安": "陕西",
-        "蓝田": "陕西",
-        "周至": "陕西",
-        "户县": "陕西",
-        "高陵": "陕西",
-        "铜川": "陕西",
-        "宜君": "陕西",
-        "宝鸡": "陕西",
-        "凤翔": "陕西",
-        "岐山": "陕西",
-        "扶风": "陕西",
-        "眉县": "陕西",
-        "陇县": "陕西",
-        "千阳": "陕西",
-        "麟游": "陕西",
-        "凤县": "陕西",
-        "太白": "陕西",
-        "咸阳": "陕西",
-        "三原": "陕西",
-        "泾阳": "陕西",
-        "乾县": "陕西",
-        "礼泉": "陕西",
-        "永寿": "陕西",
-        "彬县": "陕西",
-        "长武": "陕西",
-        "旬邑": "陕西",
-        "淳化": "陕西",
-        "武功": "陕西",
-        "兴平": "陕西",
-        "渭南": "陕西",
-        "华县": "陕西",
-        "潼关": "陕西",
-        "大荔": "陕西",
-        "合阳": "陕西",
-        "澄城": "陕西",
-        "蒲城": "陕西",
-        "白水": "陕西",
-        "富平": "陕西",
-        "韩城": "陕西",
-        "华阴": "陕西",
-        "延安": "陕西",
-        "延长": "陕西",
-        "延川": "陕西",
-        "子长": "陕西",
-        "安塞": "陕西",
-        "志丹": "陕西",
-        "吴起": "陕西",
-        "甘泉": "陕西",
-        "富县": "陕西",
-        "洛川": "陕西",
-        "宜川": "陕西",
-        "黄龙": "陕西",
-        "黄陵": "陕西",
-        "汉中": "陕西",
-        "南郑": "陕西",
-        "城固": "陕西",
-        "洋县": "陕西",
-        "西乡": "陕西",
-        "勉县": "陕西",
-        "宁强": "陕西",
-        "略阳": "陕西",
-        "镇巴": "陕西",
-        "留坝": "陕西",
-        "佛坪": "陕西",
-        "榆林": "陕西",
-        "神木": "陕西",
-        "府谷": "陕西",
-        "横山": "陕西",
-        "靖边": "陕西",
-        "定边": "陕西",
-        "绥德": "陕西",
-        "米脂": "陕西",
-        "佳县": "陕西",
-        "吴堡": "陕西",
-        "清涧": "陕西",
-        "子洲": "陕西",
-        "安康": "陕西",
-        "汉阴": "陕西",
-        "石泉": "陕西",
-        "宁陕": "陕西",
-        "紫阳": "陕西",
-        "岚皋": "陕西",
-        "平利": "陕西",
-        "镇坪": "陕西",
-        "旬阳": "陕西",
-        "白河": "陕西",
-        "商洛": "陕西",
-        "洛南": "陕西",
-        "丹凤": "陕西",
-        "商南": "陕西",
-        "山阳": "陕西",
-        "镇安": "陕西",
-        "柞水": "陕西",
-        "甘肃": "甘肃",
-        "兰州": "甘肃",
-        "永登": "甘肃",
-        "皋兰": "甘肃",
-        "榆中": "甘肃",
-        "嘉峪关": "甘肃",
-        "金昌": "甘肃",
-        "永昌": "甘肃",
-        "白银": "甘肃",
-        "靖远": "甘肃",
-        "会宁": "甘肃",
-        "景泰": "甘肃",
-        "天水": "甘肃",
-        "清水": "甘肃",
-        "秦安": "甘肃",
-        "甘谷": "甘肃",
-        "武山": "甘肃",
-        "张家川": "甘肃",
-        "武威": "甘肃",
-        "民勤": "甘肃",
-        "古浪": "甘肃",
-        "天祝": "甘肃",
-        "张掖": "甘肃",
-        "肃南": "甘肃",
-        "民乐": "甘肃",
-        "临泽": "甘肃",
-        "高台": "甘肃",
-        "山丹": "甘肃",
-        "平凉": "甘肃",
-        "泾川": "甘肃",
-        "灵台": "甘肃",
-        "崇信": "甘肃",
-        "华亭": "甘肃",
-        "庄浪": "甘肃",
-        "静宁": "甘肃",
-        "酒泉": "甘肃",
-        "金塔": "甘肃",
-        "瓜州": "甘肃",
-        "肃北": "甘肃",
-        "阿克塞": "甘肃",
-        "玉门": "甘肃",
-        "敦煌": "甘肃",
-        "庆阳": "甘肃",
-        "庆城": "甘肃",
-        "环县": "甘肃",
-        "华池": "甘肃",
-        "合水": "甘肃",
-        "正宁": "甘肃",
-        "宁县": "甘肃",
-        "镇原": "甘肃",
-        "定西": "甘肃",
-        "通渭": "甘肃",
-        "陇西": "甘肃",
-        "渭源": "甘肃",
-        "临洮": "甘肃",
-        "漳县": "甘肃",
-        "岷县": "甘肃",
-        "陇南": "甘肃",
-        "成县": "甘肃",
-        "文县": "甘肃",
-        "宕昌": "甘肃",
-        "康县": "甘肃",
-        "西和": "甘肃",
-        "礼县": "甘肃",
-        "徽县": "甘肃",
-        "两当": "甘肃",
-        "临夏": "甘肃",
-        "康乐": "甘肃",
-        "永靖": "甘肃",
-        "广河": "甘肃",
-        "和政": "甘肃",
-        "积石山": "甘肃",
-        "合作市": "甘肃",
-        "临潭": "甘肃",
-        "卓尼": "甘肃",
-        "舟曲": "甘肃",
-        "迭部": "甘肃",
-        "玛曲": "甘肃",
-        "碌曲": "甘肃",
-        "夏河": "甘肃",
-        "青海": "青海",
-        "西宁": "青海",
-        "大通": "青海",
-        "湟中": "青海",
-        "湟源": "青海",
-        "平安县": "青海",
-        "民和": "青海",
-        "乐都": "青海",
-        "互助土族自治县": "青海",
-        "互助县": "青海",
-        "化隆": "青海",
-        "循化": "青海",
-        "海北": "青海",
-        "门源": "青海",
-        "祁连": "青海",
-        "海晏": "青海",
-        "刚察": "青海",
-        "黄南": "青海",
-        "同仁": "青海",
-        "尖扎": "青海",
-        "泽库": "青海",
-        "共和": "青海",
-        "同德": "青海",
-        "贵德": "青海",
-        "兴海": "青海",
-        "贵南": "青海",
-        "果洛": "青海",
-        "玛沁": "青海",
-        "班玛": "青海",
-        "甘德": "青海",
-        "达日": "青海",
-        "久治": "青海",
-        "玛多": "青海",
-        "玉树": "青海",
-        "杂多": "青海",
-        "称多": "青海",
-        "治多": "青海",
-        "囊谦": "青海",
-        "曲麻莱": "青海",
-        "海西": "青海",
-        "格尔木": "青海",
-        "德令哈": "青海",
-        "乌兰": "青海",
-        "都兰": "青海",
-        "天峻": "青海",
-        "宁夏": "宁夏",
-        "银川": "宁夏",
-        "永宁": "宁夏",
-        "贺兰": "宁夏",
-        "灵武": "宁夏",
-        "石嘴山": "宁夏",
-        "平罗": "宁夏",
-        "吴忠": "宁夏",
-        "盐池": "宁夏",
-        "同心": "宁夏",
-        "青铜峡": "宁夏",
-        "固原": "宁夏",
-        "西吉": "宁夏",
-        "隆德": "宁夏",
-        "泾源": "宁夏",
-        "彭阳": "宁夏",
-        "中卫": "宁夏",
-        "中宁": "宁夏",
-        "海原": "宁夏",
-        "新疆": "新疆",
-        "乌鲁木齐": "新疆",
-        "克拉玛依": "新疆",
-        "吐鲁番": "新疆",
-        "鄯善": "新疆",
-        "托克逊": "新疆",
-        "哈密": "新疆",
-        "巴里坤": "新疆",
-        "伊吾": "新疆",
-        "昌吉": "新疆",
-        "阜康": "新疆",
-        "呼图壁": "新疆",
-        "玛纳斯": "新疆",
-        "奇台": "新疆",
-        "吉木萨尔": "新疆",
-        "木垒哈萨克": "新疆",
-        "博尔塔拉": "新疆",
-        "博乐": "新疆",
-        "精河": "新疆",
-        "温泉": "新疆",
-        "巴音郭楞": "新疆",
-        "库尔勒": "新疆",
-        "轮台": "新疆",
-        "尉犁": "新疆",
-        "若羌": "新疆",
-        "且末": "新疆",
-        "焉耆": "新疆",
-        "和静": "新疆",
-        "和硕": "新疆",
-        "博湖": "新疆",
-        "阿克苏": "新疆",
-        "温宿": "新疆",
-        "库车": "新疆",
-        "沙雅": "新疆",
-        "新和": "新疆",
-        "拜城": "新疆",
-        "乌什": "新疆",
-        "阿瓦提": "新疆",
-        "柯坪": "新疆",
-        "克孜勒": "新疆",
-        "阿图什": "新疆",
-        "阿克陶": "新疆",
-        "阿合奇": "新疆",
-        "乌恰": "新疆",
-        "喀什": "新疆",
-        "疏附": "新疆",
-        "疏勒": "新疆",
-        "英吉沙": "新疆",
-        "泽普": "新疆",
-        "莎车": "新疆",
-        "叶城": "新疆",
-        "麦盖提": "新疆",
-        "岳普湖": "新疆",
-        "伽师": "新疆",
-        "巴楚": "新疆",
-        "塔什": "新疆",
-        "和田": "新疆",
-        "墨玉": "新疆",
-        "皮山": "新疆",
-        "洛浦": "新疆",
-        "策勒": "新疆",
-        "于田": "新疆",
-        "民丰": "新疆",
-        "伊犁": "新疆",
-        "伊宁": "新疆",
-        "奎屯": "新疆",
-        "察布查尔锡伯": "新疆",
-        "霍城": "新疆",
-        "巩留": "新疆",
-        "新源": "新疆",
-        "昭苏": "新疆",
-        "特克斯": "新疆",
-        "尼勒克": "新疆",
-        "塔城": "新疆",
-        "乌苏": "新疆",
-        "额敏": "新疆",
-        "沙湾": "新疆",
-        "托里": "新疆",
-        "裕民": "新疆",
-        "和布克赛尔": "新疆",
-        "阿勒泰": "新疆",
-        "布尔津": "新疆",
-        "富蕴": "新疆",
-        "福海": "新疆",
-        "哈巴河": "新疆",
-        "青河": "新疆",
-        "吉木乃": "新疆",
-        "石河子": "新疆",
-        "阿拉尔": "新疆",
-        "图木舒克": "新疆",
-        "五家渠": "新疆",
-        "台湾": "台湾",
-        "台北": "台湾",
-        "高雄": "台湾",
-        "基隆": "台湾",
-        "台中": "台湾",
-        "台南": "台湾",
-        "新竹": "台湾",
-        "嘉义": "台湾",
-        "宜兰": "台湾",
-        "桃园": "台湾",
-        "苗栗": "台湾",
-        "彰化": "台湾",
-        "南投": "台湾",
-        "云林": "台湾",
-        "屏东": "台湾",
-        "台东": "台湾",
-        "花莲": "台湾",
-        "澎湖": "台湾",
-        "香港": "香港",
-        "澳门": "澳门",
-        "东城": "北京",
-        "西城": "北京",
-        "崇文": "北京",
-        "宣武": "北京",
-        "丰台": "北京",
-        "石景山": "北京",
-        "海淀": "北京",
-        "门头沟": "北京",
-        "房山": "北京",
-        "顺义": "北京",
-        "昌平": "北京",
-        "大兴区": "北京",
-        "怀柔": "北京",
-        "平谷": "北京",
-        "河西区": "天津",
-        "南开": "天津",
-        "河北区": "天津",
-        "红桥": "天津",
-        "塘沽": "天津",
-        "汉沽": "天津",
-        "大港": "天津",
-        "东丽": "天津",
-        "西青": "天津",
-        "津南": "天津",
-        "北辰": "天津",
-        "武清": "天津",
-        "宝坻": "天津",
-        "井陉矿": "河北",
-        "裕华": "河北",
-        "路南区": "河北",
-        "路北区": "河北",
-        "古冶": "河北",
-        "丰南": "河北",
-        "丰润": "河北",
-        "海港": "河北",
-        "山海关": "河北",
-        "北戴河": "河北",
-        "邯山": "河北",
-        "丛台": "河北",
-        "复兴区": "河北",
-        "峰峰矿": "河北",
-        "北市": "河北",
-        "南市": "河北",
-        "下花园": "河北",
-        "双滦": "河北",
-        "鹰手营子矿": "河北",
-        "运河区": "河北",
-        "安次": "河北",
-        "广阳": "河北",
-        "桃城": "河北",
-        "小店": "山西",
-        "迎泽": "山西",
-        "杏花岭": "山西",
-        "尖草坪": "山西",
-        "万柏林": "山西",
-        "晋源": "山西",
-        "南郊区": "山西",
-        "新荣": "山西",
-        "朔城": "山西",
-        "平鲁": "山西",
-        "榆次": "山西",
-        "盐湖": "山西",
-        "忻府": "山西",
-        "尧都": "山西",
-        "离石": "山西",
-        "玉泉": "内蒙古",
-        "赛罕": "内蒙古",
-        "东河": "内蒙古",
-        "昆都仑": "内蒙古",
-        "石拐": "内蒙古",
-        "白云矿": "内蒙古",
-        "九原": "内蒙古",
-        "海勃湾": "内蒙古",
-        "乌达": "内蒙古",
-        "红山区": "内蒙古",
-        "元宝山": "内蒙古",
-        "松山": "内蒙古",
-        "科尔沁": "内蒙古",
-        "东胜": "内蒙古",
-        "海拉尔": "内蒙古",
-        "临河": "内蒙古",
-        "集宁": "内蒙古",
-        "沈河": "辽宁",
-        "大东": "辽宁",
-        "皇姑": "辽宁",
-        "苏家屯": "辽宁",
-        "东陵": "辽宁",
-        "沈北新": "辽宁",
-        "于洪": "辽宁",
-        "西岗": "辽宁",
-        "沙河口": "辽宁",
-        "甘井子": "辽宁",
-        "旅顺口": "辽宁",
-        "金州": "辽宁",
-        "立山": "辽宁",
-        "千山": "辽宁",
-        "新抚": "辽宁",
-        "东洲": "辽宁",
-        "望花": "辽宁",
-        "顺城": "辽宁",
-        "溪湖": "辽宁",
-        "明山": "辽宁",
-        "南芬": "辽宁",
-        "元宝": "辽宁",
-        "振兴区": "辽宁",
-        "振安": "辽宁",
-        "古塔": "辽宁",
-        "凌河": "辽宁",
-        "站前": "辽宁",
-        "西市": "辽宁",
-        "鲅鱼圈": "辽宁",
-        "老边": "辽宁",
-        "新邱": "辽宁",
-        "太平区": "辽宁",
-        "清河门": "辽宁",
-        "细河": "辽宁",
-        "白塔": "辽宁",
-        "文圣": "辽宁",
-        "宏伟": "辽宁",
-        "弓长岭": "辽宁",
-        "太子河": "辽宁",
-        "双台子": "辽宁",
-        "兴隆台": "辽宁",
-        "银州": "辽宁",
-        "双塔": "辽宁",
-        "龙城": "辽宁",
-        "龙港": "辽宁",
-        "南票": "辽宁",
-        "杨家杖子开发": "辽宁",
-        "南关": "吉林",
-        "二道": "吉林",
-        "绿园": "吉林",
-        "双阳": "吉林",
-        "龙潭": "吉林",
-        "船营": "吉林",
-        "丰满": "吉林",
-        "东昌": "吉林",
-        "二道江": "吉林",
-        "八道江": "吉林",
-        "江源": "吉林",
-        "宁江": "吉林",
-        "洮北": "吉林",
-        "道里": "黑龙江",
-        "南岗": "黑龙江",
-        "道外": "黑龙江",
-        "平房": "黑龙江",
-        "松北": "黑龙江",
-        "香坊": "黑龙江",
-        "呼兰": "黑龙江",
-        "阿城": "黑龙江",
-        "龙沙": "黑龙江",
-        "建华": "黑龙江",
-        "铁锋": "黑龙江",
-        "昂昂溪": "黑龙江",
-        "富拉尔基": "黑龙江",
-        "碾子山": "黑龙江",
-        "梅里斯达斡尔族": "黑龙江",
-        "鸡冠区": "黑龙江",
-        "恒山": "黑龙江",
-        "滴道": "黑龙江",
-        "城子河": "黑龙江",
-        "麻山": "黑龙江",
-        "工农区": "黑龙江",
-        "尖山": "黑龙江",
-        "岭东": "黑龙江",
-        "四方台": "黑龙江",
-        "萨尔图": "黑龙江",
-        "龙凤": "黑龙江",
-        "让胡路": "黑龙江",
-        "红岗": "黑龙江",
-        "南岔": "黑龙江",
-        "友好区": "黑龙江",
-        "翠峦": "黑龙江",
-        "新青": "黑龙江",
-        "美溪": "黑龙江",
-        "金山屯": "黑龙江",
-        "五营": "黑龙江",
-        "乌马河": "黑龙江",
-        "汤旺河": "黑龙江",
-        "带岭": "黑龙江",
-        "乌伊岭": "黑龙江",
-        "红星": "黑龙江",
-        "上甘岭": "黑龙江",
-        "前进": "黑龙江",
-        "东风区": "黑龙江",
-        "桃山": "黑龙江",
-        "茄子河": "黑龙江",
-        "阳明": "黑龙江",
-        "爱民区": "黑龙江",
-        "爱辉": "黑龙江",
-        "北林": "黑龙江",
-        "大兴安岭": "黑龙江",
-        "加格达奇": "黑龙江",
-        "松岭": "黑龙江",
-        "新林": "黑龙江",
-        "呼中": "黑龙江",
-        "黄浦": "上海",
-        "徐汇": "上海",
-        "静安": "上海",
-        "闸北": "上海",
-        "虹口": "上海",
-        "杨浦": "上海",
-        "闵行": "上海",
-        "嘉定": "上海",
-        "浦东新": "上海",
-        "金山": "上海",
-        "松江": "上海",
-        "青浦": "上海",
-        "奉贤": "上海",
-        "玄武": "江苏",
-        "白下": "江苏",
-        "秦淮": "江苏",
-        "建邺": "江苏",
-        "下关": "江苏",
-        "浦口": "江苏",
-        "雨花台": "江苏",
-        "江宁": "江苏",
-        "六合": "江苏",
-        "崇安": "江苏",
-        "南长": "江苏",
-        "北塘": "江苏",
-        "锡山": "江苏",
-        "惠山": "江苏",
-        "滨湖": "江苏",
-        "九里": "江苏",
-        "贾汪": "江苏",
-        "泉山": "江苏",
-        "天宁": "江苏",
-        "钟楼": "江苏",
-        "戚墅堰": "江苏",
-        "新北": "江苏",
-        "武进": "江苏",
-        "沧浪": "江苏",
-        "金阊": "江苏",
-        "虎丘": "江苏",
-        "吴中": "江苏",
-        "相城": "江苏",
-        "崇川": "江苏",
-        "港闸": "江苏",
-        "连云": "江苏",
-        "新浦": "江苏",
-        "楚州": "江苏",
-        "淮阴": "江苏",
-        "清浦": "江苏",
-        "亭湖": "江苏",
-        "盐都": "江苏",
-        "广陵": "江苏",
-        "邗江": "江苏",
-        "维扬": "江苏",
-        "京口": "江苏",
-        "润州": "江苏",
-        "丹徒": "江苏",
-        "海陵": "江苏",
-        "高港": "江苏",
-        "宿城": "江苏",
-        "宿豫": "江苏",
-        "上城": "浙江",
-        "下城": "浙江",
-        "江干": "浙江",
-        "拱墅": "浙江",
-        "滨江": "浙江",
-        "萧山": "浙江",
-        "余杭": "浙江",
-        "海曙": "浙江",
-        "江东": "浙江",
-        "北仑": "浙江",
-        "镇海": "浙江",
-        "鄞州": "浙江",
-        "鹿城": "浙江",
-        "龙湾": "浙江",
-        "瓯海": "浙江",
-        "南湖": "浙江",
-        "秀洲": "浙江",
-        "吴兴": "浙江",
-        "南浔": "浙江",
-        "越城": "浙江",
-        "婺城": "浙江",
-        "金东": "浙江",
-        "柯城": "浙江",
-        "衢江": "浙江",
-        "定海": "浙江",
-        "椒江": "浙江",
-        "黄岩": "浙江",
-        "路桥": "浙江",
-        "莲都": "浙江",
-        "瑶海": "安徽",
-        "庐阳": "安徽",
-        "蜀山": "安徽",
-        "新站": "安徽",
-        "经开": "安徽",
-        "包河": "安徽",
-        "镜湖": "安徽",
-        "弋江": "安徽",
-        "鸠江": "安徽",
-        "三山": "安徽",
-        "龙子湖": "安徽",
-        "蚌山": "安徽",
-        "禹会": "安徽",
-        "淮上": "安徽",
-        "田家庵": "安徽",
-        "谢家集": "安徽",
-        "八公山": "安徽",
-        "潘集": "安徽",
-        "金家庄": "安徽",
-        "花山": "安徽",
-        "雨山": "安徽",
-        "博望新": "安徽",
-        "示范园": "安徽",
-        "杜集": "安徽",
-        "相山": "安徽",
-        "烈山": "安徽",
-        "铜官山": "安徽",
-        "狮子山": "安徽",
-        "迎江": "安徽",
-        "大观": "安徽",
-        "宜秀": "安徽",
-        "屯溪": "安徽",
-        "徽州": "安徽",
-        "琅琊": "安徽",
-        "南谯": "安徽",
-        "颍州": "安徽",
-        "颍东": "安徽",
-        "颍泉": "安徽",
-        "埇桥": "安徽",
-        "居巢": "安徽",
-        "金安": "安徽",
-        "裕安": "安徽",
-        "谯城": "安徽",
-        "贵池": "安徽",
-        "宣州": "安徽",
-        "仓山": "福建",
-        "马尾": "福建",
-        "晋安": "福建",
-        "思明": "福建",
-        "海沧": "福建",
-        "湖里": "福建",
-        "集美": "福建",
-        "同安": "福建",
-        "翔安": "福建",
-        "城厢": "福建",
-        "涵江": "福建",
-        "荔城": "福建",
-        "秀屿": "福建",
-        "梅列": "福建",
-        "三元": "福建",
-        "鲤城": "福建",
-        "丰泽": "福建",
-        "洛江": "福建",
-        "泉港": "福建",
-        "芗城": "福建",
-        "龙文": "福建",
-        "延平": "福建",
-        "新罗": "福建",
-        "蕉城": "福建",
-        "东湖": "江西",
-        "青云谱": "江西",
-        "湾里": "江西",
-        "青山湖": "江西",
-        "珠山": "江西",
-        "安源": "江西",
-        "湘东": "江西",
-        "庐山": "江西",
-        "浔阳": "江西",
-        "渝水": "江西",
-        "月湖": "江西",
-        "章贡": "江西",
-        "吉州": "江西",
-        "青原": "江西",
-        "袁州": "江西",
-        "临川": "江西",
-        "信州": "江西",
-        "历下": "山东",
-        "槐荫": "山东",
-        "天桥": "山东",
-        "历城": "山东",
-        "长清": "山东",
-        "市南": "山东",
-        "市北区": "山东",
-        "四方": "山东",
-        "黄岛": "山东",
-        "崂山": "山东",
-        "李沧": "山东",
-        "城阳": "山东",
-        "淄川": "山东",
-        "张店": "山东",
-        "博山": "山东",
-        "临淄": "山东",
-        "周村": "山东",
-        "薛城": "山东",
-        "峄城": "山东",
-        "台儿庄": "山东",
-        "山亭": "山东",
-        "芝罘": "山东",
-        "福山": "山东",
-        "牟平": "山东",
-        "莱山": "山东",
-        "潍城": "山东",
-        "寒亭": "山东",
-        "坊子": "山东",
-        "奎文": "山东",
-        "任城": "山东",
-        "泰山区": "山东",
-        "岱岳": "山东",
-        "环翠": "山东",
-        "岚山": "山东",
-        "莱城": "山东",
-        "钢城": "山东",
-        "兰山": "山东",
-        "罗庄": "山东",
-        "德城": "山东",
-        "东昌府": "山东",
-        "滨城": "山东",
-        "牡丹": "山东",
-        "中原": "河南",
-        "二七": "河南",
-        "金水": "河南",
-        "上街": "河南",
-        "惠济": "河南",
-        "龙亭": "河南",
-        "顺河回族": "河南",
-        "禹王台": "河南",
-        "金明": "河南",
-        "老城区": "河南",
-        "西工": "河南",
-        "瀍河回族": "河南",
-        "涧西": "河南",
-        "吉利": "河南",
-        "洛龙": "河南",
-        "卫东": "河南",
-        "石龙": "河南",
-        "湛河": "河南",
-        "文峰": "河南",
-        "北关": "河南",
-        "殷都": "河南",
-        "龙安": "河南",
-        "山城": "河南",
-        "淇滨": "河南",
-        "红旗区": "河南",
-        "卫滨": "河南",
-        "凤泉": "河南",
-        "牧野": "河南",
-        "解放区": "河南",
-        "中站": "河南",
-        "马村": "河南",
-        "华龙": "河南",
-        "魏都": "河南",
-        "源汇": "河南",
-        "郾城": "河南",
-        "召陵": "河南",
-        "湖滨": "河南",
-        "宛城": "河南",
-        "卧龙区": "河南",
-        "梁园": "河南",
-        "睢阳": "河南",
-        "浉河": "河南",
-        "平桥": "河南",
-        "川汇": "河南",
-        "驿城": "河南",
-        "江岸": "湖北",
-        "江汉": "湖北",
-        "硚口": "湖北",
-        "汉阳": "湖北",
-        "武昌": "湖北",
-        "洪山": "湖北",
-        "东西湖": "湖北",
-        "汉南": "湖北",
-        "蔡甸": "湖北",
-        "江夏": "湖北",
-        "黄陂": "湖北",
-        "新洲": "湖北",
-        "东湖开发": "湖北",
-        "武汉经济开发": "湖北",
-        "黄石港": "湖北",
-        "西塞山": "湖北",
-        "下陆": "湖北",
-        "铁山": "湖北",
-        "黄石经济开发": "湖北",
-        "茅箭": "湖北",
-        "张湾": "湖北",
-        "十堰经济开发": "湖北",
-        "武当山旅游经济特": "湖北",
-        "西陵": "湖北",
-        "伍家岗": "湖北",
-        "点军": "湖北",
-        "猇亭": "湖北",
-        "夷陵": "湖北",
-        "樊城": "湖北",
-        "隆中风景": "湖北",
-        "高新开发": "湖北",
-        "鱼梁洲开发": "湖北",
-        "梁子湖": "湖北",
-        "鄂城": "湖北",
-        "葛店开发": "湖北",
-        "鄂州经济开发": "湖北",
-        "东宝": "湖北",
-        "掇刀": "湖北",
-        "荆门经济开发": "湖北",
-        "孝南": "湖北",
-        "沙市": "湖北",
-        "荆州经济开发": "湖北",
-        "黄州": "湖北",
-        "龙感湖管理": "湖北",
-        "咸安": "湖北",
-        "曾都": "湖北",
-        "芙蓉区": "湖南",
-        "天心": "湖南",
-        "岳麓": "湖南",
-        "开福": "湖南",
-        "雨花": "湖南",
-        "荷塘": "湖南",
-        "芦淞": "湖南",
-        "石峰": "湖南",
-        "天元": "湖南",
-        "雨湖": "湖南",
-        "岳塘": "湖南",
-        "珠晖": "湖南",
-        "雁峰": "湖南",
-        "石鼓": "湖南",
-        "蒸湘": "湖南",
-        "南岳": "湖南",
-        "双清": "湖南",
-        "大祥": "湖南",
-        "北塔": "湖南",
-        "岳阳楼": "湖南",
-        "云溪": "湖南",
-        "君山": "湖南",
-        "武陵": "湖南",
-        "鼎城": "湖南",
-        "武陵源": "湖南",
-        "赫山": "湖南",
-        "北湖": "湖南",
-        "苏仙": "湖南",
-        "零陵": "湖南",
-        "冷水滩": "湖南",
-        "鹤城": "湖南",
-        "娄星": "湖南",
-        "荔湾": "广东",
-        "越秀": "广东",
-        "海珠": "广东",
-        "天河": "广东",
-        "黄埔": "广东",
-        "番禺": "广东",
-        "花都": "广东",
-        "南沙": "广东",
-        "萝岗": "广东",
-        "武江": "广东",
-        "浈江": "广东",
-        "曲江": "广东",
-        "罗湖": "广东",
-        "福田": "广东",
-        "宝安": "广东",
-        "龙岗": "广东",
-        "盐田": "广东",
-        "香洲": "广东",
-        "斗门": "广东",
-        "金湾": "广东",
-        "龙湖": "广东",
-        "濠江": "广东",
-        "潮阳": "广东",
-        "潮南": "广东",
-        "澄海": "广东",
-        "禅城": "广东",
-        "南海区": "广东",
-        "顺德": "广东",
-        "三水": "广东",
-        "高明": "广东",
-        "蓬江": "广东",
-        "江海": "广东",
-        "新会": "广东",
-        "赤坎": "广东",
-        "霞山": "广东",
-        "坡头": "广东",
-        "麻章": "广东",
-        "茂南": "广东",
-        "茂港": "广东",
-        "端州": "广东",
-        "鼎湖": "广东",
-        "惠城": "广东",
-        "惠阳": "广东",
-        "梅江": "广东",
-        "源城": "广东",
-        "清城": "广东",
-        "枫溪": "广东",
-        "湘桥": "广东",
-        "榕城": "广东",
-        "云城": "广东",
-        "青秀": "广西",
-        "江南区": "广西",
-        "西乡塘": "广西",
-        "良庆": "广西",
-        "邕宁": "广西",
-        "鱼峰": "广西",
-        "柳南": "广西",
-        "柳北": "广西",
-        "秀峰": "广西",
-        "叠彩": "广西",
-        "七星": "广西",
-        "雁山": "广西",
-        "万秀": "广西",
-        "蝶山": "广西",
-        "长洲": "广西",
-        "银海": "广西",
-        "铁山港": "广西",
-        "港口区": "广西",
-        "防城": "广西",
-        "钦南": "广西",
-        "钦北": "广西",
-        "港北": "广西",
-        "港南": "广西",
-        "覃塘": "广西",
-        "玉州": "广西",
-        "右江": "广西",
-        "八步": "广西",
-        "金城江": "广西",
-        "兴宾": "广西",
-        "江洲": "广西",
-        "秀英": "海南",
-        "龙华": "海南",
-        "琼山": "海南",
-        "美兰": "海南",
-        "洋浦经济开发": "海南",
-        "万州": "重庆",
-        "涪陵": "重庆",
-        "渝中": "重庆",
-        "大渡口": "重庆",
-        "沙坪坝": "重庆",
-        "九龙坡": "重庆",
-        "南岸": "重庆",
-        "北碚": "重庆",
-        "万盛": "重庆",
-        "渝北": "重庆",
-        "巴南": "重庆",
-        "黔江": "重庆",
-        "长寿": "重庆",
-        "江津": "重庆",
-        "合川": "重庆",
-        "南川": "重庆",
-        "永川": "重庆",
-        "北部新": "重庆",
-        "锦江": "四川",
-        "青羊": "四川",
-        "金牛": "四川",
-        "武侯": "四川",
-        "成华": "四川",
-        "龙泉驿": "四川",
-        "青白江": "四川",
-        "新都": "四川",
-        "温江": "四川",
-        "自流井": "四川",
-        "贡井": "四川",
-        "沿滩": "四川",
-        "仁和": "四川",
-        "江阳": "四川",
-        "纳溪": "四川",
-        "龙马潭": "四川",
-        "旌阳": "四川",
-        "涪城": "四川",
-        "游仙": "四川",
-        "元坝": "四川",
-        "朝天": "四川",
-        "船山": "四川",
-        "安居": "四川",
-        "五通桥": "四川",
-        "金口河": "四川",
-        "顺庆": "四川",
-        "高坪": "四川",
-        "嘉陵": "四川",
-        "东坡区": "四川",
-        "翠屏": "四川",
-        "通川": "四川",
-        "雨城": "四川",
-        "巴州": "四川",
-        "雁江": "四川",
-        "南明": "贵州",
-        "云岩": "贵州",
-        "花溪": "贵州",
-        "乌当": "贵州",
-        "小河区": "贵州",
-        "金阳新": "贵州",
-        "六枝特": "贵州",
-        "红花岗": "贵州",
-        "汇川": "贵州",
-        "新浦新": "贵州",
-        "西秀": "贵州",
-        "黄果树开发": "贵州",
-        "七星关": "贵州",
-        "碧江": "贵州",
-        "万山特": "贵州",
-        "凯里经济开发": "贵州",
-        "盘龙": "云南",
-        "官渡": "云南",
-        "西山区": "云南",
-        "东川": "云南",
-        "麒麟": "云南",
-        "红塔": "云南",
-        "隆阳": "云南",
-        "昭阳": "云南",
-        "古城区": "云南",
-        "思茅": "云南",
-        "临翔": "云南",
-        "山南": "西藏",
-        "阿里": "西藏",
-        "碑林": "陕西",
-        "莲湖": "陕西",
-        "灞桥": "陕西",
-        "未央": "陕西",
-        "雁塔": "陕西",
-        "阎良": "陕西",
-        "临潼": "陕西",
-        "沣渭新": "陕西",
-        "王益": "陕西",
-        "印台": "陕西",
-        "耀州": "陕西",
-        "渭滨": "陕西",
-        "金台": "陕西",
-        "陈仓": "陕西",
-        "秦都": "陕西",
-        "渭城": "陕西",
-        "临渭": "陕西",
-        "宝塔": "陕西",
-        "汉台": "陕西",
-        "榆阳": "陕西",
-        "汉滨": "陕西",
-        "商州": "陕西",
-        "杨凌示范": "陕西",
-        "七里河区": "甘肃",
-        "西固": "甘肃",
-        "红古": "甘肃",
-        "平川": "甘肃",
-        "秦州": "甘肃",
-        "麦积": "甘肃",
-        "凉州": "甘肃",
-        "甘州": "甘肃",
-        "崆峒": "甘肃",
-        "肃州": "甘肃",
-        "西峰": "甘肃",
-        "安定": "甘肃",
-        "武都": "甘肃",
-        "城东": "青海",
-        "城西": "青海",
-        "城北": "青海",
-        "海东": "青海",
-        "兴庆": "宁夏",
-        "西夏": "宁夏",
-        "金凤": "宁夏",
-        "大武口": "宁夏",
-        "惠农": "宁夏",
-        "利通": "宁夏",
-        "红寺堡": "宁夏",
-        "原州": "宁夏",
-        "沙坡头": "宁夏",
-        "天山区": "新疆",
-        "沙依巴克": "新疆",
-        "水磨沟": "新疆",
-        "头屯河": "新疆",
-        "达坂城": "新疆",
-        "米东": "新疆",
-        "独山子": "新疆",
-        "白碱滩": "新疆",
-        "乌尔禾": "新疆",
-        "中西": "香港",
-        "九龙城": "香港",
-        "观塘": "香港",
-        "深水": "香港",
-        "湾仔": "香港",
-        "黄大仙": "香港",
-        "油尖旺": "香港",
-        "离岛": "香港",
-        "葵青": "香港",
-        "西贡": "香港",
-        "沙田": "香港",
-        "屯门": "香港",
-        "荃湾": "香港",
-        "元朗": "香港",
-        "花地玛堂": "澳门",
-        "圣安多尼堂": "澳门",
-        "大堂": "澳门",
-        "望德堂": "澳门",
-        "风顺堂": "澳门",
-        "嘉模堂": "澳门",
-        "圣方济各堂": "澳门"
-    }
-}

+ 0 - 54
src/股东转名录/citysearch.go

@@ -1,54 +0,0 @@
-package main
-
-import (
-	ex "saveServer/extractarea"
-)
-
-//
-var citymapping map[string]string = map[string]string{
-	"安徽":  "AH",
-	"北京":  "BJ",
-	"福建":  "FJ",
-	"甘肃":  "GS",
-	"广东":  "GD",
-	"广西":  "GX",
-	"贵州":  "GZ",
-	"海南":  "HI",
-	"河北":  "HE",
-	"河南":  "HA",
-	"黑龙江": "HL",
-	"湖北":  "HB",
-	"湖南":  "HN",
-	"吉林":  "JL",
-	"江苏":  "JS",
-	"江西":  "JX",
-	"辽宁":  "LN",
-	"内蒙古": "NM",
-	"宁夏":  "NX",
-	"青海":  "QH",
-	"山东":  "SD",
-	"山西":  "SX",
-	"陕西":  "SN",
-	"上海":  "SH",
-	"四川":  "SC",
-	"天津":  "TJ",
-	"西藏":  "XZ",
-	"新疆":  "XJ",
-	"云南":  "YN",
-	"浙江":  "ZJ",
-	"重庆":  "CQ",
-	"澳门":  "MO",
-	"香港":  "HK",
-	"台湾":  "TW",
-}
-
-//取得省份代码
-func FindArea(entname string) (area, code string) {
-	area = ex.DealString(entname, "")
-	if v, ok := citymapping[area]; ok {
-		code = v
-	} else {
-		code = ""
-	}
-	return
-}

+ 0 - 9
src/股东转名录/config.json

@@ -1,9 +0,0 @@
-{
-	"msgserver":"test.qmx.top:7070",
-	"mongodb":"10.162.193.49:27080",
-	"elasticsearch":"http://10.172.228.50:9800",
-	"elasticPoolSize": 20,
-    "mongodbPoolSize": 5,
-    "mongodbname": "spider",
-	"entnamereg":"公司|集团|厂|企业|投资"
-}

+ 0 - 102
src/股东转名录/eventhandler.go

@@ -1,102 +0,0 @@
-package main
-
-import (
-	"encoding/json"
-	"fmt"
-	mu "mfw/util"
-	"qfw/util/elastic"
-	"qfw/util/mongodb"
-	"time"
-)
-
-//事件处理
-func EventHandler(p *mu.Packet) {
-	if p.Event != mu.SERVICE_INVNAME_ANALYSIS {
-		return
-	}
-	//
-	data := map[string]interface{}{}
-	err := json.Unmarshal(p.GetBusinessData(), &data)
-	if err != nil {
-		return
-	}
-	//
-	var mainarea string
-	if v, ok := data["area"]; ok {
-		mainarea = v.(string)
-	} else {
-		return
-	}
-	//
-	names := data["names"].([]interface{})
-	for _, v := range names {
-		fmt.Print(">")
-		name := v.(string)
-		if len(name) < 22 {
-			continue
-		}
-		if !entreg.MatchString(name) {
-			continue
-		}
-		if isExist(name) {
-			continue
-		}
-		_, acode := FindArea(name)
-		if acode == "" {
-			acode = mainarea
-		}
-		data := map[string]interface{}{
-			"area":           acode,
-			"enterprisename": name,
-			"publishtime":    time.Now().Unix(),
-			"used":           "0",
-			"source":         "gd", //来自股东数据
-		}
-		mongodb.Update("entnames", `{"enterprisename":"`+name+`"}`, data, true, false)
-		fmt.Print("+")
-	}
-}
-
-//查企业是否存在
-func isExist(entname string) (ret bool) {
-	query := `{
-		  "query": {
-		    "bool": {
-		      "must": [
-		        {
-		          "query_string": {
-		            "default_field": "enterprise.EntName",
-		            "query": "` + entname + `"
-		          }
-		        }
-		      ],
-		      "must_not": [],
-		      "should": []
-		    }
-		  },
-		  "from": 0,
-		  "size": 1,
-		  "_source":["_id","EntName","RegNo"]
-		}`
-	esclient := elastic.GetEsConn()
-	defer elastic.DestoryEsConn(esclient)
-	if esclient == nil {
-		return true
-	}
-	searchResult, err := esclient.Search().Index("enterprise").Type("enterprise").Source(query).Do()
-	if err != nil {
-		return true
-	}
-
-	if searchResult.Hits != nil {
-		for _, hit := range searchResult.Hits.Hits {
-			var res map[string]interface{}
-			json.Unmarshal(*hit.Source, &res)
-			name2 := res["EntName"].(string)
-			if name2 == entname {
-				return true
-			}
-		}
-	}
-	return false
-}

+ 0 - 50
src/股东转名录/main.go

@@ -1,50 +0,0 @@
-package main
-
-import (
-	"encoding/json"
-	"io/ioutil"
-	mu "mfw/util"
-	"os"
-	"qfw/util/elastic"
-	"qfw/util/mongodb"
-	"regexp"
-)
-
-//
-const (
-	MYNAME = "股东导入名录服务"
-)
-
-//
-type Config struct {
-	MsgServerAddr         string `json:"msgserver"`
-	MongoDbAddr           string `json:"mongodb"`
-	ElasticSearchAddr     string `json:"elasticsearch"`
-	MongoDbPoolSize       int    `json:"mongodbpoolsize"`
-	ElasticSearchPoolSize int    `json:"elasticpoolsize"`
-	MongoDbName           string `json:"mongodbname"`
-	EntnameReg            string `json:"entnamereg"`
-}
-
-//
-var client *mu.Client
-var sysconfig Config
-var entreg *regexp.Regexp
-
-//
-func init() {
-	fi, _ := os.Open("config.json")
-	defer fi.Close()
-	bs, _ := ioutil.ReadAll(fi)
-	json.Unmarshal(bs, &sysconfig)
-	mongodb.InitMongodbPool(sysconfig.MongoDbPoolSize, sysconfig.MongoDbAddr, sysconfig.MongoDbName)
-	elastic.InitElasticSize(sysconfig.ElasticSearchAddr, sysconfig.ElasticSearchPoolSize)
-	entreg, _ = regexp.Compile(sysconfig.EntnameReg)
-}
-
-//
-func main() {
-	client, _ = mu.StartClient(EventHandler, sysconfig.MsgServerAddr, MYNAME, []int{mu.SERVICE_INVNAME_ANALYSIS})
-	lock := make(chan bool)
-	<-lock
-}

+ 0 - 4
src/股东转名录/readme.md

@@ -1,4 +0,0 @@
-消息总线下的服务提供者
-实现功能:
-	传入股东名称列表,识别所在省份,判断是否库里已有数据。	不存在的数据,入名录库,供爬虫使用。
-	

+ 0 - 49
src/识别验证码样例/distinguish.go

@@ -1,49 +0,0 @@
-/**
- * 服务发布
- */
-package main
-
-import (
-	"encoding/json"
-	"io/ioutil"
-	"log"
-	"mfw/util"
-	_ "os"
-	_ "runtime/pprof"
-	_ "time"
-)
-
-//消息处理
-func processEvent(p *util.Packet) {
-
-}
-
-var client *util.Client
-
-func main() {
-	client, _ = util.StartClient(processEvent, "这是一个发布的测试服务样例", "test.qmx.top:7070",
-		[]int{util.SERVICE_DISTINGUISH})
-	img, _ := ioutil.ReadFile("test.jpg")
-	for k := 0; k < 100; k++ {
-		msgid := util.UUID(8)
-		ret, err := SendMsgToWx(msgid, img, true, 30)
-		if err != nil {
-			SendMsgToWx(msgid, nil, false, 20)
-		}
-		tmp := make(map[string]interface{})
-		json.Unmarshal(ret, &tmp)
-		log.Println(tmp, err)
-	}
-	//
-	flag := make(chan bool)
-	<-flag
-}
-
-func SendMsgToWx(msgid string, img []byte, falg bool, timeout int64) ([]byte, error) {
-	ret, err := client.Call("", msgid, util.SERVICE_DISTINGUISH, util.SENDTO_TYPE_ALL,
-		map[string]interface{}{
-			"img":  img,
-			"flag": falg,
-		}, timeout)
-	return ret, err
-}

BIN
src/识别验证码样例/test.jpg


Some files were not shown because too many files changed in this diff