Browse Source

列表修改,新增统计接口50%

ziwen 2 years ago
parent
commit
4c882e4d36

+ 96 - 0
controller/voice_broadcast/voice_broadcast.go

@@ -207,4 +207,100 @@ func SectionList(c *gin.Context) {
 		sectionList = []voiceResp.SectionList{}
 	}
 	response.OkData("上传成功", resp, c)
+}
+
+// AddStatistics
+// @Description 新建语音播报
+// @Param file  query  string  true  "音频文件"
+// @Success 200 {string} string "发布成功"
+// @failure 400 {string} string "发布失败"
+// @Router /statistics/add [post]
+func AddStatistics(c *gin.Context) {
+	broadcastName := c.PostForm("broadcast_name")
+	fmt.Println("broadcastName:",broadcastName)
+	nsectionId := c.PostForm("section_id")
+	sectionId, _ := strconv.Atoi(nsectionId)
+	sectionName := c.PostForm("section_name")
+	nvarietyId := c.PostForm("variety_id")
+	varietyId, _ := strconv.Atoi(nvarietyId)
+	varietyName := c.PostForm("variety_name")
+	nauthorId := c.PostForm("author_id")
+	authorId, _ := strconv.Atoi(nauthorId)
+	author := c.PostForm("author")
+	file, err := c.FormFile("file")
+	if err != nil {
+		response.FailMsg("获取资源失败", "获取资源失败, Err:"+err.Error(), c)
+		return
+	}
+
+	ext := path.Ext(file.Filename)
+	if ext != ".mp3" {
+		response.Fail("暂仅支持mp3格式", c)
+		return
+	}
+	dateDir := time.Now().Format("20060102")
+	localDir := global.CONFIG.Serve.StaticDir + "hongze/" + dateDir
+	if err := os.MkdirAll(localDir, 0766); err != nil {
+		response.FailMsg("存储目录创建失败", "QuestionUploadAudio 存储目录创建失败, Err:"+err.Error(), c)
+		return
+	}
+	randStr := utils.GetRandStringNoSpecialChar(28)
+	filtName := randStr + ext
+	fpath := localDir + "/" + filtName
+	defer func() {
+		_ = os.Remove(fpath)
+	}()
+	// 生成文件至指定目录
+	if err := c.SaveUploadedFile(file, fpath); err != nil {
+		response.FailMsg("文件生成失败", "QuestionUploadAudio 文件生成失败, Err:"+err.Error(), c)
+		return
+	}
+	// 获取音频文件时长
+	fByte, err := ioutil.ReadFile(fpath)
+	if err != nil {
+		response.FailMsg("读取本地文件失败", "QuestionUploadAudio 读取本地文件失败", c)
+		return
+	}
+	if len(fByte) <= 0 {
+		response.FailMsg("文件大小有误", "QuestionUploadAudio 文件大小有误", c)
+		return
+	}
+	seconds, err := services.GetMP3PlayDuration(fByte)
+	if err != nil {
+		response.FailMsg("读取文件时长失败", "QuestionUploadAudio 读取文件时长失败", c)
+		return
+	}
+	// 音频大小MB
+	fi, err := os.Stat(fpath)
+	if err != nil {
+		response.FailMsg("读取文件大小失败", "QuestionUploadAudio 读取文件大小失败", c)
+		return
+	}
+	mb := utils.Bit2MB(fi.Size(), 2)
+	// 上传文件至阿里云
+	ossDir := "yb_wx/voice_broadcast/"
+	resourceUrl, err := services.UploadAliyunToDir(filtName, fpath, ossDir)
+	if err != nil {
+		response.FailMsg("文件上传失败", "QuestionUploadAudio 文件上传失败, Err:"+err.Error(), c)
+		return
+	}
+
+	voiceBroadcast := voice_broadcast.VoiceBroadcast{
+		BroadcastName:    broadcastName,
+		SectionId:        sectionId,
+		SectionName:      sectionName,
+		VarietyId:        varietyId,
+		VarietyName:      varietyName,
+		AuthorId:         authorId,
+		Author:           author,
+		VoiceUrl:         resourceUrl,
+		VoicePlaySeconds: fmt.Sprint(seconds),
+		VoiceSize:        fmt.Sprint(mb),
+		CreateTime:       time.Now().Format(utils.FormatDateTime),
+	}
+	err = voiceBroadcast.AddVoiceBroadcast()
+	if err != nil {
+		fmt.Println("AddUserViewHistory err", err.Error())
+	}
+	response.Ok("发布成功", c)
 }

+ 6 - 0
models/tables/voice_broadcast/query.go

