task.go 1022 B

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. package controller
  2. import (
  3. "github.com/gin-gonic/gin"
  4. "lims-extend/common"
  5. "lims-extend/model"
  6. "lims-extend/response"
  7. )
  8. // TakeTask 领取任务
  9. // 传入参数 taskId
  10. func TakeTask(c *gin.Context) {
  11. db := common.GetDB()
  12. // 获取taskId
  13. taskId := c.Params.ByName("taskId")
  14. // 查看task是否存在
  15. var task model.Task
  16. if err := db.Model(&model.Task{}).Where("id = ?", taskId).First(&task).Error; err != nil {
  17. response.Fail(c, nil, "Task不存在,请检查")
  18. return
  19. }
  20. // 查看task是否被重复领取
  21. if task.State != 3 {
  22. response.Fail(c, nil, "任务已被领取,请勿重新领取")
  23. return
  24. }
  25. // 更新task的修改时间以及状态从 未领取 -> 未执行
  26. task.UpdatedAt = model.Time{}
  27. task.State = 0
  28. // 提交修改至数据库
  29. if err := db.Model(&model.Task{}).Select("UpdateAt", "State").
  30. Where("id = ?", taskId).Updates(task).Error; err != nil {
  31. response.Fail(c, nil, "任务领取失败")
  32. return
  33. }
  34. response.Success(c, gin.H{"task": task}, "任务领取成功")
  35. }