Browse Source

新增用户点击回答音频日志

xiexiaoyuan 2 years ago
parent
commit
5887563215

+ 30 - 0
controller/community/question.go

@@ -293,4 +293,34 @@ func ResearchGroupList(c *gin.Context)  {
 		return
 	}
 	response.OkData("获取成功", list, c)
+}
+
+// AddAudioLog 添加用户点击音频日志
+// @Tags 问答社区模块
+// @Description 添加用户点击音频日志
+// @Param community_question_audio_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 /AddAudioLog [post]
+func AddAudioLog(c *gin.Context) {
+	var req request.CommunityAudioListenLogReq
+	if err := c.ShouldBind(&req); err != nil {
+		response.Fail("参数有误", c)
+		return
+	}
+	if req.CommunityQuestionAudioID == 0 {
+		response.Fail("请输入音频ID", c)
+		return
+	}
+	if req.SourceAgent == 0 {
+		response.Fail("请输入操作来源", c)
+		return
+	}
+	userinfo := user.GetInfoByClaims(c)
+	if err := community.AddAudioListenLog(userinfo, req.CommunityQuestionAudioID, req.SourceAgent); err != nil {
+		response.Fail("操作失败: "+ err.Error(), c)
+		return
+	}
+	response.Ok("操作成功", c)
 }

+ 5 - 0
models/request/community.go

