Browse Source

Merge branch 'bzq1/uv_custom' of eta_server/eta_api into master

鲍自强 8 months ago
parent
commit
7da190c8cb

+ 67 - 3
controllers/english_report/email.go

@@ -9,14 +9,15 @@ import (
 	"eta/eta_api/services/alarm_msg"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/beego/beego/v2/server/web"
-	"github.com/rdlucklib/rdluck_tools/paging"
-	"github.com/tealeg/xlsx"
 	"os"
 	"path"
 	"strconv"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/server/web"
+	"github.com/rdlucklib/rdluck_tools/paging"
+	"github.com/tealeg/xlsx"
 )
 
 // EnglishReportEmailController 英文研报邮箱/英文客户联系人
@@ -843,6 +844,69 @@ func (this *EnglishReportEmailController) PvList() {
 	br.Data = resp
 }
 
+// UvList
+// @Title 英文研报邮箱UV列表
+// @Description 英文研报邮箱UV列表
+// @Param   ReportId	query	int	false	"英文研报ID"
+// @Param   ReportType	query	int	false	"类型:0英文研报,1英文线上路演"
+// @Success 200 {object} models.EnglishReportEmailPvResp
+// @router /email/uv_list [get]
+func (this *EnglishReportEmailController) UvList() {
+	br := new(models.BaseResponse).Init()
+	br.IsSendEmail = false
+	defer func() {
+		this.Data["json"] = br
+		this.ServeJSON()
+	}()
+	sysUser := this.SysUser
+	if sysUser == nil {
+		br.Msg = "请登录"
+		br.ErrMsg = "请登录,SysUser Is Empty"
+		br.Ret = 408
+		return
+	}
+
+	reportId, e := this.GetInt("ReportId", 0)
+	if reportId == 0 {
+		br.Msg = "参数有误"
+		return
+	}
+	reportType, e := this.GetInt("ReportType", 0)
+
+	var cond string
+	var pars []interface{}
+	cond += ` AND a.report_id = ? AND a.report_type= ?`
+	pars = append(pars, reportId, reportType)
+
+	var startSize int
+	pageSize, _ := this.GetInt("PageSize")
+	currentIndex, _ := this.GetInt("CurrentIndex")
+	if pageSize <= 0 {
+		pageSize = utils.PageSize20
+	}
+	if currentIndex <= 0 {
+		currentIndex = 1
+	}
+	startSize = paging.StartIndex(currentIndex, pageSize)
+
+	total, list, e := models.GetEnglishReportEmailUvPageList(cond, pars, startSize, pageSize)
+	if e != nil {
+		br.Msg = "获取失败"
+		br.ErrMsg = "获取英文研报邮箱uv列表失败, Err: " + e.Error()
+		return
+	}
+
+	page := paging.GetPaging(currentIndex, pageSize, total)
+	resp := &models.EnglishReportEmailUvPageListResp{
+		Paging: page,
+		List:   list,
+	}
+	br.Ret = 200
+	br.Success = true
+	br.Msg = "获取成功"
+	br.Data = resp
+}
+
 // ImportListMatch
 // @Title 英文邮箱/联系人批量导入
 // @Description 英文邮箱/联系人批量导入

+ 7 - 4
models/english_report.go

