// Package asContract ----------------------------- // @file : check.go // @author : JJXu // @contact : wavingbear@163.com // @time : 2024/9/26 上午11:09 // ------------------------------------------- package asContract import ( "context" "errors" "fmt" art_show "github.com/fonchain_enterprise/fonchain-main/api/artShow" "github.com/fonchain_enterprise/fonchain-main/api/artistInfoContract" "github.com/fonchain_enterprise/fonchain-main/api/artwork_query" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/fonchain_enterprise/fonchain-main/pkg/utils" "strings" ) func (req *BatchCreateContractRequest) Validate() error { c := context.Background() // ------------------------------------------------校验------------------------------------------------ if len(req.ArtworkUids) == 0 { return errors.New("请选择画作") } if utils.Contains(req.ContractType, artistInfoContract.ContractType_CopyrightAgencyAppendix) { //类型2自动携带附表 return errors.New(fmt.Sprintf("%s不支持批量生成", artistInfoContract.ContractType_CopyrightAgencyAppendix.Value())) } if utils.Contains(req.ContractType, artistInfoContract.ContractType_PropertyReconciliation) { return errors.New(fmt.Sprintf("%s不支持批量生成", artistInfoContract.ContractType_PropertyReconciliation.Value())) } if utils.Contains(req.ContractType, artistInfoContract.ContractType_CopyrightReconciliation) { return errors.New(fmt.Sprintf("%s不支持批量生成", artistInfoContract.ContractType_CopyrightReconciliation.Value())) } //画作没有底价则报错 artworkPriceList, err := service.GrpcArtShowImpl.GetArtworkPriceList(c, &art_show.GetArtworkPriceListRequest{ Page: 1, PageSize: -1, ArtworkUidIn: req.ArtworkUids, }) if err != nil { return fmt.Errorf("画作底价查询失败:%s", err.Error()) } if artworkPriceList.Total == 0 { return errors.New("你选择的所有画作都没有底价,请生成后再试!") } var lostArtworkPriceUids []string for _, artworkUid := range req.ArtworkUids { var found bool for _, vv := range artworkPriceList.List { if vv.ArtworkUID == artworkUid { found = true if vv.ArtworkPrice == 0 { lostArtworkPriceUids = append(lostArtworkPriceUids, artworkUid) } break } } if !found { lostArtworkPriceUids = append(lostArtworkPriceUids, artworkUid) } } if len(lostArtworkPriceUids) > 0 { //查询丢失平尺数底价的画作名称和编号并返回报错 var message = "生成失败,以下画作没有平尺数底价: " var list *artwork_query.GetArtworkProfileListResp list, err = service.GrpcArtworkQueryImpl.GetArtworkProfileList(c, &artwork_query.GetArtworkProfileListRequest{ Page: 1, PageSize: -1, Where: fmt.Sprintf("uuid in (%s)", "\""+strings.Join(lostArtworkPriceUids, ",\"")+"\""), }) if err != nil { return errors.New("查询画作信息失败,请稍再试!") } for i, v := range list.List { message += fmt.Sprintf("%s[%s]", v.Name, v.Tfnum) if i+1 < int(list.Total) { message += "," } } return errors.New(message) } //检测画作是否有版权哈希 copyrightListRes, copyErr := service.GrpcArtworkQueryImpl.GetArtworkCopyrightList(c, &artwork_query.GetArtworkCopyrightListRequest{ Where: fmt.Sprintf("artwork_uuid in (%s)", "'"+strings.Join(req.ArtworkUids, "','")+"'"), Page: 1, PageSize: -1, }) if copyErr != nil { return errors.New("获取画作版权失败,请稍后再试!") } if copyrightListRes.Total == 0 { return errors.New("你选择的所有画作都没有版权哈希,请生成后再试!") } var lostCopyrightArtworkUidList []string for _, thisArtworkUid := range req.ArtworkUids { found := false for _, thisCopy := range copyrightListRes.List { if thisCopy.ArtworkUuid == thisArtworkUid { found = true if thisCopy.Number == "" { lostCopyrightArtworkUidList = append(lostCopyrightArtworkUidList, thisCopy.ArtworkUuid) } } } if !found { lostCopyrightArtworkUidList = append(lostCopyrightArtworkUidList, thisArtworkUid) } } if len(lostCopyrightArtworkUidList) > 0 { var message = "生成失败,以下画作没有版权哈希: " lostCopyArtworkRes, _ := service.GrpcArtworkQueryImpl.GetArtworkProfileList(c, &artwork_query.GetArtworkProfileListRequest{ Where: fmt.Sprintf("uuid in (%s)", "'"+strings.Join(lostCopyrightArtworkUidList, "','")+"'"), PageSize: int64(len(lostCopyrightArtworkUidList)), Page: 1, }) var tfNumList []string for _, thisArtwork := range lostCopyArtworkRes.List { tfNumList = append(tfNumList, thisArtwork.Tfnum) } for i, v := range lostCopyArtworkRes.List { message += fmt.Sprintf("%s[%s]", v.Name, v.Tfnum) if i+1 < int(lostCopyArtworkRes.Total) { message += "," } } return errors.New(fmt.Sprintf("合同生成失败,这些画作没有版权哈希[%s]", strings.Join(tfNumList, ","))) } return nil }