Explorar el Código

Merge branch 'dev3.4' of http://39.105.157.10:10080/qmx/jy-data-extract into dev3.4

apple hace 5 años
padre
commit
0671aeaf89

+ 5 - 9
fullproject/src_v1/project.go

@@ -1121,21 +1121,17 @@ func CountAmount(project *ProjectInfo, info *Info, tmp map[string]interface{}) {
 			for _, v := range project.Package {
 				v1, _ := v.([]map[string]interface{})
 				for _, v2 := range v1 {
-					if tmp["bidamount"] != nil {
-						b1 := qu.Float64All(v2["bidamount"])
-						if b1 > 0 {
-							bidamount = bidamount + b1
-							break
-						}
-					} else {
-						project.Bidamount = 1
+					b1 := qu.Float64All(v2["bidamount"])
+					if b1 > 0 {
+						bidamount = bidamount + b1
+						break
 					}
 				}
 			}
 			if bidamount > 0 {
 				project.Bidamount = bidamount
 				project.Bidamounttag = 0
-			} else if bidamount == 0 && info.Budget > 0 {
+			} else if bidamount == 0 && info.Bidamount > 0 {
 				project.Bidamount = info.Bidamount
 				project.Bidamounttag = 0
 			}

+ 6 - 2
src/jy/admin/audit/qiyeku.go

@@ -37,6 +37,7 @@ func init() {
 			c.JSON(200, gin.H{"rep": 400})
 			return
 		}
+		//金额转换
 		capitalfloat := clear.ObjToMoney([]interface{}{capital, ""})[0]
 		e := make(map[string]interface{})
 		e["company_name"] = company_name
@@ -58,6 +59,7 @@ func init() {
 				"capital":         capitalfloat,
 				"company_address": company_address,
 			}}, false, false)
+			//更新es
 			if tmpb {
 				escon := elastic.GetEsConn()
 				defer elastic.DestoryEsConn(escon)
@@ -76,6 +78,7 @@ func init() {
 				}
 			}
 		} else {
+			//不存在直接保存新数据
 			sid = Mgo.Save("enterprise_qyxy", e)
 			delete(e, "_id")
 			escon := elastic.GetEsConn()
@@ -101,6 +104,7 @@ func init() {
 			c.JSON(200, gin.H{"data": []map[string]interface{}{}, "recordsFiltered": 0, "recordsTotal": 0})
 		} else {
 			//log.Println(util.ElasticClientIndex, util.ElasticClientType, search)
+			//查询es
 			escon := elastic.GetEsConn()
 			defer elastic.DestoryEsConn(escon)
 			res, err := escon.Search(util.ElasticClientIndex).
@@ -162,7 +166,7 @@ func init() {
 			c.JSON(200, gin.H{"rep": 400})
 		}
 	})
-	//updateIndustrys
+	//updateIndustrys  更新行业类型
 	Admin.POST("/audit/query_qyk/UpdateIndustrys", func(c *gin.Context) {
 		_id := c.PostForm("_id")
 		industrys := c.PostFormArray("industry")
@@ -184,7 +188,7 @@ func init() {
 			c.JSON(200, gin.H{"rep": 400})
 		}
 	})
-	//updateTels
+	//updateTels  更新联系方式
 	Admin.POST("/audit/query_qyk/UpdateTels", func(c *gin.Context) {
 		_id := c.PostForm("_id")
 		//log.Println(_id)

+ 5 - 0
src/res/fieldscore.json

@@ -262,6 +262,11 @@
                 "describe": "包含负分",
                 "regstr": "(详见公告|原因|未知|收费|标注|负责人)",
                 "score": -10
+            },
+            {
+                "describe": "时间",
+                "regstr": "^\\d{4}-\\d{1,2}-\\d{1,2}\\s{0,1}\\d{1,2}:\\d{1,2}:\\d{1,2}$",
+                "score": -10
             }
         ],
         "length": [

+ 5 - 1
udp_winner/config.json

@@ -20,5 +20,9 @@
   "mgo_qyk_c": "enterprise_qyxy",
   "mgo_qyk_buyer": "buyer_qyxy",
   "mgo_qyk_agency": "gency_qyxy",
-  "redis": "127.0.0.1:6379"
+  "redis": "127.0.0.1:6379",
+  "redis_winner_db": "1",
+  "redis_buyer_db": "2",
+  "redis_agency_db": "3",
+  "chan_pool_num": "10"
 }

+ 11 - 3
udp_winner/main.go

