package youngee_task_service import ( "github.com/gogf/gf/frame/g" "github.com/gogf/gf/net/ghttp" "github.com/gogf/gf/os/gtime" "time" "youngmini_server/app/dao" "youngmini_server/app/model" "youngmini_server/app/model/youngee_talent_model" ) // 添加链接service func AddTaskLink(r *ghttp.Request) *TalentHttpResult { //解析添加初稿的图文 var LinkInfoReq *youngee_talent_model.AddTaskLinkRequest err := r.ParseForm(&LinkInfoReq) if err != nil { return &TalentHttpResult{Code: -1, Msg: err.Error()} } taskLinkInfo := []model.YounggeeLinkInfo{} err = g.DB().Model(model.YounggeeLinkInfo{}).Where("task_id = ? ", LinkInfoReq.TaskId).OrderDesc("create_at").Scan(&taskLinkInfo) var autoAgreeAt *gtime.Time //获取种草和本地生活的task表 taskInfo := youngee_talent_model.YoungeeTaskInfo{} localTaskInfo := youngee_talent_model.YoungeeLocalTaskInfo{} //查找auto_task_info表 AutoAgreeAt= task的创建时间 + auto_task_info的link_review_auto if LinkInfoReq.TaskType == 1 { err = g.DB().Model("youngee_task_info").WithAll().Where("task_id = ?", LinkInfoReq.TaskId).Scan(&taskInfo) if err != nil { return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo find failed", Data: err.Error()} } autoTaskInfo, err := g.DB().Model("info_auto_task").Where("auto_task_id = ?", taskInfo.ProjectDetail.AutoTaskId).One() if err != nil { return &TalentHttpResult{Code: -2, Msg: "InfoAutoTask find failed", Data: err.Error()} } if autoTaskInfo != nil { autoAgreeAt = taskInfo.CreateDate.Add(time.Duration(autoTaskInfo["link_review_auto"].Int64()) * time.Hour) } else { return &TalentHttpResult{Code: -2, Msg: "auto_task_id not found"} } } else if LinkInfoReq.TaskType == 2 { err = g.DB().Model("youngee_local_task_info").WithAll().Where("task_id = ?", LinkInfoReq.TaskId).Scan(localTaskInfo) if err != nil { return &TalentHttpResult{Code: -2, Msg: "YoungeeLocalTaskInfo find failed", Data: err.Error()} } autoTaskInfo, err := g.DB().Model("info_auto_task").WithAll().Where("auto_task_id = ?", localTaskInfo.LocalInfoDetail.AutoTaskId).One() if err != nil { return &TalentHttpResult{Code: -2, Msg: "InfoAutoTask find failed", Data: err.Error()} } if autoTaskInfo != nil { autoAgreeAt = localTaskInfo.CreateDate.Add(time.Duration(autoTaskInfo["link_review_auto"].Int64()) * time.Hour) } else { return &TalentHttpResult{Code: -2, Msg: "auto_task_id not found"} } } //最新link数据 linkInfo := model.YounggeeLinkInfo{ TaskId: LinkInfoReq.TaskId, LinkUrl: LinkInfoReq.LinkUrl, CreateAt: gtime.Now(), IsReview: 0, IsSubmit: 0, //忽略 IsOk: 0, AutoAgreeAt: autoAgreeAt, TaskType: LinkInfoReq.TaskType, } //上传过但是被拒了 var condition1 bool = len(taskLinkInfo) != 0 && taskLinkInfo[0].IsReview == 1 && taskLinkInfo[0].IsOk == 0 //没有上传过初稿 var condition2 bool = len(taskLinkInfo) == 0 if condition1 || condition2 { //插入新数据 _, err := g.DB().Model(model.YounggeeLinkInfo{}).Data(linkInfo).InsertAndGetId() if err != nil { return &TalentHttpResult{Code: -3, Msg: "YounggeeLinkInfo insert failed", Data: err.Error()} } } else { return &TalentHttpResult{Code: -3, Msg: "YounggeeLinkInfo insert failed", Data: "该任务已上传过链接,不能重复上传"} } //更新task表 or local_task表 if LinkInfoReq.TaskType == 1 { //种草 LinkStatus, err := g.DB().Model("youngee_task_info").Fields("link_status").Where("task_id = ?", LinkInfoReq.TaskId).Value() if err != nil { return &TalentHttpResult{Code: -5, Msg: "Get task info failed"} } if LinkStatus.Int64() == 1 { _, err = g.Model("youngee_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 2}) if err != nil { return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"} } } else if LinkStatus.Int64() == 3 { _, err = g.Model("youngee_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 4}) if err != nil { return &TalentHttpResult{Code: -6, Msg: "YoungeeTaskInfo update failed"} } } //修改task表,插入log和message taskInfo := youngee_talent_model.YoungeeTaskInfo{} // 查询是否处于违约状态 err = g.DB().Model(model.YoungeeTaskInfo{}).Where("task_id = ?", LinkInfoReq.TaskId).Scan(&taskInfo) if taskInfo.CurDefaultType == 5 || taskInfo.CurDefaultType == 9 { // 若处于违约状态则解除并更新企业应支付金额 _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"cur_default_type": "0", "err_break_rate": 0}).Where("task_id = ?", LinkInfoReq.TaskId).Update() if err != nil { return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo update failed"} } // 更新违约记录表 _, 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() if err != nil { return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"} } } //task设置为链接待审 _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"task_stage": "12"}).Where("task_id = ?", LinkInfoReq.TaskId).Update() if err != nil { return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"} } // 记录任务日志-上传链接 taskLog := model.YounggeeTaskLog{ TaskId: LinkInfoReq.TaskId, Content: "上传链接", LogAt: gtime.Now(), } _, err = g.DB().Model(dao.YounggeeTaskLog.Table).Data(&taskLog).Insert() if err != nil { return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed"} } } else if LinkInfoReq.TaskType == 2 { //本地生活 LinkStatus, err := g.DB().Model("youngee_local_task_info").Fields("link_status").Where("task_id = ?", LinkInfoReq.TaskId).Value() if err != nil { return &TalentHttpResult{Code: -5, Msg: "Get youngee_local_task_info failed"} } if LinkStatus.Int64() == 1 { _, err = g.Model("youngee_local_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 2}) if err != nil { return &TalentHttpResult{Code: -6, Msg: "youngee_local_task_info update failed"} } } else if LinkStatus.Int64() == 3 { _, err = g.Model("youngee_local_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Update(g.Map{"link_status": 4}) if err != nil { return &TalentHttpResult{Code: -6, Msg: "youngee_local_task_info update failed"} } } //修改task表,插入log和message taskInfo := youngee_talent_model.YoungeeLocalTaskInfo{} // 查询是否处于违约状态 err = g.DB().Model("youngee_local_task_info").Where("task_id = ?", LinkInfoReq.TaskId).Scan(&taskInfo) if taskInfo.CurDefaultType == 5 || taskInfo.CurDefaultType == 9 { // 若处于违约状态则解除并更新企业应支付金额 _, 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() if err != nil { return &TalentHttpResult{Code: -2, Msg: "youngee_local_task_info update failed"} } // 更新违约记录表 _, 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() if err != nil { return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"} } } //task设置为链接待审 _, err = g.DB().Model("youngee_local_task_info").Data(g.Map{"task_stage": "12"}).Where("task_id = ?", LinkInfoReq.TaskId).Update() if err != nil { return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"} } //记录任务日志-上传链接 taskLog := youngee_talent_model.YounggeeLocalTaskLog{ TaskId: LinkInfoReq.TaskId, Content: "上传链接", LogAt: gtime.Now(), } _, err = g.DB().Model("younggee_local_task_log").Data(&taskLog).Insert() if err != nil { return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed", Data: err.Error()} } } return &TalentHttpResult{Code: 0, Msg: "success"} } // 提交链接service //func SubmitTaskLink(r *ghttp.Request) *TalentHttpResult { // taskId, _ := r.Get("task_id").(string) // taskInfo := model.YoungeeTaskInfo{} // // 查询是否处于违约状态 // err1 := g.DB().Model(model.YoungeeTaskInfo{}).Where("task_id = ?", taskId).Scan(&taskInfo) // if err1 != nil { // return &TalentHttpResult{Code: -1, Msg: "YoungeeTaskInfo find failed"} // } // if taskInfo.CurDefaultType == 5 || taskInfo.CurDefaultType == 9 { // // 若处于违约状态则解除并更新企业应支付金额 // _, 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() // if err1 != nil { // return &TalentHttpResult{Code: -2, Msg: "YoungeeTaskInfo update failed"} // } // // // 更新违约记录表 // _, 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() // if err1 != nil { // return &TalentHttpResult{Code: -2, Msg: "YoungeeContractInfo update failed"} // } // } // // // 查询该任务是否有已添加或已修改链接 // res, err := g.DB().Model(model.YounggeeLinkInfo{}).Where("task_id = ? and is_submit = 0", taskId).Count() // if err != nil { // return &TalentHttpResult{Code: -1, Msg: "YounggeeLinkInfo find failed"} // } // if res == 1 && (taskInfo.LinkStatus == 2 || taskInfo.LinkStatus == 4) { // _, 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() // if err != nil { // return &TalentHttpResult{Code: -3, Msg: "YounggeeLinkInfo update failed"} // } // _, err = g.DB().Model(model.YoungeeTaskInfo{}).Data(g.Map{"task_stage": "12"}).Where("task_id = ?", taskId).Update() // if err != nil { // return &TalentHttpResult{Code: -4, Msg: "YoungeeTaskInfo update failed"} // } // // 记录任务日志-上传链接 // taskLog := model.YounggeeTaskLog{ // TaskId: taskId, // Content: "上传链接", // LogAt: gtime.Now(), // } // _, err = g.DB().Model(dao.YounggeeTaskLog.Table).Data(&taskLog).Insert() // if err != nil { // return &TalentHttpResult{Code: -5, Msg: "YounggeeTaskLog insert failed"} // } // projectInfo := model.ProjectInfo{} // err1 = g.DB().Model(model.ProjectInfo{}).Where("project_id = ?", taskInfo.ProjectId).Scan(&projectInfo) // if err1 != nil { // return &TalentHttpResult{Code: -8, Msg: "ProjectInfo find failed"} // } // messageInfo := model.YounggeeMessageInfo{ // MessageId: 12, // MessageType: 2, // CreatedAt: gtime.Now(), // TalentId: taskInfo.TalentId, // ProjectName: projectInfo.ProjectName, // IsReaded: 0, // IsDeleted: 0, // } // _, err = g.DB().Model(dao.YounggeeMessageInfo.Table).Data(&messageInfo).Insert() // if err != nil { // return &TalentHttpResult{Code: -9, Msg: "YounggeeMessageInfo insert failed"} // } // } // // return &TalentHttpResult{Code: 0, Msg: "success"} //} // 查询链接提交审阅记录service func GetTaskLink(r *ghttp.Request) *TalentHttpResult { taskId := r.Get("task_id") res, err := g.DB().Model(dao.YounggeeLinkInfo.Table).Where("is_review = 1 and task_id = ?", taskId).OrderDesc("create_at").All() if err != nil { return &TalentHttpResult{Code: -1, Msg: err.Error()} } return &TalentHttpResult{Code: 0, Msg: "success", Data: res} } // 查询未审核的链接 func GetUnSubmitTaskLink(r *ghttp.Request) *TalentHttpResult { taskId := r.Get("task_id") res, err := g.DB().Model(dao.YounggeeLinkInfo.Table).Where("is_review = 0 and is_ok = 0 and task_id = ?", taskId).OrderDesc("create_at").One() if err != nil { return &TalentHttpResult{Code: -1, Msg: err.Error()} } if res == nil { return &TalentHttpResult{Code: 0, Msg: "success", Data: nil} } return &TalentHttpResult{Code: 0, Msg: "success", Data: res} }