task_script.go 5.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159
  1. package youngee_talent_service
  2. import (
  3. "youngmini_server/app/dao"
  4. "youngmini_server/app/model"
  5. "youngmini_server/app/model/youngee_talent_model"
  6. "github.com/gogf/gf/frame/g"
  7. "github.com/gogf/gf/net/ghttp"
  8. "github.com/gogf/gf/os/gtime"
  9. )
  10. // 添加脚本service
  11. func AddTaskScript(r *ghttp.Request) *TalentHttpResult {
  12. var scriptInfoReq *youngee_talent_model.AddTaskScriptRequest
  13. err := r.ParseForm(&scriptInfoReq)
  14. if err != nil {
  15. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  16. }
  17. scriptInfo := model.YounggeeScriptInfo{
  18. TaskId: scriptInfoReq.TaskId,
  19. Title: scriptInfoReq.Title,
  20. Content: scriptInfoReq.Content,
  21. CreateAt: gtime.Now(),
  22. IsReview: 0,
  23. IsSubmit: 0,
  24. IsOk: 0,
  25. }
  26. // 查询该任务是否有未提交脚本,无则插入,有则更新
  27. res, err := g.DB().Model(model.YounggeeScriptInfo{}).Where("task_id = ? and is_submit = 0", scriptInfoReq.TaskId).Count()
  28. if err != nil {
  29. return &TalentHttpResult{Code: -2, Msg: "YounggeeScriptInfo find failed"}
  30. }
  31. if res == 0 {
  32. _, err = g.DB().Model(model.YounggeeScriptInfo{}).Data(scriptInfo).Insert()
  33. if err != nil {
  34. return &TalentHttpResult{Code: -3, Msg: "YounggeeScriptInfo insert failed"}
  35. }
  36. } else {
  37. _, err = g.DB().Model(model.YounggeeScriptInfo{}).Where("task_id = ? and is_submit = 0", scriptInfoReq.TaskId).Update(g.Map{"title": scriptInfoReq.Title, "content": scriptInfoReq.Content, "create_at": gtime.Now()})
  38. if err != nil {
  39. return &TalentHttpResult{Code: -4, Msg: "YounggeeScriptInfo update failed"}
  40. }
  41. }
  42. scriptStatus, err := g.DB().Model(model.YoungeeTaskInfo{}).Fields("script_status").Where("task_id = ?", scriptInfoReq.TaskId).Value()
  43. if err != nil {
  44. return &TalentHttpResult{Code: -5, Msg: "Get task info failed"}
  45. }
  46. if scriptStatus.Int64() == 1 {
  47. _, err = g.Model(dao.YoungeeTaskInfo.Table).Where("task_id = ?", scriptInfoReq.TaskId).Update(g.Map{"script_status": 2})
  48. if err != nil {
  49. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  50. }
  51. } else if scriptStatus.Int64() == 3 {
  52. _, err = g.Model(dao.YoungeeTaskInfo.Table).Where("task_id = ?", scriptInfoReq.TaskId).Update(g.Map{"script_status": 4})
  53. if err != nil {
  54. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  55. }
  56. }
  57. return &TalentHttpResult{Code: 0, Msg: "success"}
  58. }
  59. // 提交脚本service
  60. func SubmitTaskScript(r *ghttp.Request) *TalentHttpResult {
  61. taskId, _ := r.Get("task_id").(string)
  62. taskInfo := model.YoungeeTaskInfo{}
  63. // 查询是否处于违约状态
  64. err1 := g.DB().Model(model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Scan(&taskInfo)
  65. if err1 != nil {
  66. return &TalentHttpResult{Code: -1, Msg: "YoungeeTaskInfo find failed"}
  67. }
  68. if taskInfo.CurDefaultType == 1 || taskInfo.CurDefaultType == 9 {
  69. // 若处于违约状态则解除并更新企业应支付金额
  70. _, err1 = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"cur_default_type": "0", "real_payment": taskInfo.AllPayment, "err_break_rate": 0}).Where("task_id = ?", taskId).Update()
  71. if err1 != nil {
  72. return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo update failed"}
  73. }
  74. // 更新违约记录表
  75. _, err1 = g.DB().Model(model.YoungeeContractInfo{}).Data(g.Map{"default_status": 2}).Where("task_id = ? and default_status in (?)", taskId, g.Slice{1, 3, 4}).Update()
  76. if err1 != nil {
  77. return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"}
  78. }
  79. }
  80. // 查询该任务是否有已添加或已修改脚本
  81. res, err := g.DB().Model(model.YounggeeScriptInfo{}).Where("task_id = ? and is_submit = 0", taskId).Count()
  82. if err != nil {
  83. return &TalentHttpResult{Code: -3, Msg: "YounggeeScriptInfo find failed"}
  84. }
  85. if res == 1 && (taskInfo.ScriptStatus == 2 || taskInfo.ScriptStatus == 4) {
  86. _, err = g.DB().Model(model.YounggeeScriptInfo{}).Data(g.Map{"is_submit": "1", "submit_at": gtime.Now()}).Where("task_id = ? and is_submit = 0", taskId).Update()
  87. if err != nil {
  88. return &TalentHttpResult{Code: -5, Msg: "YounggeeScriptInfo update failed"}
  89. }
  90. _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"task_stage": "8"}).Where("task_id = ?", taskId).Update()
  91. if err != nil {
  92. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  93. }
  94. // 记录任务日志-上传脚本
  95. taskLog := model.YounggeeTaskLog{
  96. TaskId: taskId,
  97. Content: "上传脚本",
  98. LogAt: gtime.Now(),
  99. }
  100. _, err = g.DB().Model(dao.YounggeeTaskLog.Table).Data(&taskLog).Insert()
  101. if err != nil {
  102. return &TalentHttpResult{Code: -7, Msg: "YounggeeTaskLog insert failed"}
  103. }
  104. projectInfo := model.ProjectInfo{}
  105. err1 := g.DB().Model(model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo)
  106. if err1 != nil {
  107. return &TalentHttpResult{Code: -8, Msg: "ProjectInfo find failed"}
  108. }
  109. messageInfo := model.YounggeeMessageInfo{
  110. MessageId: 10,
  111. MessageType: 2,
  112. CreatedAt: gtime.Now(),
  113. TalentId: taskInfo.TalentId,
  114. ProjectName: projectInfo.ProjectName,
  115. IsReaded: 0,
  116. IsDeleted: 0,
  117. }
  118. _, err = g.DB().Model(dao.YounggeeMessageInfo.Table).Data(&messageInfo).Insert()
  119. if err != nil {
  120. return &TalentHttpResult{Code: -9, Msg: "YounggeeMessageInfo insert failed"}
  121. }
  122. }
  123. return &TalentHttpResult{Code: 0, Msg: "success"}
  124. }
  125. // 查询脚本提交审阅记录service
  126. func GetTaskScript(r *ghttp.Request) *TalentHttpResult {
  127. taskId := r.Get("task_id")
  128. res, err := g.DB().Model(dao.YounggeeScriptInfo.Table).Where("is_submit = 1 and task_id = ?", taskId).OrderAsc("submit_at").All()
  129. if err != nil {
  130. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  131. }
  132. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  133. }
  134. // 查询未提交脚本service
  135. func GetUnSubmitTaskScript(r *ghttp.Request) *TalentHttpResult {
  136. taskId := r.Get("task_id")
  137. res, err := g.DB().Model(dao.YounggeeScriptInfo.Table).Where("is_review = 0 and task_id = ?", taskId).OrderAsc("submit_at").One()
  138. if err != nil {
  139. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  140. }
  141. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  142. }