Browse Source

fix:首页&画像详情页未登录用户跳转seo

duxin 1 năm trước cách đây
mục cha
commit
e349d52e5b

+ 385 - 374
src/jfw/front/classificationTag.go

@@ -1,446 +1,457 @@
 package front
 
 import (
-	qu "app.yhyue.com/moapp/jybase/common"
-	"app.yhyue.com/moapp/jybase/encrypt"
-	"app.yhyue.com/moapp/jybase/redis"
-	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/bidsearch"
-	"app.yhyue.com/moapp/jypkg/public"
-	"encoding/json"
-	"fmt"
-	"jy/src/jfw/config"
-	"log"
-	"strconv"
-	"sync"
-	"time"
+    qu "app.yhyue.com/moapp/jybase/common"
+    "app.yhyue.com/moapp/jybase/encrypt"
+    "app.yhyue.com/moapp/jybase/redis"
+    "app.yhyue.com/moapp/jypkg/common/src/qfw/util/bidsearch"
+    "app.yhyue.com/moapp/jypkg/public"
+    "encoding/json"
+    "fmt"
+    "jy/src/jfw/config"
+    "log"
+    "strconv"
+    "sync"
+    "time"
 
-	"net/http"
+    "net/http"
 
-	"app.yhyue.com/moapp/jybase/date"
-	"app.yhyue.com/moapp/jybase/go-xweb/httpsession"
+    "app.yhyue.com/moapp/jybase/date"
+    "app.yhyue.com/moapp/jybase/go-xweb/httpsession"
 )
 
 const (
-	//企业主体库身份类型区分 sql传值
-	IdentityTypeBuyer  = 0 // 采购单位
-	IdentityTypeWinner = 1 // 中标单位
+    //企业主体库身份类型区分 sql传值
+    IdentityTypeBuyer  = 0 // 采购单位
+    IdentityTypeWinner = 1 // 中标单位
 )
 
 type KeyType struct {
-	Name     string    `json:"name"`
-	Url      string    `json:"url"`
-	SeedData []KeyType `json:"seedData"`
+    Name     string    `json:"name"`
+    Url      string    `json:"url"`
+    SeedData []KeyType `json:"seedData"`
 }
 
 // RegionAndInformationAndTender 1地域 2信息类型 3热门招标
 func RegionAndInformationAndTender() map[string]interface{} {
-	if bytes, err := redis.GetBytes(RedisNameNew, "regionAndInformationAndTender"); err == nil && bytes != nil {
-		rData := map[string]interface{}{}
-		if err := json.Unmarshal(*bytes, &rData); err != nil {
-			log.Printf("[MANAGER-ERR]RegionAndInformationAndTender  GetData Error %v \n", err)
-			return nil
-		}
-		return rData
-	}
-	data := make(map[string]interface{})
-	for _, v := range []int{1, 2, 3} {
-		data[fmt.Sprintf("labUrl_%d", v)] = GetLabUrl(v) //1地域 2信息类型 3热门招标
-	}
-	if bytes, err := json.Marshal(data); err == nil && bytes != nil {
-		_ = redis.PutBytes(RedisNameNew, "regionAndInformationAndTender", &bytes, 2*60*60)
-	}
-	return data
+    if bytes, err := redis.GetBytes(RedisNameNew, "regionAndInformationAndTender"); err == nil && bytes != nil {
+        rData := map[string]interface{}{}
+        if err := json.Unmarshal(*bytes, &rData); err != nil {
+            log.Printf("[MANAGER-ERR]RegionAndInformationAndTender  GetData Error %v \n", err)
+            return nil
+        }
+        return rData
+    }
+    data := make(map[string]interface{})
+    for _, v := range []int{1, 2, 3} {
+        data[fmt.Sprintf("labUrl_%d", v)] = GetLabUrl(v) //1地域 2信息类型 3热门招标
+    }
+    if bytes, err := json.Marshal(data); err == nil && bytes != nil {
+        _ = redis.PutBytes(RedisNameNew, "regionAndInformationAndTender", &bytes, 2*60*60)
+    }
+    return data
 }
 
 // 最新更新的200中标企业
 func GetWinnerInfo() (data []*BuyerList) {
-	// 取缓存
-	cache, err := GetHotCache(config.HotWinnerConfig.CacheKey)
-	if err == nil && cache != nil && len(cache) > 0 {
-		return cache
-	}
-	// 没取到缓存查数据
-	rs := getEntBaseInfo(IdentityTypeWinner, config.HotWinnerConfig.Limit)
-	//关联中标企业
-	if rs == nil || len(*rs) == 0 {
-		return
-	}
+    // 取缓存
+    cache, err := GetHotCache(config.HotWinnerConfig.CacheKey)
+    if err == nil && cache != nil && len(cache) > 0 {
+        return cache
+    }
+    // 没取到缓存查数据
+    //rs := getEntBaseInfo(IdentityTypeWinner, config.HotWinnerConfig.Limit)
+    rs := GetSeoId(IdentityTypeWinner, config.HotWinnerConfig.Limit)
+    //关联中标企业
+    if rs == nil || len(*rs) == 0 {
+        return
+    }
 
-	for _, v := range *rs {
-		var vs BuyerList
-		id := encrypt.EncodeArticleId2ByCheck(qu.InterfaceToStr(v["id"]))
-		vs.Name = qu.InterfaceToStr(v["name"])
-		vs.Url = fmt.Sprintf("/swordfish/page_big_pc/ent_portrait/%s", id)
-		data = append(data, &vs)
-	}
-	// 存缓存
-	go PutHotCache(config.HotWinnerConfig.CacheKey, config.HotWinnerConfig.CacheTimeout, data)
-	return
+    for _, v := range *rs {
+        var vs BuyerList
+        id := qu.InterfaceToStr(v["sep_id"])
+        vs.Name = qu.InterfaceToStr(v["name"])
+        vs.Url = fmt.Sprintf("/qy/%s.html", id)
+        data = append(data, &vs)
+    }
+    // 存缓存
+    go PutHotCache(config.HotWinnerConfig.CacheKey, config.HotWinnerConfig.CacheTimeout, data)
+    return
 }
 
 // PutHotCache 热门采购单位、中标单位存缓存
 func PutHotCache(redisKey string, redisTimeout int, list []*BuyerList) {
-	b, err := json.Marshal(list)
-	if err != nil {
-		log.Printf("保存缓存 序列化异常,data:%s,err:%s\n", list, err.Error())
-		return
-	}
-	if err = redis.PutBytes("seoCache", redisKey, &b, redisTimeout); err != nil {
-		log.Printf("保存缓存 redis 异常,key:%s,err:%s\n", redisKey, err.Error())
-	}
+    b, err := json.Marshal(list)
+    if err != nil {
+        log.Printf("保存缓存 序列化异常,data:%s,err:%s\n", list, err.Error())
+        return
+    }
+    if err = redis.PutBytes("seoCache", redisKey, &b, redisTimeout); err != nil {
+        log.Printf("保存缓存 redis 异常,key:%s,err:%s\n", redisKey, err.Error())
+    }
 
 }
 
 // GetHotCache 热门采购单位、中标单位取缓存
 func GetHotCache(redisKey string) (list []*BuyerList, err error) {
-	redisByte, err := redis.GetBytes("seoCache", redisKey)
-	if err != nil || redisByte == nil || len(*redisByte) == 0 {
-		return list, err
-	}
-	err = json.Unmarshal(*redisByte, &list)
-	if err != nil {
-		log.Println(fmt.Sprintf("读取缓存 序列化异常,err:%s", err.Error()))
-		return nil, err
-	}
-	return list, nil
+    redisByte, err := redis.GetBytes("seoCache", redisKey)
+    if err != nil || redisByte == nil || len(*redisByte) == 0 {
+        return list, err
+    }
+    err = json.Unmarshal(*redisByte, &list)
+    if err != nil {
+        log.Println(fmt.Sprintf("读取缓存 序列化异常,err:%s", err.Error()))
+        return nil, err
+    }
+    return list, nil
 }
 
 // 获取最新的中标单位
 // identityType : 0 采购单位 1-中标单位
 // limit: 数量
 func getEntBaseInfo(identityType, limit int) *[]map[string]interface{} {
-	q := "SELECT  company_id AS id,name,name_id  FROM   dws_f_ent_baseinfo WHERE     company_id !='' and company_id is not null  AND (identity_type &(1 << ?)) > 0 order by latest_time desc  limit ?"
-	return public.GlobalCommonMysql.SelectBySql(q, identityType, limit)
+    q := "SELECT  company_id AS id,name,name_id  FROM   dws_f_ent_baseinfo WHERE     company_id !='' and company_id is not null  AND (identity_type &(1 << ?)) > 0 order by latest_time desc  limit ?"
+    return public.GlobalCommonMysql.SelectBySql(q, identityType, limit)
+
+}
+
+func GetSeoId(identityType, limit int) *[]map[string]interface{} {
+    //q := fmt.Sprintf(`{"query": {"bool": {}},"sort": {"updatetime": "desc"},"from": 0,"size": %d,"_source": ["name","seo_id"]}`, config.HotWinnerConfig.Limit)
+    //index := qu.If(isWinner, "qyxy", "buyer").(string)
+    q := "SELECT  company_id AS id,name,name_id,seo_id  FROM   dws_f_ent_baseinfo WHERE     company_id !='' and company_id is not null  AND (identity_type &(1 << ?)) > 0 order by latest_time desc  limit ?"
+    return public.GlobalCommonMysql.SelectBySql(q, identityType, limit)
 
 }
 
 // ContentRecommendation 实用内容推荐
 func ContentRecommendation() []KeyType {
-	if bytes, err := redis.GetBytes(RedisNameNew, "contentRecommendation"); err == nil && bytes != nil {
-		var rData []KeyType
-		log.Println()
-		if err := json.Unmarshal(*bytes, &rData); err != nil {
-			log.Printf("[MANAGER-ERR]contentRecommendation  GetData Error %v \n", err)
-			return nil
-		}
-		return rData
-	}
-	columnCode, _ := config.Sysconfig["columnCode"].(map[string]interface{})
-	jySchoolCode := qu.InterfaceToStr(columnCode["招投标攻略"])
-	industryInfoCode := qu.InterfaceToStr(columnCode["行业资讯"])
-	industryInfoUrl, _ := config.Sysconfig["industryInfoUrl"].(map[string]interface{})
-	jySchoolUrl, _ := config.Sysconfig["jySchoolUrl"].(map[string]interface{})
-	column, ok := mongodb.Find("column", map[string]interface{}{"$or": []map[string]interface{}{
-		{"pid": "ztbgl"}, {"pid": "hyzx"}, {"pid": "bzzx"},
-	}}, `{"i_order":1}`, "", false, -1, -1)
-	dataMap := make(map[string][]KeyType)
-	if ok && column != nil && len(*column) > 0 {
-		for _, v := range *column {
-			pid := qu.InterfaceToStr(v["pid"])
-			code := qu.InterfaceToStr(v["s_columncode"])
-			var v1 KeyType
-			v1.Name = qu.InterfaceToStr(v["s_columnname"])
-			if pid == jySchoolCode {
-				v1.Url = fmt.Sprintf(qu.InterfaceToStr(jySchoolUrl["towUrl"]), code)
-			} else if pid == industryInfoCode {
-				v1.Url = fmt.Sprintf(qu.InterfaceToStr(industryInfoUrl["towUrl"]), code)
-			} else if pid == "bzzx" {
-				v1.Url = fmt.Sprintf("/helpCenter/catalog/%s", code)
-			}
-			dataMap[pid] = append(dataMap[pid], v1)
-		}
-	}
-	var data []KeyType
-	for _, v := range []string{jySchoolCode, industryInfoCode, "bzzx"} {
-		if v1, ok1 := dataMap[v]; ok1 && v1 != nil {
-			var d KeyType
-			switch v {
-			case jySchoolCode:
-				d.Name = "招投标攻略"
-				d.Url = qu.InterfaceToStr(jySchoolUrl["homeUrl"])
-				d.SeedData = v1
-			case industryInfoCode:
-				d.Name = "行业资讯"
-				d.Url = qu.InterfaceToStr(industryInfoUrl["homeUrl"])
-				d.SeedData = v1
-			case "bzzx":
-				d.Name = "帮助中心"
-				d.Url = "/helpCenter/index"
-				d.SeedData = v1
-			}
-			data = append(data, d)
-		}
-	}
-	if bytes, err := json.Marshal(data); err == nil && bytes != nil {
-		_ = redis.PutBytes(RedisNameNew, "contentRecommendation", &bytes, 12*60*60)
-	}
-	return data
+    if bytes, err := redis.GetBytes(RedisNameNew, "contentRecommendation"); err == nil && bytes != nil {
+        var rData []KeyType
+        log.Println()
+        if err := json.Unmarshal(*bytes, &rData); err != nil {
+            log.Printf("[MANAGER-ERR]contentRecommendation  GetData Error %v \n", err)
+            return nil
+        }
+        return rData
+    }
+    columnCode, _ := config.Sysconfig["columnCode"].(map[string]interface{})
+    jySchoolCode := qu.InterfaceToStr(columnCode["招投标攻略"])
+    industryInfoCode := qu.InterfaceToStr(columnCode["行业资讯"])
+    industryInfoUrl, _ := config.Sysconfig["industryInfoUrl"].(map[string]interface{})
+    jySchoolUrl, _ := config.Sysconfig["jySchoolUrl"].(map[string]interface{})
+    column, ok := mongodb.Find("column", map[string]interface{}{"$or": []map[string]interface{}{
+        {"pid": "ztbgl"}, {"pid": "hyzx"}, {"pid": "bzzx"},
+    }}, `{"i_order":1}`, "", false, -1, -1)
+    dataMap := make(map[string][]KeyType)
+    if ok && column != nil && len(*column) > 0 {
+        for _, v := range *column {
+            pid := qu.InterfaceToStr(v["pid"])
+            code := qu.InterfaceToStr(v["s_columncode"])
+            var v1 KeyType
+            v1.Name = qu.InterfaceToStr(v["s_columnname"])
+            if pid == jySchoolCode {
+                v1.Url = fmt.Sprintf(qu.InterfaceToStr(jySchoolUrl["towUrl"]), code)
+            } else if pid == industryInfoCode {
+                v1.Url = fmt.Sprintf(qu.InterfaceToStr(industryInfoUrl["towUrl"]), code)
+            } else if pid == "bzzx" {
+                v1.Url = fmt.Sprintf("/helpCenter/catalog/%s", code)
+            }
+            dataMap[pid] = append(dataMap[pid], v1)
+        }
+    }
+    var data []KeyType
+    for _, v := range []string{jySchoolCode, industryInfoCode, "bzzx"} {
+        if v1, ok1 := dataMap[v]; ok1 && v1 != nil {
+            var d KeyType
+            switch v {
+            case jySchoolCode:
+                d.Name = "招投标攻略"
+                d.Url = qu.InterfaceToStr(jySchoolUrl["homeUrl"])
+                d.SeedData = v1
+            case industryInfoCode:
+                d.Name = "行业资讯"
+                d.Url = qu.InterfaceToStr(industryInfoUrl["homeUrl"])
+                d.SeedData = v1
+            case "bzzx":
+                d.Name = "帮助中心"
+                d.Url = "/helpCenter/index"
+                d.SeedData = v1
+            }
+            data = append(data, d)
+        }
+    }
+    if bytes, err := json.Marshal(data); err == nil && bytes != nil {
+        _ = redis.PutBytes(RedisNameNew, "contentRecommendation", &bytes, 12*60*60)
+    }
+    return data
 }
 
 type Signal struct {
-	Name       string                   `json:"name"`
-	Url        string                   `json:"url"`
-	UnLoginUrl string                   `json:"unLoginUrl"`
-	Data       []map[string]interface{} `json:"data"`
+    Name       string                   `json:"name"`
+    Url        string                   `json:"url"`
+    UnLoginUrl string                   `json:"unLoginUrl"`
+    Data       []map[string]interface{} `json:"data"`
 }
 
 // 推荐标讯
 func RecommendationBeacon() []Signal {
-	if bytes, err := redis.GetBytes(RedisNameNew, "recommendationBeacon"); err == nil && bytes != nil {
-		var rData []Signal
-		if err := json.Unmarshal(*bytes, &rData); err != nil {
-			log.Printf("[MANAGER-ERR]recommendationBeacon  GetData Error %v \n", err)
-			return nil
-		}
-		return rData
-	}
+    if bytes, err := redis.GetBytes(RedisNameNew, "recommendationBeacon"); err == nil && bytes != nil {
+        var rData []Signal
+        if err := json.Unmarshal(*bytes, &rData); err != nil {
+            log.Printf("[MANAGER-ERR]recommendationBeacon  GetData Error %v \n", err)
+            return nil
+        }
+        return rData
+    }
 
-	sy := sync.RWMutex{}
-	wg := sync.WaitGroup{}
-	var data, dataArr []Signal
-	infoType := qu.ObjToMap(config.Seoconfig["infoTypeToLetter"])
-	for _, v := range []string{"招标预告", "招标公告", "招标结果", "招标信用信息"} {
-		wg.Add(1)
-		go func(vst string) {
-			defer wg.Done()
-			var list []map[string]interface{}
-			_, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", vst, "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 8, "")
-			if lists != nil {
-				for _, v1 := range *lists {
-					v1["_id"] = encrypt.CommonEncodeArticle("content", v1["_id"].(string))
-					delete(v1, "toptype")
-					delete(v1, "s_subscopeclass")
-					tmpdate := v1["publishtime"]
-					v1["publishtime"] = qu.Int64All(tmpdate.(float64))
-					if v1["budget"] != nil {
-						v1["budget"] = ConversionMoeny(v1["budget"])
-					} else if v1["bidamount"] != nil {
-						v1["budget"] = ConversionMoeny(v1["bidamount"])
-					}
-				}
-				list = *lists
-			}
-			var d Signal
-			d.Name = vst
-			d.UnLoginUrl = fmt.Sprintf("/list/stype/%s.html", (*infoType)[vst])
-			d.Url = fmt.Sprintf("/jylab/supsearch/index.html?subtype=%s", vst)
-			d.Data = list
-			sy.Lock()
-			dataArr = append(dataArr, d)
-			sy.Unlock()
-		}(v)
-	}
-	wg.Wait()
-	for _, v := range []string{"招标预告", "招标公告", "招标结果", "招标信用信息"} {
-		for _, v1 := range dataArr {
-			if v == v1.Name {
-				data = append(data, v1)
-			}
-		}
-	}
+    sy := sync.RWMutex{}
+    wg := sync.WaitGroup{}
+    var data, dataArr []Signal
+    infoType := qu.ObjToMap(config.Seoconfig["infoTypeToLetter"])
+    for _, v := range []string{"招标预告", "招标公告", "招标结果", "招标信用信息"} {
+        wg.Add(1)
+        go func(vst string) {
+            defer wg.Done()
+            var list []map[string]interface{}
+            _, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", vst, "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 8, "")
+            if lists != nil {
+                for _, v1 := range *lists {
+                    v1["_id"] = encrypt.CommonEncodeArticle("content", v1["_id"].(string))
+                    delete(v1, "toptype")
+                    delete(v1, "s_subscopeclass")
+                    tmpdate := v1["publishtime"]
+                    v1["publishtime"] = qu.Int64All(tmpdate.(float64))
+                    if v1["budget"] != nil {
+                        v1["budget"] = ConversionMoeny(v1["budget"])
+                    } else if v1["bidamount"] != nil {
+                        v1["budget"] = ConversionMoeny(v1["bidamount"])
+                    }
+                }
+                list = *lists
+            }
+            var d Signal
+            d.Name = vst
+            d.UnLoginUrl = fmt.Sprintf("/list/stype/%s.html", (*infoType)[vst])
+            d.Url = fmt.Sprintf("/jylab/supsearch/index.html?subtype=%s", vst)
+            d.Data = list
+            sy.Lock()
+            dataArr = append(dataArr, d)
+            sy.Unlock()
+        }(v)
+    }
+    wg.Wait()
+    for _, v := range []string{"招标预告", "招标公告", "招标结果", "招标信用信息"} {
+        for _, v1 := range dataArr {
+            if v == v1.Name {
+                data = append(data, v1)
+            }
+        }
+    }
 
