فهرست منبع

问答/语音播报完善校验, 新增文件记录

hsun 2 سال پیش
والد
کامیت
7de7309486

+ 43 - 0
controller/community/question.go

@@ -1,12 +1,15 @@
 package community
 
 import (
+	"encoding/json"
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/logic/yb_community_question"
 	"hongze/hongze_yb/models/request"
+	"hongze/hongze_yb/models/tables/yb_resource"
+	"strings"
 
 	respond "hongze/hongze_yb/models/response"
 	responseModel "hongze/hongze_yb/models/response"
@@ -159,6 +162,16 @@ func QuestionReply(c *gin.Context) {
 		response.Fail("音频不可为空", c)
 		return
 	}
+	for i := range req.AudioList {
+		if req.AudioList[i].AudioUrl == "" || req.AudioList[i].AudioPlaySeconds == "" || req.AudioList[i].AudioSize == "" {
+			response.Fail("音频信息有误, 请重新上传", c)
+			return
+		}
+		if !strings.Contains(req.AudioList[i].AudioUrl, utils.ALIYUN_OSS_HOST) {
+			response.Fail("音频地址有误, 请重新上传", c)
+			return
+		}
+	}
 	userinfo := user.GetInfoByClaims(c)
 	msg, err := community.ReplyUserQuestion(int(userinfo.UserID), req.QuestionId, req.AudioList)
 	if err != nil {
@@ -278,6 +291,36 @@ func QuestionUploadAudio(c *gin.Context) {
 		AudioPlaySeconds: fmt.Sprint(seconds),
 		AudioSize:        fmt.Sprint(mb),
 	}
+
+	// 记录文件
+	userInfo := user.GetInfoByClaims(c)
+	go func() {
+		extendData := struct {
+			FileName         string
+			AudioURL         string
+			AudioPlaySeconds string
+			AudioSize        string
+			UserId           int
+		}{
+			file.Filename,
+			resourceUrl,
+			fmt.Sprint(seconds),
+			fmt.Sprint(mb),
+			int(userInfo.UserID),
+		}
+		dataByte, e := json.Marshal(extendData)
+		if e != nil {
+			return
+		}
+		re := new(yb_resource.YbResource)
+		re.ResourceUrl = resourceUrl
+		re.ResourceType = yb_resource.ResourceTypeAudio
+		re.ExtendData = string(dataByte)
+		re.CreateTime = time.Now().Local()
+		if e = re.Create(); e != nil {
+			return
+		}
+	}()
 	response.OkData("上传成功", resp, c)
 }
 

+ 28 - 0
controller/public.go

@@ -1,6 +1,7 @@
 package controller
 
 import (
+	"encoding/json"
 	"fmt"
 	"github.com/gin-gonic/gin"
 	"hongze/hongze_yb/controller/response"
@@ -8,6 +9,7 @@ import (
 	"hongze/hongze_yb/logic"
 	"hongze/hongze_yb/models/request"
 	respond "hongze/hongze_yb/models/response"
+	"hongze/hongze_yb/models/tables/yb_resource"
 	"hongze/hongze_yb/models/tables/yb_suncode_pars"
 	"hongze/hongze_yb/services"
 	"hongze/hongze_yb/services/alarm_msg"
@@ -255,6 +257,32 @@ func UploadAudio(c *gin.Context) {
 		AudioPlaySeconds: fmt.Sprint(seconds),
 		AudioSize:        fmt.Sprint(mb),
 	}
+	// 记录文件
+	go func() {
+		extendData := struct {
+			FileName         string
+			AudioURL         string
+			AudioPlaySeconds string
+			AudioSize        string
+		}{
+			file.Filename,
+			resourceUrl,
+			fmt.Sprint(seconds),
+			fmt.Sprint(mb),
+		}
+		dataByte, e := json.Marshal(extendData)
+		if e != nil {
+			return
+		}
+		re := new(yb_resource.YbResource)
+		re.ResourceUrl = resourceUrl
+		re.ResourceType = yb_resource.ResourceTypeAudio
+		re.ExtendData = string(dataByte)
+		re.CreateTime = time.Now().Local()
+		if e = re.Create(); e != nil {
+			return
+		}
+	}()
 	response.OkData("上传成功", resp, c)
 }
 

+ 8 - 0
controller/voice_broadcast/voice_broadcast.go

@@ -94,6 +94,10 @@ func AddBroadcast(c *gin.Context) {
 		response.Fail("请上传音频", c)
 		return
 	}
+	if !strings.Contains(req.VoiceUrl, utils.ALIYUN_OSS_HOST) {
+		response.Fail("音频地址有误, 请重新上传", c)
+		return
+	}
 	if req.Imgs != "" {
 		imgList := strings.Split(req.Imgs, ",")
 		if len(imgList) > 5 {
@@ -156,6 +160,10 @@ func EditBroadcast(c *gin.Context) {
 		response.Fail("请上传音频", c)
 		return
 	}
+	if !strings.Contains(req.VoiceUrl, utils.ALIYUN_OSS_HOST) {
+		response.Fail("音频地址有误, 请重新上传", c)
+		return
+	}
 	if req.Imgs != "" {
 		imgList := strings.Split(req.Imgs, ",")
 		if len(imgList) > 5 {

+ 23 - 0
models/tables/yb_resource/entity.go

@@ -0,0 +1,23 @@
+package yb_resource
+
+import "time"
+
+const (
+	// 文件类型
+	ResourceTypeImg   = 1
+	ResourceTypeAudio = 2
+	ResourceTypeVideo = 3
+	ResourceTypePPT   = 4
+)
+
+type YbResource struct {
+	ID           int       `gorm:"primaryKey;column:id;type:int(10) unsigned;not null" json:"-"`
+	ResourceUrl  string    `gorm:"column:resource_url;type:varchar(10);not null;default:''" json:"resource_url"`          // 文件地址
+	ResourceType int       `gorm:"column:resource_type;type:tinyint(4) unsigned;not null;default:0" json:"resource_type"` // 文件类型:1:图片,2:音频,3:视频,4:ppt
+	ExtendData   string    `gorm:"column:extend_data;type:int(10) unsigned;not null;default:0" json:"extend_data"`        // 附加信息
+	CreateTime   time.Time `gorm:"column:create_time;type:datetime;default:CURRENT_TIMESTAMP" json:"create_time"`         // 创建时间
+}
+
+func (m *YbResource) TableName() string {
+	return "yb_resource"
+}

+ 8 - 0
models/tables/yb_resource/model.go

@@ -0,0 +1,8 @@
+package yb_resource
+
+import "hongze/hongze_yb/global"
+
+func (m *YbResource) Create() (err error) {
+	err = global.DEFAULT_MYSQL.Create(m).Error
+	return
+}

+ 3 - 1
routers/public.go

@@ -27,7 +27,9 @@ func initPublic(r *gin.Engine) {
 		rGroup.GET("/get_suncode_scene", controller.GetSuncodeScene)
 		rGroup.GET("/get_variety_tag_tree", controller.GetVarietyTagTree)
 		rGroup.POST("/wechat_warning", controller.WechatWarning)
-		rGroup.POST("/upload_audio", controller.UploadAudio)
 		rGroup.POST("/view_log/update", controller.UpdateViewLog)
 	}
+
+	rGroup2 := r.Group("api/public")
+	rGroup2.POST("/upload_audio", controller.UploadAudio)
 }

+ 13 - 1
services/share_poster.go

@@ -8,6 +8,7 @@ import (
 	"hongze/hongze_yb/global"
 	"hongze/hongze_yb/models/tables/yb_poster_config"
 	"hongze/hongze_yb/models/tables/yb_poster_resource"
+	"hongze/hongze_yb/models/tables/yb_resource"
 	"hongze/hongze_yb/models/tables/yb_suncode_pars"
 	"hongze/hongze_yb/services/alarm_msg"
 	"hongze/hongze_yb/services/wx_app"
@@ -145,6 +146,17 @@ func CreateAndUploadSunCode(page, scene, version string) (imgUrl string, err err
 		}
 		err = newPars.Create()
 	}
+
+	// 记录文件
+	go func() {
+		re := new(yb_resource.YbResource)
+		re.ResourceUrl = imgUrl
+		re.ResourceType = yb_resource.ResourceTypeImg
+		re.CreateTime = time.Now().Local()
+		if e := re.Create(); e != nil {
+			return
+		}
+	}()
 	return
 }
 
@@ -409,4 +421,4 @@ func GetDynamicShareImg(source, pars string) (imgUrl string, err error) {
 	}
 	imgUrl = res.Data
 	return
-}
+}

+ 12 - 3
services/sun_code.go

@@ -4,6 +4,7 @@ import (
 	"errors"
 	"fmt"
 	"hongze/hongze_yb/models/tables/yb_pc_suncode"
+	"hongze/hongze_yb/models/tables/yb_resource"
 	"hongze/hongze_yb/models/tables/yb_suncode_pars"
 	"hongze/hongze_yb/services/wx_app"
 	"hongze/hongze_yb/utils"
@@ -55,9 +56,6 @@ func PcCreateAndUploadSunCode(scene, page string) (imgUrl string, err error) {
 		return
 	}
 
-	if err != nil {
-		return
-	}
 	// 记录参数
 	if scene != "" {
 		newPars := &yb_pc_suncode.YbPcSuncode{
@@ -78,5 +76,16 @@ func PcCreateAndUploadSunCode(scene, page string) (imgUrl string, err error) {
 		}
 		err = newPars.Create()
 	}
+
+	// 记录文件
+	go func() {
+		re := new(yb_resource.YbResource)
+		re.ResourceUrl = imgUrl
+		re.ResourceType = yb_resource.ResourceTypeImg
+		re.CreateTime = time.Now().Local()
+		if e := re.Create(); e != nil {
+			return
+		}
+	}()
 	return
 }

+ 2 - 0
utils/constants.go

@@ -204,3 +204,5 @@ var REPORT_CHAPTER_TYPE_NAME_MAP = map[string]string{
 	REPORT_TYPE_DAY:  "晨报",
 	REPORT_TYPE_WEEK: "周报",
 }
+
+const ALIYUN_OSS_HOST = "https://hzstatic.hzinsights.com"