Browse Source

记录新增

ziwen 2 years ago
parent
commit
6cedde5884

+ 13 - 82
controller/voice_broadcast/voice_broadcast.go

@@ -63,7 +63,7 @@ func BroadcastList(c *gin.Context) {
 
 	isVoiceAdmin, _, err := services.GetVoiceAdminByUserInfo(userinfo)
 	if err != nil && err != utils.ErrNoRow {
-		response.FailMsg("获取语音管理员信息失败"+err.Error(), "QuestionList ErrMsg:"+err.Error(), c)
+		response.FailMsg("获取语音管理员信息失败", "QuestionList ErrMsg:"+err.Error(), c)
 		return
 	}
 	var resp voiceResp.BroadcastListResp
@@ -253,91 +253,22 @@ func DelBroadcast(c *gin.Context) {
 // @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)
+	var req request.AddBroadcastStatisticsReq
+	if err := c.Bind(&req); err != nil {
+		response.Fail("参数有误", 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
+	if req.UserId <= 0{
+		response.Fail("参数有误", c)
 	}
 
-	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())
+	if req.BroadcastId <= 0{
+		response.Fail("参数有误", c)
 	}
-	response.Ok("发布成功", c)
+	userinfo := user.GetInfoByClaims(c)
+	
+	go services.AddBroadcastRecord(userinfo, req.Source, req.BroadcastId)
+
+	response.Ok("新增记录成功", c)
 }

+ 6 - 0
models/request/voice_broadcast.go

@@ -33,3 +33,9 @@ type AddBroadcastReq struct {
 //	VoiceSize        string `json:"voice_size"`
 //	CreateTime       string `json:"create_time" `
 //}
+
+type AddBroadcastStatisticsReq struct {
+	UserId      int    `json:"user_id" `
+	Source      int    `json:"source" `
+	BroadcastId int `json:"broadcast_id" `
+}

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

@@ -8,7 +8,7 @@ func GetBroadcastByCondition(pageIndex, pageSize, sectionId int) (list []*VoiceB
 	return
 }
 
-func GetBroadcastById(pageIndex, pageSize, broadcastId int) (list []*VoiceBroadcast, err error) {
+func GetBroadcastByIdAndPage(pageIndex, pageSize, broadcastId int) (list []*VoiceBroadcast, err error) {
 	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
@@ -18,4 +18,9 @@ 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
+}
+
+func GetBroadcastById(broadcastId int) (list *VoiceBroadcast, err error) {
+	err = global.DEFAULT_MYSQL.Model(VoiceBroadcast{}).Where("broadcast_id=?", broadcastId).First(&list).Error
+	return
 }

+ 47 - 1
services/voice_broadcast.go

@@ -2,12 +2,17 @@ package services
 
 import (
 	"errors"
+	"fmt"
+	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/models/response"
 	admin2 "hongze/hongze_yb/models/tables/admin"
+	"hongze/hongze_yb/models/tables/company_product"
 	"hongze/hongze_yb/models/tables/sys_role_admin"
 	"hongze/hongze_yb/models/tables/voice_broadcast"
+	"hongze/hongze_yb/models/tables/voice_broadcast_statistics"
 	"hongze/hongze_yb/services/user"
 	"hongze/hongze_yb/utils"
+	"time"
 )
 
 func GetVoiceBroadcastList(pageindex, pagesize, sectionId, broadcastId int, userInfo user.UserInfo)  (list []response.Broadcast, err error){
@@ -73,7 +78,7 @@ func GetVoiceBroadcastList(pageindex, pagesize, sectionId, broadcastId int, user
 		err = e
 		return
 	}else {
-		broadList, e := voice_broadcast.GetBroadcastById(pageindex, pagesize, broadcastId)
+		broadList, e := voice_broadcast.GetBroadcastByIdAndPage(pageindex, pagesize, broadcastId)
 		if e != nil {
 			e = errors.New("获取语音播报列表失败 Err:" + e.Error())
 		}
@@ -151,5 +156,46 @@ func GetVoiceAdminByUserInfo(userInfo user.UserInfo) (ok bool, adminInfo *admin2
 	ok = true
 
 
+	return
+}
+
+func AddBroadcastRecord(userinfo user.UserInfo, source, broadcastId int) {
+	var err error
+	defer func() {
+		if err != nil {
+			global.LOG.Critical(fmt.Sprintf("AddBroadcastLog: userId=%d, err:%s", userinfo.UserID, err.Error()))
+		}
+	}()
+	companyProduct, err := company_product.GetByCompany2ProductId(userinfo.CompanyID,1)
+	if err != nil {
+		return
+	}
+	broadcast, err := voice_broadcast.GetBroadcastById(broadcastId)
+	if err != nil {
+		return
+	}
+	voiceBroadcastStatistics := voice_broadcast_statistics.VoiceBroadcastStatistics{
+		CompanyId:     companyProduct.CompanyID,
+		CompanyName:   companyProduct.CompanyName,
+		UserId: int(userinfo.UserID),
+		RealName:      userinfo.RealName,
+		Mobile:        userinfo.Mobile,
+		Email:         userinfo.Email,
+		CompanyStatus: companyProduct.Status,
+		Source:        source,
+		BroadcastId:   broadcastId,
+		BroadcastName: broadcast.BroadcastName,
+		SectionId:     broadcast.SectionId,
+		SectionName:   broadcast.SectionName,
+		VarietyId:     broadcast.VarietyId,
+		VarietyName:   broadcast.VarietyName,
+		AuthorId:      broadcast.AuthorId,
+		Author:        broadcast.Author,
+		CreateTime:    time.Now().Format(utils.FormatDateTime),
+	}
+	err = voiceBroadcastStatistics.AddBroadcastStatistics()
+	if err != nil {
+		return
+	}
 	return
 }