瀏覽代碼

Merge branch 'dev/v4.8.67_dx' of qmx/jy into feature/v4.8.67

duxin 1 年之前
父節點
當前提交
660669e5df

+ 3 - 1
src/jfw/modules/bigmember/src/config.json

@@ -180,5 +180,7 @@
   "potentialCount": 1000,
   "newDataTime": 1685606275,
   "projectCount": 5000,
-  "portraitStartTime": 2018
+  "portraitStartTime": 2018,
+  "portraitDynamicTime": 7,
+  "portraitCount": 30
 }

+ 7 - 5
src/jfw/modules/bigmember/src/config/config.go

@@ -65,11 +65,13 @@ type config struct {
 		Details  string `json:"details"`
 		ListPage string `json:"listPage"`
 	} `json:"claim"`
-	ContextOldVipLimit int64 `json:"contextOldVipLimit"` //超级订阅部分用户:--- 超前项目权限
-	PotentialCount     int   `json:"potentialCount"`     //潜在客户 潜在竞争对手数据量
-	NewDataTime        int64 `json:"newDataTime"`        // 用于周边月报区分是否为新数据 、配置为p350发版的时间
-	ProjectCount       int   `json:"projectCount"`       //画像和报告项目明细最大数量
-	PortraitStartTime  int   `json:"portraitStartTime"`
+	ContextOldVipLimit  int64 `json:"contextOldVipLimit"` //超级订阅部分用户:--- 超前项目权限
+	PotentialCount      int   `json:"potentialCount"`     //潜在客户 潜在竞争对手数据量
+	NewDataTime         int64 `json:"newDataTime"`        // 用于周边月报区分是否为新数据 、配置为p350发版的时间
+	ProjectCount        int   `json:"projectCount"`       //画像和报告项目明细最大数量
+	PortraitStartTime   int   `json:"portraitStartTime"`
+	PortraitDynamicTime int   `json:"portraitDynamicTime"`
+	PortraitCount       int   `json:"portraitCount"`
 }
 
 type CustomerInfo struct {

+ 2 - 2
src/jfw/modules/bigmember/src/entity/portrait.go

@@ -310,14 +310,14 @@ func (this *Portrait) GetWinnerContactsMsg(entId string) ([]map[string]interface
 //		  matchType 搜索范围
 //	   area 项目地区
 //	   pushTime 发布时间
-func (this *Portrait) GetWinnerNewMsg(pwp *PortraitProjectScreen) ([]map[string]interface{}, int64, error) {
+func (this *Portrait) GetWinnerNewMsg(pwp *PortraitProjectScreen) ([]map[string]interface{}, int64, int64, error) {
 	return pwp.GetWinnerList()
 }
 func (this *Portrait) GetWinnerNewExport(pwp *PortraitProjectScreen) ([]string, error) {
 	return pwp.GetWinnerListIds()
 }
 
-func (this *Portrait) GetBuyerNewMsg(pwp *PortraitProjectScreen) ([]map[string]interface{}, int64, error) {
+func (this *Portrait) GetBuyerNewMsg(pwp *PortraitProjectScreen) ([]map[string]interface{}, int64, int64, error) {
 	return pwp.GetBuyerList()
 }
 func (this *Portrait) GetBuyerNewMsgExport(pwp *PortraitProjectScreen) ([]string, error) {

+ 68 - 21
src/jfw/modules/bigmember/src/entity/portrait_screen.go

@@ -1,6 +1,7 @@
 package entity
 
 import (
+	"app.yhyue.com/moapp/jybase/redis"
 	"encoding/json"
 	"fmt"
 	"jy/src/jfw/modules/bigmember/src/config"
@@ -219,6 +220,7 @@ func (pwp *PortraitProjectScreen) CommonPare(isWinner bool) (mustQueryArr []stri
 	}
 
 	//按照当前年份,往前推4年,共5个年份可选
+	//无权已用户
 	sTime, eTime := pwp.Screen.PareTimeSelect(isWinner) //采购单位不校验权限
 	if isWinner {
 		mustQueryArr = append(mustQueryArr, fmt.Sprintf(`{"term":{"entidlist":"%s"}}`, pwp.Screen.Ent))
@@ -232,7 +234,7 @@ func (pwp *PortraitProjectScreen) CommonPare(isWinner bool) (mustQueryArr []stri
 
 // GetWinnerListSearch 获取企业画像中标信息数据
 // 会员展示1-4页表格数据,免费用户前三条
-func (pwp *PortraitProjectScreen) GetWinnerListSearch() (list *[]map[string]interface{}, total int64, err error) {
+func (pwp *PortraitProjectScreen) GetWinnerListSearch() (list *[]map[string]interface{}, total int64, updateTime int64, err error) {
 	if pwp.Screen.Ent == "" {
 		err = fmt.Errorf("企业名称异常")
 		return
@@ -240,6 +242,11 @@ func (pwp *PortraitProjectScreen) GetWinnerListSearch() (list *[]map[string]inte
 	mustQueryArr := pwp.CommonPare(true)
 	pwp.PageNum = qutil.If(pwp.PageNum == 0, 1, pwp.PageNum).(int)     //默认第一页
 	pwp.PageSize = qutil.If(pwp.PageSize == 0, 10, pwp.PageSize).(int) //默认每页10条
+
+	if !pwp.Screen.HasPower || pwp.Free {
+		return pwp.FreePortraitNews(mustQueryArr, true)
+	}
+
 	//仅第一页查询总量
 	if pwp.PageNum == 1 || pwp.IsExport {
 		total = elastic.Count(biddingIndex, biddingType, fmt.Sprintf(NewMustSearch, strings.Join(mustQueryArr, ","), ""))
@@ -272,9 +279,9 @@ func (pwp *PortraitProjectScreen) GetWinnerListSearch() (list *[]map[string]inte
 }
 
 // GetWinnerList 获取企业画像中标信息数据
-func (pwp *PortraitProjectScreen) GetWinnerList() (list []map[string]interface{}, total int64, err error) {
+func (pwp *PortraitProjectScreen) GetWinnerList() (list []map[string]interface{}, total int64, updateTime int64, err error) {
 	var newData *[]map[string]interface{}
-	newData, total, err = pwp.GetWinnerListSearch()
+	newData, total, updateTime, err = pwp.GetWinnerListSearch()
 	if newData == nil || len(*newData) == 0 {
 		return
 	}
@@ -314,7 +321,7 @@ func (pwp *PortraitProjectScreen) GetWinnerList() (list []map[string]interface{}
 // GetWinnerListIds 画像中标单位动态数据导出
 func (pwp *PortraitProjectScreen) GetWinnerListIds() (ids []string, err error) {
 	var newData *[]map[string]interface{}
-	newData, _, err = pwp.GetWinnerListSearch()
+	newData, _, _, err = pwp.GetWinnerListSearch()
 	if newData == nil || len(*newData) == 0 {
 		err = fmt.Errorf("未找到相关数据")
 		return
@@ -349,7 +356,7 @@ func GetNewBiddingCount(winnerId, buyer string) int64 {
 }
 
 // GetBuyerListSearch 采购单位中标动态查询
-func (pwp *PortraitProjectScreen) GetBuyerListSearch() (list *[]map[string]interface{}, total int64, err error) {
+func (pwp *PortraitProjectScreen) GetBuyerListSearch() (list *[]map[string]interface{}, total int64, updateTime int64, err error) {
 	if pwp.Screen.Ent == "" {
 		err = fmt.Errorf("企业名称异常")
 		return
@@ -358,9 +365,12 @@ func (pwp *PortraitProjectScreen) GetBuyerListSearch() (list *[]map[string]inter
 	if pwp.Screen.HasPower {
 		pwp.PageNum = qutil.If(pwp.PageNum == 0, 1, pwp.PageNum).(int)    //默认第一页
 		pwp.PageSize = qutil.If(pwp.PageSize == 0, 5, pwp.PageSize).(int) //默认每页10条
-	} else { //免费用户可以查看三条
-		pwp.PageNum = 1
-		pwp.PageSize = 5
+		//} else { //免费用户可以查看三条
+		//	pwp.PageNum = 1
+		//	pwp.PageSize = 5
+	}
+	if !pwp.Screen.HasPower || pwp.Free {
+		return pwp.FreePortraitNews(mustQueryArr, false)
 	}
 
 	//仅第一页查询总量(非数据导出)
@@ -384,27 +394,64 @@ func (pwp *PortraitProjectScreen) GetBuyerListSearch() (list *[]map[string]inter
 		//log.Printf("PortraitWinnerProject GetList Sql %s\n", listQuery)
 		list = elastic.Get(biddingIndex, biddingIndex, listQuery)
 	} else { // 数据导出分批查询
-		if total > 5 {
-			if pwp.Screen.HasPower {
-				if pwp.Free {
-					total = 5
-				}
-			} else { //免费用户可以查看三条
-				total = 5
-			}
-		}
+		//if total > 5 {
+		//	if pwp.Screen.HasPower {
+		//		if pwp.Free {
+		//			total = 5
+		//		}
+		//	} else { //免费用户可以查看三条
+		//		total = 5
+		//	}
+		//}
 		listQuery := fmt.Sprintf(NewMustSearch, strings.Join(mustQueryArr, ","), `,"_source":["_id"],"sort":{"publishtime":"desc"}`)
 		list = getBatchSearchRes(biddingIndex, biddingIndex, listQuery, total)
 	}
 	return
 }
 
+func (pwp *PortraitProjectScreen) FreePortraitNews(mustQueryArr []string, isWinner bool) (data *[]map[string]interface{}, total int64, updateTime int64, err error) {
+	redisKey := fmt.Sprintf("free_portrait_list_%s", pwp.Screen.Ent)
+	redisData := make(map[string]interface{})
+	var dataArr []map[string]interface{}
+	if rBytes, err := redis.GetBytes("other", redisKey); err == nil && len(*rBytes) != 0 {
+		_ = json.Unmarshal(*rBytes, &redisData)
+		dataArr, _ = redisData["data"].([]map[string]interface{})
+		total, _ = redisData["total"].(int64)
+		updateTime, _ = redisData["updateTime"].(int64)
+	} else {
+		var fields string
+		updateTime = time.Now().Unix()
+		if isWinner {
+			fields = `"_id","projectname","bidamount","budget","title","publishtime","subtype","toptype","area","bidopentime","buyer"`
+		} else {
+			fields = `"bidstatus","_id","title","subtype","projectname","publishtime","area","bidamount","budget","bidopentime","s_winner","entidlist"`
+		}
+		listQuery := fmt.Sprintf(NewMustSearch, strings.Join(mustQueryArr, ","), fmt.Sprintf(`,"_source":[%s],"sort":{%s},"from":0,"size":%d`, fields, `"publishtime":"desc","id":"desc"`, config.Config.PortraitCount))
+		total = elastic.Count(biddingIndex, biddingIndex, listQuery)
+		if total > 0 {
+			list := elastic.Get(biddingIndex, biddingIndex, listQuery)
+			if list != nil && len(*list) > 0 {
+				dataArr = *list
+			}
+		}
+		go func() {
+			redis.Put("other", redisKey, map[string]interface{}{
+				"data":       dataArr,
+				"total":      total,
+				"updateTime": updateTime,
+			}, 24*3600*config.Config.PortraitDynamicTime)
+		}()
+	}
+	data = &dataArr
+	return
+}
+
 // GetBuyerList 获取采购单位采购信息数据
-// 会员展示1-4页表格数据,免费用户前三条
-func (pwp *PortraitProjectScreen) GetBuyerList() (list []map[string]interface{}, total int64, err error) {
+// 会员展示1-4页表格数据,免费用户前三
+func (pwp *PortraitProjectScreen) GetBuyerList() (list []map[string]interface{}, total int64, updateTime int64, err error) {
 	var newData *[]map[string]interface{}
 	//查询
-	newData, total, err = pwp.GetBuyerListSearch()
+	newData, total, updateTime, err = pwp.GetBuyerListSearch()
 	if newData == nil || len(*newData) == 0 {
 		return
 	}
@@ -444,7 +491,7 @@ func (pwp *PortraitProjectScreen) GetBuyerList() (list []map[string]interface{},
 func (pwp *PortraitProjectScreen) GetBuyerListIds() (ids []string, err error) {
 	var newData *[]map[string]interface{}
 	//查询
-	newData, _, err = pwp.GetBuyerListSearch()
+	newData, _, _, err = pwp.GetBuyerListSearch()
 	if newData == nil || len(*newData) == 0 {
 		err = fmt.Errorf("未查询到相关数据")
 		return

+ 21 - 24
src/jfw/modules/bigmember/src/service/portrait/memberPortraitAction.go

@@ -116,17 +116,14 @@ func (this *EntPortrait) WinnerNewMsg() {
 		if entId == "" {
 			return nil, fmt.Errorf("企业参数异常")
 		}
-		cepm, hasPower, err, _ := entity.CreatePortraitManager(this.Session(), "entNewMsg")
-		if err != nil {
-			return nil, err
-		}
-		if !hasPower {
-			return nil, fmt.Errorf("非法请求")
-		}
+		cepm, hasPower, _, _ := entity.CreatePortraitManager(this.Session(), "entNewMsg")
+		//if err != nil {
+		//	return nil, err
+		//}
 		pageNum, _ := this.GetInteger("pageNum")
 		pageSize, _ := this.GetInteger("pageSize")
 
-		rData, total, err := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
+		rData, total, updateTime, err := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
 				Ent:        entId,
 				Match:      this.GetString("match"),
@@ -145,8 +142,9 @@ func (this *EntPortrait) WinnerNewMsg() {
 			return nil, err
 		}
 		return map[string]interface{}{
-			"list":  rData,
-			"count": total,
+			"list":       rData,
+			"count":      total,
+			"updateTime": updateTime,
 		}, nil
 	}()
 	if errMsg != nil {
@@ -167,9 +165,7 @@ func (this *EntPortrait) WinnerNewMsgExport() {
 		if err != nil {
 			return nil, err
 		}
-		if !hasPower {
-			return nil, fmt.Errorf("非法请求")
-		}
+
 		//查询数据导出数据id列
 		pps := &entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
@@ -298,16 +294,16 @@ func (this *EntPortrait) BuyerNewMsg() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
 		cepm, hasPower, err, _ := entity.CreatePortraitManager(this.Session(), "buyerPortrait")
-		if err != nil {
-			return nil, err
-		}
+		//if err != nil {
+		//	return nil, err
+		//}
 
 		buyer := this.GetString("buyer")
 		pageNum, _ := this.GetInteger("pageNum")
 		pageSize, _ := this.GetInteger("pageSize")
 
 		//免费用户仅可查看三条记录
-		rData, total, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
+		rData, total, updateTime, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
 				Ent:        buyer,
 				Match:      this.GetString("match"),
@@ -325,8 +321,9 @@ func (this *EntPortrait) BuyerNewMsg() {
 			return nil, err
 		}
 		return map[string]interface{}{
-			"list":  rData,
-			"count": total,
+			"list":       rData,
+			"count":      total,
+			"updateTime": updateTime,
 		}, nil
 	}()
 	if errMsg != nil {
@@ -339,11 +336,11 @@ func (this *EntPortrait) BuyerNewMsgExport() {
 	userId := qutil.ObjToString(this.GetSession("userId"))
 	rData, errMsg := func() (interface{}, error) {
 		cepm, hasPower, err, free := entity.CreatePortraitManager(this.Session(), "buyerPortrait")
-		if err != nil {
-			return nil, err
-		}
+		//if err != nil {
+		//	return nil, err
+		//}
 		buyer := this.GetString("buyer")
-		//免费用户仅可查看三条记录
+		//免费用户仅可查看三条记录
 		pps := &entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
 				Ent:        buyer,
@@ -525,7 +522,7 @@ func (this *EntPortrait) NoLoginAssociatedInfo() {
 		// 未登录用户关联中标企业
 		data := entity.NoLoginAssociatedInfo(entId)
 		var cepm *entity.Portrait
-		rData, _, _ := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
+		rData, _, _, _ := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
 				Ent:        entId,
 				Match:      this.GetString("match"),

+ 14 - 21
src/jfw/modules/bigmember/src/service/portrait/subvipPortraitAction.go

@@ -75,19 +75,12 @@ func (this *SubVipPortrait) SubVipWinnerNewMsg() {
 		if entId == "" {
 			return nil, fmt.Errorf("参数异常")
 		}
-		cepm, power, err, _ := entity.CreateSubVipPortraitManager(userId, "entNewMsg", entId, true, this.Session())
-		if err != nil {
-			return nil, err
-		}
-
-		if power <= 1 {
-			return nil, errors.New("非法请求")
-		}
+		cepm, power, _, _ := entity.CreateSubVipPortraitManager(userId, "entNewMsg", entId, true, this.Session())
 
 		pageNum, _ := this.GetInteger("pageNum")
 		pageSize, _ := this.GetInteger("pageSize")
 
-		rData, total, err := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
+		rData, total, updateTime, err := cepm.GetWinnerNewMsg(&entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
 				Ent:        entId,
 				Match:      this.GetString("match"),
@@ -96,7 +89,7 @@ func (this *SubVipPortrait) SubVipWinnerNewMsg() {
 				Area:       this.GetString("area"),
 				ScopeClass: this.GetString("scopeClass"),
 				TimeRange:  this.GetString("timeRange"),
-				HasPower:   true,
+				HasPower:   power > 1,
 			},
 			PageNum:  pageNum,
 			PageSize: pageSize,
@@ -105,8 +98,9 @@ func (this *SubVipPortrait) SubVipWinnerNewMsg() {
 			return nil, err
 		}
 		return map[string]interface{}{
-			"list":  rData,
-			"count": total,
+			"list":       rData,
+			"count":      total,
+			"updateTime": updateTime,
 		}, nil
 	}()
 	if errMsg != nil {
@@ -347,14 +341,12 @@ func (this *SubVipPortrait) BuyerNewMsg() {
 		pageNum, _ := this.GetInteger("pageNum")
 		pageSize, _ := this.GetInteger("pageSize")
 		cepm, power, err, _ := entity.CreateSubVipPortraitManagerForOpen(userId, "buyerPortrait", buyer, false, this.Session())
-		if err != nil {
-			return nil, err
-		}
-		if power <= 1 {
-			return nil, fmt.Errorf("无查看权益")
-		}
+		//if err != nil {
+		//	return nil, err
+		//}
+
 		//免费用户仅可查看三条记录
-		rData, total, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
+		rData, total, updateTime, err := cepm.GetBuyerNewMsg(&entity.PortraitProjectScreen{
 			Screen: &entity.PortraitScreen{
 				Ent:        buyer,
 				Match:      this.GetString("match"),
@@ -372,8 +364,9 @@ func (this *SubVipPortrait) BuyerNewMsg() {
 			return nil, err
 		}
 		return map[string]interface{}{
-			"list":  rData,
-			"count": total,
+			"list":       rData,
+			"count":      total,
+			"updateTime": updateTime,
 		}, nil
 	}()
 	if errMsg != nil {