@@ -12,4 +12,10 @@ func GetBroadcastById(pageIndex, pageSize, broadcastId int) (list []*VoiceBroadc
 	offset := (pageIndex - 1) * pageSize
 	err = global.DEFAULT_MYSQL.Model(VoiceBroadcast{}).Where("broadcast_id=?", broadcastId).Offset(offset).Limit(pageSize).Order("create_time DESC").Scan(&list).Error
 	return
+}
+
+func GetBroadcast(pageIndex, pageSize int) (list []*VoiceBroadcast, err error) {
+	offset := (pageIndex - 1) * pageSize
+	err = global.DEFAULT_MYSQL.Model(VoiceBroadcast{}).Offset(offset).Limit(pageSize).Order("create_time DESC").Scan(&list).Error
+	return
 }

+ 9 - 0
models/tables/voice_broadcast_statistics/create.go

@@ -0,0 +1,9 @@
+package voice_broadcast_statistics
+
+import "hongze/hongze_yb/global"
+
+// AddBroadcastStatistics 新增记录
+func (voiceBroadcastStatistics *VoiceBroadcastStatistics) AddBroadcastStatistics() (err error) {
+	err = global.DEFAULT_MYSQL.Create(voiceBroadcastStatistics).Error
+	return
+}

+ 27 - 0
models/tables/voice_broadcast_statistics/voice_broadcast_statistics.go

@@ -0,0 +1,27 @@
+package voice_broadcast_statistics
+
+type VoiceBroadcastStatistics struct {
+	Id            int    `orm:"column(id);pk"`
+	CompanyId     int    `description:"客户ID"`
+	CompanyName   string `description:"客户名称"`
+	UserId        int    `description:"用户ID"`
+	RealName      string `description:"用户名称"`
+	Mobile        string `description:"用户手机号"`
+	Email         string `description:"电子邮箱"`
+	CompanyStatus string `description:"客户状态""`
+	Source        int    `description:"点击来源,1手机小程序,2pc小程序,3web端""`
+	BroadcastId   int    `description:"语音ID"`
+	BroadcastName string `description:"语音名称"`
+	SectionId     int    `description:"语音分类ID"`
+	SectionName   string `description:"语音分类名称"`
+	VarietyId     int    `description:"品种id"`
+	VarietyName   string `description:"品种名称"`
+	AuthorId      int    `description:"作者id"`
+	Author        string `description:"语音管理员"`
+	CreateTime    string `description:"访问时间"`
+}
+
+// TableName 表名变更
+func (voiceBroadcastStatistics *VoiceBroadcastStatistics) TableName() string {
+	return "yb_voice_broadcast_statistics"
+}

+ 1 - 0
routers/voice_broadcast.go

@@ -11,5 +11,6 @@ func InitVoiceBroadcast(r *gin.Engine)  {
 	rGroup.POST("/list", voice_broadcast.BroadcastList)
 	rGroup.POST("/add", voice_broadcast.AddBroadcast)
 	rGroup.GET("/section/list", voice_broadcast.SectionList)
+	rGroup.POST("/statistics/add", voice_broadcast.AddStatistics)
 }
 

+ 31 - 0
services/voice_broadcast.go

@@ -12,6 +12,37 @@ import (
 
 func GetVoiceBroadcastList(pageindex, pagesize, sectionId, broadcastId int, userInfo user.UserInfo)  (list []response.Broadcast, err error){
 	if broadcastId == 0 {
+		if sectionId == 0 {
+			broadList, e := voice_broadcast.GetBroadcast(pageindex, pagesize)
+			if e != nil {
+				e = errors.New("获取语音播报列表失败 Err:" + e.Error())
+			}
+			for _, item := range broadList {
+				var respItem response.Broadcast
+				respItem = response.Broadcast{
+					BroadcastId:      item.BroadcastId,
+					BroadcastName:    item.BroadcastName,
+					SectionId:        item.SectionId,
+					SectionName:      item.SectionName,
+					VarietyId:        item.VarietyId,
+					VarietyName:      item.VarietyName,
+					AuthorId:         item.AuthorId,
+					Author:           item.Author,
+					VoiceUrl:         item.VoiceUrl,
+					VoicePlaySeconds: item.VoicePlaySeconds,
+					VoiceSize:        item.VoiceSize,
+					CreateTime:       item.CreateTime,
+					IsAuthor:         false,
+				}
+				if int(userInfo.UserID) == item.AuthorId{
+					respItem.IsAuthor = true
+				}
+				list = append(list, respItem)
+
+			}
+			err = e
+			return
+		}
 		broadList, e := voice_broadcast.GetBroadcastByCondition(pageindex, pagesize, sectionId)
 		if e != nil {
 			e = errors.New("获取语音播报列表失败 Err:" + e.Error())