浏览代码

新增活动音频点击日志

xiexiaoyuan 2 年之前
父节点
当前提交
55f74f459a

+ 42 - 0
controller/activity/activity.go

@@ -5,8 +5,10 @@ import (
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
 	"hongze/hongze_yb/models/tables/yb_activity"
+	"hongze/hongze_yb/models/tables/yb_view_log"
 	"hongze/hongze_yb/services/activity"
 	"hongze/hongze_yb/services/user"
+	"hongze/hongze_yb/services/view_log"
 	"hongze/hongze_yb/utils"
 	"io/ioutil"
 	"os"
@@ -291,4 +293,44 @@ func calcuDrawXandY(drawText string, fontSize, canvasLength, canvasWidth int) (x
 	}
 
 	return
+}
+
+// AddStatistics
+// @Description 新增语音点击记录
+// @Success 200 {string} string "新增成功"
+// @Router /activity/voice_log/add [post]
+func AddActivityAudioLog(c *gin.Context) {
+	var req yb_view_log.ActivityAudioLogAddReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误:"+err.Error(), c)
+		return
+	}
+	userinfo := user.GetInfoByClaims(c)
+
+	data, err := view_log.AddActivityAudioLog(userinfo, req)
+	if err != nil {
+		response.FailMsg("添加日志失败", err.Error(), c)
+		return
+	}
+	response.OkData("新增记录成功", data, c)
+}
+
+// AddStatistics
+// @Description 新增语音点击记录
+// @Success 200 {string} string "新增成功"
+// @Router /activity/voice_log/update [post]
+func UpdateActivityAudioLog(c *gin.Context) {
+	var req yb_view_log.ActivityAudioLogStopReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误:"+err.Error(), c)
+		return
+	}
+	userinfo := user.GetInfoByClaims(c)
+
+	err := view_log.UpdateActivityAudioLog(userinfo, req)
+	if err != nil {
+		response.FailMsg("更新日志失败", err.Error(), c)
+		return
+	}
+	response.Ok("更新日志成功", c)
 }

+ 1 - 1
models/tables/yb_activity_voice/yb_activity_voice.go

