123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770 |
- package talent_service
- import (
- "context"
- "github.com/gogf/gf/database/gdb"
- "github.com/gogf/gf/frame/g"
- "github.com/gogf/gf/net/ghttp"
- "github.com/gogf/gf/os/gtime"
- "youngmini_server/app/dao"
- "youngmini_server/app/model"
- "youngmini_server/app/model/talent_model"
- "youngmini_server/app/utils"
- )
- type orderStage int
- const (
- orderStageWaitForSelect orderStage = iota + 1
- orderStageSendSamples
- orderStageDraft
- orderStageArticle
- orderStageLinkExamine
- orderStageDataExamine
- orderStageSamplesReturn
- orderStageComplete
- )
- func OnGetExpressInfo(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetQueryInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- rec, err := g.DB().Model(dao.OrderInfo.Table).Fields(dao.OrderInfo.Columns.TalentId).One(dao.OrderInfo.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if rec[dao.OrderInfo.Columns.TalentId].Int() != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- rec, err = g.DB().Model(dao.OrderDeliveryInfo.Table).Fields(
- dao.OrderDeliveryInfo.Columns.OrderAddressee, // 收货人
- dao.OrderDeliveryInfo.Columns.OrderPhone, // 联系电话
- dao.OrderDeliveryInfo.Columns.OrderAddress, // 详细地址
- dao.OrderDeliveryInfo.Columns.RegionCode, // 区域码
- dao.OrderDeliveryInfo.Columns.DeliveryTime, // 发货时间
- dao.OrderDeliveryInfo.Columns.LogisticsCompany, // 快递公司
- dao.OrderDeliveryInfo.Columns.TrackingNum, // 订单号
- dao.OrderDeliveryInfo.Columns.DeliveryStatus).One(dao.OrderDeliveryInfo.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -5, Msg: "获取运单信息失败"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: rec}
- }
- // OnConfirmReceiveExpress 达人确认收到样品
- func OnConfirmReceiveExpress(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- var receiveSamplesData talent_model.ConfirmReceiveSampleData
- if err = r.ParseForm(&receiveSamplesData); err != nil {
- return &TalentHttpResult{Code: -2, Msg: "upload data error"}
- }
- // 查询订单及订单的执行阶段信息
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).
- Where("order_id = ?", receiveSamplesData.OrderId).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "order or procedure info not found"}
- }
- // 判定达人是否拥有此订单
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "talent have no this order"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- // 获取达人昵称
- var talentNickname string
- rec, err := g.DB().Model(dao.TalentInfo.Table).One("id", tid)
- if err != nil || rec == nil {
- talentNickname = ""
- } else {
- talentNickname = rec[dao.TalentInfo.Columns.TalentWxNickname].String()
- }
- var procedureInfo *model.WorkflowNodeContainer
- err = g.DB().Model(dao.WorkflowNodeContainer.Table).
- Where("order_id = ? and sort_id = ?", orderInfo.OrderId, orderInfo.OrderStatus).Scan(&procedureInfo)
- if err != nil {
- return &TalentHttpResult{Code: -6, Msg: "order procedure info not found"}
- }
- // 如果订单当前执行步骤不处于等待上传初稿状态则不处理
- if procedureInfo.ProcedureStage != int(orderStageSendSamples) ||
- procedureInfo.StepInStage != 2 {
- return &TalentHttpResult{Code: -7, Msg: "order procedure is not wait for upload draft"}
- }
- // 记录初稿信息,并将订单执行步骤记录为初稿上传后的步骤
- err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
- _, err1 := tx.Ctx(ctx).Model(dao.OrderDeliveryInfo.Table).Update(g.Map{
- "confirm_time": gtime.Now(),
- "delivery_status": 3,
- }, "order_id", receiveSamplesData.OrderId)
- if err1 != nil {
- return err
- }
- return utils.OrderProcedureManager.OnOperateOrder(receiveSamplesData.OrderId, true, tid, talentNickname)
- })
- if err != nil {
- return &TalentHttpResult{Code: -8, Msg: "update data failed"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
- func OnGetDraftInfo(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetQueryInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- rec, err := g.DB().Model(dao.OrderInfo.Table).Fields(dao.OrderInfo.Columns.TalentId).One(dao.OrderInfo.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if rec[dao.OrderInfo.Columns.TalentId].Int() != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- rec, err = g.DB().Model(dao.OrderDraftReview.Table).Fields(
- dao.OrderDraftReview.Columns.OnlineLink,
- dao.OrderDraftReview.Columns.AuditStatus,
- dao.OrderDraftReview.Columns.AuditOpinion,
- dao.OrderDraftReview.Columns.ConfirmTime).One(dao.OrderDraftReview.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -2, Msg: "获取初稿信息失败"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: rec}
- }
- // OnUploadDraft 上传初稿
- func OnUploadDraft(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- var draftData talent_model.UploadDraftData
- if err = r.ParseForm(&draftData); err != nil {
- return &TalentHttpResult{Code: -2, Msg: "upload data error"}
- }
- // 获取达人昵称
- var talentNickname string
- rec, err := g.DB().Model(dao.TalentInfo.Table).One("id", tid)
- if err != nil || rec == nil {
- talentNickname = ""
- } else {
- talentNickname = rec[dao.TalentInfo.Columns.TalentWxNickname].String()
- }
- // 查询订单及订单的执行阶段信息
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).
- Where("order_id = ?", draftData.OrderId).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "order or procedure info not found"}
- }
- // 判定达人是否拥有此订单
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "talent have no this order"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- var procedureInfo *model.WorkflowNodeContainer
- err = g.DB().Model(dao.WorkflowNodeContainer.Table).
- Where("order_id = ? and sort_id = ?", orderInfo.OrderId, orderInfo.OrderStatus).Scan(&procedureInfo)
- if err != nil {
- return &TalentHttpResult{Code: -6, Msg: "order procedure info not found"}
- }
- // 如果订单当前执行步骤不处于等待上传初稿状态则不处理
- if procedureInfo.ProcedureStage != int(orderStageDraft) ||
- procedureInfo.StepInStage != 1 {
- return &TalentHttpResult{Code: -7, Msg: "order procedure is not wait for upload draft"}
- }
- // 记录初稿信息,并将订单执行步骤记录为初稿上传后的步骤
- err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
- _, err1 := tx.Ctx(ctx).Model(dao.OrderDraftReview.Table).Save(model.OrderDraftReview{
- OrderId: draftData.OrderId,
- OnlineLink: draftData.OnlineLink,
- AuditStatus: 1,
- AuditOpinion: "",
- CreatedAt: gtime.Now(),
- ConfirmTime: nil,
- })
- if err1 != nil {
- return err
- }
- return utils.OrderProcedureManager.OnOperateOrder(draftData.OrderId, true, tid, talentNickname)
- })
- if err != nil {
- return &TalentHttpResult{Code: -8, Msg: "update data failed"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
- func OnGetArticleInfo(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetQueryInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- rec, err := g.DB().Model(dao.OrderInfo.Table).Fields(dao.OrderInfo.Columns.TalentId).One(dao.OrderInfo.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if rec[dao.OrderInfo.Columns.TalentId].Int() != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- rec, err = g.DB().Model(dao.OrderArticleReview.Table).Fields(
- dao.OrderArticleReview.Columns.ArticleLink,
- dao.OrderArticleReview.Columns.AuditStatus,
- dao.OrderArticleReview.Columns.AuditOpinion,
- dao.OrderArticleReview.Columns.ConfirmTime).One(dao.OrderArticleReview.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -2, Msg: "获取作品信息失败"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: rec}
- }
- // OnUploadArticle 上传作品
- func OnUploadArticle(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- var articleData talent_model.UploadArticleData
- if err = r.ParseForm(&articleData); err != nil {
- return &TalentHttpResult{Code: -2, Msg: "upload data error"}
- }
- // 查询订单及订单的执行阶段信息
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).
- Where("order_id = ?", articleData.OrderId).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "order or procedure info not found"}
- }
- // 判定达人是否拥有此订单
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "talent have no this order"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- var procedureInfo *model.WorkflowNodeContainer
- err = g.DB().Model(dao.WorkflowNodeContainer.Table).
- Where("order_id = ? and sort_id = ?", orderInfo.OrderId, orderInfo.OrderStatus).Scan(&procedureInfo)
- if err != nil {
- return &TalentHttpResult{Code: -6, Msg: "order procedure info not found"}
- }
- // 如果订单当前执行步骤不处于等待上传作品状态则不处理
- if procedureInfo.ProcedureStage != int(orderStageArticle) ||
- procedureInfo.StepInStage != 1 {
- return &TalentHttpResult{Code: -7, Msg: "order procedure is not wait for upload draft"}
- }
- // 获取达人昵称
- var talentNickname string
- rec, err := g.DB().Model(dao.TalentInfo.Table).One("id", tid)
- if err != nil || rec == nil {
- talentNickname = ""
- } else {
- talentNickname = rec[dao.TalentInfo.Columns.TalentWxNickname].String()
- }
- // 记录作品信息,并将订单执行步骤记录为作品上传后的步骤
- err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
- // 将作品信息记录再order_audit_review表中
- _, err1 := tx.Ctx(ctx).Model(dao.OrderArticleReview.Table).Save(model.OrderArticleReview{
- OrderId: articleData.OrderId,
- ArticleLink: articleData.ArticleUrls,
- AuditStatus: 1,
- AuditOpinion: "",
- CreatedAt: gtime.Now(),
- ConfirmTime: nil,
- })
- if err1 != nil {
- return err
- }
- return utils.OrderProcedureManager.OnOperateOrder(int(articleData.OrderId), true, tid, talentNickname)
- })
- if err != nil {
- return &TalentHttpResult{Code: -8, Msg: "update data failed"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
- // OnGetPublishLinkInfo 获取发布链接信息
- func OnGetPublishLinkInfo(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetQueryInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- rec, err := g.DB().Model(dao.OrderInfo.Table).Fields(dao.OrderInfo.Columns.TalentId).One(dao.OrderInfo.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if rec[dao.OrderInfo.Columns.TalentId].Int() != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- rec, err = g.DB().Model(dao.OrderLinkQuality.Table).Fields(
- dao.OrderLinkQuality.Columns.PostLink,
- dao.OrderLinkQuality.Columns.PhotoLink,
- dao.OrderLinkQuality.Columns.AuditStatus,
- dao.OrderLinkQuality.Columns.AuditOpinion,
- dao.OrderLinkQuality.Columns.ConfirmTime).One(dao.OrderLinkQuality.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -2, Msg: "获取质检链接信息失败"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: rec}
- }
- // OnUploadLink 上传发布链接
- func OnUploadLink(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- var linkData talent_model.UploadLinkData
- if err = r.ParseForm(&linkData); err != nil {
- return &TalentHttpResult{Code: -2, Msg: "upload data error"}
- }
- // 查询订单及订单的执行阶段信息
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).
- Where("order_id = ?", linkData.OrderId).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "order or procedure info not found"}
- }
- // 判定达人是否拥有此订单
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "talent have no this order"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- var procedureInfo *model.WorkflowNodeContainer
- err = g.DB().Model(dao.WorkflowNodeContainer.Table).
- Where("order_id = ? and sort_id = ?", orderInfo.OrderId, orderInfo.OrderStatus).Scan(&procedureInfo)
- if err != nil {
- return &TalentHttpResult{Code: -6, Msg: "order procedure info not found"}
- }
- // 如果订单当前执行步骤不处于等待上传发布链接状态则不处理
- if procedureInfo.ProcedureStage != int(orderStageLinkExamine) ||
- procedureInfo.StepInStage != 1 {
- return &TalentHttpResult{Code: -7, Msg: "order procedure is not wait for upload draft"}
- }
- // 获取达人昵称
- var talentNickname string
- rec, err := g.DB().Model(dao.TalentInfo.Table).One("id", tid)
- if err != nil || rec == nil {
- talentNickname = ""
- } else {
- talentNickname = rec[dao.TalentInfo.Columns.TalentWxNickname].String()
- }
- // 记录发布链接信息,并将订单执行步骤记录为发布链接上传后的步骤
- err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
- // 将作品信息记录再order_audit_review表中
- _, err1 := tx.Ctx(ctx).Model(dao.OrderLinkQuality.Table).Save(model.OrderLinkQuality{
- PostLink: linkData.LinkUrl,
- PhotoLink: linkData.PhotoLink,
- AuditStatus: 1,
- AuditOpinion: "",
- CreatedAt: gtime.Now(),
- ConfirmTime: nil,
- OrderId: linkData.OrderId,
- })
- if err1 != nil {
- return err
- }
- return utils.OrderProcedureManager.OnOperateOrder(int(linkData.OrderId), true, tid, talentNickname)
- })
- if err != nil {
- return &TalentHttpResult{Code: -8, Msg: "update data failed"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
- // OnGetDataLinkInfo 获取数据质检信息
- func OnGetDataLinkInfo(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetQueryInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- rec, err := g.DB().Model(dao.OrderInfo.Table).Fields(dao.OrderInfo.Columns.TalentId).One(dao.OrderInfo.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if rec[dao.OrderInfo.Columns.TalentId].Int() != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- combineData := talent_model.OrderDataAuditCombineData{}
- rec, err = g.DB().Model(dao.OrderLinkQuality.Table).
- Fields(dao.OrderLinkQuality.Columns.PostLink, dao.OrderLinkQuality.Columns.PhotoLink).
- One(dao.OrderLinkQuality.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -5, Msg: "查询发布链接信息失败"}
- }
- combineData.OrderLinkInfoData = &talent_model.OrderLinkInfoData{
- PostLink: rec[dao.OrderLinkQuality.Columns.PostLink].String(),
- PhotoLink: rec[dao.OrderLinkQuality.Columns.PhotoLink].String(),
- }
- rec, err = g.DB().Model(dao.OrderDataReview.Table).Fields(
- dao.OrderDataReview.Columns.AuditStatus,
- dao.OrderDataReview.Columns.AuditOpinion,
- dao.OrderDataReview.Columns.LikeNumber,
- dao.OrderDataReview.Columns.LittleEye,
- dao.OrderDataReview.Columns.CommitNum,
- dao.OrderDataReview.Columns.CollectNum,
- dao.OrderDataReview.Columns.DataLink,
- dao.OrderDataReview.Columns.ConfirmTime).One(dao.OrderDataReview.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -2, Msg: "获取数据链接信息失败"}
- }
- if rec != nil {
- combineData.OrderDataAuditData = &talent_model.OrderDataAuditData{
- LikeNumber: rec[dao.OrderDataReview.Columns.LikeNumber].Int(),
- LittleEye: rec[dao.OrderDataReview.Columns.LittleEye].Int(),
- CommitNum: rec[dao.OrderDataReview.Columns.CommitNum].Int(),
- CollectNum: rec[dao.OrderDataReview.Columns.CollectNum].Int(),
- DataLink: rec[dao.OrderDataReview.Columns.DataLink].String(),
- AuditStatus: rec[dao.OrderDataReview.Columns.AuditStatus].Int(),
- AuditOpinion: rec[dao.OrderDataReview.Columns.AuditOpinion].String(),
- ConfirmTime: rec[dao.OrderDataReview.Columns.ConfirmTime].GTime(),
- }
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: combineData}
- }
- // OnUploadData 上传质检数据
- func OnUploadData(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- var dataData talent_model.UploadDataData
- if err = r.ParseForm(&dataData); err != nil {
- return &TalentHttpResult{Code: -2, Msg: "upload data error"}
- }
- // 查询订单及订单的执行阶段信息
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).
- Where("order_id = ?", dataData.OrderId).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "order or procedure info not found"}
- }
- // 判定达人是否拥有此订单
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "talent have no this order"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- var procedureInfo *model.WorkflowNodeContainer
- err = g.DB().Model(dao.WorkflowNodeContainer.Table).
- Where("order_id = ? and sort_id = ?", orderInfo.OrderId, orderInfo.OrderStatus).Scan(&procedureInfo)
- if err != nil {
- return &TalentHttpResult{Code: -6, Msg: "order procedure info not found"}
- }
- // 如果订单当前执行步骤不处于等待上传数据状态则不处理
- if procedureInfo.ProcedureStage != int(orderStageDataExamine) ||
- procedureInfo.StepInStage != 1 {
- return &TalentHttpResult{Code: -7, Msg: "order procedure is not wait for upload draft"}
- }
- // 获取达人昵称
- var talentNickname string
- rec, err := g.DB().Model(dao.TalentInfo.Table).One("id", tid)
- if err != nil || rec == nil {
- talentNickname = ""
- } else {
- talentNickname = rec[dao.TalentInfo.Columns.TalentWxNickname].String()
- }
- // 记录数据信息,并将订单执行步骤记录为数据上传后的步骤
- err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
- // 将作品信息记录再order_audit_review表中
- _, err1 := tx.Ctx(ctx).Model(dao.OrderDataReview.Table).Save(model.OrderDataReview{
- OrderId: dataData.OrderId,
- LikeNumber: dataData.LikeNumber,
- LittleEye: dataData.LittleEye,
- CommitNum: dataData.CommitNum,
- CollectNum: dataData.CollectNum,
- DataLink: dataData.DataLink,
- AuditStatus: 1,
- AuditOpinion: "",
- CreatedAt: gtime.Now(),
- ConfirmTime: nil,
- })
- if err1 != nil {
- return err
- }
- return utils.OrderProcedureManager.OnOperateOrder(int(dataData.OrderId), true, tid, talentNickname)
- })
- if err != nil {
- return &TalentHttpResult{Code: -8, Msg: "update data failed"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
- // OnPostSampleReturnPostInfo 上传返还样品快递信息
- func OnPostSampleReturnPostInfo(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- var expressInfo *talent_model.SamplesReturnPostInfo
- err = r.ParseForm(&expressInfo)
- if err != nil {
- return &TalentHttpResult{Code: -2, Msg: "请正确填写快递信息"}
- }
- // 查询订单及订单的执行阶段信息
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).
- Where("order_id = ?", expressInfo.OrderId).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "order or procedure info not found"}
- }
- // 判定达人是否拥有此订单
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "talent have no this order"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- var procedureInfo *model.WorkflowNodeContainer
- err = g.DB().Model(dao.WorkflowNodeContainer.Table).
- Where("order_id = ? and sort_id = ?", orderInfo.OrderId, orderInfo.OrderStatus).Scan(&procedureInfo)
- if err != nil {
- return &TalentHttpResult{Code: -5, Msg: "order procedure info not found"}
- }
- // 如果订单当前执行步骤不处于拍单寄回状态则不处理
- if procedureInfo.ProcedureStage != int(orderStageSamplesReturn) ||
- procedureInfo.StepInStage != 1 {
- return &TalentHttpResult{Code: -6, Msg: "order procedure is not wait for upload draft"}
- }
- //// 记录作品信息,并将订单执行步骤记录为初稿上传后的步骤
- //err = g.DB().Transaction(context.TODO(), func(ctx context.Context, tx *gdb.TX) error {
- // // 将作品信息记录再order_audit_review表中
- // _, err1 := tx.Ctx(ctx).Model(dao.OrderAuditReview.Table).Insert(model.OrderDataReview{
- // OrderId: dataData.OrderId,
- // PostLink: dataData.PostLink,
- // PhotoLink: dataData.PhotoLink,
- // LikeNumber: dataData.LikeNumber,
- // LittleEye: dataData.LittleEye,
- // CommitNum: dataData.CommitNum,
- // CollectNum: dataData.CollectNum,
- // DataLink: dataData.DataLink,
- // AuditStatus: 1,
- // AuditOpinion: "",
- // CreatedAt: gtime.Now(),
- // ConfirmTime: nil,
- // })
- // if err1 != nil {
- // return err
- // }
- //
- // return utils.OrderProcedureManager.OnOperateOrder(int(dataData.OrderId), true, tid, talentNickname, ctx, tx)
- //})
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
- // OnGetOrderCompleteData 获取任务完成数据
- func OnGetOrderCompleteData(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetQueryInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- rec, err := g.DB().Model(dao.OrderInfo.Table).Fields(dao.OrderInfo.Columns.TalentId).One(dao.OrderInfo.Columns.OrderId, oid)
- if err != nil || rec == nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if rec[dao.OrderInfo.Columns.TalentId].Int() != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- incomeRec, err := g.DB().Model(dao.BobocoinIncomeRecord.Table).One(dao.BobocoinIncomeRecord.Columns.OrderId, oid)
- if err != nil || incomeRec == nil {
- return &TalentHttpResult{Code: -5, Msg: "query income value failed"}
- }
- deductRecs, err := g.DB().Model(dao.BobocoinDeductRecord.Table).All(dao.BobocoinDeductRecord.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -6, Msg: "query deduct records failed"}
- }
- incomeValue := incomeRec[dao.BobocoinIncomeRecord.Columns.BobocoinValue].Int()
- var deductValue int
- if deductRecs != nil {
- for _, v := range deductRecs {
- deductValue += v[dao.BobocoinDeductRecord.Columns.BobocoinValue].Int()
- }
- }
- incomeDetail := talent_model.OrderIncomeDetailInfo{
- OrderIncome: incomeValue,
- DeductList: deductRecs,
- RealIncome: incomeValue - deductValue,
- OrderCompleteDate: incomeRec[dao.BobocoinIncomeRecord.Columns.CompleteDate].GTime(),
- }
- return &TalentHttpResult{Code: 0, Msg: "success", Data: incomeDetail}
- }
- // CancelOrder 达人取消订单
- func CancelOrder(r *ghttp.Request) *TalentHttpResult {
- tid, err := utils.SessionTalentInfo.GetTalentIdFromSession(r)
- if err != nil {
- return &TalentHttpResult{Code: -1, Msg: "Get talent info failed"}
- }
- oid := r.GetRequestInt("order_id", 0)
- if oid == 0 {
- return &TalentHttpResult{Code: -2, Msg: "请输入订单id"}
- }
- var orderInfo *model.OrderInfo
- err = g.DB().Model(dao.OrderInfo.Table).Where(dao.OrderInfo.Columns.OrderId, oid).Scan(&orderInfo)
- if err != nil {
- return &TalentHttpResult{Code: -3, Msg: "没有此订单"}
- }
- if orderInfo.TalentId != tid {
- return &TalentHttpResult{Code: -4, Msg: "达人未接此任务"}
- }
- // 判断订单是否已完结
- if orderInfo.CompleteStatus > int(utils.OrderCompleteTypeNoComp) {
- return &TalentHttpResult{Code: -5, Msg: "order has complete"}
- }
- _, err = g.DB().Model(dao.OrderInfo.Table).Update(g.Map{
- dao.OrderInfo.Columns.CompleteStatus: utils.OrderCompleteTypeCancel,
- dao.OrderInfo.Columns.CompleteDate: gtime.Now(),
- }, dao.OrderInfo.Columns.OrderId, oid)
- if err != nil {
- return &TalentHttpResult{Code: -5, Msg: "cancel order failed"}
- }
- return &TalentHttpResult{Code: 0, Msg: "success"}
- }
|