task_sketch.go 7.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193
  1. package youngee_task_service
  2. import (
  3. "strings"
  4. "youngmini_server/app/dao"
  5. "youngmini_server/app/model"
  6. "youngmini_server/app/model/youngee_talent_model"
  7. "github.com/gogf/gf/frame/g"
  8. "github.com/gogf/gf/net/ghttp"
  9. "github.com/gogf/gf/os/gtime"
  10. )
  11. // 添加初稿service
  12. func AddTaskSketch(r *ghttp.Request) *TalentHttpResult {
  13. var sketchInfoReq *youngee_talent_model.AddTaskSketchRequest
  14. err := r.ParseForm(&sketchInfoReq)
  15. if err != nil {
  16. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  17. }
  18. photoUrl := strings.Split(sketchInfoReq.PhotoUrl, ",")
  19. // 查询该任务id是否有未提交初稿
  20. // 查询该任务是否有未提交脚本,无则插入,有则更新
  21. unSubmitSketch, err := g.DB().Model(model.YounggeeSketchInfo{}).Where("task_id = ? and is_submit = 0", sketchInfoReq.TaskId).One()
  22. if err != nil {
  23. return &TalentHttpResult{Code: -2, Msg: "YounggeeSketchInfo find failed"}
  24. }
  25. if unSubmitSketch != nil {
  26. // 如果有未提交初稿,则删除并重新添加
  27. _, err := g.DB().Model(model.YounggeeSketchPhoto{}).Where("sketch_id = ?", unSubmitSketch[dao.YounggeeSketchInfo.Columns.SketchId]).Delete()
  28. if err != nil {
  29. return &TalentHttpResult{Code: -3, Msg: "YounggeeSketchPhoto delete failed"}
  30. }
  31. _, err = g.DB().Model(model.YounggeeSketchInfo{}).Where("sketch_id = ?", unSubmitSketch[dao.YounggeeSketchInfo.Columns.SketchId]).Delete()
  32. if err != nil {
  33. return &TalentHttpResult{Code: -3, Msg: "YounggeeSketchInfo delete failed"}
  34. }
  35. }
  36. // 如果无未提交初稿,则直接插入
  37. sketchInfo := model.YounggeeSketchInfo{
  38. TaskId: sketchInfoReq.TaskId,
  39. Title: sketchInfoReq.Title,
  40. Type: sketchInfoReq.Type,
  41. Content: sketchInfoReq.Content,
  42. CreateAt: gtime.Now(),
  43. IsReview: 0,
  44. IsSubmit: 0,
  45. IsOk: 0,
  46. }
  47. sketchId, err := g.DB().Model(model.YounggeeSketchInfo{}).Data(sketchInfo).InsertAndGetId()
  48. if err != nil {
  49. return &TalentHttpResult{Code: -3, Msg: "YounggeeSketchInfo insert failed"}
  50. }
  51. for _, v := range photoUrl {
  52. _, err := g.DB().Model(model.YounggeeSketchPhoto{}).Data(g.Map{"sketch_id": sketchId, "photo_url": v, "symbol": sketchInfoReq.Type, "create_at": gtime.Now()}).Insert()
  53. if err != nil {
  54. return &TalentHttpResult{Code: -3, Msg: "YounggeeSketchPhoto insert failed"}
  55. }
  56. }
  57. //todo :task_stage改成10 初稿待审
  58. //todo: 再次提交,之前的也要保留,不能仅仅updata
  59. sketchStatus, err := g.DB().Model(model.YoungeeTaskInfo{}).Fields("sketch_status").Where("task_id = ?", sketchInfoReq.TaskId).Value()
  60. if err != nil {
  61. return &TalentHttpResult{Code: -5, Msg: "Get task info failed"}
  62. }
  63. if sketchStatus.Int64() == 1 {
  64. _, err = g.Model(dao.YoungeeTaskInfo.Table).Where("task_id = ?", sketchInfoReq.TaskId).Update(g.Map{"sketch_status": 2})
  65. if err != nil {
  66. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  67. }
  68. } else if sketchStatus.Int64() == 3 {
  69. _, err = g.Model(dao.YoungeeTaskInfo.Table).Where("task_id = ?", sketchInfoReq.TaskId).Update(g.Map{"sketch_status": 4})
  70. if err != nil {
  71. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  72. }
  73. }
  74. return &TalentHttpResult{Code: 0, Msg: "success"}
  75. }
  76. // 提交初稿service
  77. func SubmitTaskSketch(r *ghttp.Request) *TalentHttpResult {
  78. taskId, _ := r.Get("task_id").(string) // 查询是否处于违约状态
  79. taskInfo := model.YoungeeTaskInfo{}
  80. // 查询是否处于违约状态
  81. err1 := g.DB().Model(model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Scan(&taskInfo)
  82. if err1 != nil {
  83. return &TalentHttpResult{Code: -1, Msg: "YoungeeTaskInfo find failed"}
  84. }
  85. if taskInfo.CurDefaultType == 3 || taskInfo.CurDefaultType == 9 {
  86. // 若处于违约状态则解除并更新企业应支付金额
  87. _, 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()
  88. if err1 != nil {
  89. return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo update failed"}
  90. }
  91. // 更新违约记录表
  92. _, 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()
  93. if err1 != nil {
  94. return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"}
  95. }
  96. }
  97. // 查询该任务是否有已添加或已修改初稿
  98. res, err := g.DB().Model(model.YounggeeSketchInfo{}).Where("task_id = ? and is_submit = 0", taskId).Count()
  99. if err != nil {
  100. return &TalentHttpResult{Code: -1, Msg: "YounggeeSketchInfo find failed"}
  101. }
  102. if res == 1 && (taskInfo.SketchStatus == 2 || taskInfo.SketchStatus == 4) {
  103. _, err = g.DB().Model(model.YounggeeSketchInfo{}).Data(g.Map{"is_submit": "1", "submit_at": gtime.Now()}).Where("task_id = ? and is_submit = 0", taskId).Update()
  104. if err != nil {
  105. return &TalentHttpResult{Code: -3, Msg: "YounggeeSketchInfo update failed"}
  106. }
  107. _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"task_stage": "10"}).Where("task_id = ?", taskId).Update()
  108. if err != nil {
  109. return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"}
  110. }
  111. // 记录任务日志-上传初稿
  112. taskLog := model.YounggeeTaskLog{
  113. TaskId: taskId,
  114. Content: "上传初稿",
  115. LogAt: gtime.Now(),
  116. }
  117. _, err = g.DB().Model(dao.YounggeeTaskLog.Table).Data(&taskLog).Insert()
  118. if err != nil {
  119. return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed"}
  120. }
  121. projectInfo := model.ProjectInfo{}
  122. err1 := g.DB().Model(model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo)
  123. if err1 != nil {
  124. return &TalentHttpResult{Code: -8, Msg: "ProjectInfo find failed"}
  125. }
  126. messageInfo := model.YounggeeMessageInfo{
  127. MessageId: 11,
  128. MessageType: 2,
  129. CreatedAt: gtime.Now(),
  130. TalentId: taskInfo.TalentId,
  131. ProjectName: projectInfo.ProjectName,
  132. IsReaded: 0,
  133. IsDeleted: 0,
  134. }
  135. _, err = g.DB().Model(dao.YounggeeMessageInfo.Table).Data(&messageInfo).Insert()
  136. if err != nil {
  137. return &TalentHttpResult{Code: -9, Msg: "YounggeeMessageInfo insert failed"}
  138. }
  139. }
  140. return &TalentHttpResult{Code: 0, Msg: "success"}
  141. }
  142. // 查询脚本提交审阅记录service
  143. func GetTaskSketch(r *ghttp.Request) *TalentHttpResult {
  144. taskId := r.Get("task_id")
  145. var sketchInfoList []*youngee_talent_model.TaskSketchInfo
  146. err := g.DB().Model(dao.YounggeeSketchInfo.Table).Where("is_submit = 1 and is_review = 1 and task_id = ?", taskId).OrderAsc("submit_at").Scan(&sketchInfoList)
  147. if err != nil {
  148. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  149. }
  150. for _, v := range sketchInfoList {
  151. var sketchPhotoList []*youngee_talent_model.YounggeeSketchPhoto
  152. err = g.DB().Model(dao.YounggeeSketchPhoto.Table).Where("sketch_id = ?", v.SketchId).Scan(&sketchPhotoList)
  153. if err != nil {
  154. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  155. }
  156. v.Photo = sketchPhotoList
  157. }
  158. return &TalentHttpResult{Code: 0, Msg: "success", Data: sketchInfoList}
  159. }
  160. // 查询未提交初稿service
  161. func GetUnSubmitTaskSketch(r *ghttp.Request) *TalentHttpResult {
  162. taskId := r.Get("task_id")
  163. var unSubmitSketch *youngee_talent_model.TaskSketchInfo
  164. err := g.DB().Model(dao.YounggeeSketchInfo.Table).Where("is_review = 0 and task_id = ?", taskId).OrderAsc("submit_at").Scan(&unSubmitSketch)
  165. if err != nil {
  166. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  167. }
  168. var sketchPhotoList []*youngee_talent_model.YounggeeSketchPhoto
  169. err = g.DB().Model(dao.YounggeeSketchPhoto.Table).Where("sketch_id = ?", unSubmitSketch.SketchId).Scan(&sketchPhotoList)
  170. if err != nil {
  171. return &TalentHttpResult{Code: -2, Msg: err.Error()}
  172. }
  173. unSubmitSketch.Photo = sketchPhotoList
  174. return &TalentHttpResult{Code: 0, Msg: "success", Data: unSubmitSketch}
  175. }