@@ -21,7 +21,7 @@ import (
 
 var (
 	Config                                = make(map[string]string)
-	Fields,BuyerFields,AgencyFields                                []string
+	Fields, BuyerFields, AgencyFields     []string
 	SourceClient, FClient                 *MongodbSim
 	RedisPool                             redis.Pool
 	HisRedisPool                          *hisRedis.Client
@@ -33,6 +33,7 @@ var (
 	Reg_tel                               = regexp.MustCompile(`^[0-9\-\s]*$`)
 	EsConn                                *es.Client
 	Updport                               int
+	CPool                                 chan bool
 )
 
 /**
@@ -43,6 +44,12 @@ func init() {
 	log.SetFlags(log.Ldate | log.Ltime | log.Lshortfile)
 	util.ReadConfig(&Config)
 	log.Println(Config)
+	var err error
+	cpnum, err := strconv.Atoi(Config["chan_pool_num"])
+	if err != nil{
+		log.Fatalln(err)
+	}
+	CPool = make(chan bool,cpnum)
 	Fields = []string{"_id", "contact", "partners", "business_scope", "company_address",
 		"capital", "establish_date", "legal_person", "company_type",
 		"district", "city", "province", "area_code", "credit_no",
@@ -56,7 +63,6 @@ func init() {
 	AgencyFields = []string{"_id", "contact", "type", "ranks",
 		"address", "district", "city", "province", "area_code", "credit_no", "agency_name",
 		"history_name", "wechat_accounts", "website", "report_websites"}
-	var err error
 	pool_size, _ := strconv.Atoi(Config["pool_size"])
 
 	//mongo init
@@ -135,7 +141,7 @@ func main() {
 	log.Println("Udp服务监听", updport)
 	log.Println("发送端口port:", Updport)
 	go TimedTaskWinner() //定时任务
-	go TimedTaskBuyer() //定时任务
+	go TimedTaskBuyer()  //定时任务
 	go TimedTaskAgency() //定时任务
 	c := make(chan int, 1)
 	<-c
@@ -162,6 +168,8 @@ func processUdpMsg(act byte, data []byte, ra *net.UDPAddr) {
 			//data_type:winner data_type:buyer data_type:agency
 			//data_info:save//存量   data_info:add //增量
 			if key, ok := (*tmp)["data_type"].(string); ok {
+				//阻塞
+				CPool <- true
 				if key == "winner" {
 					go TaskWinner(tmp)
 				} else if key == "buyer" {

+ 46 - 16
udp_winner/timedTaskWinner.go

@@ -11,6 +11,7 @@ import (
 	"net"
 	"qfw/util"
 	"sort"
+	"strconv"
 	"strings"
 	"time"
 )
@@ -18,6 +19,8 @@ import (
 //之前main方法,只更新
 func TaskWinner(mapinfo *map[string]interface{}) {
 	defer util.Catch()
+	//释放
+	defer func() { <-CPool }()
 	gtid, lteid := util.ObjToString((*mapinfo)["gtid"]), util.ObjToString((*mapinfo)["lteid"])
 	if gtid == "" || lteid == "" {
 		log.Println(gtid, lteid, "参数错误")
@@ -53,15 +56,16 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 		conn := HisRedisPool.Conn()
 		defer conn.Close()
 		//选择redis db
-		conn.Select(1)
+		redis_winner_db, _ := strconv.Atoi(Config["redis_winner_db"])
+		conn.Select(redis_winner_db)
 		//遍历bidding表保存到redis
 		// key:_id  value:json结构体
 		for cursor.Next(&tmp) {
 			if tmp["winner"] == nil || tmp["winner"] == "" {
 				continue
 			}
-			mgoId:=tmp["_id"].(primitive.ObjectID).Hex()
-			delete(tmp,"_id")
+			mgoId := tmp["_id"].(primitive.ObjectID).Hex()
+			delete(tmp, "_id")
 			bytes, _ := json.Marshal(tmp)
 			if err := conn.Set(mgoId, string(bytes), 0).Err(); err != nil {
 				log.Println(err)
@@ -74,14 +78,14 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 		} else {
 			iterator := scan.Iterator()
 			for iterator.Next() {
-				redisId := iterator.Val()                       //redis key
+				redisId := iterator.Val()                    //redis key
 				redisvalue := conn.Get(iterator.Val()).Val() //redis val
 				tmp := make(map[string]interface{})
-				json.Unmarshal([]byte(redisvalue),&tmp)
+				json.Unmarshal([]byte(redisvalue), &tmp)
 				//重复增量操作
 				//redis查询是否存在
 				rdb := RedisPool.Get()
-				rdb.Do("SELECT","1")
+				rdb.Do("SELECT", Config["redis_winner_db"])
 				if reply, err := redis.String(rdb.Do("GET", tmp["winner"])); err != nil {
 					//redis不存在,存到临时表,定时任务处理
 					FClient.DbName = Config["mgodb_extract_kf"]
@@ -90,7 +94,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 					}
 					//log.Println("get redis id err:定时任务处理", err, tmp)
 					if err := rdb.Close(); err != nil {
-						log.Println("存量",err)
+						log.Println("存量", err)
 					}
 					//删除存量redis
 					conn.Del(redisId)
@@ -103,7 +107,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 					FClient.DbName = Config["mgodb_extract_kf"]
 					oldTmp := FClient.FindById(Config["mgo_qyk_c"], reply)
 					if oldTmp == nil {
-						log.Println("存量 redis id 不存在",reply,tmp["winner"])
+						log.Println("存量 redis id 不存在", reply, tmp["winner"])
 						continue
 					}
 					tmpTopscopeclass := []string{}
@@ -184,7 +188,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 						contactMaps = append(contactMaps, tmpContact)
 					} else {
 						//对比前四项,相等丢弃
-						if v, ok := oldTmp["contact"].(primitive.A); ok {
+						/*if v, ok := oldTmp["contact"].(primitive.A); ok {
 							var isNotUpdate bool
 							for _, vv := range v {
 								if vvv, ok := vv.(map[string]interface{}); ok {
@@ -206,7 +210,19 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 								vvv["updatetime"] = time.Now().Unix()
 								contactMaps = append(contactMaps, vvv)
 							}
+						}*/
+						//直接添加联系人,不再判断
+						if v, ok := oldTmp["contact"].(primitive.A); ok {
+							contactMaps = append(contactMaps, v...)
 						}
+						vvv := make(map[string]interface{})
+						vvv["infoid"] = redisId
+						vvv["contact_person"] = tmp["winnerperson"]
+						vvv["contact_type"] = "项目联系人"
+						vvv["phone"] = winnertel
+						vvv["topscopeclass"] = strings.Join(tmpTopscopeclass, ";")
+						vvv["updatetime"] = time.Now().Unix()
+						contactMaps = append(contactMaps, vvv)
 					}
 					oldTmp["contact"] = contactMaps
 					//mongo更新
@@ -239,7 +255,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 			}
 			//redis查询是否存在
 			rdb := RedisPool.Get()
