Procházet zdrojové kódy

fix:市场分析报告接口定义提交

wangkaiyue před 3 roky
rodič
revize
d493a70568

+ 1 - 1
src/jfw/modules/bigmember/src/service/init.go

@@ -30,5 +30,5 @@ func init() {
 	xweb.AddAction(&report.Report{})
 	xweb.AddAction(&trial.Trial{})
 	xweb.AddAction(&bidfile.Bidfile{})
-
+	xweb.AddAction(&report.MarketAnalysis{})
 }

+ 154 - 0
src/jfw/modules/bigmember/src/service/report/marketAnalysis.go

@@ -0,0 +1,154 @@
+package report
+
+import (
+	. "api"
+	"db"
+	"fmt"
+	"github.com/go-xweb/xweb"
+	"log"
+	qutil "qfw/util"
+	"qfw/util/jy"
+	"time"
+)
+
+//MarketAnalysis 市场分析报告路由定义
+type MarketAnalysis struct {
+	*xweb.Action
+	doAnalysis        xweb.Mapper `xweb:"/marketAnalysis/doAnalysis"`        //市场分析分析查询(此接口只做为保存查询条件,返回记录id)
+	getAnalysisResult xweb.Mapper `xweb:"/marketAnalysis/getAnalysisResult"` //获取分析报告结果(根据记录id查询报告结果)
+	analysisHistory   xweb.Mapper `xweb:"/marketAnalysis/analysisHistory"`   //市场分析报告历史记录
+}
+
+const ReportHistoryTable = "marketAnalysisReport"
+
+//此处未模拟接口返回数据,开发完毕后请删除
+var (
+	//模拟历史数据
+	historyReport = []map[string]interface{}{
+		map[string]interface{}{
+			"id":         "5e8eb60ae138234b4f91aacc", //加密处理
+			"keysItems":  "[{\"a_key\":[{\"appendkey\":[\"引擎\"],\"key\":[\"软件\"],\"matchway\":1,\"notkey\":[\"网站\"],\"updatetime\":1640657393},{\"appendkey\":[\"人工\"],\"key\":[\"智能\"],\"matchway\":0,\"notkey\":[\"报告\"],\"updatetime\":1640657384}],\"s_item\":\"科技\",\"updatetime\":1640657329},{\"a_key\":[{\"appendkey\":[\"绿化\"],\"key\":[\"道路\"],\"matchway\":0,\"notkey\":[\"路面\"],\"updatetime\":1640657384}],\"s_item\":\"建筑\",\"updatetime\":1640657329}]",
+			"rangeTime":  "1546272000-1609430400",
+			"city":       "郑州,开封,商丘",
+			"area":       "北京",
+			"industry":   "行政办公_办公用品,能源化工_化工产品,机械设备_矿山机械",
+			"buyerclass": "传媒,检察院,民政,农业",
+			"createTime": time.Now().Unix(),
+		},
+		map[string]interface{}{
+			"id":         "5e8eb60ae138234b4f91aacc", //加密处理
+			"keysItems":  "[{\"a_key\":[{\"appendkey\":[\"引擎\"],\"key\":[\"软件\"],\"matchway\":1,\"notkey\":[\"网站\"],\"updatetime\":1640657393},{\"appendkey\":[\"人工\"],\"key\":[\"智能\"],\"matchway\":0,\"notkey\":[\"报告\"],\"updatetime\":1640657384}],\"s_item\":\"科技\",\"updatetime\":1640657329},{\"a_key\":[{\"appendkey\":[\"绿化\"],\"key\":[\"道路\"],\"matchway\":0,\"notkey\":[\"路面\"],\"updatetime\":1640657384}],\"s_item\":\"建筑\",\"updatetime\":1640657329}]",
+			"rangeTime":  "1546272000-1609430400",
+			"city":       "郑州,开封,商丘",
+			"area":       "北京",
+			"industry":   "行政办公_办公用品,能源化工_化工产品,机械设备_矿山机械",
+			"buyerclass": "传媒,检察院,民政,农业",
+			"createTime": time.Now().Unix(),
+		},
+		map[string]interface{}{
+			"id":         "5e8eb60ae138234b4f91aacc",
+			"keysItems":  "[{\"a_key\":[{\"appendkey\":[\"引擎\"],\"key\":[\"软件\"],\"matchway\":1,\"notkey\":[\"网站\"],\"updatetime\":1640657393},{\"appendkey\":[\"人工\"],\"key\":[\"智能\"],\"matchway\":0,\"notkey\":[\"报告\"],\"updatetime\":1640657384}],\"s_item\":\"科技\",\"updatetime\":1640657329},{\"a_key\":[{\"appendkey\":[\"绿化\"],\"key\":[\"道路\"],\"matchway\":0,\"notkey\":[\"路面\"],\"updatetime\":1640657384}],\"s_item\":\"建筑\",\"updatetime\":1640657329}]",
+			"rangeTime":  "1546272000-1609430400",
+			"city":       "郑州,开封,商丘",
+			"area":       "北京",
+			"industry":   "行政办公_办公用品,能源化工_化工产品,机械设备_矿山机械",
+			"buyerclass": "传媒,检察院,民政,农业",
+			"createTime": time.Now().Unix(),
+		},
+	}
+)
+
+//checkPower 权限校验
+func checkPower(userId string) error {
+	if userId == "" {
+		return fmt.Errorf("未登录")
+	}
+	//仅购买《周报/月报/定制化市场分析报告》的大会员有权限
+	bigMeg := jy.GetBigVipUserBaseMsg(userId, db.Mysql, db.Mgo)
+	if bigMeg.Status <= 0 || !bigMeg.CheckBigVipBackPower("report") {
+		return fmt.Errorf("非法请求")
+	}
+	return nil
+}
+
+//DoAnalysis 开始分析报告
+func (this *MarketAnalysis) DoAnalysis() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		if err := checkPower(userId); err != nil {
+			return nil, err
+		}
+		//接受参数
+		keysItemsStr := this.GetString("keysItems") //分析内容【字符串】结构和o_member_jy.a_items保持一致
+		rangeTime := this.GetString("rangeTime")    //时间【字符串】 时间戳开始-结束时间戳
+		area := this.GetString("area")              //省份【字符串】多个省份用逗号拼接
+		city := this.GetString("city")              //城市【字符串】多个城市用逗号拼接
+		industry := this.GetString("industry")      //行业【字符串】多个行业用逗号拼接
+		buyerclass := this.GetString("buyerclass")  //采购单位类型【字符串】多个采购单位类型用逗号拼接
+
+		log.Printf("%s DoAnalysis 接受到的参数\n keysItemsStr:%s\n keysItemsStr:%s\n keysItemsStr:%s\n "+
+			"keysItemsStr:%s\n keysItemsStr:%s\n keysItemsStr:%s\n", userId, keysItemsStr, rangeTime, area, city, industry, buyerclass)
+		//存储分析记录
+		//saveId:=db.Mgo.Save(ReportHistoryTable,map[string]interface{}{})
+		saveId := "5e8eb60ae138234b4f91aacc" //此id返回时需要加密
+		return saveId, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s MarketAnalysis DoAnalysis Error:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//GetAnalysisResult 获取分析结果
+func (this *MarketAnalysis) GetAnalysisResult() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		if err := checkPower(userId); err != nil {
+			return nil, err
+		}
+		//模拟返回数据
+		return map[string]interface{}{
+			"analysisStart": 1546272000, //数据统计范围-开始时间
+			"analysisEnd":   1609430400, //数据统计范围-结束时间
+			"projectNum":    37,         //项目数量
+			"projectAmount": 65422111,   //项目总金额
+			"winnerNum":     16,         //中标单位数量
+			"buyerNum":      32,         //采购单位数量
+
+		}, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s MarketAnalysis GetAnalysisResult Error:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}
+
+//AnalysisHistory 分析报告历史
+func (this *MarketAnalysis) AnalysisHistory() {
+	userId := qutil.ObjToString(this.GetSession("userId"))
+	rData, errMsg := func() (interface{}, error) {
+		if err := checkPower(userId); err != nil {
+			return nil, err
+		}
+		//接受参数
+		pageNum, pageNumErr := this.GetInteger("pageNum") //页码
+		if pageNumErr != nil {
+			pageNum = 1
+		}
+		pageSize, pageSizeErr := this.GetInteger("pageSize") //每页数量
+		if pageSizeErr != nil {
+			pageNum = 10
+		}
+		log.Printf("%s DoAnalysis 接受到的参数\n pageNum:%s\n pageSize:%s\n ", userId, pageNum, pageSize)
+
+		//模拟返回数据
+		return map[string]interface{}{
+			"total": len(historyReport),
+			"list":  historyReport[pageNum-1*pageSize : pageNum*pageSize],
+		}, nil
+	}()
+	if errMsg != nil {
+		log.Printf("%s MarketAnalysis AnalysisHistory Error:%s\n", userId, errMsg.Error())
+	}
+	this.ServeJson(NewResult(rData, errMsg))
+}