@@ -36,3 +36,8 @@ type QuestionReadReq struct {
 type ReplyListTotalReq struct {
 	ReplierUserId int `json:"replier_user_id" form:"replier_user_id"`
 }
+
+type CommunityAudioListenLogReq struct {
+	CommunityQuestionAudioID int `json:"community_question_audio_id"` //音频ID
+	SourceAgent              int `json:"source_agent"`                //操作来源,1:小程序,2:小程序 pc 3:弘则研究公众号,4:web pc
+}

+ 6 - 5
models/response/community.go

@@ -23,11 +23,12 @@ type CommunityQuestionItem struct {
 }
 
 type CommunityQuestionAudioItem struct {
-	CommunityQuestionID int    `json:"community_question_id"`
-	AudioURL            string `json:"audio_url"`
-	AudioPlaySeconds    string `json:"audio_play_seconds"`
-	AudioSize           string `json:"audio_size"`
-	Sort                int    `json:"sort"`
+	CommunityQuestionAudioID int    `json:"community_question_audio_id"`
+	CommunityQuestionID      int    `json:"community_question_id"`
+	AudioURL                 string `json:"audio_url"`
+	AudioPlaySeconds         string `json:"audio_play_seconds"`
+	AudioSize                string `json:"audio_size"`
+	Sort                     int    `json:"sort"`
 }
 
 type CommunityQuestionListTotal struct {

+ 18 - 0
models/tables/yb_community_audio_listen_log/entity.go

@@ -0,0 +1,18 @@
+package yb_community_audio_listen_log
+
+import "time"
+
+// YbCommunityAudioListenLog 社区语音回答点击日志
+type YbCommunityAudioListenLog struct {
+	Id                       int       `gorm:"primaryKey;column:id;type:int(10) unsigned;not null" json:"-"`
+	CommunityQuestionAudioID int       `gorm:"column:community_question_audio_id;type:int(10) unsigned;not null" json:"community_question_audio_id"` //问答音频ID
+	CommunityQuestionID      int       `gorm:"column:community_question_id;type:int(10) unsigned;not null;default:0" json:"community_question_id"`   // 社区问题ID
+	UserID                   int       `gorm:"index:idx_user_id;column:user_id;type:int(10) unsigned;not null;default:0" json:"user_id"`             // 点击音频的用户ID
+	SourceAgent              int       `gorm:"column:source_agent;type:tinyint(4);default:1" json:"source_agent"`                                    // 操作来源,1:小程序,2:小程序 pc 3:弘则研究公众号,4:web pc
+	CreateTime               time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`                        // 创建日志时间
+}
+
+// TableName get sql table name.获取数据库表名
+func (l *YbCommunityAudioListenLog) TableName() string {
+	return "yb_community_audio_listen_log"
+}

+ 9 - 0
models/tables/yb_community_audio_listen_log/model.go

@@ -0,0 +1,9 @@
+package yb_community_audio_listen_log
+
+import "hongze/hongze_yb/global"
+
+func (l *YbCommunityAudioListenLog) Create() (err error) {
+	err = global.DEFAULT_MYSQL.Create(l).Error
+	return
+}
+

+ 12 - 2
models/tables/yb_community_question_audio/model.go

@@ -15,7 +15,7 @@ func GetListByQuestrionIds(idArr []int) (list []*YbCommunityQuestionAudio, err e
 	}
 	err = global.DEFAULT_MYSQL.
 		Model(YbCommunityQuestionAudio{}).
-		Select("community_question_id, audio_url, audio_play_seconds, audio_size, sort").
+		Select("community_question_audio_id, community_question_id, audio_url, audio_play_seconds, audio_size, sort").
 		Where("community_question_id IN ?", idArr).
 		Order("community_question_id ASC, sort ASC").
 		Scan(&list).Error
@@ -25,9 +25,19 @@ func GetListByQuestrionIds(idArr []int) (list []*YbCommunityQuestionAudio, err e
 func GetListByQuestionId(questionId int) (list []*YbCommunityQuestionAudio, err error) {
 	err = global.DEFAULT_MYSQL.
 		Model(YbCommunityQuestionAudio{}).
-		Select("community_question_id, audio_url, audio_play_seconds, audio_size, sort").
+		Select("community_question_audio_id, community_question_id, audio_url, audio_play_seconds, audio_size, sort").
 		Where("community_question_id = ?", questionId).
 		Order("sort ASC").
 		Scan(&list).Error
 	return
+}
+
+// GetByAudioId 根据问答音频ID, 查询音频详情
+func GetByAudioId(audioId int)(item *YbCommunityQuestionAudio, err error)  {
+	err = global.DEFAULT_MYSQL.
+		Model(YbCommunityQuestionAudio{}).
+		Select("community_question_audio_id, community_question_id, audio_url, audio_play_seconds, audio_size, sort").
+		Where("community_question_audio_id = ?", audioId).
+		First(&item).Error
+	return
 }

+ 1 - 0
routers/community.go

@@ -17,4 +17,5 @@ func InitCommunity(r *gin.Engine)  {
 	rGroup.POST("/question/reply/upload_audio", community.QuestionUploadAudio)
 	rGroup.GET("/question/unread", community.QuestionUnread)
 	rGroup.GET("/question/research_group", community.ResearchGroupList)
+	rGroup.POST("/question/audio/log", community.AddAudioLog)
 }

+ 33 - 5
services/community/question.go

@@ -7,6 +7,7 @@ import (
 	"hongze/hongze_yb/models/response"
 	"hongze/hongze_yb/models/tables/research_group"
 	"hongze/hongze_yb/models/tables/user_record"
+	"hongze/hongze_yb/models/tables/yb_community_audio_listen_log"
 	"hongze/hongze_yb/models/tables/yb_community_question"
 	"hongze/hongze_yb/models/tables/yb_community_question_audio"
 	"hongze/hongze_yb/services/user"
@@ -95,11 +96,12 @@ func GetQuestionList(pageIndex, pageSize, onlyMine, chartPermissionId, replyStat
 		for _, a := range audioList {
 			if a.CommunityQuestionID == v.CommunityQuestionID {
 				audios = append(audios, &response.CommunityQuestionAudioItem{
-					CommunityQuestionID: a.CommunityQuestionID,
-					AudioURL:            a.AudioURL,
-					AudioPlaySeconds:    a.AudioPlaySeconds,
-					AudioSize:           a.AudioSize,
-					Sort:                a.Sort,
+					CommunityQuestionAudioID: a.CommunityQuestionAudioID,
+					CommunityQuestionID:      a.CommunityQuestionID,
+					AudioURL:                 a.AudioURL,
+					AudioPlaySeconds:         a.AudioPlaySeconds,
+					AudioSize:                a.AudioSize,
+					Sort:                     a.Sort,
 				})
 			}
 		}
@@ -433,3 +435,29 @@ func GetResearchGroupTree() (respList []*response.ResearchGroupItem, err error)
 	respList = firstList
 	return
 }
+
+// AddAudioListenLog 添加用户点击音频日志
+func AddAudioListenLog(userInfo user.UserInfo, audioId int, sourceAgent int) (err error)  {
+	//1. 查询音频是否存在
+	audio, err := yb_community_question_audio.GetByAudioId(audioId)
+	if err != nil && err != utils.ErrNoRow {
+		err = errors.New("查询音频信息失败 Err:" + err.Error())
+		return
+	}
+	if audio.CommunityQuestionAudioID == 0 {
+		err = errors.New("音频不存在")
+		return
+	}
+	//3. 添加点击日志
+	item := &yb_community_audio_listen_log.YbCommunityAudioListenLog{
+		CommunityQuestionAudioID: audio.CommunityQuestionAudioID,
+		CommunityQuestionID:      audio.CommunityQuestionID,
+		UserID:                   int(userInfo.UserID),
+		SourceAgent:              sourceAgent,
+	}
+	if err = item.Create(); err != nil {
+		err = errors.New("新增点击日志失败 Err:" + err.Error())
+		return
+	}
+	return
+}