声音评测接口

master
luziqi 3 years ago
parent ec594beb5e
commit 995283a2e6

@ -1,17 +1,10 @@
// Package docs GENERATED BY THE COMMAND ABOVE; DO NOT EDIT // Code generated by swaggo/swag. DO NOT EDIT.
// This file was generated by swaggo/swag
package docs
import ( package docs
"bytes"
"encoding/json"
"strings"
"text/template"
"github.com/swaggo/swag" import "github.com/swaggo/swag"
)
var doc = `{ const docTemplate = `{
"schemes": {{ marshal .Schemes }}, "schemes": {{ marshal .Schemes }},
"swagger": "2.0", "swagger": "2.0",
"info": { "info": {
@ -954,6 +947,35 @@ var doc = `{
} }
} }
}, },
"/api/tool/v1/voice/list": {
"get": {
"description": "根据表单id获取声音评测内容返回分组和分组文件信息",
"consumes": [
"application/x-www-form-urlencoded"
],
"tags": [
"工具相关 /api/tool/v1/"
],
"summary": "获取声音评测内容",
"parameters": [
{
"type": "string",
"description": "表单id",
"name": "form_id",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "返回分组和分组文件信息",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/webdav/monkey/task/:id/:filename": { "/webdav/monkey/task/:id/:filename": {
"put": { "put": {
"description": "上传Logcat日志", "description": "上传Logcat日志",
@ -991,56 +1013,18 @@ var doc = `{
} }
}` }`
type swaggerInfo struct {
Version string
Host string
BasePath string
Schemes []string
Title string
Description string
}
// SwaggerInfo holds exported Swagger Info so clients can modify it // SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = swaggerInfo{ var SwaggerInfo = &swag.Spec{
Version: "", Version: "",
Host: "", Host: "",
BasePath: "", BasePath: "",
Schemes: []string{}, Schemes: []string{},
Title: "", Title: "",
Description: "", Description: "",
} InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
type s struct{}
func (s *s) ReadDoc() string {
sInfo := SwaggerInfo
sInfo.Description = strings.Replace(sInfo.Description, "\n", "\\n", -1)
t, err := template.New("swagger_info").Funcs(template.FuncMap{
"marshal": func(v interface{}) string {
a, _ := json.Marshal(v)
return string(a)
},
"escape": func(v interface{}) string {
// escape tabs
str := strings.Replace(v.(string), "\t", "\\t", -1)
// replace " with \", and if that results in \\", replace that with \\\"
str = strings.Replace(str, "\"", "\\\"", -1)
return strings.Replace(str, "\\\\\"", "\\\\\\\"", -1)
},
}).Parse(doc)
if err != nil {
return doc
}
var tpl bytes.Buffer
if err := t.Execute(&tpl, sInfo); err != nil {
return doc
}
return tpl.String()
} }
func init() { func init() {
swag.Register("swagger", &s{}) swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
} }

@ -935,6 +935,35 @@
} }
} }
}, },
"/api/tool/v1/voice/list": {
"get": {
"description": "根据表单id获取声音评测内容返回分组和分组文件信息",
"consumes": [
"application/x-www-form-urlencoded"
],
"tags": [
"工具相关 /api/tool/v1/"
],
"summary": "获取声音评测内容",
"parameters": [
{
"type": "string",
"description": "表单id",
"name": "form_id",
"in": "query",
"required": true
}
],
"responses": {
"200": {
"description": "返回分组和分组文件信息",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/webdav/monkey/task/:id/:filename": { "/webdav/monkey/task/:id/:filename": {
"put": { "put": {
"description": "上传Logcat日志", "description": "上传Logcat日志",

@ -627,6 +627,25 @@ paths:
summary: 获取应用信息 summary: 获取应用信息
tags: tags:
- Monkey相关 /api/project/v1/ - Monkey相关 /api/project/v1/
/api/tool/v1/voice/list:
get:
consumes:
- application/x-www-form-urlencoded
description: 根据表单id获取声音评测内容返回分组和分组文件信息
parameters:
- description: 表单id
in: query
name: form_id
required: true
type: string
responses:
"200":
description: 返回分组和分组文件信息
schema:
$ref: '#/definitions/models.Response'
summary: 获取声音评测内容
tags:
- 工具相关 /api/tool/v1/
/webdav/monkey/task/:id/:filename: /webdav/monkey/task/:id/:filename:
put: put:
consumes: consumes:

2
env/env.go vendored

@ -7,7 +7,7 @@ import (
) )
func InitDB() { func InitDB() {
db, err := dbsql.GetConn(dbsql.DSN_local) db, err := dbsql.GetConn(dbsql.DSN)
if err != nil { if err != nil {
return return
} }

@ -7,6 +7,7 @@ import (
"autogo/device" "autogo/device"
"autogo/env" "autogo/env"
"autogo/monkey" "autogo/monkey"
"autogo/qatool"
"flag" "flag"
"fmt" "fmt"
"net/http" "net/http"
@ -24,38 +25,24 @@ var (
) )
func init() { func init() {
flag.StringVar(&ENV, "env", "test", "测试环境") flag.StringVar(&ENV, "env", "dev", "测试环境")
} }
func main() { func main() {
// dbsql.DSN = dbsql.DSN_local flag.Parse()
// db, err := dbsql.GetConn(dbsql.DSN) if ENV == "dev" {
// if err != nil { fmt.Println("dev开发模式")
// fmt.Println(err) } else if ENV == "prod" {
// return fmt.Println("prod生产模式")
// } go crontask.Run()
// defer dbsql.Close(db) }
// var task models.MonkeyTask
// db.Last(&task) dbsql.DSN = dbsql.DSN_local
// common.PushMonkeyResult(task)
// return
go crontask.Run()
env.InitDB() env.InitDB()
log.SetLevel(log.DebugLevel) log.SetLevel(log.DebugLevel)
log.SetReportCaller(true) log.SetReportCaller(true)
flag.Parse()
if ENV == "test" {
log.Info("[MODE] dev-test config")
fmt.Println("")
dbsql.DSN = dbsql.DSN_local
} else if ENV == "prod" {
log.Info("[MODE] Prod config")
fmt.Println("")
dbsql.DSN = dbsql.DSN_local
} else {
log.Error("param.env error:", ENV)
}
port := ":6364" port := ":6364"
// 1.创建路由 // 1.创建路由
@ -95,6 +82,9 @@ func main() {
r.POST("/api/device/v1/update_status", device.UpdateDeviceStatus) r.POST("/api/device/v1/update_status", device.UpdateDeviceStatus)
r.POST("/api/device/v1/opt/install", device.InstallApp) r.POST("/api/device/v1/opt/install", device.InstallApp)
// 工具接口
r.GET("/api/tool/v1/voice/list", qatool.GetVoiceTestData)
r.Run(port) r.Run(port)
} }

@ -0,0 +1,93 @@
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"`
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"`
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.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]
}
}
}
}
Loading…
Cancel
Save