// Package dto ----------------------------- // @file : artworkSupplement.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2023/2/28 16:47 // ------------------------------------------- package asArtwork import ( "context" "encoding/json" "fmt" "strings" "time" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoArtwork" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoUser" "github.com/fonchain_enterprise/fonchain-main/api/artwork" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/fonchain_enterprise/fonchain-main/pkg/utils" "github.com/fonchain_enterprise/fonchain-main/pkg/utils/stime" ) // 画作补充信息 type ArtworkSupplementInfo struct { // 画作首选项 //Id int `json:"id"` ArtworkUuid string `json:"artworkUid"` ArtistName string `json:"artistName"` ArtistUid string `json:"artistUid"` ArtworkName string `json:"artworkName"` Length int32 `json:"length"` Width int32 `json:"width"` Ruler int32 `json:"ruler"` InscribeDate string `json:"inscribeDate"` //落款时间 Abstract string `json:"abstract"` //简介 HdPic string `json:"hdPic"` //高清图 ArtistPhoto string `json:"artistPhoto"` //画家画作合照 CreatedDate string `json:"createdDate"` //初始创作时间 CreatedAddress string `json:"createdAddress"` //创作地址 PriceRun float32 `json:"priceRun"` CreatedAt string `json:"createdAt"` //todo 这几个字段没画作服务没返回,待处理 UpdatedAt string `json:"updatedAt"` //todo 这几个字段没画作服务没返回,待处理 DeletedAt string `json:"deletedAt"` //todo 这几个字段没画作服务没返回,待处理 //首次发表 FirstPublish string `gorm:"column:first_publish" json:"firstPublish"` //type:string comment:首次发发表作品url //FirstPublishImg string `gorm:"column:first_publish_img" json:"FirstPublishImg"` //type:string comment:首次发表作品url //FirstName string `gorm:"column:first_name" json:"FirstName"` //type:string comment:首次命名 //FirstNameImg string `gorm:"column:first_name_img" json:"FirstNameImg"` //type:string comment:首次命名截图 // 画作荣誉 ArtistMarketDetail string `json:"artistMarketDetail"` //画作微服务ArtworkMarketData表 - Type: int32 =0 详情 ArtistMarketUrl1 string `json:"artistMarketUrl1"` //画作微服务ArtworkMarketData表 - Type: int32 =1 获奖 ArtistMarketUrl2 string `json:"artistMarketUrl2"` //画作微服务ArtworkMarketData表 - Type: int32 =1 拍卖 ArtistMarketId1 int32 `json:"artistMarketId1"` //对应上面三个字段的id ArtistMarketId2 int32 `json:"artistMarketId2"` ArtistMarketId3 int32 `json:"artistMarketId3"` // 审核状态 SupplementAuditStatus int32 `json:"supplementAuditStatus"` SupplementAuditMark string `json:"supplementAuditMark"` SupplementAuditMark2 string `json:"supplementAuditMark2"` //动态字段 Editable bool `json:"editable"` //该条数据是否可编辑 IsFirstPublish bool `json:"isFirstPublish"` //是否首次发表 //锁定状态 Status int64 `json:"lockStatus"` //锁定状态 2锁定 3解锁 Tfnum string `json:"tfnum"` //画作编号 } func (a *ArtworkSupplementInfo) ConvertResponse(lockInfo *artistInfoArtwork.ArtworkLockInfo, profile *artwork.CreArtProRequest, marketInfo []*artwork.UpdateMInfoRequest, extDataInfo *artwork.UpdateExtDataRequest) error { //查询该条数据是否可编辑 lockStatus, err := service.GrpcArtistInfoArtworkImpl.CheckArtworkSupplementInfoEditable(context.Background(), &artistInfoArtwork.ArtworkUidRequest{ArtworkUid: profile.ArtworkUuid}) if err != nil { return err } a.Editable = lockStatus.Editable a.Status = lockInfo.Status //数据拼接 if lockInfo != nil { a.ArtworkUuid = lockInfo.ArtworkUid a.ArtistUid = lockInfo.ArtistUid a.SupplementAuditStatus = lockInfo.SupplementAuditStatus a.SupplementAuditMark = lockInfo.SupplementAuditMark a.SupplementAuditMark2 = lockInfo.SupplementAuditMark2 a.CreatedAt = stime.TimeToString(time.Unix(lockInfo.CreatedAt, 0), stime.Format_Normal_YMDhms) a.UpdatedAt = stime.TimeToString(time.Unix(lockInfo.UpdatedAt, 0), stime.Format_Normal_YMDhms) } if profile != nil { a.ArtworkUuid = profile.ArtworkUuid a.ArtistName = profile.ArtistName a.ArtworkName = profile.ArtworkName a.Length = profile.Length a.Width = profile.Width a.Ruler = profile.Ruler a.InscribeDate = profile.InscribeDate a.HdPic = profile.HdPic a.ArtistPhoto = profile.ArtistPhoto a.PriceRun = profile.PriceRun a.Abstract = profile.Abstract a.CreatedDate = profile.CreatedDate a.CreatedAddress = profile.CreatedAddress } if a.ArtistName == "" || a.ArtistName == " " { artistInfo, _ := service.GrpcArtistInfoUserImpl.FindUser(context.Background(), &artistInfoUser.FindUserRequest{ MgmtArtistUid: lockInfo.ArtistUid, IsArtist: true, }) if artistInfo != nil && artistInfo.RealName != nil { a.ArtistName = artistInfo.RealName.Name } } if marketInfo != nil && len(marketInfo) > 0 { for _, v := range marketInfo { switch v.Type { case 0: a.ArtistMarketDetail = v.Detail a.ArtistMarketId1 = v.MarketId case 2: if a.ArtistMarketUrl1 == "" { a.ArtistMarketUrl1 = v.Detail a.ArtistMarketId2 = v.MarketId } else if a.ArtistMarketUrl2 == "" { a.ArtistMarketUrl2 = v.Detail a.ArtistMarketId3 = v.MarketId break } } } } if extDataInfo != nil { a.FirstPublish = extDataInfo.FirstPublish a.IsFirstPublish = utils.If(extDataInfo.FirstPublish == "", false, true).(bool) } return nil } func (a *ArtworkSupplementInfo) ConvertGrpcRequest() (profile *artwork.CreArtProRequest, marketInfo []*artwork.UpdateMInfoRequest, extDataInfo *artwork.UpdateExtDataRequest) { profile = &artwork.CreArtProRequest{ ArtworkUuid: a.ArtworkUuid, ArtistName: a.ArtistName, ArtworkName: a.ArtworkName, Length: a.Length, Width: a.Width, Ruler: a.Ruler, InscribeDate: a.InscribeDate, HdPic: a.HdPic, ArtistPhoto: a.ArtistPhoto, PriceRun: a.PriceRun, CreatedDate: a.CreatedDate, } marketInfo = []*artwork.UpdateMInfoRequest{ { ArtworkUuid: a.ArtworkUuid, Type: 0, Detail: a.ArtistMarketDetail, MarketId: a.ArtistMarketId1, }, { ArtworkUuid: a.ArtworkUuid, Type: 2, Detail: a.ArtistMarketUrl1, MarketId: a.ArtistMarketId2, }, { ArtworkUuid: a.ArtworkUuid, Type: 2, Detail: a.ArtistMarketUrl2, MarketId: a.ArtistMarketId3, }, } extDataInfo = &artwork.UpdateExtDataRequest{ ArtworkUuid: a.ArtworkUuid, FirstPublish: a.FirstPublish, } return } type GetAuditSupplementDataListRequest struct { ArtistUid string `json:"artistUid"` //可选 艺术家id ArtworkName string `json:"artworkName"` //可选 画作名称 AuditStatus int64 `json:"auditStatus"` //可选 审批状态 Page int64 `json:"page"` PageSize int64 `json:"pageSize"` } type AuditSupplement struct { ArtworkUid string `json:"artworkUid"` ArtworkUids []string `json:"artworkUids"` AuditStatus int64 `json:"auditStatus"` // 画作补充信息审核状态 1:待审核/暂存 2:审核通过 3:审核不通过 6驳回 AuditMark string `json:"auditMark" gorm:"column:audit_mark;comment:审核备注"` AuditMark2 string `json:"auditMark2" gorm:"column:audit_mark2;comment:审核备注2"` FlowIndex int64 `json:"flowIndex"` //需要修改的审批流程位置 } func (a AuditSupplement) ConvertGrpcRequest(userAccId uint64, userNickName string) *artistInfoArtwork.UpdateArtworkAuditStatusRequest { return &artistInfoArtwork.UpdateArtworkAuditStatusRequest{ ArtworkUid: a.ArtworkUid, AuditStatus: a.AuditStatus, AuditMark: a.AuditMark, AuditMark2: a.AuditMark2, FlowIndex: a.FlowIndex, ArtworkUids: a.ArtworkUids, ApproverAccid: int32(userAccId), Approver: userNickName, } } // 获取用户端补充信息预览列表请求 type GetSupplementDataListAtUserSideRequest struct { Page int `json:"page"` PageSize int `json:"pageSize"` } type GetSupplementDataListAtBackendSideRequest struct { Page int `json:"page"` PageSize int `json:"pageSize"` ArtistUid string `json:"artistUid"` History bool `json:"history"` SupplementAuditStatus int32 `json:"supplementAuditStatus"` //画作补充信息审核状态 1:暂存 2:待审核 3:审核不通过 4:审核通过 ArtworkName string `json:"artworkName"` SortOrder string `json:"sortOrder"` SortField string `json:"sortField"` } type GenerateSupplementInfoRequest struct { ArtworkUids []string `json:"artworkUids"` } // ArtworkSupplementInfoList 画作补充信息列表 type ArtworkSupplementInfoList []ArtworkSupplementInfo type ArtworkAward struct { AwardTime string `json:"award_time"` //获奖时间(画家宝不需要) AwardContent string `json:"award_content"` //获奖奖项或正文内容 AwardCert string `json:"award_cert"` //获奖图片 AwardLink string `json:"award_link"` //链接地址 } type tmpArtworkAwardResponse struct { ArtistMarketId1 int32 ArtistMarketId2 int32 ArtistMarketId3 int32 ArtistMarketDetail string ArtistMarketUrl1 string ArtistMarketUrl2 string } func ConvertMarketDataToResponse(ArtworkMarkets []*artistInfoArtwork.ArtworkMarketData) (tmp tmpArtworkAwardResponse) { for _, v := range ArtworkMarkets { if v.Detail != "" { if strings.Contains(v.Detail, "{") { var detail ArtworkAward if err := json.Unmarshal([]byte(v.Detail), &detail); err != nil { fmt.Println(err.Error()) continue } if tmp.ArtistMarketId1 == 0 { tmp.ArtistMarketDetail = detail.AwardContent tmp.ArtistMarketUrl1 = detail.AwardCert tmp.ArtistMarketId1 = int32(v.ID) } else if tmp.ArtistMarketId2 == 0 { tmp.ArtistMarketUrl2 = detail.AwardCert tmp.ArtistMarketId2 = int32(v.ID) } } else { //旧版数据处理优化 switch v.Type { case 0: tmp.ArtistMarketDetail = v.Detail tmp.ArtistMarketId1 = int32(v.ID) case 2: if tmp.ArtistMarketUrl1 == "" { tmp.ArtistMarketUrl1 = v.Detail tmp.ArtistMarketId2 = int32(v.ID) } else if tmp.ArtistMarketUrl2 == "" { tmp.ArtistMarketUrl2 = v.Detail tmp.ArtistMarketId3 = int32(v.ID) } } } } } return } type GetViewReviewArtworkListRequest struct { Page int64 `json:"page"` PageSize int64 `json:"pageSize"` artistInfoArtwork.ViewReviewArtworkData SelectColumns []int64 ArtworkUids []string ReviewUpdatedFrom string `json:"reviewUpdatedFrom"` ReviewUpdatedTo string `json:"reviewUpdatedTo"` History bool `json:"history"` } type ExportArtworkReviewListRequest struct { artistInfoArtwork.ViewReviewArtworkData ColumnIds []int64 `json:"columnIds"` //ArtworkUids []string `json:"artworkUids"` ReviewUpdatedFrom string `json:"reviewUpdatedFrom"` ReviewUpdatedTo string `json:"reviewUpdatedTo"` } type ViewReviewArtworkExportData struct { ID int64 `json:"ID"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` DeletedAt int64 `json:"deletedAt"` ReviewStatus string `json:"reviewStatus"` ReviewMark string `json:"reviewMark"` //复审备注 InSource string `json:"inSource"` //导入状态 ArtworkName string `json:"artworkName"` // ArtworkUid string `json:"artworkUid"` // Tfnum string `json:"tfnum"` //画作名 ArtistName string `json:"artistName"` // ArtistUid string `json:"artistUid"` // Tnum string `json:"tnum"` //画家编号 ArtworkType string `json:"artworkType"` // Width int32 `json:"width"` // Length int32 `json:"length"` // Ruler int32 `json:"ruler"` // HdPic string `json:"hdPic"` // ArtistPhoto string `json:"artistPhoto"` // SealPic string `json:"sealPic"` //人名章图 NationalExhibition string `json:"nationalExhibition"` // LockStatus int32 `json:"lockStatus"` // LockTime string `json:"lockTime"` // ReviewMark2 string `json:"reviewMark2"` //复审备注 ReviewUpdatedAt string `json:"reviewUpdatedAt"` //复审操作时间 } type GetViewReviewArtistStaticListRequest struct { Page int64 `json:"page"` PageSize int64 `json:"pageSize"` artistInfoArtwork.ViewReviewArtistStaticData Mode int `json:"mode"` } type GetArtworkBaseAuditHistoryListRequest struct { Page int64 `json:"page"` PageSize int64 `json:"pageSize"` artistInfoArtwork.ArtworkBaseAuditHistoryData } type GetViewArtworkSupplementDetailListRequest struct { artistInfoArtwork.ViewArtworkSupplementDetailData Page int64 `json:"page"` PageSize int64 `json:"pageSize"` History int32 `json:"history"` SupplementAuditStatus int32 `json:"supplementAuditStatus"` //画作补充信息审核状态 1:暂存 2:待审核 3:审核不通过 4:审核通过 SortOrder string `json:"sortOrder"` SortField string `json:"sortField"` } type GetReviewAuditMessageListRequest struct { Page int64 `json:"page"` PageSize int64 `json:"pageSize"` artistInfoArtwork.ReviewAuditMessageData ArtworkName string `json:"artworkName"` ArtistName string `json:"artistName"` Tfnum string `json:"tfnum"` Tnum string `json:"tnum"` ArtistUid string `json:"artistUid"` ArtworkUid string `json:"artworkUid"` }