fonchain-fiee/pkg/service/artistInfo/asArtwork/supplementV2.go

156 lines
6.8 KiB
Go
Raw Normal View History

2025-02-19 06:24:15 +00:00
// 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)
}