浏览代码

新增视频播放时长日志

xiexiaoyuan 2 年之前
父节点
当前提交
196ca6d12d
共有 3 个文件被更改,包括 110 次插入0 次删除
  1. 64 0
      controller/english_report/english_video.go
  2. 45 0
      models/english_video/english_video_play_log.go
  3. 1 0
      routers/english_report.go

+ 64 - 0
controller/english_report/english_video.go

@@ -139,3 +139,67 @@ func (er *EnglishVideoController) Detail(c *gin.Context) {
 	baseData.Video = videoDetail
 	resp.OkData("查询成功", baseData, c)
 }
+
+// VideoPlayLog 记录视频播放日志
+// @Tags 视频社区模块
+// @Description 记录视频播放日志
+// @Param video_id		query  int  true  "音频ID"
+// @Param source_agent	query  int  true  "操作来源,1:小程序,2:小程序 pc 3:弘则研究公众号,4:web pc"
+// @Success 200 {string} string "操作成功"
+// @failure 400 {string} string "操作失败"
+// @Router /play_log [post]
+func (er *EnglishVideoController) VideoPlayLog(c *gin.Context) {
+	var req english_video.VideoPlayLogReq
+	err := c.ShouldBind(&req)
+	if err != nil {
+		errs, ok := err.(validator.ValidationErrors)
+		if !ok {
+			resp.FailData("参数解析失败", "Err:"+err.Error(), c)
+			return
+		}
+		resp.FailData("参数解析失败", errs.Translate(global.Trans), c)
+		return
+	}
+	shareEmailIdStr := c.GetString("shareEmailId")
+	shareEmailId, _ := strconv.Atoi(shareEmailIdStr)
+
+	item := new(english_video.PlayLog)
+	if req.Id > 0 { 
+		//查找当前播放日志,并更新停止播放时长
+		item.Id = req.Id
+		item, err = item.GetById()
+		if err != nil {
+			if err == utils.ErrNoRow {
+				resp.Fail("播放日志不存在", c)
+				return
+			}
+			resp.FailMsg("查询播放日志失败", "新增播放日志失败,Err:" + err.Error(), c)
+			return
+		}
+		item.StopSeconds = req.StopSeconds
+		err = item.Update([]string{"stop_seconds"})
+		if err != nil {
+			resp.FailMsg("更新播放日志失败", "更新播放日志失败,Err:" + err.Error(), c)
+			return
+		}
+	} else {
+		if req.VideoId == 0 {
+			resp.Fail("请输入点击的视频ID", c)
+			return
+		}
+		item = &english_video.PlayLog{
+			VideoId:     req.VideoId,
+			EmailId:     shareEmailId,
+			StopSeconds: 0,
+		}
+		err = item.Add()
+		if err != nil {
+			resp.FailMsg("新增播放日志失败", "新增播放日志失败,Err:" + err.Error(), c)
+			return
+		}
+	}
+
+	baseData := new(english_video.VideoPlayLogResp)
+	baseData.Id = item.Id
+	resp.OkData("操作成功", baseData, c)
+}

+ 45 - 0
models/english_video/english_video_play_log.go

@@ -0,0 +1,45 @@
+package english_video
+
+import (
+	"hongze/hongze_yb_en_api/global"
+	"hongze/hongze_yb_en_api/models/base"
+)
+
+type PlayLog struct {
+	Id          int      `gorm:"primaryKey;column:id" json:"id"`
+	VideoId     int      `gorm:"column:video_id" json:"video_id"`         //线上路演ID
+	EmailId     int      `gorm:"column:email_id" json:"email_id"`         //邮箱ID
+	StopSeconds int      `gorm:"column:stop_seconds" json:"stop_seconds"` //停止时的秒数
+	base.TimeBase
+}
+
+// TableName get sql table name.获取数据库表名
+func (p *PlayLog) TableName() string {
+	return "english_video_play_log"
+}
+
+// Add 新增
+func (p *PlayLog) Add() (err error) {
+	err = global.DEFAULT_MYSQL.Create(p).Error
+	return
+}
+
+func (p *PlayLog) GetById() (item *PlayLog, err error) {
+	err = global.DEFAULT_MYSQL.Model(p).Where("id = ?", p.Id).First(&item).Error
+	return
+}
+
+func (p *PlayLog) Update(updateCols []string) (err error) {
+	err = global.DEFAULT_MYSQL.Model(p).Select(updateCols).Updates(*p).Error
+	return
+}
+
+type VideoPlayLogReq struct {
+	Id          int `json:"id" description:"日志ID"  form:"id"`
+	VideoId     int `json:"video_id" description:"路演视频ID"  form:"video_id"`
+	StopSeconds int `json:"stop_seconds" description:"访问时长"  form:"stop_seconds"`
+}
+
+type VideoPlayLogResp struct {
+	Id int `json:"id" description:"日志ID"`
+}

+ 1 - 0
routers/english_report.go

@@ -17,4 +17,5 @@ func InitReport(baseGroup *gin.RouterGroup) {
 	group.GET("filter_by_es", controller.FilterByEs)
 	group.GET("detail", controller.Detail)
 	group.GET("video/detail", vController.Detail)
+	group.POST("video/play_log", vController.VideoPlayLog)
 }