plan.go 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "lims-extend/common"
  5. "lims-extend/model"
  6. "lims-extend/response"
  7. "lims-extend/util"
  8. )
  9. func ShowPlans(c *gin.Context) {
  10. db := common.GetDB()
  11. var plans []model.Plan
  12. db.Model(&model.Plan{}).Where("plan.delete <> 1").Find(&plans)
  13. response.Success(c, gin.H{"planlists": plans}, "success")
  14. }
  15. func ShowPlan(c *gin.Context) {
  16. Id := c.Params.ByName("id")
  17. db := common.GetDB()
  18. var plan model.Plan
  19. if err := db.Model(&model.Plan{}).Where("id = ?", Id).First(&plan).Error; err != nil {
  20. response.Fail(c, nil, "结果不存在")
  21. return
  22. }
  23. if plan.Delete == 1 {
  24. response.Fail(c, nil, "当前计划已经被删除")
  25. return
  26. }
  27. var file model.File
  28. db.Model(&model.File{}).Where("id = ?", plan.StatementFile).First(&file)
  29. var user model.User
  30. db.Model(&model.User{}).Where("id = ?", plan.CreatorId).First(&user)
  31. response.Success(c, gin.H{
  32. "plan": plan,
  33. "creator": user,
  34. "file": file,
  35. }, "success")
  36. }
  37. // TakePlan 领取测试计划并生成测试任务
  38. // 方法 POST
  39. // 传入参数 测试计划ID,提测人ID
  40. func TakePlan(c *gin.Context) {
  41. planId := c.Params.ByName("planId")
  42. username := c.Params.ByName("username")
  43. // 获取测试计划信息
  44. db := common.GetDB()
  45. var plan model.Plan
  46. if err := db.Model(&model.Plan{}).Where("id = ?", planId).First(&plan).Error; err != nil {
  47. response.Fail(c, nil, "测试计划不存在")
  48. return
  49. }
  50. // 判断测试计划是否被删除
  51. if plan.Delete == 1 {
  52. response.Fail(c, nil, "测试计划已被删除")
  53. return
  54. }
  55. // 获取说明文件信息
  56. var file model.File
  57. db.Model(&model.File{}).Where("id = ?", plan.StatementFile).First(&file)
  58. // 获取提测人信息
  59. var user model.User
  60. if err := db.Model(&model.User{}).Where("username = ?", username).First(&user).Error; err != nil {
  61. response.Fail(c, nil, "提测人不存在")
  62. return
  63. }
  64. // 准备任务信息
  65. task := model.Task{
  66. ID: util.GetNextId(db, "task"),
  67. Title: plan.Title + "_" + user.Username,
  68. State: 0,
  69. Description: plan.Description,
  70. StateFile: plan.StatementFile,
  71. CaseFile: "",
  72. CaseAll: 0,
  73. CaseNotExecute: 0,
  74. CaseSuccess: 0,
  75. CaseFail: 0,
  76. CreatedAt: model.Time{},
  77. UpdatedAt: model.Time{},
  78. Delete: 0,
  79. PlanId: plan.Id,
  80. ExecutorId: user.ID,
  81. }
  82. // 判断任务是否被重复领取
  83. var dupTask model.Task
  84. db.Model(&model.Task{}).Where("title = ?", task.Title).First(&dupTask)
  85. if dupTask.Title != "" {
  86. response.Fail(c, nil, user.Name+"已领取当前测试任务,请勿重复领取")
  87. return
  88. }
  89. // 从数据库中创建task信息
  90. if err := db.Create(&task).Error; err != nil {
  91. response.Fail(c, nil, "测试任务创建失败")
  92. return
  93. }
  94. response.Success(c, gin.H{"task": task}, "success")
  95. }