-			rdb.Do("SELECT","1")
+			rdb.Do("SELECT", Config["redis_winner_db"])
 			if reply, err := redis.String(rdb.Do("GET", tmp["winner"])); err != nil {
 				//redis不存在存到临时表,定时任务处理
 				FClient.DbName = Config["mgodb_extract_kf"]
@@ -341,7 +357,7 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 					contactMaps = append(contactMaps, tmpContact)
 				} else {
 					//对比前四项,相等丢弃
-					if v, ok := oldTmp["contact"].(primitive.A); ok {
+					/*if v, ok := oldTmp["contact"].(primitive.A); ok {
 						var isNotUpdate bool
 						for _, vv := range v {
 							if vvv, ok := vv.(map[string]interface{}); ok {
@@ -363,7 +379,19 @@ func TaskWinner(mapinfo *map[string]interface{}) {
 							vvv["updatetime"] = time.Now().Unix()
 							contactMaps = append(contactMaps, vvv)
 						}
+					}*/
+					//直接添加联系人,不再判断
+					if v, ok := oldTmp["contact"].(primitive.A); ok {
+						contactMaps = append(contactMaps, v...)
 					}
+					vvv := make(map[string]interface{})
+					vvv["infoid"] = overid
+					vvv["contact_person"] = tmp["winnerperson"]
+					vvv["contact_type"] = "项目联系人"
+					vvv["phone"] = winnertel
+					vvv["topscopeclass"] = strings.Join(tmpTopscopeclass, ";")
+					vvv["updatetime"] = time.Now().Unix()
+					contactMaps = append(contactMaps, vvv)
 				}
 				oldTmp["contact"] = contactMaps
 				//mongo更新
@@ -420,14 +448,16 @@ func TimedTaskWinner() {
 					tmpId := tmp["_id"].(primitive.ObjectID).Hex()
 					//再重新查找redis,存在发udp处理,不存在走新增合并
 					rdb := RedisPool.Get()
-					rdb.Do("SELECT","1")
+					rdb.Do("SELECT", Config["redis_winner_db"])
 					if _, err := redis.String(rdb.Do("GET", tmp["winner"])); err == nil {
 						//{"gtid":"57d7ad2f61a0721f152d2ad5","lteid":"5e20968d85a9271abf0ad6c2","stype":""}
 						//redis存在发送udp进行处理
 						by, _ := json.Marshal(map[string]interface{}{
-							"gtid":  tmpId,
-							"lteid": tmpId,
-							"stype": "",
+							"gtid":      tmpId,
+							"lteid":     tmpId,
+							"stype":     "",
+							"data_type": "winner",
+							"data_info": "add",
 						})
 						if e := udpclient.WriteUdp(by, mu.OP_TYPE_DATA, &net.UDPAddr{
 							IP:   net.ParseIP("127.0.0.1"),
@@ -601,7 +631,7 @@ func TimedTaskWinner() {
 						if saveid != nil {
 							//保存redis
 							rc := RedisPool.Get()
-							rc.Do("SELECT","1")
+							rc.Do("SELECT", Config["redis_winner_db"])
 							var _id string
 							if v, ok := saveid.(primitive.ObjectID); ok {
 								_id = v.Hex()