package controller import ( "github.com/gin-gonic/gin" "lims-extend/common" "lims-extend/model" "lims-extend/response" "lims-extend/util" ) func ShowPlans(c *gin.Context) { db := common.GetDB() var plans []model.Plan db.Model(&model.Plan{}).Where("plan.delete <> 1").Find(&plans) response.Success(c, gin.H{"planlists": plans}, "success") } func ShowPlan(c *gin.Context) { Id := c.Params.ByName("id") db := common.GetDB() var plan model.Plan if err := db.Model(&model.Plan{}).Where("id = ?", Id).First(&plan).Error; err != nil { response.Fail(c, nil, "结果不存在") return } if plan.Delete == 1 { response.Fail(c, nil, "当前计划已经被删除") return } var file model.File db.Model(&model.File{}).Where("id = ?", plan.StatementFile).First(&file) var user model.User db.Model(&model.User{}).Where("id = ?", plan.CreatorId).First(&user) response.Success(c, gin.H{ "plan": plan, "creator": user, "file": file, }, "success") } // TakePlan 领取测试计划并生成测试任务 // 方法 POST // 传入参数 测试计划ID,提测人ID func TakePlan(c *gin.Context) { planId := c.Params.ByName("planId") username := c.Params.ByName("username") // 获取测试计划信息 db := common.GetDB() var plan model.Plan if err := db.Model(&model.Plan{}).Where("id = ?", planId).First(&plan).Error; err != nil { response.Fail(c, nil, "测试计划不存在") return } // 判断测试计划是否被删除 if plan.Delete == 1 { response.Fail(c, nil, "测试计划已被删除") return } // 获取说明文件信息 var file model.File db.Model(&model.File{}).Where("id = ?", plan.StatementFile).First(&file) // 获取提测人信息 var user model.User if err := db.Model(&model.User{}).Where("username = ?", username).First(&user).Error; err != nil { response.Fail(c, nil, "提测人不存在") return } // 准备任务信息 task := model.Task{ ID: util.GetNextId(db, "task"), Title: plan.Title + "_" + user.Username, State: 0, Description: plan.Description, StateFile: plan.StatementFile, CaseFile: "", CaseAll: 0, CaseNotExecute: 0, CaseSuccess: 0, CaseFail: 0, CreatedAt: model.Time{}, UpdatedAt: model.Time{}, Delete: 0, PlanId: plan.Id, ExecutorId: user.ID, } // 判断任务是否被重复领取 var dupTask model.Task db.Model(&model.Task{}).Where("title = ?", task.Title).First(&dupTask) if dupTask.Title != "" { response.Fail(c, nil, user.Name+"已领取当前测试任务,请勿重复领取") return } // 从数据库中创建task信息 if err := db.Create(&task).Error; err != nil { response.Fail(c, nil, "测试任务创建失败") return } response.Success(c, gin.H{"task": task}, "success") }