master
luziqi 3 years ago
parent 54791e3c2c
commit 80f09ec6df

@ -16,9 +16,7 @@ import (
func Run() {
crontab := cron.New(cron.WithSeconds())
crontab.AddFunc("0 */1 * * * ?", CheckAndroidDevices)
// crontab.AddFunc("0 */1 * * * ?", CheckTaskStatus)
crontab.AddFunc("*/15 * * * * ?", CheckMonkeyTasks)
// crontab.AddFunc("*/10 * * * * ?", GetBugStatusDaily) */1 * * * *
crontab.Start()
fmt.Println("[Crontab] 定时任务启动")
}

@ -24,6 +24,7 @@ func CheckMonkeyTasks() {
// 没有空闲设备
continue
}
db.Table("device").Model(models.Device{}).Where("udid = ?", device.Udid).Update("status", "busy")
go monkey.RunAndroidMonkeyCmd(task, device.Udid)
common.PushCorntaskLog("执行Monkey任务" + task.Project + "-" + device.Udid)
}

@ -259,7 +259,7 @@ func DeleteDevice(c *gin.Context) {
c.JSON(http.StatusOK, rsp)
}
// @Tags 设备管理 /api/device/v1/
// @Tags 设备相关 /api/device/v1/
// @Summary 更新设备状态
// @Description 更新设备状态,错误的状态会被拒绝
// @accept x-www-form-urlencoded

