assignment_service.go 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132
  1. package assignment
  2. import (
  3. "database/sql"
  4. "fmt"
  5. "github.com/gogf/gf/frame/g"
  6. "github.com/gogf/gf/net/ghttp"
  7. "github.com/gogf/gf/os/gtime"
  8. "youngmini_server/app/dao"
  9. "youngmini_server/app/model/youngee_talent_model"
  10. "youngmini_server/app/system/message"
  11. "youngmini_server/app/system/sectask"
  12. "youngmini_server/app/system/sectasklog"
  13. "youngmini_server/app/system/selection"
  14. "youngmini_server/app/utils"
  15. )
  16. var service = new(assignmentService)
  17. type assignmentService struct {
  18. }
  19. func (s *assignmentService) Add(r *ghttp.Request, req *AddAssignmentReq) (res sql.Result, err error) {
  20. tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
  21. if err != nil {
  22. return nil, err
  23. }
  24. res, err = dao.YounggeeAssignmentInfo.Ctx(r.GetCtx()).Insert(req)
  25. if err != nil {
  26. return nil, err
  27. }
  28. // 2. 更新任务阶段 上传截图,
  29. updateStageReq := sectask.UpdateStageReq{
  30. TaskId: req.TaskId,
  31. TaskStage: 9, //任务状态变成待结算9
  32. AssignmentStatus: 2, //作业上传状态变成2(已添加)
  33. RewardStage: 1, //上传截图,变成待领悬赏
  34. }
  35. //更新任务表中的状态
  36. SecTaskInfo := &youngee_talent_model.SecTaskInfoDetail{}
  37. _, err = g.DB().Model(SecTaskInfo).Data(g.Map{
  38. "task_stage": updateStageReq.TaskStage,
  39. "assignment_status": updateStageReq.AssignmentStatus,
  40. "reward_stage": updateStageReq.RewardStage,
  41. }).Where("task_id =? ", req.TaskId).Update()
  42. //err = sectask.UpdateStageAndStatus(r.Context(), &updateStageReq)
  43. if err != nil {
  44. return nil, err
  45. }
  46. // 3. 插入日志
  47. addSecTaskLogReq := sectasklog.AddSecTaskLogReq{
  48. TaskId: req.TaskId,
  49. Content: "上传作业",
  50. LogAt: gtime.Now(),
  51. }
  52. err = sectasklog.Add(r.Context(), addSecTaskLogReq)
  53. if err != nil {
  54. return nil, err
  55. }
  56. //4. 插入消息
  57. // 查询选品项目信息
  58. selectionInfo, err := selection.GetDetailByTaskId(r.Context(), req.TaskId)
  59. if err != nil {
  60. return nil, err
  61. }
  62. addMessageReq := message.AddMessageReq{
  63. MessageId: 29,
  64. MessageType: 2,
  65. CreatedAt: gtime.Now(),
  66. TalentId: tid,
  67. ProjectName: selectionInfo.SelectionName,
  68. IsReaded: 0,
  69. IsDeleted: 0,
  70. }
  71. // 插入消息
  72. err = message.Add(r.Context(), addMessageReq)
  73. if err != nil {
  74. return nil, err
  75. }
  76. //悬赏结算
  77. //1.检查余额是否足够
  78. remainMoney, err := g.DB().Model("enterprise").Fields("available_balance").Where("enterprise_id = ?", req).Value()
  79. if err != nil {
  80. fmt.Println("database")
  81. }
  82. remain := remainMoney.Int()
  83. if remain < req.PayMoney {
  84. fmt.Println("余额不足")
  85. return nil, err
  86. }
  87. fmt.Println("余额充足")
  88. _, err = g.DB().Model("enterprise").Data(g.Map{"available_balance": remain - req.PayMoney}).Where("enterprise_id = ?", req.EnterpriseId).Update()
  89. //2.更新selection的settelamout
  90. oldvalue, err := g.DB().Model("younggee_selection_info").Fields("settlement_amount").Where("selection_id=?", req.SelectionId).Value()
  91. oldvalue1 := oldvalue.Int()
  92. _, err = g.DB().Model("younggee_selection_info").Data(g.Map{"settlement_amount": oldvalue1 + req.PayMoney}).Where("selection_id=?", req.SelectionId).Update()
  93. //3.更新sectask表中的任务状态
  94. _, err = g.DB().Model("younggee_sec_task_info").Data(g.Map{
  95. "updated_at": gtime.Now(),
  96. "completed_data": gtime.Now(),
  97. "task_stage": 10,
  98. "reward_stage": 2, //已结算
  99. }).Where("task_id=?", req.TaskId).Update()
  100. //4.插入一条达人收入数据
  101. _, err = g.DB().Model("younggee_talent_income").Data(g.Map{
  102. "selection_id": req.SelectionId,
  103. "talent_id": tid,
  104. "sectask_id": req.TaskId,
  105. "income": req.PayMoney,
  106. "income_at": gtime.Now(),
  107. }).Save()
  108. if err != nil {
  109. return nil, err
  110. }
  111. return
  112. }
  113. func (s *assignmentService) List(r *ghttp.Request) (res ListAssignmentRes, err error) {
  114. sortCondition := string(dao.YounggeeAssignmentInfo.Columns.SubmitAt + " ASC")
  115. whereCondition := g.Map{
  116. dao.YounggeeAssignmentInfo.Columns.IsReview: 1,
  117. }
  118. err = dao.YounggeeAssignmentInfo.Ctx(r.GetCtx()).Where(whereCondition).Order(sortCondition).Scan(&res.AssignmentList)
  119. if err != nil {
  120. return
  121. }
  122. return
  123. }