|
|
package qatool
|
|
|
|
|
|
import (
|
|
|
"autogo/controllers"
|
|
|
"autogo/dbsql"
|
|
|
"net/http"
|
|
|
|
|
|
"github.com/gin-gonic/gin"
|
|
|
)
|
|
|
|
|
|
type Voice struct {
|
|
|
ID int `json:"id" gorm:"primary_key"`
|
|
|
FormID string `json:"form_id" gorm:"column:form_id"`
|
|
|
GroupID int `json:"group_id" gorm:"column:group_id"`
|
|
|
GroupName string `json:"group_name" gorm:"column:group_name"`
|
|
|
Filename string `json:"filename" gorm:"column:filename"`
|
|
|
FileURL string `json:"file_url" gorm:"column:file_url"`
|
|
|
IsDel int `json:"-" gorm:"column:is_del"`
|
|
|
}
|
|
|
|
|
|
func (t *Voice) TableName() string {
|
|
|
return "voice"
|
|
|
}
|
|
|
|
|
|
type VoiceGroup struct {
|
|
|
ID int `json:"id" gorm:"primary_key"`
|
|
|
Name string `json:"name"`
|
|
|
List []Voice `json:"list"`
|
|
|
}
|
|
|
|
|
|
// @Tags 工具相关 /api/tool/v1/
|
|
|
// @Summary 获取声音评测内容
|
|
|
// @Description 根据表单id获取声音评测内容,返回分组和分组文件信息
|
|
|
// @accept x-www-form-urlencoded
|
|
|
// @Param form_id query string true "表单id"
|
|
|
// @Success 200 {object} models.Response "返回分组和分组文件信息"
|
|
|
// @Router /api/tool/v1/voice/list [get]
|
|
|
func GetVoiceTestData(c *gin.Context) {
|
|
|
rsp := controllers.NewResponse()
|
|
|
|
|
|
form_id := c.DefaultQuery("form_id", "")
|
|
|
if form_id == "" {
|
|
|
c.JSON(http.StatusOK, rsp.Error("form_id error"))
|
|
|
return
|
|
|
}
|
|
|
|
|
|
db, err := dbsql.GetConn(dbsql.DSN)
|
|
|
if err != nil {
|
|
|
c.JSON(http.StatusOK, rsp.Error(err.Error()))
|
|
|
return
|
|
|
}
|
|
|
defer dbsql.Close(db)
|
|
|
|
|
|
var list []Voice
|
|
|
db.Table("voice").Model(Voice{}).Where("form_id = ?", form_id).Find(&list)
|
|
|
|
|
|
if len(list) == 0 {
|
|
|
c.JSON(http.StatusOK, rsp.Error("该表单id下无分组数据"))
|
|
|
return
|
|
|
}
|
|
|
|
|
|
m := make(map[int]VoiceGroup)
|
|
|
for _, v := range list {
|
|
|
if group, ok := m[v.GroupID]; ok {
|
|
|
group.List = append(group.List, v)
|
|
|
m[v.GroupID] = group
|
|
|
} else {
|
|
|
var _group VoiceGroup
|
|
|
_group.ID = v.GroupID
|
|
|
_group.Name = v.GroupName
|
|
|
_group.List = append(_group.List, v)
|
|
|
m[v.GroupID] = _group
|
|
|
}
|
|
|
}
|
|
|
var groups []VoiceGroup
|
|
|
for _, v := range m {
|
|
|
groups = append(groups, v)
|
|
|
}
|
|
|
|
|
|
bubbleSort(&groups)
|
|
|
|
|
|
rsp.Success()
|
|
|
rsp.Data = groups
|
|
|
c.JSON(http.StatusOK, rsp)
|
|
|
}
|
|
|
|
|
|
func bubbleSort(arr *[]VoiceGroup) {
|
|
|
n := len(*arr)
|
|
|
for i := 0; i < n-1; i++ {
|
|
|
for j := 0; j < n-i-1; j++ {
|
|
|
if (*arr)[j].ID > (*arr)[j+1].ID {
|
|
|
(*arr)[j], (*arr)[j+1] = (*arr)[j+1], (*arr)[j]
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
}
|