浏览代码

Merge remote-tracking branch 'origin/master' into debug

Roc 2 年之前
父节点
当前提交
3e2aec22b7

+ 2 - 0
models/data_manage/edb_data_base.go

@@ -63,6 +63,8 @@ func GetEdbDataTableName(source int) (tableName string) {
 		tableName = "edb_data_lt"
 	case utils.DATA_SOURCE_COAL:
 		tableName = "edb_data_coal"
+	case utils.DATA_SOURCE_GOOGLE_TRAVEL:
+		tableName = "edb_data_google_travel"
 	default:
 		tableName = ""
 		errors.New("无效的渠道:" + strconv.Itoa(source))

+ 6 - 0
models/data_manage/edb_info.go

@@ -1,8 +1,10 @@
 package data_manage
 
 import (
+	"errors"
 	"fmt"
 	"github.com/beego/beego/v2/client/orm"
+	"strconv"
 	"time"
 )
 
@@ -91,6 +93,10 @@ func GetEdbInfoMaxAndMinInfo(source int, edbCode string) (item *EdbInfoMaxAndMin
 	o := orm.NewOrmUsingDB("data")
 	sql := ``
 	tableName := GetEdbDataTableName(source)
+	if tableName == "" {
+		err = errors.New("无效的表名称:source:" + strconv.Itoa(source))
+		return nil, err
+	}
 	sql = ` SELECT MIN(data_time) AS min_date,MAX(data_time) AS max_date,MIN(value) AS min_value,MAX(value) AS max_value FROM %s WHERE edb_code=? `
 	sql = fmt.Sprintf(sql, tableName)
 	err = o.Raw(sql, edbCode).QueryRow(&item)

+ 22 - 1
models/report_view.go

@@ -80,7 +80,7 @@ func GetRddpReportViewersDetail(startTime, endTime string) (items []*ResearchRep
 			WHERE uvh.create_time >?
             AND uvh.create_time <=?
 			AND c.company_id NOT IN (1)
-			AND r.classify_name_first <> "周报"
+			AND r.classify_name_first not in ("周报","双周报")
 			ORDER BY uvh.create_time DESC
 `
 	o := orm.NewOrm()
@@ -121,6 +121,27 @@ FROM
 	return
 }
 
+func GetRddpTwoWeekReportViewersDetail(startTime, endTime string) (items []*RddpWeekReportViewersDetail, err error) {
+	sql := `
+			SELECT
+	u.real_name,c.company_name,uvh.create_time AS created_time,REPLACE ( SUBSTRING( r.create_time, 6, 5 ), '-', '' ) AS report_create_date,
+	r.title AS research_report_name,r.classify_name_second AS research_report_type 
+FROM
+	hongze_rddp.report_view_record AS uvh
+	INNER JOIN hongze_rddp.report AS r ON uvh.report_id = r.id
+	INNER JOIN wx_user u ON u.user_id = uvh.user_id
+	INNER JOIN company c ON c.company_id = u.company_id 
+			WHERE uvh.create_time >?
+            AND uvh.create_time <=?
+			AND c.company_id NOT IN (1)
+			AND r.classify_name_first = "双周报"
+			ORDER BY uvh.create_time DESC
+`
+	o := orm.NewOrm()
+	_, err = o.Raw(sql, startTime, endTime).QueryRows(&items)
+	return
+}
+
 type HistoryViewTimes struct {
 	RealName    string
 	CompanyName string

+ 2 - 0
services/data/base_edb_lib.go

@@ -98,6 +98,8 @@ func RefreshEdbData(edbInfoId, source int, edbCode, startDate string) (resp *mod
 		urlStr = "lt/refresh"
 	case utils.DATA_SOURCE_COAL:
 		urlStr = "coal/refresh"
+	case utils.DATA_SOURCE_GOOGLE_TRAVEL:
+		urlStr = "google_travel/refresh"
 	}
 	if urlStr == "" {
 		err = fmt.Errorf(fmt.Sprint("source:", source, ";未实现该指标的刷新接口,请联系管理员"))

+ 58 - 2
services/data/edb_info.go

@@ -330,13 +330,13 @@ func CheckThsDataInterface(cont context.Context) (err error) {
 		body, err := http.Get(checkUrl)
 		if err != nil {
 			//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"检测数据接口:失败提醒", "CheckPbDataInterface ErrMsg:"+err.Error(), utils.EmailSendToUsers)
-			msg := "检测同花顺数据服务器失败:CheckPbDataInterface ErrMsg:" + err.Error()
+			msg := "检测同花顺数据服务器失败:CheckThsDataInterface ErrMsg:" + err.Error()
 			go alarm_msg.SendAlarmMsg(msg, 3)
 		} else {
 			result := string(body)
 			if result != "1" {
 				//go utils.SendEmail(utils.APPNAME+"【"+utils.RunMode+"】"+"检测数据接口:失败提醒", "CheckPbDataInterface ErrMsg:"+string(body), utils.EmailSendToUsers)
-				msg := "检测同花顺数据服务器失败:CheckPbDataInterface ErrMsg:" + string(body)
+				msg := "检测同花顺数据服务器失败:CheckThsDataInterface ErrMsg:" + string(body)
 				go alarm_msg.SendAlarmMsg(msg, 3)
 			}
 		}
@@ -1625,3 +1625,59 @@ func RefreshDataFromEic(wg *sync.WaitGroup) (err error) {
 	}
 	return err
 }
+
+
+// RefreshDataFromEic 刷新谷歌出行数据
+func RefreshDataFromGoogleTravel(wg *sync.WaitGroup) (err error) {
+	defer func() {
+		if err != nil {
+			fmt.Println("RefreshDataFromGoogleTravel Err:" + err.Error())
+			go alarm_msg.SendAlarmMsg("RefreshDataFromGoogleTravel ErrMsg:"+err.Error(), 3)
+		}
+		wg.Done()
+	}()
+	var condition string
+	var pars []interface{}
+	condition += " AND source=? "
+	pars = append(pars, utils.DATA_SOURCE_GOOGLE_TRAVEL)
+	items, err := data_manage.GetEdbInfoByCondition(condition, pars, 0)
+	if err != nil {
+		return errors.New("GetEdbInfoByCondition:" + err.Error())
+	}
+
+	for _, v := range items {
+		startDate := ""
+		if v.Frequency == "日度" {
+			startDate = v.EndDate.AddDate(0, 0, -utils.DATA_REFRESH).Format(utils.FormatDate)
+		} else if v.Frequency == "周度" {
+			startDate = v.EndDate.AddDate(0, 0, -(utils.DATA_REFRESH * 7)).Format(utils.FormatDate)
+		} else if v.Frequency == "月度" {
+			startDate = v.EndDate.AddDate(0, -utils.DATA_REFRESH, 0).Format(utils.FormatDate)
+		} else if v.Frequency == "季度" {
+			startDate = v.EndDate.AddDate(0, -utils.DATA_REFRESH*3, 0).Format(utils.FormatDate)
+		} else if v.Frequency == "年度" {
+			startDate = v.EndDate.AddDate(-utils.DATA_REFRESH, 0, 0).Format(utils.FormatDate)
+		} else {
+			startDate = v.EndDate.AddDate(0, 0, -utils.DATA_REFRESH).Format(utils.FormatDate)
+		}
+
+		resp, err := RefreshEdbData(v.EdbInfoId, v.Source, v.EdbCode, startDate)
+		if err != nil {
+			return errors.New("RefreshEdbData Err:" + err.Error())
+		}
+		if resp.Ret != 200 {
+			return errors.New("RefreshEdbData Err:" + resp.Msg + ";ErrMsg:" + resp.ErrMsg)
+		}
+		item, err := data_manage.GetEdbInfoMaxAndMinInfo(v.Source, v.EdbCode)
+		if err != nil {
+			return err
+		}
+		if item != nil {
+			err = data_manage.ModifyEdbInfoMaxAndMinInfo(v.EdbInfoId, item)
+			if err != nil {
+				return err
+			}
+		}
+	}
+	return err
+}

+ 62 - 0
services/report_view.go

@@ -197,7 +197,69 @@ func ReportViewDetail() (err error) {
 				cellF.Value = v.TypeName
 			}
 			continue
+		} else if v.TypeName == `双周报` {
+			sheet, err := file.AddSheet(v.TypeName + "研报阅读统计")
+			if err != nil {
+				return err
+			}
+			//标头
+			rowTitle := sheet.AddRow()
+			cellA := rowTitle.AddCell()
+			cellA.Value = "用户名称"
+			cellB := rowTitle.AddCell()
+			cellB.Value = "公司名称"
+			cellC := rowTitle.AddCell()
+			cellC.Value = "访问时间"
+			cellD := rowTitle.AddCell()
+			cellD.Value = "访问标题"
+			cellE := rowTitle.AddCell()
+			cellE.Value = "访问页面"
+			cellF := rowTitle.AddCell()
+			cellF.Value = "报告类型"
+
+			items, err := models.GetResearchReportViewersDetail(startTime, endTime, v.TypeValue)
+			if err != nil {
+				return err
+			}
+			for _, item := range items {
+				row := sheet.AddRow()
+				cellA := row.AddCell()
+				cellA.Value = item.RealName
+				cellB := row.AddCell()
+				cellB.Value = item.CompanyName
+				cellC := row.AddCell()
+				cellC.Value = item.CreatedTime
+				cellD := row.AddCell()
+				cellD.Value = item.ResearchReportName
+				cellE := row.AddCell()
+				cellE.Value = item.ReportVariety
+				cellF := row.AddCell()
+				cellF.Value = v.TypeName
+			}
+
+			//新双周报的数据
+			weekItems, err := models.GetRddpTwoWeekReportViewersDetail(startTime, endTime)
+			if err != nil {
+				return err
+			}
+			for _, item := range weekItems {
+				row := sheet.AddRow()
+				cellA := row.AddCell()
+				cellA.Value = item.RealName
+				cellB := row.AddCell()
+				cellB.Value = item.CompanyName
+				cellC := row.AddCell()
+				cellC.Value = item.CreatedTime
+				cellD := row.AddCell()
+				cellD.Value = item.ResearchReportName + "(" + item.ReportCreateDate + ")"
+				cellE := row.AddCell()
+				cellE.Value = item.ReportVariety
+				cellF := row.AddCell()
+				cellF.Value = v.TypeName
+			}
+			continue
 		}
+
 		if v.TypeValue == "rddp" {
 			sheet, err := file.AddSheet(v.TypeName + "阅读统计")
 			if err != nil {

+ 3 - 1
services/task.go

@@ -234,7 +234,7 @@ func OneMinute(cont context.Context) (err error) {
 
 func RefreshData(cont context.Context) (err error) {
 	wg := sync.WaitGroup{}
-	wg.Add(10)
+	wg.Add(11)
 	//hour := time.Now().Hour()
 	//if hour != 0 {
 	//}
@@ -257,6 +257,8 @@ func RefreshData(cont context.Context) (err error) {
 	go data.RefreshDataFromLt(&wg)
 	//煤炭
 	go data.RefreshDataFromCoal(&wg)
+	//谷歌出行数据
+	go data.RefreshDataFromGoogleTravel(&wg)
 
 	wg.Wait()
 	////计算指标

+ 1 - 0
utils/constants.go

@@ -92,6 +92,7 @@ const (
 	DATA_SOURCE_COAL                            //煤炭网->26
 	DATA_SOURCE_PYTHON                          //python代码->27
 	DATA_SOURCE_PB_FINANCE                      //彭博财务数据->28
+	DATA_SOURCE_GOOGLE_TRAVEL                   //谷歌出行->29
 )
 
 //http://datawind.hzinsights.com:8040/hz_server