// Package asArtwork ----------------------------- // @file : supplementV2.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2024/6/19 上午10:38 // ------------------------------------------- package asArtwork import ( "context" "fmt" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoArtwork" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoUser" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/fonchain_enterprise/fonchain-main/pkg/service/artistInfo/asPush" "github.com/fonchain_enterprise/fonchain-main/pkg/service/artistInfo/asUser" "github.com/fonchain_enterprise/fonchain-main/pkg/utils" "github.com/gin-gonic/gin" "go.uber.org/zap" "time" ) // 复审画作 // 新增复审通过自动生成画作补充信息 func (a artworkSupplement) ReviewBaseArtworkV2(c *gin.Context) { var req artistInfoArtwork.ReviewBaseArtworkAuditRequest if err := c.ShouldBindJSON(&req); err != nil { service.Error(c, e.InvalidParams, err, err.Error()) return } //获取账号信息 accInfo, err, code := asUser.GetAccInfoWithToken(c) if err != nil { service.ErrorWithMark(c, code, err, "", "无效的登录状态") return } req.ApproverAccid = int32(accInfo.ID) req.Approver = accInfo.NickName //从缓存中拿去审批数据为后面添加路转记录做准备 fmt.Printf("req.CacheArtistUid:%+v\n", req.CacheArtistUid) var tmpAuditData = &artistInfoArtwork.GetTempSaveReviewStatusListResp{} if req.CacheArtistUid != "" { fmt.Println("从缓存中获取审批数据111111111111111111") tmpAuditData, err = service.GrpcArtistInfoArtworkImpl.GetTempSaveReviewStatusList(c, &artistInfoArtwork.GetTempSaveReviewStatusListRequest{ CacheArtistUid: req.CacheArtistUid, }) fmt.Println("从缓存中获取审批数据22222", err) if err != nil { service.ErrorWithMark(c, e.Failed, err, "ReviewBaseArtwork: GetTempSaveReviewStatusList Error", "审批失败,请稍后重试") return } } fmt.Println("3333333333333333333333") //进行审批 fmt.Printf("tmpAuditData:%+v\n", tmpAuditData) resp, err := service.GrpcArtistInfoArtworkImpl.ReviewBaseArtworkAudit(c, &req) fmt.Printf("ReviewBaseArtworkAudit resp:%+v\n", resp) if err != nil { if utils.Contains([]string{"该画家画作已经审批完成,请勿重复提交", "请审批完后再提交", "未识别到您的审批操作,操作取消"}, err.Error()) { service.ErrorWithMark(c, e.Failed, err, "ReviewBaseArtwork: ReviewBaseArtwork Error", err.Error()) return } service.ErrorWithMark(c, e.Failed, err, "ReviewBaseArtwork: ReviewBaseArtwork Error", "审批失败") return } fmt.Println("444444444444444444444") // 添加画作流转记录(如果审批通过) if req.ArtworkUid != "" { req.BatchAudit = append(req.BatchAudit, &artistInfoArtwork.BatchReviewAudit{ ArtworkUid: req.ArtworkUid, ReviewStatus: req.ReviewStatus, ReviewMark: req.ReviewMark, ReviewMark2: req.ReviewMark2, }) } fmt.Println("555555555555555555") if tmpAuditData.List != nil && len(tmpAuditData.List) > 0 { for _, v := range tmpAuditData.List { fmt.Println("v.ArtworkUid:", v.ArtworkUid, "v.ReviewStatus:", v.ReviewStatus) req.BatchAudit = append(req.BatchAudit, &artistInfoArtwork.BatchReviewAudit{ ArtworkUid: v.ArtworkUid, ReviewStatus: artistInfoArtwork.ReviewAuditStatus(v.ReviewStatus), ReviewMark: v.ReviewMark, ReviewMark2: v.ReviewMark2, }) } } fmt.Printf("准备添加流转记录:%+v\n", req.BatchAudit) for _, artAudit := range req.BatchAudit { if artAudit.ReviewStatus != artistInfoArtwork.ReviewAuditStatus_Pass { fmt.Println(artAudit.ArtworkUid+"没有通过,跳过流转记录添加 ,reviewStatus", artAudit.ReviewStatus) continue } fmt.Println(artAudit.ArtworkUid+"通过复审,添加流转记录 ,reviewStatus", artAudit.ReviewStatus) //查询画作锁定和审批状态 artworkLock, err := service.GrpcArtistInfoArtworkImpl.GetArtworkLockDetail(context.Background(), &artistInfoArtwork.GetArtworkLockDetailRequest{ArtworkUid: artAudit.ArtworkUid}) if err != nil { service.ErrorWithMark(c, e.Failed, err, "UpdateExtData: GrpcArtistInfoArtworkImpl.GetArtworkLockDetail Error", "审批失败") return } //if artworkLock.Status == 3 { // service.Error(c, e.Failed, nil, "画作已解锁,不允许审批") // return //} //生成流转记录请求数据 flowRecord, auditType, auditResult := generateArtworkAuditFlowIndex(4, 2, artworkLock, time.Now().Unix()) fmt.Printf("flowRecord:%+v\n", flowRecord) _, err = service.GrpcArtistInfoArtworkImpl.AddArtworkFlowRecord(context.Background(), flowRecord) if err != nil { fmt.Println("AuditSupplement AddArtworkFlowRecord Err:", err.Error()) } //如果复审通过并且画作被锁定,则额外生成一条待画家补充画作信息的流转记录。 //同样的,画作被锁定时也要增加这个逻辑 if flowRecord.FlowState == artistInfoArtwork.FlowState_BaseInfoAuditNoPass && artworkLock.Status == 2 { _, _ = service.GrpcArtistInfoArtworkImpl.AddArtworkFlowRecord(context.Background(), &artistInfoArtwork.AddArtworkFlowRecordRequest{ ArtistUid: artworkLock.ArtistUid, ArtworkUid: artworkLock.ArtworkUid, TimeStamp: time.Now().Unix(), Operator: artistInfoArtwork.Operator_Backend, FlowState: artistInfoArtwork.FlowState_ArtWorkSupplementBegin, }) } //发送审批通知 userData, err := service.GrpcArtistInfoUserImpl.FindUser(context.Background(), &artistInfoUser.FindUserRequest{MgmtArtistUid: artworkLock.ArtistUid}) if err != nil { fmt.Println("AuditSupplement FindUser Err:", err.Error()) continue } artworkView, err := service.GrpcArtistInfoArtworkImpl.GetArtworkViewList(context.Background(), &artistInfoArtwork.ArtworkViewRequest{ArtworkUids: []string{artAudit.ArtworkUid}, PageSize: 1, Page: 1}) if err != nil || artworkView.Total == 0 { fmt.Println("AuditSupplement GetArtworkViewList Err:", err.Error()) continue } //if err = asUser.ArtistInfoPushNotice.ArtworkAuditResultNotice(userData.Id, artworkView.Datas[0].ArtworkName, auditType, auditResult); err != nil { // fmt.Println("AuditSupplement ArtworkAuditResultNotice Err:", err.Error()) //} pusher := asPush.NewPusher() if err = pusher.ArtworkAuditResultNotice(userData.Id, artworkView.Datas[0].ArtworkName, auditType, auditResult); err != nil { fmt.Println("AuditSupplement ArtworkAuditResultNotice Err:", err.Error()) } //自动生成画作补充信息 err = SupplementService.GenerateSupplementInfo([]string{artAudit.ArtworkUid}) if err != nil { fmt.Println("ReviewBaseArtworkV2 GenerateSupplementInfo Err:", err.Error()) zap.L().Error("ReviewBaseArtworkV2 GenerateSupplementInfo Err", zap.Error(err)) } } service.Success(c) }