@@ -4,7 +4,7 @@ import "time"
 
 // YbActivityVoice [...]
 type YbActivityVoice struct {
-	ActivityVoiceID  int       `gorm:"primaryKey;column:activity_voice_id;type:int(11);not null" json:"-"`
+	ActivityVoiceID  int       `gorm:"primaryKey;column:activity_voice_id;type:int(11);not null" json:"activity_voice_id"`
 	ActivityID       uint32    `gorm:"index:idx_activity_id;column:activity_id;type:int(11) unsigned;not null;default:0" json:"activityId"` // 活动id
 	VoiceURL         string    `gorm:"unique;column:voice_url;type:varchar(500);not null;default:''" json:"voiceUrl"`                       // 音频地址
 	VoiceName        string    `gorm:"column:voice_name;type:varchar(255);not null;default:''" json:"voiceName"`                            // 音频名称

+ 31 - 0
models/tables/yb_view_log/entity.go

@@ -0,0 +1,31 @@
+package yb_view_log
+
+import "time"
+
+// 研报访问记录表-综合各模块
+type YbViewLog struct {
+	Id            uint64    `gorm:"primaryKey;column:id" json:"id"`
+	UserId        uint64       `gorm:"column:user_id" json:"user_id"`               //用户ID
+	PrimaryId     int       `gorm:"column:primary_id" json:"primary_id"`         //访问类型对应主键ID(如:活动音频记录音频ID)
+	ExtendId      int       `gorm:"column:extend_id" json:"extend_id"`           //扩展ID(如:活动音频记录活动ID)
+	ViewType      uint8     `gorm:"column:view_type" json:"view_type"`           //访问类型:1-活动详情;2-活动音频;3-报告详情;4-报告音频;5-ETA图库;6-问答社区音频;7-价格驱动;8-语音播报详情;9-语音播报音频;10-沙盘推演;
+	Source        uint8     `gorm:"column:source" json:"source"`                 //来源:1-小程序;2-小程序PC端;3-公众号;4-Web PC端
+	FromPage      string    `gorm:"column:from_page" json:"from_page"`           //来源页面
+	ViewSeconds   uint      `gorm:"column:view_seconds" json:"view_seconds"`     //访问时长(秒)
+	QuitType      uint8     `gorm:"column:quit_type" json:"quit_type"`           //退出类型:1-正常退出;2-强制退出;
+	CreateTime    time.Time `gorm:"column:create_time" json:"create_time"`       //创建时间
+	SellerId      int       `gorm:"column:seller_id" json:"seller_id"`           //客户对应的销售ID
+	CompanyId     int64      `gorm:"column:company_id" json:"company_id"`         //客户ID
+	CompanyName   string    `gorm:"column:company_name" json:"company_name"`     //客户名称
+	CompanyStatus string    `gorm:"column:company_status" json:"company_status"` //客户状态
+	ReportId      int       `gorm:"column:report_id" json:"report_id"`           //报告ID
+	OldReportId   int       `gorm:"column:old_report_id" json:"old_report_id"`   //老报告ID
+	StopSeconds   int       `gorm:"column:stop_seconds" json:"stop_seconds"`     //停止时的秒数
+	ModifyTime    time.Time `gorm:"column:modify_time" json:"modify_time"`       //修改时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (i *YbViewLog) TableName() string {
+	return "yb_view_log"
+}
+

+ 34 - 0
models/tables/yb_view_log/model.go

@@ -0,0 +1,34 @@
+package yb_view_log
+
+import (
+	"hongze/hongze_yb/global"
+)
+
+func (i *YbViewLog) Create() (err error) {
+	err = global.DEFAULT_MYSQL.Create(i).Error
+	return
+}
+// Update 更新对应字段数据
+func (i *YbViewLog) Update(updateCols []string) (err error) {
+	err = global.DEFAULT_MYSQL.Model(i).Select(updateCols).Updates(*i).Error
+	return
+}
+
+type ActivityAudioLogAddReq struct {
+	PrimaryId int    `json:"primary_id" ` //访问类型对应主键ID(如:活动音频记录音频ID)
+	ExtendId  int    `json:"extend_id" `  //扩展ID(如:活动音频记录活动ID)
+	Source    uint8  `json:"source" `     //来源:1-小程序;2-小程序PC端;3-公众号;4-Web PC端
+	FromPage  string `json:"from_page"`  //来源页面
+}
+type ActivityAudioLogAddResp struct {
+	Id          uint64 `json:"id"`           //日志ID
+}
+type ActivityAudioLogStopReq struct {
+	Id          uint64 `json:"id"`           //日志ID
+	StopSeconds int    `json:"stop_seconds"` //停止时的秒数
+}
+
+func (i *YbViewLog) GetById() (item *YbViewLog, err error) {
+	err = global.DEFAULT_MYSQL.Model(i).Where("id = ?", i.Id).First(&item).Error
+	return
+}

+ 2 - 0
routers/activity.go

@@ -17,6 +17,8 @@ func InitActivity(r *gin.Engine) {
 		rGroup.POST("/cancelRemind", activity.CancelRemind)
 		rGroup.POST("/registerActivity", activity.RegisterActivity)
 		rGroup.POST("/cancelRegister", activity.CancelRegister)
+		rGroup.POST("/voice_log/add", activity.AddActivityAudioLog)
+		rGroup.POST("/voice_log/update", activity.UpdateActivityAudioLog)
 	}
 	// 不需要Token
 	rGroup2 := r.Group("activity")

+ 91 - 0
services/view_log/view_log.go

@@ -0,0 +1,91 @@
+package view_log
+
+import (
+	"errors"
+	"gorm.io/gorm"
+	"hongze/hongze_yb/models/tables/company_product"
+	"hongze/hongze_yb/models/tables/yb_activity"
+	"hongze/hongze_yb/models/tables/yb_view_log"
+	"hongze/hongze_yb/services/user"
+	"time"
+)
+
+func AddViewLog(item *yb_view_log.YbViewLog) (id uint64, err error) {
+	//查询对应的客户信息
+	companyProduct, err := company_product.GetByCompany2ProductId(item.CompanyId, 1)
+	if err != nil {
+		return
+	}
+	//增加记录
+	item.CompanyName = companyProduct.CompanyName
+	item.CompanyStatus = companyProduct.Status
+	item.SellerId = companyProduct.SellerID
+	err = item.Create()
+	if err != nil {
+		return
+	}
+	return item.Id, nil
+}
+
+func UpdateActivityAudioLog(userinfo user.UserInfo, req yb_view_log.ActivityAudioLogStopReq) (err error)  {
+	viewLog := new(yb_view_log.YbViewLog)
+	viewLog.Id = req.Id
+	item, err := viewLog.GetById()
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return
+		}
+		return
+	}
+	if item.UserId != userinfo.UserID {
+		err = errors.New("用户不一致, 更新日志失败")
+		return
+	}
+	//更新音频停止的时间
+	item.StopSeconds = req.StopSeconds
+	item.ModifyTime = time.Now()
+	err = item.Update([]string{"stop_seconds", "modify_time"})
+	return
+}
+
+func AddActivityAudioLog(userinfo user.UserInfo, req yb_view_log.ActivityAudioLogAddReq)(resp yb_view_log.ActivityAudioLogAddResp, err error)  {
+	//查询报告相关
+	var activityDetail *yb_activity.ActivityDetail
+	ybViewLog := new(yb_view_log.YbViewLog)
+	if req.ExtendId <= 0 {
+		err = errors.New("请输入活动ID")
+		return
+	}
+	//根据活动ID查询报告信息
+	activityDetail, err = yb_activity.GetDetailById(req.ExtendId)
+	if err != nil {
+		if err == gorm.ErrRecordNotFound {
+			return
+		}
+		return
+	}
+	if activityDetail.ActivityID == 0 {
+		err = errors.New("活动不存在")
+		return
+	}
+	ybViewLog.PrimaryId = req.PrimaryId
+	ybViewLog.ExtendId = activityDetail.ActivityID
+	ybViewLog.UserId = userinfo.UserID
+	ybViewLog.Source = req.Source
+	ybViewLog.FromPage = req.FromPage
+	ybViewLog.ViewType = 2
+	if activityDetail.IsNewReport == 1 {
+		ybViewLog.ReportId = activityDetail.ReportId
+	}else{
+		ybViewLog.OldReportId = activityDetail.ReportId
+	}
+	ybViewLog.CreateTime = time.Now()
+	ybViewLog.ModifyTime = time.Now()
+	ybViewLog.CompanyId = userinfo.CompanyID
+	id, err := AddViewLog(ybViewLog)
+	if err != nil {
+		return
+	}
+	resp.Id = id
+	return
+}