-	if bytes, err := json.Marshal(data); err == nil && bytes != nil {
-		_ = redis.PutBytes(RedisNameNew, "recommendationBeacon", &bytes, 5*60)
-	}
-	return data
+    if bytes, err := json.Marshal(data); err == nil && bytes != nil {
+        _ = redis.PutBytes(RedisNameNew, "recommendationBeacon", &bytes, 5*60)
+    }
+    return data
 }
 
 type BuyerList struct {
-	Name string `json:"name"`
-	Url  string `json:"url"`
+    Name string `json:"name"`
+    Url  string `json:"url"`
 }
 
 // 热门采购单位
-func HotBuyerList(entIsNew bool) []*BuyerList {
-	// 取缓存
-	cache, err := GetHotCache(config.HotBuyerConfig.CacheKey)
-	if err == nil && cache != nil && len(cache) > 0 {
-		return cache
-	}
-	// 查数据
-	data := getEntBaseInfo(IdentityTypeBuyer, config.HotBuyerConfig.Limit)
-	if data == nil || len(*data) == 0 {
-		return nil
-	}
-	var buyerList []*BuyerList
-	for _, b := range *data {
-		name := qu.ObjToString(b["name"])
-		buyerId := qu.ObjToString(b["name_id"])
-		if name != "" && buyerId != "" {
-			idEncode := encrypt.EncodeArticleId2ByCheck(buyerId)
-			buyerList = append(buyerList, &BuyerList{
-				Name: name,
-				Url:  qu.If(entIsNew, fmt.Sprintf("/entpc/unit_portrayal_id/%s", idEncode), fmt.Sprintf("/swordfish/page_big_pc/unit_portrayal_id/%s", idEncode)).(string),
-			})
-		}
-	}
-	//存缓存
-	go PutHotCache(config.HotBuyerConfig.CacheKey, config.HotBuyerConfig.CacheTimeout, buyerList)
+func HotBuyerList() []*BuyerList {
+    // 取缓存
+    cache, err := GetHotCache(config.HotBuyerConfig.CacheKey)
+    if err == nil && cache != nil && len(cache) > 0 {
+        return cache
+    }
+    // 查数据
+    //data := getEntBaseInfo(IdentityTypeBuyer, config.HotBuyerConfig.Limit)
+    data := GetSeoId(IdentityTypeBuyer, config.HotWinnerConfig.Limit)
+    if data == nil || len(*data) == 0 {
+        return nil
+    }
+    var buyerList []*BuyerList
+    for _, b := range *data {
+        name := qu.ObjToString(b["name"])
+        buyerId := qu.InterfaceToStr(b["seo_id"])
+        if name != "" && buyerId != "" {
+            //idEncode := encrypt.EncodeArticleId2ByCheck(buyerId)
+            buyerList = append(buyerList, &BuyerList{
+                Name: name,
+                //Url:  qu.If(entIsNew, fmt.Sprintf("/entpc/unit_portrayal_id/%s", idEncode), fmt.Sprintf("/swordfish/page_big_pc/unit_portrayal_id/%s", idEncode)).(string),
+                Url: fmt.Sprintf("/dw/%s.html", buyerId),
+            })
+        }
+    }
+    //存缓存
+    go PutHotCache(config.HotBuyerConfig.CacheKey, config.HotBuyerConfig.CacheTimeout, buyerList)
 
-	return buyerList
+    return buyerList
 
 }
 
 func GetIncludedInfo() map[string]interface{} {
-	if bytes, err := redis.GetBytes(RedisNameNew, "jyIncludedInfo"); err == nil && bytes != nil {
-		rData := map[string]interface{}{}
-		if err := json.Unmarshal(*bytes, &rData); err != nil {
-			log.Printf("[MANAGER-ERR]jyIncludedInfo  GetData Error %v \n", err)
-			return nil
-		}
-		return rData
-	}
-	data := public.BaseMysql.SelectBySql(`select bid,project,ent,buyer,bid_day_update,bid_field,field_accuracy,create_time from included_info order by create_time desc limit 1`)
-	if data == nil || len(*data) <= 0 {
-		return nil
-	}
-	info := (*data)[0]
-	//招标信息的数值
-	bid := qu.Int64All(info["bid"])
-	Bid, BidUnit := formdataNum(bid)
-	//招标采购项目的数值
-	project := qu.Int64All(info["project"])
-	Project, ProjectUnit := formdataNum(project)
-	//企业数据库的数值
-	ent := qu.Int64All(info["ent"])
-	Ent, EntUnit := formdataNum(ent)
-	//采购单位库的数值
-	buyer := qu.Int64All(info["buyer"])
-	Buyer, BuyerUnit := formdataNum(buyer)
-	//每日更新招标信息的数值
-	bid_day_update := qu.Int64All(info["bid_day_update"])
-	BidDayUpdate, BidDayUpdateUnit := formdataNum(bid_day_update)
-	mdata, ok := public.MQFW.Find("swordfish_index", map[string]interface{}{
-		"i_push": map[string]interface{}{
-			"$exists": true,
-		},
-	}, `{"_id":-1}`, `{"i_push":1}`, false, 0, 1)
-	i_push := 0
-	if mdata != nil && ok && len(*mdata) > 0 {
-		swordData := (*mdata)[0]
-		i_push = qu.IntAll(swordData["i_push"])
-	}
-	Push, PushUnit := formdataNum(int64(i_push))
-	m := map[string]interface{}{
-		"bid":              Bid,
-		"bidUnit":          BidUnit,
-		"project":          Project,
-		"projectUnit":      ProjectUnit,
-		"ent":              Ent,
-		"entUnit":          EntUnit,
-		"buyer":            Buyer,
-		"buyerUnit":        BuyerUnit,
-		"bidDayUpdate":     BidDayUpdate,
-		"bidDayUpdateUnit": BidDayUpdateUnit,
-		"push":             Push,
-		"pushUnit":         PushUnit,
-	}
-	if bytes, err := json.Marshal(m); err == nil && bytes != nil {
-		_ = redis.PutBytes(RedisNameNew, "jyIncludedInfo", &bytes, 2*60*60)
-	}
-	return m
+    if bytes, err := redis.GetBytes(RedisNameNew, "jyIncludedInfo"); err == nil && bytes != nil {
+        rData := map[string]interface{}{}
+        if err := json.Unmarshal(*bytes, &rData); err != nil {
+            log.Printf("[MANAGER-ERR]jyIncludedInfo  GetData Error %v \n", err)
+            return nil
+        }
+        return rData
+    }
+    data := public.BaseMysql.SelectBySql(`select bid,project,ent,buyer,bid_day_update,bid_field,field_accuracy,create_time from included_info order by create_time desc limit 1`)
+    if data == nil || len(*data) <= 0 {
+        return nil
+    }
+    info := (*data)[0]
+    //招标信息的数值
+    bid := qu.Int64All(info["bid"])
+    Bid, BidUnit := formdataNum(bid)
+    //招标采购项目的数值
+    project := qu.Int64All(info["project"])
+    Project, ProjectUnit := formdataNum(project)
+    //企业数据库的数值
+    ent := qu.Int64All(info["ent"])
+    Ent, EntUnit := formdataNum(ent)
+    //采购单位库的数值
+    buyer := qu.Int64All(info["buyer"])
+    Buyer, BuyerUnit := formdataNum(buyer)
+    //每日更新招标信息的数值
+    bid_day_update := qu.Int64All(info["bid_day_update"])
+    BidDayUpdate, BidDayUpdateUnit := formdataNum(bid_day_update)
+    mdata, ok := public.MQFW.Find("swordfish_index", map[string]interface{}{
+        "i_push": map[string]interface{}{
+            "$exists": true,
+        },
+    }, `{"_id":-1}`, `{"i_push":1}`, false, 0, 1)
+    i_push := 0
+    if mdata != nil && ok && len(*mdata) > 0 {
+        swordData := (*mdata)[0]
+        i_push = qu.IntAll(swordData["i_push"])
+    }
+    Push, PushUnit := formdataNum(int64(i_push))
+    m := map[string]interface{}{
+        "bid":              Bid,
+        "bidUnit":          BidUnit,
+        "project":          Project,
+        "projectUnit":      ProjectUnit,
+        "ent":              Ent,
+        "entUnit":          EntUnit,
+        "buyer":            Buyer,
+        "buyerUnit":        BuyerUnit,
+        "bidDayUpdate":     BidDayUpdate,
+        "bidDayUpdateUnit": BidDayUpdateUnit,
+        "push":             Push,
+        "pushUnit":         PushUnit,
+    }
+    if bytes, err := json.Marshal(m); err == nil && bytes != nil {
+        _ = redis.PutBytes(RedisNameNew, "jyIncludedInfo", &bytes, 2*60*60)
+    }
+    return m
 }
 
 func NewIndexbids(session *httpsession.Session, r *http.Request) []map[string]interface{} {
-	if bytes, err := redis.GetBytes(RedisNameNew, "jyNewIndexbids"); err == nil && bytes != nil {
-		rData := []map[string]interface{}{}
-		if err := json.Unmarshal(*bytes, &rData); err != nil {
-			log.Printf("[MANAGER-ERR]jyNewIndexbids  GetData Error %v \n", err)
-			return rData
-		}
-		return rData
-	}
-	/*
-		userInfo := jy.GetVipState(session, *config.Middleground, "")
-		so := NewSearchOptimize("", "", "", "", "招标预告,招标公告,招标结果,招标信用信息", "", "", "title", "", "", "", "", "", "", "", "", "", "PC", "", 0, 50, 0, 0, 0, *userInfo, true, r)
-		so.DefaultSearchParamsAuto()
-		//缓存数据
-		_, total, _ := so.GetBidSearchList(true)
-		data.Count = total
-	*/
-	// p397 收回查看拟建权限
-	_, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", "招标预告,招标公告,招标结果,招标信用信息", "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 10, "")
-	if lists != nil {
-		for _, v1 := range *lists {
-			v1["_id"] = encrypt.CommonEncodeArticle("content", v1["_id"].(string))
-			delete(v1, "toptype")
-			delete(v1, "s_subscopeclass")
-			tmpdate := v1["publishtime"]
-			v1["publishtime"] = time.Unix(qu.Int64All(tmpdate.(float64)), 0).Format(date.Date_Short_Layout)
-			if v1["budget"] != nil {
-				v1["budget"] = ConversionMoeny(v1["budget"])
-			} else if v1["bidamount"] != nil {
-				v1["budget"] = ConversionMoeny(v1["bidamount"])
-			}
-		}
-		if bytes, err := json.Marshal(*lists); err == nil && bytes != nil {
-			_ = redis.PutBytes(RedisNameNew, "jyNewIndexbids", &bytes, 5*60)
-		}
-		return *lists
-	}
+    if bytes, err := redis.GetBytes(RedisNameNew, "jyNewIndexbids"); err == nil && bytes != nil {
+        rData := []map[string]interface{}{}
+        if err := json.Unmarshal(*bytes, &rData); err != nil {
+            log.Printf("[MANAGER-ERR]jyNewIndexbids  GetData Error %v \n", err)
+            return rData
+        }
+        return rData
+    }
+    /*
+    	userInfo := jy.GetVipState(session, *config.Middleground, "")
+    	so := NewSearchOptimize("", "", "", "", "招标预告,招标公告,招标结果,招标信用信息", "", "", "title", "", "", "", "", "", "", "", "", "", "PC", "", 0, 50, 0, 0, 0, *userInfo, true, r)
+    	so.DefaultSearchParamsAuto()
+    	//缓存数据
+    	_, total, _ := so.GetBidSearchList(true)
+    	data.Count = total
+    */
+    // p397 收回查看拟建权限
+    _, _, lists := bidsearch.GetPcBidSearchData("", "", "", "", "招标预告,招标公告,招标结果,招标信用信息", "", "", "", "", "", "", "", "", 1, false, nil, bidSearch_field_1, "", false, false, "", 10, "")
+    if lists != nil {
+        for _, v1 := range *lists {
+            v1["_id"] = encrypt.CommonEncodeArticle("content", v1["_id"].(string))
+            delete(v1, "toptype")
+            delete(v1, "s_subscopeclass")
+            tmpdate := v1["publishtime"]
+            v1["publishtime"] = time.Unix(qu.Int64All(tmpdate.(float64)), 0).Format(date.Date_Short_Layout)
+            if v1["budget"] != nil {
+                v1["budget"] = ConversionMoeny(v1["budget"])
+            } else if v1["bidamount"] != nil {
+                v1["budget"] = ConversionMoeny(v1["bidamount"])
+            }
+        }
+        if bytes, err := json.Marshal(*lists); err == nil && bytes != nil {
+            _ = redis.PutBytes(RedisNameNew, "jyNewIndexbids", &bytes, 5*60)
+        }
+        return *lists
+    }
 
-	return nil
+    return nil
 }
 
 // 格式输出数据
 // 亿亿、万亿、亿、万 只有一位的时候保留1位小数点 两位及以上不保留  1.1亿  11亿
 func formdataNum(num int64) (floatNum float64, unit string) {
-	s_num := strconv.Itoa(int(num))
-	len_m := len(s_num)
-	m := ""
-	indexArr := []int{17, 13, 9, 5}
-	unitArr := []string{"亿亿", "万亿", "亿", "万"}
+    s_num := strconv.Itoa(int(num))
+    len_m := len(s_num)
+    m := ""
+    indexArr := []int{17, 13, 9, 5}
+    unitArr := []string{"亿亿", "万亿", "亿", "万"}
 
-	for k, v := range indexArr {
-		if len_m > v {
-			if qu.IntAll(s_num[len_m-(v-1):len_m-(v-2)]) >= 5 {
-				if qu.IntAll(s_num[0:len_m-(v-1)])+1 == 10 {
-					//满10 进 1
-					m1, _ := strconv.Atoi(s_num[0 : len_m-(v-1)])
-					m = strconv.Itoa(m1 + 1)
-				} else {
-					//满 万 进1 单位
-					if qu.IntAll(s_num[0:len_m-(v-1)])+1 == 10000 {
-						m = "1"
-						unit = unitArr[k-1]
-					} else {
-						m = strconv.Itoa(qu.IntAll(s_num[0:len_m-(v-1)]) + 1)
-					}
-				}
-				// log.Println("m1:", m)
-			} else {
-				m = s_num[0 : len_m-(v-1)]
-				// log.Println("m2:", m)
-			}
-		} else if len_m == v { //
+    for k, v := range indexArr {
+        if len_m > v {
+            if qu.IntAll(s_num[len_m-(v-1):len_m-(v-2)]) >= 5 {
+                if qu.IntAll(s_num[0:len_m-(v-1)])+1 == 10 {
+                    //满10 进 1
+                    m1, _ := strconv.Atoi(s_num[0 : len_m-(v-1)])
+                    m = strconv.Itoa(m1 + 1)
+                } else {
+                    //满 万 进1 单位
+                    if qu.IntAll(s_num[0:len_m-(v-1)])+1 == 10000 {
+                        m = "1"
+                        unit = unitArr[k-1]
+                    } else {
+                        m = strconv.Itoa(qu.IntAll(s_num[0:len_m-(v-1)]) + 1)
+                    }
+                }
+                // log.Println("m1:", m)
+            } else {
+                m = s_num[0 : len_m-(v-1)]
+                // log.Println("m2:", m)
+            }
+        } else if len_m == v { //
 
-			if qu.IntAll(s_num[len_m-(v-2):len_m-(v-3)]) >= 5 {
-				m = s_num[0 : len_m-(v-1)]
-				//满10 进 1
-				if qu.IntAll(s_num[len_m-(v-1):len_m-(v-2)])+1 == 10 {
-					m1, _ := strconv.Atoi(s_num[0 : len_m-(v-1)])
-					m = strconv.Itoa(m1 + 1)
-				} else {
-					m += "." + strconv.Itoa(qu.IntAll(s_num[len_m-(v-1):len_m-(v-2)])+1)
-				}
-				// log.Println("m3:", m)
-			} else {
-				m = s_num[0 : len_m-(v-1)]
-				m += "." + s_num[len_m-(v-1):len_m-(v-2)]
-				// log.Println("m4:", m)
-			}
-		}
-		if m != "" {
-			if unit == "" {
-				unit = unitArr[k]
-			}
-			break
-		}
-	}
-	if m == "" {
-		m = s_num
-	}
-	//string 转float
-	floatNum, _ = strconv.ParseFloat(m, 64)
-	return floatNum, unit
+            if qu.IntAll(s_num[len_m-(v-2):len_m-(v-3)]) >= 5 {
+                m = s_num[0 : len_m-(v-1)]
+                //满10 进 1
+                if qu.IntAll(s_num[len_m-(v-1):len_m-(v-2)])+1 == 10 {
+                    m1, _ := strconv.Atoi(s_num[0 : len_m-(v-1)])
+                    m = strconv.Itoa(m1 + 1)
+                } else {
+                    m += "." + strconv.Itoa(qu.IntAll(s_num[len_m-(v-1):len_m-(v-2)])+1)
+                }
+                // log.Println("m3:", m)
+            } else {
+                m = s_num[0 : len_m-(v-1)]
+                m += "." + s_num[len_m-(v-1):len_m-(v-2)]
+                // log.Println("m4:", m)
+            }
+        }
+        if m != "" {
+            if unit == "" {
+                unit = unitArr[k]
+            }
+            break
+        }
+    }
+    if m == "" {
+        m = s_num
+    }
+    //string 转float
+    floatNum, _ = strconv.ParseFloat(m, 64)
+    return floatNum, unit
 }

