Bläddra i källkod

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

duxin 1 år sedan
förälder
incheckning
280ef58672

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

@@ -188,5 +188,5 @@
   "nsq_topic": "jy_event",
   "attachmentResPower": ["bi_sj_sjqk","bi_sf_sjqd","bi_sj_yyszs"],
   "msgMaxCount": 20000,
-  "analysisPDF": "13027620557"
+  "analysisPDFPhone": "13027620557"
 }

+ 1 - 1
src/jfw/modules/bigmember/src/config/config.go

@@ -77,7 +77,7 @@ type config struct {
 	Nsq_topic           string   `json:"nsq_topic"`
 	AttachmentResPower  []string `json:"attachmentResPower"`
 	MsgMaxCount         int      `json:"msgMaxCount"`
-	AnalysisPDF         string   `json:"analysisPDF"`
+	AnalysisPDFPhone    string   `json:"analysisPDFPhone"`
 }
 
 type CustomerInfo struct {

+ 10 - 10
src/jfw/modules/bigmember/src/entity/marketAnalysis/customized_analysis.go

@@ -327,17 +327,17 @@ func ProjectScale(thisRow AreaCTop) (data []interface{}) {
 		Name      string  `bson:"Name"`
 		Persent_c float64 `bson:"Persent_c"`
 		Persent_a float64 `bson:"Persent_a"`
+		Ammount   float64 `json:"ammount"`
+		Total     int64   `json:"total"`
 	}
 	for _, v := range buckets {
-		name := v.Name
-		percent_a := Formula(float64(v.Total), float64(total))
-		percent_c := Formula(v.SumSortprice.Value, ammount)
-		sc := Scale{
-			Name:      name,
-			Persent_c: percent_c,
-			Persent_a: percent_a,
-		}
-		data = append(data, sc)
+		data = append(data, Scale{
+			Name:      v.Name,
+			Ammount:   v.SumSortprice.Value,
+			Total:     v.Total,
+			Persent_a: Formula(float64(v.Total), float64(total)),
+			Persent_c: Formula(v.SumSortprice.Value, ammount),
+		})
 	}
 	return
 }