@ -293,7 +293,7 @@ var doc = `{
"application/x-www-form-urlencoded"
],
"tags": [
"设备管理 /api/device/v1/"
"设备相关 /api/device/v1/"
],
"summary": "更新设备状态",
"parameters": [
@ -925,6 +925,42 @@ var doc = `{
}
}
},
"/api/monkey/v2/task/handle/set": {
"post": {
"description": "更新Monkey任务跟进状态",
"consumes": [
"application/x-www-form-urlencoded"
],
"tags": [
"Monkey相关 /api/monkey/v2/"
],
"summary": "更新任务跟进状态",
"parameters": [
{
"type": "string",
"description": "Monkey任务id",
"name": "task_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "跟进情况IN_PROGRESS-跟进中/DONE-已跟进",
"name": "handle_status",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "返回创建后的设备信息",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/api/project/v1/app": {
"get": {
"description": "根据应用名称app_name获取应用信息",

@ -274,7 +274,7 @@
"application/x-www-form-urlencoded"
],
"tags": [
"设备管理 /api/device/v1/"
"设备相关 /api/device/v1/"
],
"summary": "更新设备状态",
"parameters": [
@ -906,6 +906,42 @@
}
}
},
"/api/monkey/v2/task/handle/set": {
"post": {
"description": "更新Monkey任务跟进状态",
"consumes": [
"application/x-www-form-urlencoded"
],
"tags": [
"Monkey相关 /api/monkey/v2/"
],
"summary": "更新任务跟进状态",
"parameters": [
{
"type": "string",
"description": "Monkey任务id",
"name": "task_id",
"in": "formData",
"required": true
},
{
"type": "string",
"description": "跟进情况IN_PROGRESS-跟进中/DONE-已跟进",
"name": "handle_status",
"in": "formData",
"required": true
}
],
"responses": {
"200": {
"description": "返回创建后的设备信息",
"schema": {
"$ref": "#/definitions/models.Response"
}
}
}
}
},
"/api/project/v1/app": {
"get": {
"description": "根据应用名称app_name获取应用信息",

@ -208,7 +208,7 @@ paths:
$ref: '#/definitions/models.Response'
summary: 更新设备状态
tags:
- 设备管理 /api/device/v1/
- 设备相关 /api/device/v1/
/api/monkey/v1/create_task:
post:
consumes:
@ -608,6 +608,30 @@ paths:
summary: 新建Monkey任务
tags:
- Monkey相关 /api/monkey/v2/
/api/monkey/v2/task/handle/set:
post:
consumes:
- application/x-www-form-urlencoded
description: 更新Monkey任务跟进状态
parameters:
- description: Monkey任务id
in: formData
name: task_id
required: true
type: string
- description: 跟进情况IN_PROGRESS-跟进中/DONE-已跟进
in: formData
name: handle_status
required: true
type: string
responses:
"200":
description: 返回创建后的设备信息
schema:
$ref: '#/definitions/models.Response'
summary: 更新任务跟进状态
tags:
- Monkey相关 /api/monkey/v2/
/api/project/v1/app:
get:
consumes:

@ -85,6 +85,7 @@ func main() {
r.PUT("/webdav/monkey/task/:id/:filename", monkey.TaskReport)
// monkey v2
r.POST("/api/monkey/v2/create_task", monkey.CreateTaskV2)
r.POST("/api/monkey/v2/task/handle/set", monkey.UpdateHandleStatus)
// device
r.GET("/api/device/v1/list", device.GetDevices)

@ -12,6 +12,12 @@ func (r *Response) Init() *Response {
return r
}
func (r *Response) SetData(i interface{}) *Response {
r.Code = 200
r.Data = i
return r
}
func (r *Response) Success() *Response {
r.Code = 200
r.Msg = "success"

@ -20,6 +20,7 @@ type MonkeyTask struct {
Creator string `json:"creator" gorm:"column:creator;type:varchar(255);comment:创建人"`
Referer string `json:"referer" gorm:"column:referer;type:varchar(255);not null;comment:调用方"`
Status string `json:"status" gorm:"column:status;type:varchar(255);not null;comment:运行状态"`
HandleStatus string `json:"handle_status" gorm:"type:varchar(255);null"`
Remark string `json:"remark" gorm:"column:remark;type:varchar(255);not null;comment:备注"`
CreateTime int `json:"create_time" gorm:"column:create_time;type:int(11);not null;autoCreateTime;comment:创建时间"`
UpdateTime int `json:"update_time" gorm:"column:update_time;type:int(11);not null;autoUpdateTime;comment:更新时间"`

@ -38,13 +38,14 @@ func CreateTaskV2(c *gin.Context) {
if err != nil {
rsp.Error(err.Error())
c.JSON(http.StatusOK, rsp)
return
}
defer dbsql.Close(db)
var task models.MonkeyTask
// 必填
task.Project = strings.ToLower(c.PostForm("project"))
task.Product = c.PostForm("product")
task.Product = strings.ToLower(c.PostForm("product"))
task.PackageName = c.PostForm("package_name")
task.PackageURL = c.PostForm("package_url")
task.Platform = c.PostForm("platform")
@ -111,6 +112,46 @@ func CreateTaskV2(c *gin.Context) {
// go RunAndroidMonkeyCmd(task, device.Udid)
}
// @Tags Monkey相关 /api/monkey/v2/
// @Summary 更新任务跟进状态
// @Description 更新Monkey任务跟进状态
// @accept x-www-form-urlencoded
// @Param task_id formData string true "Monkey任务id"
// @Param handle_status formData string true "跟进情况IN_PROGRESS-跟进中/DONE-已跟进"
// @Success 200 {object} models.Response "返回创建后的设备信息"
// @Router /api/monkey/v2/task/handle/set [post]
func UpdateHandleStatus(c *gin.Context) {
rsp := controllers.NewResponse()
task_id := cast.ToInt(c.PostForm("task_id"))
handle_status := c.PostForm("handle_status")
if task_id < 1 {
c.JSON(http.StatusOK, rsp.Error("参数task_id错误"+c.PostForm("task_id")))
return
}
if handle_status == "" {
c.JSON(http.StatusOK, rsp.Error("参数handle_status错误"+c.PostForm("handle_status")))
return
}
db, err := dbsql.GetConn(dbsql.DSN)
if err != nil {
c.JSON(http.StatusOK, rsp.Error(err.Error()))
return
}
defer dbsql.Close(db)
task, err := getTaskById(task_id, db)
if err != nil {
c.JSON(http.StatusOK, rsp.Error(err.Error()))
return
}
db.Model(models.MonkeyTask{}).Where("id = ?", task.Id).Update("handle_status", handle_status)
// 还没写
c.JSON(http.StatusOK, rsp.Success())
}
// 根据id查询monkey任务信息db传nil时会另外新建数据库链接
func getTaskById(id int, db *gorm.DB) (models.MonkeyTask, error) {
var task models.MonkeyTask

Loading…
Cancel
Save