task_link.go 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296
  1. package youngee_task_service
  2. import (
  3. "github.com/gogf/gf/frame/g"
  4. "github.com/gogf/gf/net/ghttp"
  5. "github.com/gogf/gf/os/gtime"
  6. "strings"
  7. "time"
  8. "youngmini_server/app/dao"
  9. "youngmini_server/app/model"
  10. "youngmini_server/app/model/youngee_talent_model"
  11. )
  12. // 添加链接service
  13. func AddTaskLink(r *ghttp.Request) *TalentHttpResult {
  14. //解析添加初稿的图文
  15. var LinkInfoReq *youngee_talent_model.AddTaskLinkRequest
  16. err := r.ParseForm(&LinkInfoReq)
  17. if err != nil {
  18. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  19. }
  20. taskLinkInfo := []model.YounggeeLinkInfo{}
  21. err = g.DB().Model(model.YounggeeLinkInfo{}).Where("task_id = ? ", LinkInfoReq.TaskId).OrderDesc("create_at").Scan(&taskLinkInfo)
  22. var autoAgreeAt *gtime.Time
  23. //获取种草和本地生活的task表
  24. taskInfo := youngee_talent_model.YoungeeTaskInfo{}
  25. localTaskInfo := youngee_talent_model.YoungeeLocalTaskInfo{}
  26. //查找auto_task_info表 AutoAgreeAt= task的创建时间 + auto_task_info的link_review_auto
  27. if LinkInfoReq.TaskType == 1 {
  28. err = g.DB().Model("youngee_task_info").WithAll().Where("task_id = ?", LinkInfoReq.TaskId).Scan(&taskInfo)
  29. if err != nil {
  30. return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo find failed", Data: err.Error()}
  31. }
  32. autoTaskInfo, err := g.DB().Model("info_auto_task").Where("auto_task_id = ?", taskInfo.ProjectDetail.AutoTaskId).One()
  33. if err != nil {
  34. return &TalentHttpResult{Code: -2, Msg: "InfoAutoTask find failed", Data: err.Error()}
  35. }
  36. if autoTaskInfo != nil {
  37. autoAgreeAt = taskInfo.CreateDate.Add(time.Duration(autoTaskInfo["link_review_auto"].Int64()) * time.Hour)
  38. } else {
  39. return &TalentHttpResult{Code: -2, Msg: "auto_task_id not found"}
  40. }
  41. } else if LinkInfoReq.TaskType == 2 {
  42. err = g.DB().Model("youngee_local_task_info").WithAll().Where("task_id = ?", LinkInfoReq.TaskId).Scan(&localTaskInfo)
  43. if err != nil {
  44. return &TalentHttpResult{Code: -2, Msg: "YoungeeLocalTaskInfo find failed", Data: err.Error()}
  45. }
  46. autoTaskInfo, err := g.DB().Model("info_auto_task").WithAll().Where("auto_task_id = ?", localTaskInfo.LocalInfoDetail.AutoTaskId).One()
  47. if err != nil {
  48. return &TalentHttpResult{Code: -2, Msg: "InfoAutoTask find failed", Data: err.Error()}
  49. }
  50. if autoTaskInfo != nil {
  51. autoAgreeAt = localTaskInfo.CreateDate.Add(time.Duration(autoTaskInfo["link_review_auto"].Int64()) * time.Hour)
  52. } else {
  53. return &TalentHttpResult{Code: -2, Msg: "auto_task_id not found"}
  54. }
  55. }
  56. //最新link数据
  57. linkInfo := model.YounggeeLinkInfo{
  58. TaskId: LinkInfoReq.TaskId,
  59. PlatformId: LinkInfoReq.PlatformId,
  60. LinkUrl: LinkInfoReq.LinkUrl,
  61. CreateAt: gtime.Now(),
  62. IsReview: 0,
  63. IsSubmit: 0, //忽略
  64. IsOk: 0,
  65. AutoAgreeAt: autoAgreeAt,
  66. TaskType: LinkInfoReq.TaskType,
  67. }
  68. // 如果 LinkUrl 不以 http:// 或 https:// 开头,则拼接 https://
  69. if !strings.HasPrefix(LinkInfoReq.LinkUrl, "http://") && !strings.HasPrefix(LinkInfoReq.LinkUrl, "https://") {
  70. linkInfo.LinkUrl = "https://" + LinkInfoReq.LinkUrl
  71. }
  72. //如果是platform_id=5。提取出bvid。【视频火了就发给导师看-哔哩哔哩】 https://b23.tv/lmBqJRH(最后一个斜杠后面的就是bvid)
  73. if LinkInfoReq.PlatformId == 5 {
  74. splitUrl := strings.Split(LinkInfoReq.LinkUrl, "/")
  75. if len(splitUrl) > 0 {
  76. bvid := splitUrl[len(splitUrl)-1]
  77. linkInfo.LinkUrl = bvid
  78. } else {
  79. return &TalentHttpResult{Code: -2, Msg: "Invalid BVID format"}
  80. }
  81. }
  82. //上传过但是被拒了
  83. var condition1 bool = len(taskLinkInfo) != 0 && taskLinkInfo[0].IsReview == 1 && taskLinkInfo[0].IsOk == 0
  84. //没有上传过初稿
  85. var condition2 bool = len(taskLinkInfo) == 0
  86. if condition1 || condition2 {
  87. //插入新数据
  88. _, err := g.DB().Model(model.YounggeeLinkInfo{}).Data(linkInfo).InsertAndGetId()
  89. if err != nil {
  90. return &TalentHttpResult{Code: -3, Msg: "YounggeeLinkInfo insert failed", Data: err.Error()}
  91. }
  92. } else {
  93. return &TalentHttpResult{Code: -3, Msg: "YounggeeLinkInfo insert failed", Data: "该任务已上传过链接,不能重复上传"}
  94. }
  95. //更新task表 or local_task表
  96. if LinkInfoReq.TaskType == 1 { //种草
  97. LinkStatus, err := g.DB().Model("youngee_task_info").Fields("link_status").Where("task_id = ?", LinkInfoReq.TaskId).Value()
  98. if err != nil {
  99. return &TalentHttpResult{Code: -5, Msg: "Get task info failed"}
  100. }
  101. if LinkStatus.Int64() == 1 {
  102. _, err = g.Model("youngee_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 2})
  103. if err != nil {
  104. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  105. }
  106. } else if LinkStatus.Int64() == 3 {
  107. _, err = g.Model("youngee_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 4})
  108. if err != nil {
  109. return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"}
  110. }
  111. }
  112. //修改task表,插入log和message
  113. taskInfo := youngee_talent_model.YoungeeTaskInfo{}
  114. // 查询是否处于违约状态
  115. err = g.DB().Model(model.YoungeeTaskInfo{}).Where("task_id = ?", LinkInfoReq.TaskId).Scan(&taskInfo)
  116. if taskInfo.CurDefaultType == 5 || taskInfo.CurDefaultType == 9 {
  117. // 若处于违约状态则解除并更新企业应支付金额
  118. _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"cur_default_type": "0", "err_break_rate": 0}).Where("task_id = ?", LinkInfoReq.TaskId).Update()
  119. if err != nil {
  120. return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo update failed"}
  121. }
  122. // 更新违约记录表
  123. _, err = g.DB().Model(model.YoungeeContractInfo{}).Data(g.Map{"default_status": 2}).Where("task_id = ? and default_status in (?)", LinkInfoReq.TaskId, g.Slice{1, 3, 4}).Update()
  124. if err != nil {
  125. return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"}
  126. }
  127. }
  128. //task设置为链接待审
  129. _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"task_stage": "12"}).Where("task_id = ?", LinkInfoReq.TaskId).Update()
  130. if err != nil {
  131. return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"}
  132. }
  133. // 记录任务日志-上传链接
  134. taskLog := model.YounggeeTaskLog{
  135. TaskId: LinkInfoReq.TaskId,
  136. Content: "上传链接",
  137. LogAt: gtime.Now(),
  138. }
  139. _, err = g.DB().Model(dao.YounggeeTaskLog.Table).Data(&taskLog).Insert()
  140. if err != nil {
  141. return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed"}
  142. }
  143. } else if LinkInfoReq.TaskType == 2 { //本地生活
  144. LinkStatus, err := g.DB().Model("youngee_local_task_info").Fields("link_status").Where("task_id = ?", LinkInfoReq.TaskId).Value()
  145. if err != nil {
  146. return &TalentHttpResult{Code: -5, Msg: "Get youngee_local_task_info failed"}
  147. }
  148. if LinkStatus.Int64() == 1 {
  149. _, err = g.Model("youngee_local_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 2})
  150. if err != nil {
  151. return &TalentHttpResult{Code: -6, Msg: "youngee_local_task_info update failed"}
  152. }
  153. } else if LinkStatus.Int64() == 3 {
  154. _, err = g.Model("youngee_local_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 4})
  155. if err != nil {
  156. return &TalentHttpResult{Code: -6, Msg: "youngee_local_task_info update failed"}
  157. }
  158. }
  159. //修改task表,插入log和message
  160. taskInfo := youngee_talent_model.YoungeeLocalTaskInfo{}
  161. // 查询是否处于违约状态
  162. err = g.DB().Model("youngee_local_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Scan(&taskInfo)
  163. if taskInfo.CurDefaultType == 5 || taskInfo.CurDefaultType == 9 {
  164. // 若处于违约状态则解除并更新企业应支付金额
  165. _, err = g.DB().Model("youngee_local_task_info").Data(g.Map{"cur_default_type": "0", "err_break_rate": 0}).Where("task_id = ?", LinkInfoReq.TaskId).Update()
  166. if err != nil {
  167. return &TalentHttpResult{Code: -2, Msg: "youngee_local_task_info update failed"}
  168. }
  169. // 更新违约记录表
  170. _, err = g.DB().Model(model.YoungeeContractInfo{}).Data(g.Map{"default_status": 2}).Where("task_id = ? and default_status in (?)", LinkInfoReq.TaskId, g.Slice{1, 3, 4}).Update()
  171. if err != nil {
  172. return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"}
  173. }
  174. }
  175. //task设置为链接待审
  176. _, err = g.DB().Model("youngee_local_task_info").Data(g.Map{"task_stage": "12"}).Where("task_id = ?", LinkInfoReq.TaskId).Update()
  177. if err != nil {
  178. return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"}
  179. }
  180. //记录任务日志-上传链接
  181. taskLog := youngee_talent_model.YounggeeLocalTaskLog{
  182. TaskId: LinkInfoReq.TaskId,
  183. Content: "上传链接",
  184. LogAt: gtime.Now(),
  185. }
  186. _, err = g.DB().Model("younggee_local_task_log").Data(&taskLog).Insert()
  187. if err != nil {
  188. return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed", Data: err.Error()}
  189. }
  190. }
  191. return &TalentHttpResult{Code: 0, Msg: "success"}
  192. }
  193. // 提交链接service
  194. //func SubmitTaskLink(r *ghttp.Request) *TalentHttpResult {
  195. // taskId, _ := r.Get("task_id").(string)
  196. // taskInfo := model.YoungeeTaskInfo{}
  197. // // 查询是否处于违约状态
  198. // err1 := g.DB().Model(model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Scan(&taskInfo)
  199. // if err1 != nil {
  200. // return &TalentHttpResult{Code: -1, Msg: "YoungeeTaskInfo find failed"}
  201. // }
  202. // if taskInfo.CurDefaultType == 5 || taskInfo.CurDefaultType == 9 {
  203. // // 若处于违约状态则解除并更新企业应支付金额
  204. // _, 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()
  205. // if err1 != nil {
  206. // return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo update failed"}
  207. // }
  208. //
  209. // // 更新违约记录表
  210. // _, 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()
  211. // if err1 != nil {
  212. // return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"}
  213. // }
  214. // }
  215. //
  216. // // 查询该任务是否有已添加或已修改链接
  217. // res, err := g.DB().Model(model.YounggeeLinkInfo{}).Where("task_id = ? and is_submit = 0", taskId).Count()
  218. // if err != nil {
  219. // return &TalentHttpResult{Code: -1, Msg: "YounggeeLinkInfo find failed"}
  220. // }
  221. // if res == 1 && (taskInfo.LinkStatus == 2 || taskInfo.LinkStatus == 4) {
  222. // _, err = g.DB().Model(model.YounggeeLinkInfo{}).Data(g.Map{"is_submit": "1", "submit_at": gtime.Now()}).Where("task_id = ? and is_submit = 0", taskId).Update()
  223. // if err != nil {
  224. // return &TalentHttpResult{Code: -3, Msg: "YounggeeLinkInfo update failed"}
  225. // }
  226. // _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"task_stage": "12"}).Where("task_id = ?", taskId).Update()
  227. // if err != nil {
  228. // return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"}
  229. // }
  230. // // 记录任务日志-上传链接
  231. // taskLog := model.YounggeeTaskLog{
  232. // TaskId: taskId,
  233. // Content: "上传链接",
  234. // LogAt: gtime.Now(),
  235. // }
  236. // _, err = g.DB().Model(dao.YounggeeTaskLog.Table).Data(&taskLog).Insert()
  237. // if err != nil {
  238. // return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed"}
  239. // }
  240. // projectInfo := model.ProjectInfo{}
  241. // err1 = g.DB().Model(model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo)
  242. // if err1 != nil {
  243. // return &TalentHttpResult{Code: -8, Msg: "ProjectInfo find failed"}
  244. // }
  245. // messageInfo := model.YounggeeMessageInfo{
  246. // MessageId: 12,
  247. // MessageType: 2,
  248. // CreatedAt: gtime.Now(),
  249. // TalentId: taskInfo.TalentId,
  250. // ProjectName: projectInfo.ProjectName,
  251. // IsReaded: 0,
  252. // IsDeleted: 0,
  253. // }
  254. // _, err = g.DB().Model(dao.YounggeeMessageInfo.Table).Data(&messageInfo).Insert()
  255. // if err != nil {
  256. // return &TalentHttpResult{Code: -9, Msg: "YounggeeMessageInfo insert failed"}
  257. // }
  258. // }
  259. //
  260. // return &TalentHttpResult{Code: 0, Msg: "success"}
  261. //}
  262. // 查询链接提交审阅记录service
  263. func GetTaskLink(r *ghttp.Request) *TalentHttpResult {
  264. taskId := r.Get("task_id")
  265. res, err := g.DB().Model(dao.YounggeeLinkInfo.Table).Where("is_review = 1 and task_id = ?", taskId).OrderDesc("create_at").All()
  266. if err != nil {
  267. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  268. }
  269. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  270. }
  271. // 查询未审核的链接
  272. func GetUnSubmitTaskLink(r *ghttp.Request) *TalentHttpResult {
  273. taskId := r.Get("task_id")
  274. res, err := g.DB().Model(dao.YounggeeLinkInfo.Table).Where("is_review = 0 and is_ok = 0 and task_id = ?", taskId).OrderDesc("create_at").One()
  275. if err != nil {
  276. return &TalentHttpResult{Code: -1, Msg: err.Error()}
  277. }
  278. if res == nil {
  279. return &TalentHttpResult{Code: 0, Msg: "success", Data: nil}
  280. }
  281. return &TalentHttpResult{Code: 0, Msg: "success", Data: res}
  282. }