@@ -364,7 +364,7 @@ func InterToSliceString(obj interface{}) []string {
 // top10
 func (mae *MarketAnalysisEntity) ProjectTop10() (rMap map[string]interface{}, err error) {
 	finalSql := fmt.Sprintf(mae.GetCommonQuerySql(), query_top10)
-    log.Println("ProjectTop10:",finalSql)
+	log.Println("ProjectTop10:", finalSql)
 	hits := elastic.Get("projectset", "projectset", finalSql)
 	rMap = map[string]interface{}{}
 	bArr := []map[string]interface{}{}

+ 54 - 10
src/jfw/modules/bigmember/src/entity/marketAnalysis/marketAnalysisEntity.go

@@ -7,6 +7,7 @@ import (
 	"app.yhyue.com/moapp/jybase/mongodb"
 	"app.yhyue.com/moapp/jybase/redis"
 	"encoding/json"
+	"errors"
 	"fmt"
 	"jy/src/jfw/modules/bigmember/src/config"
 	"jy/src/jfw/modules/bigmember/src/db"
@@ -45,7 +46,9 @@ const (
 	Tablejianyu_mar_user_account = "jianyu.mar_user_account"     // 离线市场报告分析关键词标准信息表
 )
 
-var MarketAnalysisPool chan bool
+var (
+	MarketAnalysisPool chan bool
+)
 
 func init() {
 	MarketAnalysisPool = make(chan bool, config.Config.MarketAnalysisPool.Limit)
@@ -224,10 +227,10 @@ func (mae *MarketAnalysisEntity) ForMatData() error {
 }
 
 // ForMatData 获取格式化请求参数
-func (mae *MarketAnalysisEntity) ForMatDataPdf() (string, error) {
+func (mae *MarketAnalysisEntity) ForMatDataPdf() error {
 	//格式化订阅词
 	if err := json.Unmarshal([]byte(mae.BaseParam.KeysItemsStr), &mae.FormatParam.KeysItems); err != nil {
-		return "", fmt.Errorf("关键词组格式异常")
+		return fmt.Errorf("关键词组格式异常")
 	}
 
 	//格式化时间段
@@ -235,16 +238,16 @@ func (mae *MarketAnalysisEntity) ForMatDataPdf() (string, error) {
 		mae.FormatParam.STime = qutil.Int64All(timeArr[0])
 		mae.FormatParam.ETime = qutil.Int64All(timeArr[1])
 		if mae.FormatParam.STime == 0 || mae.FormatParam.ETime == 0 {
-			return "", fmt.Errorf("开始时间和结束时间不能为空")
+			return fmt.Errorf("开始时间和结束时间不能为空")
 		}
 	} else {
-		return "", fmt.Errorf("时间戳格式异常")
+		return fmt.Errorf("时间戳格式异常")
 	}
 	//格式化省份、城市
 	if areaStr := strings.TrimSpace(mae.BaseParam.Area); areaStr != "" {
 		imap := map[string][]string{}
 		if err := json.Unmarshal([]byte(mae.BaseParam.Area), &imap); err != nil {
-			return "", fmt.Errorf("非法地区信息")
+			return fmt.Errorf("非法地区信息")
 		}
 		var city, area []string
 		for name, v := range imap {
@@ -263,7 +266,7 @@ func (mae *MarketAnalysisEntity) ForMatDataPdf() (string, error) {
 	if industryStr := strings.TrimSpace(mae.BaseParam.Industry); industryStr != "" {
 		imap := map[string][]string{}
 		if err := json.Unmarshal([]byte(industryStr), &imap); err != nil {
-			return "", fmt.Errorf("非法行业信息")
+			return fmt.Errorf("非法行业信息")
 		}
 		var farr []string
 		for name, v := range imap {
@@ -290,7 +293,6 @@ func (mae *MarketAnalysisEntity) ForMatDataPdf() (string, error) {
 	mae.FormatParam.PageNum = qutil.If(mae.BaseParam.PageNum < 1 || mae.BaseParam.PageNum > 1000, 1, mae.BaseParam.PageNum).(int)
 	//默认每页10条
 	mae.FormatParam.PageSize = qutil.If(mae.BaseParam.PageSize < 1 || mae.BaseParam.PageSize > 100, 50, mae.BaseParam.PageSize).(int)
-
 	data := map[string]interface{}{
 		"s_keysItems":      mae.BaseParam.KeysItemsStr,
 		"s_rangeTime":      mae.BaseParam.RangeTime,
@@ -304,6 +306,7 @@ func (mae *MarketAnalysisEntity) ForMatDataPdf() (string, error) {
 		"s_mgoUserId":      mae.MgoUserId,
 		"i_positionId":     mae.PositionId,
 		"s_phone":          mae.Phone,
+		"audit":            1,
 	}
 	if mae.OriginalTotal > 0 {
 		data["l_originalTotal"] = mae.OriginalTotal
@@ -313,9 +316,9 @@ func (mae *MarketAnalysisEntity) ForMatDataPdf() (string, error) {
 	}
 	rs, b := db.Mgo.FindOne(ReportHistoryTable, data)
 	if b && rs != nil {
-		return mongodb.BsonIdToSId((*rs)["_id"]), nil
+		return errors.New("当期分析已存在")
 	}
-	return "", nil
+	return nil
 }
 
 // GetProjectInfoList 项目明细
@@ -501,6 +504,47 @@ func (mae *MarketAnalysisEntity) GetRecordList(pageNum, PageSize int) (total int
 	return
 }
 
+func (mae *MarketAnalysisEntity) GetRecordPdfList(pageNum, PageSize int) (total int, list []map[string]interface{}) {
+	queryMap := map[string]interface{}{
+		"i_del":  map[string]interface{}{"$ne": 1},
+		"source": "analysisPDF",
+	}
+	if mae.UId == mae.Pid { //主账号
+		queryMap["s_parentId"] = mae.Pid
+	} else {
+		queryMap["s_userId"] = mae.UId
+	}
+	if pageNum == 1 {
+		total = db.Mgo.Count(ReportHistoryTable, queryMap)
+		if total == 0 {
+			return
+		}
+	} else {
+		total = -1
+	}
+	res, _ := db.Mgo.Find(ReportHistoryTable, queryMap, `{"l_createTime":-1}`, nil, false, (pageNum-1)*PageSize, PageSize)
+	if res == nil || len(*res) == 0 {
+		return
+	}
+	for _, row := range *res {
+		data := map[string]interface{}{
+			"id":               util.EncodeId(mongodb.BsonIdToSId(row["_id"])),
+			"keysItems":        qutil.ObjToString(row["s_keysItems"]),
+			"area":             qutil.ObjToString(row["s_area"]),
+			"industry":         qutil.ObjToString(row["s_industry"]),
+			"buyerclass":       qutil.ObjToString(row["s_buyerClass"]),
+			"rangeTime":        qutil.ObjToString(row["s_rangeTime"]),
+			"s_rangeTimeExtra": qutil.ObjToString(row["s_rangeTimeExtra"]),
+			"createTime":       qutil.Int64All(row["l_createTime"]),
+			"matchingMode":     qutil.ObjToString(row["s_matchingMode"]), //项目匹配方式
+			"updateTime":       qutil.Int64All(row["l_updateTime"]),
+			"audit":            qutil.Int64All(row["audit"]),
+		}
+		list = append(list, data)
+	}
+	return
+}
+
 // GetQueryItem 获取查询条件,前端回显使用
 func (mae *MarketAnalysisEntity) getQueryItem() (map[string]interface{}, error) {
 	return map[string]interface{}{

+ 43 - 10
src/jfw/modules/bigmember/src/service/report/marketAnalysis.go

@@ -29,7 +29,8 @@ type MarketAnalysis struct {
 	isOffline         xweb.Mapper `xweb:"/marketAnalysis/isOffline"`         // 是否为离线查询
 	delete            xweb.Mapper `xweb:"/marketAnalysis/delete"`            // 删除报告
 
-	doAnalysisPdf xweb.Mapper `xweb:"/marketAnalysis/doAnalysisPdf"` //市场分析分析查询仅用于运营生成pdf(此接口只做为保存查询条件,返回记录id)
+	doAnalysisPdf   xweb.Mapper `xweb:"/marketAnalysis/doAnalysisPdf"`   //市场分析分析查询仅用于运营生成pdf(此接口只做为保存查询条件,返回记录id)
+	analysisPdfList xweb.Mapper `xweb:"/marketAnalysis/analysisPdfList"` //市场分析分析查询仅用于运营生成pdf 列表
 }
 
 // 项目明细
@@ -132,8 +133,8 @@ func (this *MarketAnalysis) DoAnalysisPdf() {
 	positionId := qutil.IntAll(sessVal["positionId"])
 	phone := qutil.ObjToString(sessVal["phone"])
 	rData, errMsg := func() (interface{}, error) {
-		if phone == "" || !strings.Contains(config.Config.AnalysisPDF, phone) {
-			log.Printf("配置手机号:%s,登录手机号:%s\n", config.Config.AnalysisPDF, phone)
+		if phone == "" || !strings.Contains(config.Config.AnalysisPDFPhone, phone) {
+			log.Printf("配置手机号:%s,登录手机号:%s\n", config.Config.AnalysisPDFPhone, phone)
 			return nil, errors.New("手机号用户无权益")
 		}
 		pid, powerErr := checkPower(this.Session())
@@ -151,13 +152,7 @@ func (this *MarketAnalysis) DoAnalysisPdf() {
 			MatchingMode:   this.GetString("matchingMode"),   //匹配方式
 		}
 		mae := &marketAnalysis.MarketAnalysisEntity{BaseParam: bParam, UId: userId, Pid: pid, MgoUserId: mgoUserId, PositionId: positionId, Phone: phone, Source: "analysisPDF"}
-		if mgoRecordId, err := mae.ForMatDataPdf(); mgoRecordId != "" || err != nil {
-			if mgoRecordId != "" {
-				data := map[string]interface{}{
-					"id": util.EncodeId(mgoRecordId),
-				}
-				return data, nil
-			}
+		if err := mae.ForMatDataPdf(); err != nil {
 			return nil, err
 		}
 
@@ -165,6 +160,7 @@ func (this *MarketAnalysis) DoAnalysisPdf() {
 		if err := mae.SaveAnalysisRecord(); err != nil {
 			return nil, err
 		}
+		//存储clickhouse
 		data := map[string]interface{}{
 			"id": util.EncodeId(mae.MgoRecordId),
 		}
@@ -176,6 +172,43 @@ func (this *MarketAnalysis) DoAnalysisPdf() {
 	this.ServeJson(NewResult(rData, errMsg))
 }
 
+func (this *MarketAnalysis) AnalysisPdfList() {
+	sessVal := this.Session().GetMultiple()
+	mgoUserId := qutil.ObjToString(sessVal["mgoUserId"])
+	userId := qutil.ObjToString(sessVal["userId"])
+	positionId := qutil.IntAll(sessVal["positionId"])
+	phone := qutil.ObjToString(sessVal["phone"])
+	rData, errMsg := func() (interface{}, error) {
+		if phone == "" || !strings.Contains(config.Config.AnalysisPDFPhone, phone) {
+			log.Printf("配置手机号:%s,登录手机号:%s\n", config.Config.AnalysisPDFPhone, phone)
+			return nil, errors.New("手机号用户无权益")
+		}
+		pid, powerErr := checkPower(this.Session())
+		if powerErr != nil {
+			return nil, powerErr
+		}
+		//接受参数
+		pageNum, pageNumErr := this.GetInteger("pageNum") //页码
+		if pageNumErr != nil {
+			pageNum = 1
+		}
+		pageSize, pageSizeErr := this.GetInteger("pageSize") //每页数量
+		if pageSizeErr != nil {
+			pageSize = 10
+		}
+		mae := &marketAnalysis.MarketAnalysisEntity{UId: userId, Pid: pid, MgoUserId: mgoUserId, PositionId: positionId}
+		total, list := mae.GetRecordPdfList(pageNum, pageSize)
+		return map[string]interface{}{
+			"total": total,
+			"list":  list,
+		}, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s MarketAnalysis AnalysisHistory Error:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
 // DoAnalysis 开始分析报告
 func (this *MarketAnalysis) DoAnalysis() {
 	sessVal := this.Session().GetMultiple()