+ 22 - 10
src/jfw/front/frontRouter.go

@@ -2,7 +2,8 @@ package front
 
 import (
 	"app.yhyue.com/moapp/jybase/common"
-	elastic "app.yhyue.com/moapp/jybase/esv1"
+	"app.yhyue.com/moapp/jybase/encrypt"
+	"app.yhyue.com/moapp/jybase/redis"
 	"app.yhyue.com/moapp/jypkg/public"
 	"fmt"
 	"jy/src/jfw/config"
@@ -219,7 +220,7 @@ func (this *CommonRouter) doPcBigPage(pageSign, types string) error {
 	if !strings.Contains(pageSign, "unit_portrayal") && !strings.Contains(pageSign, "ent_portrait") && !strings.Contains(pageSign, "ent_ser_portrait") && userid == "" {
 		return this.Redirect("/notin/page")
 	}
-	/*if userid == "" {
+	if userid == "" {
 		if strings.Contains(pageSign, "ent_ser_portrait") || strings.Contains(pageSign, "ent_portrait") {
 			urlArr := strings.Split(pageSign, "/")
 			entId := encrypt.DecodeArticleId2ByCheck(urlArr[len(urlArr)-1])[0]
@@ -236,24 +237,35 @@ func (this *CommonRouter) doPcBigPage(pageSign, types string) error {
 				return this.Redirect(fmt.Sprintf("/dw/%s.html", seoId))
 			}
 		}
-	}*/
+	}
 	return this.Render(fmt.Sprintf("/frontRouter/pc/page_big_pc/sess/index.html"))
 }
 
 func esSeoId(isWinner bool, idName string) string {
 	var seoId string
+	redisKey := fmt.Sprintf("getSeoId_%v_%s", isWinner, idName)
+	seoId = redis.GetStr("newother", redisKey)
+	if seoId != "" {
+		return seoId
+	}
+
 	if isWinner {
-		winnerSeo := elastic.GetById("qyxy", "qyxy", idName)
-		if winnerSeo != nil && len(*winnerSeo) > 0 {
-			seoId = common.InterfaceToStr((*winnerSeo)[0]["seo_id"])
+		//q := "SELECT  company_id AS id,name,name_id,seo_id  FROM   dws_f_ent_baseinfo WHERE    name_id =? and company_id !='' and company_id is not null  AND (identity_type &(1 << ?)) > 0 order by latest_time desc  limit ?"
+		//public.GlobalCommonMysql.SelectBySql(q, idName, 1, 1)
+		if data := public.GlobalCommonMysql.FindOne("dws_f_ent_baseinfo", map[string]interface{}{
+			"name_id": idName,
+		}, `{"seo_id":1}`, ""); data != nil && len(*data) > 0 {
+			seoId = common.InterfaceToStr((*data)["seo_id"])
 		}
+
 	} else {
-		q := fmt.Sprintf(`{"query": {"bool": {"must": [{"match": {"buyer_name": "%s"}}]}},"from": 0,"size": 1,"_source":["seo_id"]}`, idName)
-		winnerSeo := elastic.Get("buyer", "buyer", q)
-		if winnerSeo != nil && len(*winnerSeo) > 0 {
-			seoId = common.InterfaceToStr((*winnerSeo)[0]["seo_id"])
+		if data := public.GlobalCommonMysql.FindOne("dws_f_ent_baseinfo", map[string]interface{}{
+			"name": idName,
+		}, `{"seo_id":1}`, ""); data != nil && len(*data) > 0 {
+			seoId = common.InterfaceToStr((*data)["seo_id"])
 		}
 	}
+	redis.Put("newother", redisKey, seoId, -1)
 	return seoId
 }
 

+ 6 - 6
src/jfw/front/pcIndex.go

@@ -149,11 +149,11 @@ func (m *PcIndex) NewSordfish(flag string) error {
 		} else if flag == "tmp" {
 			return m.Render("/pc/index_tmp.html", &m.T)
 		} else {
-			var entIsNew bool
-			if userId != "" {
-				bigBaseMsg := jy.GetBigVipUserBaseMsg(m.Session(), *config.Middleground)
-				entIsNew = bigBaseMsg.EntIsNew
-			}
+			//var entIsNew bool
+			//if userId != "" {
+			//	bigBaseMsg := jy.GetBigVipUserBaseMsg(m.Session(), *config.Middleground)
+			//	entIsNew = bigBaseMsg.EntIsNew
+			//}
 			//按地区、信息类型、热门招标
 			for k, v := range RegionAndInformationAndTender() {
 				m.T[k] = v
@@ -192,7 +192,7 @@ func (m *PcIndex) NewSordfish(flag string) error {
 			//推荐标讯专区
 			m.T["recommendBeacon"] = RecommendationBeacon()
 			//热门采购单位
-			m.T["hotBuyers"] = HotBuyerList(entIsNew)
+			m.T["hotBuyers"] = HotBuyerList()
 			//招投标攻略
 			var strategyList []map[string]interface{}
 			for _, item := range jySchool.GuidelineColumn().SeedData {

+ 50 - 0
src/jfw/modules/app/src/app/front/bigMember.go

@@ -2,12 +2,16 @@ package front
 
 import (
 	qutil "app.yhyue.com/moapp/jybase/common"
+	"app.yhyue.com/moapp/jybase/encrypt"
 	"app.yhyue.com/moapp/jybase/go-xweb/xweb"
+	"app.yhyue.com/moapp/jybase/redis"
 	"app.yhyue.com/moapp/jypkg/common/src/qfw/util/jy"
 	"app.yhyue.com/moapp/jypkg/public"
 	"bp.jydev.jianyu360.cn/BaseService/userCenter/rpc/pb"
+	"fmt"
 	"jy/src/jfw/modules/app/src/jfw/config"
 	"regexp"
+	"strings"
 )
 
 type NewBigMemberAction struct {
@@ -37,6 +41,7 @@ func (s *NewBigMemberAction) PowerClear() {
 }
 
 func (s *NewBigMemberAction) VipPageManager(htmlName string) error {
+	userid, _ := s.GetSession("userId").(string)
 	if !freePageReg.MatchString(htmlName) {
 		bigBaseMsg := jy.GetBigVipUserBaseMsg(s.Session(), *config.Middleground)
 		//大会员页面权限判断
@@ -51,5 +56,50 @@ func (s *NewBigMemberAction) VipPageManager(htmlName string) error {
 		//	return s.Redirect("/jyapp/big/page/init") //跳转至首次初始化页面
 		//}
 	}
+	if userid == "" {
+		if strings.Contains(htmlName, "ent_ser_portrait") || strings.Contains(htmlName, "ent_portrait") {
+			//urlArr := strings.Split(htmlName, "/")
+			if seoId := esSeoId(true, s.GetString("eid")); seoId != "" {
+				return s.Redirect(fmt.Sprintf("/qy/%s.html", seoId))
+			}
+		} else if strings.Contains(htmlName, "unit_portrayal") {
+			//urlArr := strings.Split(htmlName, "/")
+			//buyerName := urlArr[len(urlArr)-1]
+			// 解码 URL 编码的字符串
+			buyer := s.GetString("entName")
+			//buyer := this.GetString("buyer")
+			if seoId := esSeoId(false, buyer); seoId != "" {
+				return s.Redirect(fmt.Sprintf("/dw/%s.html", seoId))
+			}
+		}
+	}
 	return s.Render("/big-member/page_" + htmlName + ".html")
 }
+
+func esSeoId(isWinner bool, idName string) string {
+	if idName == "" {
+		return idName
+	}
+	var seoId string
+	redisKey := fmt.Sprintf("getSeoId_%v_%s", isWinner, idName)
+	seoId = redis.GetStr("newother", redisKey)
+	if seoId != "" {
+		return seoId
+	}
+	if isWinner {
+		entId := encrypt.DecodeArticleId2ByCheck(idName)[0]
+		if data := public.GlobalCommonMysql.FindOne("dws_f_ent_baseinfo", map[string]interface{}{
+			"name_id": entId,
+		}, `{"seo_id":1}`, ""); data != nil && len(*data) > 0 {
+			seoId = qutil.InterfaceToStr((*data)["seo_id"])
+		}
+	} else {
+		if data := public.GlobalCommonMysql.FindOne("dws_f_ent_baseinfo", map[string]interface{}{
+			"name": idName,
+		}, `{"seo_id":1}`, ""); data != nil && len(*data) > 0 {
+			seoId = qutil.InterfaceToStr((*data)["seo_id"])
+		}
+	}
+	redis.Put("newother", redisKey, seoId, -1)
+	return seoId
+}