From 80f09ec6dfc91cbfbcfb656d6dbd960f3cc94a66 Mon Sep 17 00:00:00 2001 From: luziqi Date: Tue, 25 Apr 2023 17:58:50 +0800 Subject: [PATCH] update --- crontask/corn.go | 2 -- crontask/monkey.go | 1 + device/devices.go | 2 +- docs/docs.go | 38 +++++++++++++++++++++++++++++++++++++- docs/swagger.json | 38 +++++++++++++++++++++++++++++++++++++- docs/swagger.yaml | 26 +++++++++++++++++++++++++- main.go | 1 + models/http.go | 6 ++++++ models/monkey_task.go | 1 + monkey/task_v2.go | 43 ++++++++++++++++++++++++++++++++++++++++++- 10 files changed, 151 insertions(+), 7 deletions(-) diff --git a/crontask/corn.go b/crontask/corn.go index d3ea3fa..bce1424 100644 --- a/crontask/corn.go +++ b/crontask/corn.go @@ -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] 定时任务启动") } diff --git a/crontask/monkey.go b/crontask/monkey.go index 42b9902..d817362 100644 --- a/crontask/monkey.go +++ b/crontask/monkey.go @@ -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) } diff --git a/device/devices.go b/device/devices.go index 8cc6c38..da60788 100644 --- a/device/devices.go +++ b/device/devices.go @@ -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 diff --git a/docs/docs.go b/docs/docs.go index cae93eb..8dc82c2 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -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获取应用信息", diff --git a/docs/swagger.json b/docs/swagger.json index b54e524..5dc3a38 100644 --- a/docs/swagger.json +++ b/docs/swagger.json @@ -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获取应用信息", diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 84a2874..4c3b348 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -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: diff --git a/main.go b/main.go index 4f04910..1a088b2 100644 --- a/main.go +++ b/main.go @@ -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) diff --git a/models/http.go b/models/http.go index fbdd85f..0f64c49 100644 --- a/models/http.go +++ b/models/http.go @@ -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" diff --git a/models/monkey_task.go b/models/monkey_task.go index d224736..ceb9715 100644 --- a/models/monkey_task.go +++ b/models/monkey_task.go @@ -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:更新时间"` diff --git a/monkey/task_v2.go b/monkey/task_v2.go index fe6b4a2..7eb9497 100644 --- a/monkey/task_v2.go +++ b/monkey/task_v2.go @@ -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