@@ -4,10 +4,11 @@ import (
 	"errors"
 	"eta/eta_api/utils"
 	"fmt"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 type EnglishReport struct {
@@ -36,6 +37,7 @@ type EnglishReport struct {
 	ReportCode         string    `description:"报告唯一编码"`
 	Pv                 int       `description:"Pv"`
 	PvEmail            int       `description:"邮箱PV"`
+	UvEmail            int       `description:"邮箱UV"`
 	EmailState         int       `description:"群发邮件状态: 0-未发送; 1-已发送"`
 	Overview           string    `description:"英文概述部分"`
 	KeyTakeaways       string    `description:"关键点"`
@@ -258,6 +260,7 @@ type EnglishReportList struct {
 	Pv                 int       `description:"Pv"`
 	ShareUrl           string    `description:"分享url"`
 	PvEmail            int       `description:"邮箱PV"`
+	UvEmail            int       `description:"邮箱UV"`
 	EmailState         int       `description:"群发邮件状态: 0-未发送; 1-已发送"`
 	EmailAuth          bool      `description:"是否有权限群发邮件"`
 	EmailHasFail       bool      `description:"是否存在邮件发送失败的记录"`
@@ -962,6 +965,7 @@ func FormatEnglishReport2ListItem(origin *EnglishReport) (item *EnglishReportLis
 	item.ReportCode = origin.ReportCode
 	item.Pv = origin.Pv
 	item.PvEmail = origin.PvEmail
+	item.UvEmail = origin.UvEmail
 	// 邮箱PV大于0的时候, 不展示最初版本的PV
 	if item.PvEmail > 0 {
 		item.Pv = 0
@@ -987,11 +991,10 @@ func UpdateEnglishReportEmailHasFail(reportId int) (err error) {
 	return
 }
 
-
 // UpdatePdfUrlEnglishReportById 清空pdf相关字段
 func UpdatePdfUrlEnglishReportById(reportId int) (err error) {
 	o := orm.NewOrmUsingDB("rddp")
 	sql := `UPDATE english_report SET detail_img_url = '',detail_pdf_url='',modify_time=NOW() WHERE id = ? `
 	_, err = o.Raw(sql, reportId).Exec()
 	return
-}
+}

+ 38 - 1
models/english_report_email_pv.go

@@ -1,9 +1,10 @@
 package models
 
 import (
+	"time"
+
 	"github.com/beego/beego/v2/client/orm"
 	"github.com/rdlucklib/rdluck_tools/paging"
-	"time"
 )
 
 // EnglishReportEmailPV 英文研报-邮箱pv
@@ -30,6 +31,10 @@ type EnglishReportEmailPvPageListResp struct {
 	List   []*EnglishReportEmailPvResp
 	Paging *paging.PagingItem `description:"分页数据"`
 }
+type EnglishReportEmailUvPageListResp struct {
+	List   []*EnglishReportEmailUvResp
+	Paging *paging.PagingItem `description:"分页数据"`
+}
 
 // EnglishReportEmailPvResp 邮箱响应体
 type EnglishReportEmailPvResp struct {
@@ -39,6 +44,12 @@ type EnglishReportEmailPvResp struct {
 	RecentClickTime string `description:"最近一次点击时间"`
 }
 
+type EnglishReportEmailUvResp struct {
+	Name            string `description:"客户名称"`
+	Email           string `description:"邮箱地址"`
+	RecentClickTime string `description:"最近一次点击时间"`
+}
+
 // GetEnglishReportEmailPageList 获取邮箱pv列表-分页
 func GetEnglishReportEmailPvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailPvResp, err error) {
 	o := orm.NewOrmUsingDB("rddp")
@@ -66,6 +77,32 @@ func GetEnglishReportEmailPvPageList(condition string, pars []interface{}, start
 	return
 }
 
+// GetEnglishReportEmailUvPageList 获取邮箱uv列表-分页
+func GetEnglishReportEmailUvPageList(condition string, pars []interface{}, startSize, pageSize int) (total int, list []*EnglishReportEmailUvResp, err error) {
+	o := orm.NewOrmUsingDB("rddp")
+	sql := `SELECT
+				b.name,
+				b.email,
+				MAX(a.create_time) AS recent_click_time
+			FROM
+				english_report_email_pv AS a
+			JOIN english_report_email AS b ON a.email_id = b.id
+			WHERE 1 = 1 `
+	if condition != `` {
+		sql += condition
+	}
+	sql += ` GROUP BY a.email_id `
+
+	totalSQl := `SELECT COUNT(1) total FROM (` + sql + `) z`
+	if err = o.Raw(totalSQl, pars).QueryRow(&total); err != nil {
+		return
+	}
+	sql += ` ORDER BY recent_click_time DESC LIMIT ?,?`
+
+	_, err = o.Raw(sql, pars, startSize, pageSize).QueryRows(&list)
+	return
+}
+
 // EnglishEmailViewPageListResp  邮箱/联系人阅读分页列表响应体
 type EnglishEmailViewPageListResp struct {
 	List   []*EnglishEmailViewResp

+ 5 - 2
models/english_video.go

@@ -2,10 +2,11 @@ package models
 
 import (
 	"eta/eta_api/utils"
-	"github.com/beego/beego/v2/client/orm"
-	"github.com/rdlucklib/rdluck_tools/paging"
 	"strings"
 	"time"
+
+	"github.com/beego/beego/v2/client/orm"
+	"github.com/rdlucklib/rdluck_tools/paging"
 )
 
 type EnglishVideo struct {
@@ -27,6 +28,7 @@ type EnglishVideo struct {
 	VideoCode          string    `description:"报告唯一编码"`
 	Pv                 int       `description:"Pv"`
 	PvEmail            int       `description:"邮箱PV"`
+	UvEmail            int       `description:"邮箱UV"`
 	EmailState         int       `description:"群发邮件状态: 0-未发送; 1-已发送"`
 	Overview           string    `description:"英文概述部分"`
 	AdminId            int       `description:"上传视频的管理员账号"`
@@ -164,6 +166,7 @@ type EnglishVideoList struct {
 	Pv                 int    `description:"Pv"`
 	ShareUrl           string `description:"分享url"`
 	PvEmail            int    `description:"邮箱PV"`
+	UvEmail            int    `description:"邮箱UV"`
 	EmailState         int    `description:"群发邮件状态: 0-未发送; 1-已发送"`
 	EmailAuth          bool   `description:"是否有权限群发邮件"`
 	EmailHasFail       bool   `description:"是否存在邮件发送失败的记录"`

+ 9 - 0
routers/commentsRouter.go

@@ -5668,6 +5668,15 @@ func init() {
             Filters: nil,
             Params: nil})
 
+    beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnglishReportEmailController"],
+        beego.ControllerComments{
+            Method: "UvList",
+            Router: `/email/uv_list`,
+            AllowHTTPMethods: []string{"get"},
+            MethodParams: param.Make(),
+            Filters: nil,
+            Params: nil})
+
     beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnglishReportEmailController"] = append(beego.GlobalControllerRouter["eta/eta_api/controllers/english_report:EnglishReportEmailController"],
         beego.ControllerComments{
             Method: "VideoResend",