xingzai 3 жил өмнө
parent
commit
c47d1ead84

+ 54 - 0
models/report_mapping.go

@@ -129,3 +129,57 @@ func GetMatchTypeNamenNotNull() (items []*ReportMapping, err error) {
 	_, err = o.Raw(sql).QueryRows(&items)
 	return
 }
+
+type ReportMappingStatistical struct {
+	CategoryId      int    `description:"分类ID"`
+	SubCategoryName string `description:"主题名称"`
+	MatchTypeName   string `description:"匹配类型"`
+	IsSummary       string `description:"是否属于纪要,1 是,0否"`
+	IsClass         string `description:"是否归类,1 是,0否"`
+	Pv              int    `description:"Pv"`
+	Uv              int    `description:"Uv"`
+}
+
+//获取报表
+func GetStatisticalReportArtilce(chartPermissionId int) (items []*ReportMappingStatistical, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	m.category_id,
+	m.chart_permission_name,
+	a.article_id,
+	a.title,
+	a.is_summary,
+	a.is_class,
+	(SELECT count( 1 ) FROM cygx_article_history_record AS h  WHERE	h.article_id = a.article_id 	) AS pv,
+	(SELECT COUNT( DISTINCT h.user_id ) FROM cygx_article_history_record AS h   WHERE h.article_id = a.article_id ) AS uv
+FROM
+	cygx_report_mapping AS m
+	INNER JOIN cygx_article AS a ON a.category_id = m.category_id 
+WHERE
+	m.chart_permission_id = ?
+	and a.is_class= 1
+	and a.is_report= 1
+	and m.id !=28
+	and a.is_filter= 0
+	GROUP BY a.article_id`
+	_, err = o.Raw(sql, chartPermissionId).QueryRows(&items)
+	return
+}
+
+//获取报表
+func GetStatisticalReportArtilceExpert() (items []*ReportMappingStatistical, err error) {
+	o := orm.NewOrm()
+	sql := `SELECT
+	a.article_id,
+	a.title,
+	a.is_summary,
+	a.is_class,
+	(SELECT count( 1 ) FROM cygx_article_history_record AS h  WHERE	h.article_id = a.article_id ) AS pv,
+	(SELECT COUNT( DISTINCT h.user_id ) FROM cygx_article_history_record AS h   WHERE h.article_id = a.article_id ) AS uv
+	FROM
+		cygx_article AS a
+	WHERE
+		a.category_name LIKE '%研选%'`
+	_, err = o.Raw(sql).QueryRows(&items)
+	return
+}

+ 133 - 0
services/article.go

@@ -5,6 +5,7 @@ import (
 	"encoding/json"
 	"fmt"
 	"github.com/PuerkitoBio/goquery"
+	"github.com/rdlucklib/rdluck_tools/orm"
 	"hongze/hongze_cygx/models"
 	"hongze/hongze_cygx/utils"
 	"html"
@@ -592,3 +593,135 @@ func SynchronizationArtclehistory() {
 	}
 	fmt.Println("同步结束")
 }
+
+//统计报表
+func StatisticalReport() {
+	var isSummaryNumAll, isClassNum, pvNumAll, uvNumAll int
+	list, err := models.GetChartPermissionActivity()
+	if err != nil {
+		fmt.Println("获取列表失败", err)
+	}
+	for _, v := range list {
+		var listPv []*models.ReportMappingStatistical
+		if v.PermissionName == "研选" {
+			listPv, err = models.GetStatisticalReportArtilceExpert()
+			if err != nil {
+				fmt.Println("获取Pv列表失败", err)
+			}
+		} else {
+			listPv, err = models.GetStatisticalReportArtilce(v.ChartPermissionId)
+			if err != nil {
+				fmt.Println("获取Pv列表失败", err)
+			}
+		}
+		var pvNum, uvNum, isSummaryNum int
+		for _, v2 := range listPv {
+			pvNum += v2.Pv
+			uvNum += v2.Uv
+			if v2.IsSummary == "1" {
+				isSummaryNum += 1
+			}
+			if v2.IsClass == "1" && v.ChartPermissionId <= 22 {
+				isClassNum += 1
+			}
+			if v2.IsSummary == "1" && v.ChartPermissionId <= 22 {
+				isSummaryNumAll += 1
+			}
+		}
+		if v.ChartPermissionId <= 22 {
+			pvNumAll += pvNum
+			uvNumAll += uvNum
+		}
+		fmt.Println(v.PermissionName+"行业", len(listPv), "篇,其中主观类报告", isSummaryNum, "篇,客观类报告", len(listPv)-isSummaryNum, "篇。共产生阅读量pv-,", pvNum, ",uv-", uvNum)
+	}
+	fmt.Println("目前同步四大行业的总报告(已归类)数量", isClassNum, "篇,其中主观类报告", isSummaryNumAll, "篇,客观类报告", isClassNum-isSummaryNumAll, "篇。共产生阅读量pv-", pvNumAll, ",uv-", uvNumAll)
+	var totalOnline int        //线上
+	var totalOffline int       //线下
+	var totalPeople int        //共累计预约外呼人数
+	var totalSignUpOff int     //线下报名人数
+	var totalSignUpOffTime int //线下报名人数
+	var totalPeopleMeet int    //线下参会人数
+	o := orm.NewOrm()
+	sql := `SELECT COUNT(1) FROM cygx_activity WHERE activity_type_id IN (1,2,3) AND publish_status = 1 AND is_submit_meeting = 1 AND activity_time <= NOW();`
+	err = o.Raw(sql).QueryRow(&totalOnline)
+	if err != nil {
+		fmt.Println("获取线上", err)
+	}
+	sql = `SELECT COUNT(1) FROM cygx_activity WHERE activity_type_id IN (4,5,6) AND publish_status = 1 AND is_submit_meeting = 1 	AND activity_time <= NOW();`
+	err = o.Raw(sql).QueryRow(&totalOffline)
+	if err != nil {
+		fmt.Println("获取线下", err)
+	}
+	sql = `SELECT COUNT( 1 ) FROM
+			cygx_activity_signup  as s 
+			INNER JOIN cygx_activity as a ON  a.activity_id = s.activity_id
+		WHERE
+			s.do_fail_type = 0
+			AND a.is_submit_meeting = 1
+			AND a.activity_time <= NOW()
+			AND a.publish_status = 1`
+	err = o.Raw(sql).QueryRow(&totalPeople)
+	if err != nil {
+		fmt.Println("共累计预约外呼人数", err)
+	}
+
+	sql = `SELECT COUNT( 1 ) FROM
+			cygx_activity_signup  as s 
+			INNER JOIN cygx_activity as a ON  a.activity_id = s.activity_id
+		WHERE
+			s.do_fail_type = 0
+			AND a.is_submit_meeting = 1
+			AND a.activity_time <= NOW()
+			AND a.activity_type_id IN (4,5,6)
+			AND a.publish_status = 1`
+	err = o.Raw(sql).QueryRow(&totalSignUpOff)
+	if err != nil {
+		fmt.Println("共累计预约外呼人数", err)
+	}
+
+	sql = `SELECT COUNT( 1 ) FROM
+			cygx_activity_signup  as s 
+			INNER JOIN cygx_activity as a ON  a.activity_id = s.activity_id
+		WHERE
+			s.do_fail_type = 0
+			AND a.publish_status = 1
+			AND a.is_submit_meeting = 1
+			AND a.activity_time <= NOW()
+			AND a.is_submit_meeting = 1
+			AND a.activity_type_id IN (4,5,6);`
+	err = o.Raw(sql).QueryRow(&totalSignUpOffTime)
+	if err != nil {
+		fmt.Println("线下报名参会人数", err)
+	}
+
+	sql = `SELECT COUNT( 1 ) FROM
+			cygx_activity_signup  as s 
+			INNER JOIN cygx_activity as a ON  a.activity_id = s.activity_id
+		WHERE
+			s.do_fail_type = 0
+			AND a.is_submit_meeting = 1
+			AND a.activity_time <= NOW()
+			AND a.publish_status = 1
+			AND s.is_meeting = 1
+			AND a.activity_type_id IN (4,5,6);`
+	err = o.Raw(sql).QueryRow(&totalPeopleMeet)
+	if err != nil {
+		fmt.Println("线下参会人数", err)
+	}
+
+	fmt.Println("共上线活动", totalOnline+totalOffline, "个,其中线上", totalOnline, "个,线下", totalOffline, "个")
+	fmt.Println("共累计预约外呼人数", totalPeople, "人")
+	fmt.Println("报名线下参会", totalSignUpOff, "人,实际到会人数", totalPeopleMeet, "人,线下到会率约", totalPeopleMeet*100/totalSignUpOff, "%")
+
+	num := totalPeopleMeet / totalSignUpOffTime
+	fmt.Println(num)
+	fmt.Println(totalOnline)
+	fmt.Println(totalOffline)
+	fmt.Println(totalPeople)
+	fmt.Println(totalSignUpOff)
+	fmt.Println(totalPeopleMeet)
+	fmt.Println(totalSignUpOffTime)
+	fmt.Println(totalPeopleMeet / totalSignUpOffTime)
+	return
+
+}

+ 2 - 1
services/task.go

@@ -61,7 +61,8 @@ func Task() {
 	//GetAddpArticle() //同步日度点评数据
 	//SendEmailAllUserWithRAI()     //发送当前所有权益用户到沈大爷的邮箱
 	//SendEmailAllUserWithCompany() //发送这些公司下的用户到沈大爷的邮箱
-	task.StartTask()
+	//task.StartTask()
+	//StatisticalReport()//导出报表
 	fmt.Println("end")
 }