package approval import ( "context" "dubbo.apache.org/dubbo-go/v3/common/logger" "errors" "fmt" "github.com/fonchain_enterprise/fonchain-main/api/approval" artShow "github.com/fonchain_enterprise/fonchain-main/api/artShow" "github.com/fonchain_enterprise/fonchain-main/api/artist" "github.com/fonchain_enterprise/fonchain-main/api/artwork_third_party" "github.com/fonchain_enterprise/fonchain-main/api/paybill" "github.com/fonchain_enterprise/fonchain-main/pkg/e" "github.com/fonchain_enterprise/fonchain-main/pkg/serializer" "github.com/fonchain_enterprise/fonchain-main/pkg/service" "github.com/gin-gonic/gin" "go.uber.org/zap" "google.golang.org/protobuf/types/known/wrapperspb" "strconv" "time" ) // ExhibitionApproveEnter 画展包审批 func ExhibitionApproveEnter(beforeApproval, afterApproval *approval.CreateRequest) (err error) { if beforeApproval.Status == e.ApprovalWorkStatusDoing && afterApproval.Status == e.ApprovalWorkStatusOk { // 审批通过 通知画展包 以及相关 微服务 logger.Errorf("================================================= %s 3======================================", "进入 画展包审批") err = UpdateArtShowApply(afterApproval) if err != nil { return err } } else if beforeApproval.Status == e.ApprovalWorkStatusDoing && afterApproval.Status == e.ApprovalWorkStatusFail { // 审批驳回 通知画展包 err = CancelArtShowApply(afterApproval) if err != nil { return err } } else if beforeApproval.Status == e.ApprovalWorkStatusRevoking && afterApproval.Status == e.ApprovalWorkStatusFail { // 此审批 为 撤销状态 且 当前审批人 选择的审批状态为 驳回 则 驳回 此撤销审批 err = CancelRevokeArtShowApproval(afterApproval) if err != nil { return err } } return nil } // ExhibitionRewordApproveEnter 画展包润格审批 func ExhibitionRewordApproveEnter(beforeApproval, afterApproval *approval.CreateRequest) (err error) { if beforeApproval.Status == e.ApprovalWorkStatusDoing && afterApproval.Status == e.ApprovalWorkStatusOk { // 审批通过 通知画展包 以及相关 微服务 err = UpdateArtShowReward(afterApproval) if err != nil { return err } } return nil } // ShowUpdateApproveEnter 画展包修改审批 func ShowUpdateApproveEnter(beforeApproval, afterApproval *approval.CreateRequest) (err error) { if beforeApproval.Status == e.ApprovalWorkStatusDoing && afterApproval.Status == e.ApprovalWorkStatusOk { // 审批通过 通知画展包 以及相关 微服务 err = UpdateShowInfo(afterApproval) if err != nil { return err } } return nil } // UpdateArtShowApply 画展包审批通过后 更新画展包信息 func UpdateArtShowApply(afterApproval *approval.CreateRequest) (err error) { logger.Errorf("================================================= %s 4 ======================================", "进入 画展包审批") fmt.Println("============================== 审批之后,查看审批详情 ==============================") fmt.Printf("审批详情:%+v\n", afterApproval) logger.Errorf("审批详情:%+v\n", afterApproval) fmt.Println("============================== 审批之后,查看审批详情 ==============================") fmt.Println() // 获取 创建 show_rel 画展包关联表 的 信息 以及 画展包中 画家的经纪人 信息 now := time.Now() dateStr := now.Format("2006-01-02 15:04:05") showApplyReq := new(artShow.SaveApplyReq) showApplyReq.Rel = make([]*artShow.ShowRel, 0) showDetail := new(artShow.ShowDetailReq) showDetail.ShowUID = make([]string, 0) UpdateArtShowAgentList := make([]*artShow.ArtShowAgent, 0) // 获取 画展包审批中 审批的信息 showApplyReq = &artShow.SaveApplyReq{ ApplyUID: afterApproval.Exhibition.ApplyID, Applicant: afterApproval.SubmitterName, ApplicantID: strconv.FormatUint(afterApproval.SubmitterID, 10), Num: int32(len(afterApproval.Exhibition.ApprovalExhibitions)), ApplyTime: dateStr, Status: int32(afterApproval.Status), } for index, tt := range afterApproval.Exhibition.ApprovalExhibitions { // 组装 show_rel 画展包关联表 数据 temp := &artShow.ShowRel{ ShowUID: tt.PackageID, Index: int32(index + 1), Address: tt.Address, ShowTime: tt.ShowDate, ApplyUID: afterApproval.Exhibition.ApplyID, } showApplyReq.Rel = append(showApplyReq.Rel, temp) // 组装 画展包中 画家的经纪人 信息 UpdateArtShowAgentList = append(UpdateArtShowAgentList, &artShow.ArtShowAgent{ ShowUID: tt.PackageID, Agent: tt.ArtExhibitionDetail.Agent, }) showDetail.ShowUID = append(showDetail.ShowUID, tt.PackageID) } // 获取 画展包 详情 showDetailRes, err := service.GrpcArtShowImpl.ShowDetail(context.Background(), showDetail) if err != nil { return errors.New(e.ErrorQueryArtShowInfo) } // 获取 画展包中 画家 的 荣誉信息 showApplyReq.PricePolicy = make([]*artShow.PricePolicy, 0) for i := 0; i < len(showDetailRes.Data); i++ { if showDetailRes.Data[i].HasFormula == e.HasFormula { policy := new(artShow.PricePolicy) policy.ShowUID = showDetailRes.Data[i].ShowUID policy.ArtistUID = showDetailRes.Data[i].ArtistUID policy.ArtistName = showDetailRes.Data[i].ArtistName policy.Factor = new(artShow.PricePolicyFactor) honorCountReq := new(artist.HonorCountReq) honorCountReq.ArtistUid = showDetailRes.Data[i].ArtistUID honorCountResp, err := service.GrpcArtistImpl.HonorCount(context.Background(), honorCountReq) if err != nil { return errors.New(e.ErrorQueryHonorInfo) } policy.Factor.MeixieYears = float32(honorCountResp.CaaJoinYear) policy.Factor.ExternalExhibitionCount = float32(honorCountResp.Exhibition) policy.Factor.ArtistProfessionalismIndex = float32(honorCountResp.Professionalism) policy.Factor.ArtistCollectibilityIndex = float32(honorCountResp.Collectible) policy.Factor.ArtistExperienceEducationIndex = float32(honorCountResp.Education) policy.Factor.ArtistInfluencePopularityIndex = float32(honorCountResp.Influence) policy.Factor.StudyAbroadExperienceCount = float32(honorCountResp.StudyTourCount) policy.Factor.AwardExperienceCount = float32(honorCountResp.AwardCount) policy.Factor.NationalTitleCount = float32(honorCountResp.NationTitleCount) policy.Factor.ProvincialTitleCount = float32(honorCountResp.ProvinceTitleCount) policy.Factor.OtherTitleCount = float32(honorCountResp.OtherTitleCount) policy.Factor.PublishedPaintingCount = float32(honorCountResp.ArtworkPublishCount) policy.Factor.ExternalExhibitionCount = float32(honorCountResp.OutsidePublishCount) policy.Factor.AcademicPublicationCount = float32(honorCountResp.AcademicPublishCount) policy.Factor.ThirdPartyCuratorComment = float32(honorCountResp.ThirdCommentCount) showApplyReq.PricePolicy = append(showApplyReq.PricePolicy, policy) fmt.Println("================================= policy --------------------------------------") fmt.Printf("policy %+v\n", policy) fmt.Println("================================= policy --------------------------------------") } } //使用邀请函中的数据更新出行信息 defer func() { fmt.Println("passSynToArtShow---8") var showUids []string for _, v := range showDetailRes.Data { showUids = append(showUids, v.ShowUID) } fmt.Println("EntertainmentSetDefaultValue start---showUids:", showUids) if len(showUids) > 0 { go func() { err = EntertainmentSetDefaultValue(showUids...) fmt.Println("EntertainmentSetDefaultValue end---err:", err) if err != nil { zap.L().Error("更新招待数据中的出行信息失败", zap.Error(err)) } }() } }() logger.Errorf("================================================= %s 5 ======================================", "进入 画展包审批") fmt.Println("============================== 画展包审批 ,查看创建详情 ==============================") logger.Errorf("============================== 画展包审批 ,查看创建详情 ==============================") fmt.Printf("画展包审批 创建:%+v\n", showApplyReq) logger.Errorf("画展包审批 创建 :%+v\n", showApplyReq) fmt.Printf("画展包审批 show_rel 创建:%+v\n", showApplyReq.Rel) logger.Errorf("画展包审批 show_rel 创建:%+v\n", showApplyReq.Rel) fmt.Printf("画展包审批 del show_rel 创建:%+v\n", showApplyReq.DelRel) logger.Errorf("画展包审批 del show_rel 创建:%+v\n", showApplyReq.DelRel) fmt.Printf("画展包审批 price_policy 创建:%+v\n", showApplyReq.PricePolicy) logger.Errorf("画展包审批 price_policy 创建:%+v\n", showApplyReq.PricePolicy) fmt.Println("============================== 画展包审批 ,查看创建详情 ==============================") logger.Errorf("============================== 画展包审批 ,查看创建详情 ==============================") fmt.Println() // 更新 画展包审批信息 _, err = service.GrpcArtShowImpl.UpdateApply(context.Background(), showApplyReq) if err != nil { return err } logger.Errorf("================================================= %s 6 ======================================", "进入 画展包审批") // 更新 画展包 经纪人 _, err = service.GrpcArtShowImpl.UpdateArtShowAgent(context.Background(), &artShow.UpdateArtShowAgentReq{Data: UpdateArtShowAgentList}) if err != nil { return err } // 添加 画作销售站点 err = AddSaleAddress(afterApproval) if err != nil { return err } // 通过 rabbitmq 发送 到 画家系统 用于 确认 是否 参加画展 //artistUIDs := make([]string, 0) //for i := 0; i < len(afterApproval.Exhibition.ApprovalExhibitions); i++ { // artistUIDs = append(artistUIDs, afterApproval.Exhibition.ApprovalExhibitions[i].ArtExhibitionDetail.ArtistUID) //} // //bt, err := json.Marshal(&artistUIDs) //fmt.Println("========================== send =====================") //fmt.Printf("send msg to mq : %+v", artistUIDs) //fmt.Println("========================== send =====================") //fmt.Println() //mq.SendToArtShowPass(bt) return nil } // UpdateArtShowReward 画展包润格审批通过后 更新画展包润格信息 func UpdateArtShowReward(afterApproval *approval.CreateRequest) (err error) { var list []*artShow.ArtworkReward var artWorks []*artwork_third_party.UpdateAwInfoReq_Info for _, t := range afterApproval.Exhibition.ApprovalExhibitions { for _, tt := range t.Artworks { temp := &artShow.ArtworkReward{ArtworkPriceUid: tt.ArtworkPriceUID, Reward: tt.Reward} list = append(list, temp) distFloat, err := strconv.ParseFloat(tt.Reward, 32) if err != nil { distFloat = 0 } arwTemp := &artwork_third_party.UpdateAwInfoReq_Info{ArtworkUuid: tt.ArtworkUID, PriceRun: wrapperspb.Float(float32(distFloat))} artWorks = append(artWorks, arwTemp) } } if len(list) <= 0 { return nil } req := &artShow.UpdateArtworkRewardReq{Data: list} fmt.Println("请求", req) res, err := service.GrpcArtShowImpl.UpdateArtworkReward(context.Background(), req) fmt.Println("请求后", res, err) //通知画作 saleReq := &artwork_third_party.UpdateAwInfoReq{Data: artWorks} fmt.Println("画作请求", saleReq) saleRes, err := service.GrpcArtworkThirdPartyImpl.UpdateAwInfo(context.Background(), saleReq) fmt.Println("画作请求后", saleRes, err) return nil } // UpdateShowInfo 画展包修改审批通过后 更新画展包信息 func UpdateShowInfo(afterApproval *approval.CreateRequest) (err error) { updateShowTimeAndAddress := new(artShow.UpdateShowTimeAndAddressReq) updateShowTimeAndAddress.Data = make([]*artShow.ShowTimeAndAddress, 0) payBillUpdateAddress := paybill.UpdateAddressreq{} payBillUpdateAddress.Data = make([]*paybill.UpdateAddressreq_Info, 0) for _, tt := range afterApproval.ExhibitionHis.ApprovalExhibitionHiss { temp := &artShow.ShowTimeAndAddress{ ShowUid: tt.PackageID, Address: tt.Address, ShowTime: tt.ShowDate, } updateShowTimeAndAddress.Data = append(updateShowTimeAndAddress.Data, temp) payBillUpdateAddress.Data = append(payBillUpdateAddress.Data, &paybill.UpdateAddressreq_Info{ ShowUid: tt.PackageID, ShowDate: tt.ShowDate, Address: tt.Address, ApprovalId: strconv.FormatUint(afterApproval.ID, 10), ShowName: tt.PackageName, }) } // 更新 画展包 信息 _, err = service.GrpcArtShowImpl.UpdateShowTimeAndAddress(context.Background(), updateShowTimeAndAddress) if err != nil { return err } // 更新 付款单地址 _, err = service.GrpcPayBillImpl.UpdateAddress(context.Background(), &payBillUpdateAddress) if err != nil { return err } // 修改 画作销售站点 err = UpdateSaleAddress(afterApproval) if err != nil { return err } return nil } // AddSaleAddress 添加画作销售站点 func AddSaleAddress(afterApproval *approval.CreateRequest) (err error) { updateArtworkSaleAddress := new(artShow.UpdateArtworkSaleAddressReq) updateArtworkSaleAddress.Data = make([]*artShow.ArtworkSaleAddress, 0) updateSaleInfoReq := new(artwork_third_party.UpdateAwSaleInfoReq) updateSaleInfoReq.Data = make([]*artwork_third_party.UpdateAwSaleInfoReq_Info, 0) for i := 0; i < len(afterApproval.Exhibition.ApprovalExhibitions); i++ { for j := 0; j < len(afterApproval.Exhibition.ApprovalExhibitions[i].Artworks); j++ { updateArtworkSaleAddress.Data = append(updateArtworkSaleAddress.Data, &artShow.ArtworkSaleAddress{ ArtworkPriceUid: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].ArtworkPriceUID, SaleAddress: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].SaleAddress, }) artworkSaleInfo := &artwork_third_party.UpdateAwSaleInfoReq_Info{ ArtworkUuid: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].ArtworkUID, SaleAddress: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].SaleAddress, } intNum, err := strconv.ParseInt(afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].SaleAddressID, 10, 32) if err != nil { intNum = 0 } artworkSaleInfo.SaleId = int32(intNum) updateSaleInfoReq.Data = append(updateSaleInfoReq.Data, artworkSaleInfo) } } // 更新 artwork_price 画作销售地址 if len(updateArtworkSaleAddress.Data) > 0 { _, err = service.GrpcArtShowImpl.UpdateArtworkSaleAddress(context.Background(), updateArtworkSaleAddress) if err != nil { return errors.New(e.FailedUpdateArtworkPriceSaleAddress) } } // 更新 artwork 画作销售地址 if len(updateSaleInfoReq.Data) > 0 { _, err = service.GrpcArtworkThirdPartyImpl.UpdateAwSaleInfo(context.Background(), updateSaleInfoReq) if err != nil { return errors.New(e.FailedUpdateArtworkSaleAddress) } } return err } // UpdateSaleAddress 更新画作销售站点 func UpdateSaleAddress(afterApproval *approval.CreateRequest) (err error) { updateArtworkSaleAddress := new(artShow.UpdateArtworkSaleAddressReq) updateArtworkSaleAddress.Data = make([]*artShow.ArtworkSaleAddress, 0) updateSaleInfoReq := new(artwork_third_party.UpdateAwSaleInfoReq) updateSaleInfoReq.Data = make([]*artwork_third_party.UpdateAwSaleInfoReq_Info, 0) for i := 0; i < len(afterApproval.ExhibitionHis.ApprovalExhibitionHiss); i++ { for j := 0; j < len(afterApproval.ExhibitionHis.ApprovalExhibitionHiss[i].Artworks); j++ { updateArtworkSaleAddress.Data = append(updateArtworkSaleAddress.Data, &artShow.ArtworkSaleAddress{ ArtworkPriceUid: afterApproval.ExhibitionHis.ApprovalExhibitionHiss[i].Artworks[j].ArtworkPriceUID, SaleAddress: afterApproval.ExhibitionHis.ApprovalExhibitionHiss[i].Artworks[j].SaleAddress, }) artworkSaleInfo := &artwork_third_party.UpdateAwSaleInfoReq_Info{ ArtworkUuid: afterApproval.ExhibitionHis.ApprovalExhibitionHiss[i].Artworks[j].ArtworkUID, SaleAddress: afterApproval.ExhibitionHis.ApprovalExhibitionHiss[i].Artworks[j].SaleAddress, } intNum, err := strconv.ParseInt(afterApproval.ExhibitionHis.ApprovalExhibitionHiss[i].Artworks[j].SaleAddressID, 10, 32) if err != nil { intNum = 0 } artworkSaleInfo.SaleId = int32(intNum) updateSaleInfoReq.Data = append(updateSaleInfoReq.Data, artworkSaleInfo) } } // 更新 artwork_price 画作销售地址 if len(updateArtworkSaleAddress.Data) > 0 { _, err = service.GrpcArtShowImpl.UpdateArtworkSaleAddress(context.Background(), updateArtworkSaleAddress) if err != nil { return errors.New(e.FailedUpdateArtworkPriceSaleAddress) } } // 更新 artwork 画作销售地址 if len(updateSaleInfoReq.Data) > 0 { _, err = service.GrpcArtworkThirdPartyImpl.UpdateAwSaleInfo(context.Background(), updateSaleInfoReq) if err != nil { return errors.New(e.FailedUpdateArtworkSaleAddress) } } return err } // RevokeArtShowApproval 画展包审批撤销 func RevokeArtShowApproval(afterApproval *approval.CreateRequest) (err error) { /*撤销画展包审批*/ revokeReq := new(artShow.RevokeReq) revokeReq.ShowUid = make([]string, 0) for i := 0; i < len(afterApproval.Exhibition.ApprovalExhibitions); i++ { revokeReq.ShowUid = append(revokeReq.ShowUid, afterApproval.Exhibition.ApprovalExhibitions[i].PackageID) } revokeReq.ApplyUid = afterApproval.Exhibition.ApplyID _, err = service.GrpcArtShowImpl.RevokeApply(context.Background(), revokeReq) if err != nil { return err } // 画作系统 更新 销售站点 // 传空值 updateSaleInfoReq := new(artwork_third_party.UpdateAwSaleInfoReq) updateSaleInfoReq.Data = make([]*artwork_third_party.UpdateAwSaleInfoReq_Info, 0) for i := 0; i < len(afterApproval.Exhibition.ApprovalExhibitions); i++ { for j := 0; j < len(afterApproval.Exhibition.ApprovalExhibitions[i].Artworks); j++ { artworkSaleInfo := &artwork_third_party.UpdateAwSaleInfoReq_Info{ ArtworkUuid: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].ArtworkUID, SaleAddress: "", SaleId: 0, } updateSaleInfoReq.Data = append(updateSaleInfoReq.Data, artworkSaleInfo) } } if len(updateSaleInfoReq.Data) > 0 { _, err = service.GrpcArtworkThirdPartyImpl.UpdateAwSaleInfo(context.Background(), updateSaleInfoReq) if err != nil { return errors.New(e.FailedUpdateArtworkSaleAddress) } } return nil } // CancelRevokeArtShowApproval 驳回画展包审批撤销 func CancelRevokeArtShowApproval(afterApproval *approval.CreateRequest) (err error) { /*驳回撤销画展包审批*/ revokeReq := new(artShow.RevokeReq) revokeReq.ShowUid = make([]string, 0) revokeReq.RevokeData = make([]*artShow.RevokeData, 0) for i := 0; i < len(afterApproval.Exhibition.ApprovalExhibitions); i++ { revokeReq.ShowUid = append(revokeReq.ShowUid, afterApproval.Exhibition.ApprovalExhibitions[i].PackageID) for j := 0; j < len(afterApproval.Exhibition.ApprovalExhibitions[i].Artworks); j++ { revokeReq.RevokeData = append(revokeReq.RevokeData, &artShow.RevokeData{ ArtworkPriceUid: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].ArtworkPriceUID, SaleAddress: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].SaleAddress, }) } } revokeReq.ApplyUid = afterApproval.Exhibition.ApplyID _, err = service.GrpcArtShowImpl.OverruleRevoke(context.Background(), revokeReq) if err != nil { return err } // 画作系统 恢复 销售站点 updateSaleInfoReq := new(artwork_third_party.UpdateAwSaleInfoReq) updateSaleInfoReq.Data = make([]*artwork_third_party.UpdateAwSaleInfoReq_Info, 0) for i := 0; i < len(afterApproval.Exhibition.ApprovalExhibitions); i++ { for j := 0; j < len(afterApproval.Exhibition.ApprovalExhibitions[i].Artworks); j++ { artworkSaleInfo := &artwork_third_party.UpdateAwSaleInfoReq_Info{ ArtworkUuid: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].ArtworkUID, SaleAddress: afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].SaleAddress, } intNum, err := strconv.ParseInt(afterApproval.Exhibition.ApprovalExhibitions[i].Artworks[j].SaleAddressID, 10, 32) if err != nil { intNum = 0 } artworkSaleInfo.SaleId = int32(intNum) updateSaleInfoReq.Data = append(updateSaleInfoReq.Data, artworkSaleInfo) } } if len(updateSaleInfoReq.Data) > 0 { _, err = service.GrpcArtworkThirdPartyImpl.UpdateAwSaleInfo(context.Background(), updateSaleInfoReq) if err != nil { return errors.New(e.FailedUpdateArtworkSaleAddress) } } return nil } // RevokeRewordApproval 画展包润格审批撤销 func RevokeRewordApproval(detail *approval.CreateRequest) (err error) { //TODO // 撤销画展包润格审批 return nil } // CancelArtShowApply 驳回画展包审批 func CancelArtShowApply(detail *approval.CreateRequest) error { fmt.Println("取消画展包", detail) if detail.Exhibition == nil { return nil } if detail.Exhibition.ApplyID == "" { return nil } delReq := artShow.DelApplyReq{ApplyUID: []string{detail.Exhibition.ApplyID}} fmt.Println("取消画展包:req", delReq) r, err := service.GrpcArtShowImpl.DelApply(context.Background(), &delReq) fmt.Println("取消画展包:res", r, err) return err } func ArtShowApprovalList(c *gin.Context) { req := new(approval.ArtShowApprovalListReq) if err := c.ShouldBind(req); err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } if req.ShowUid == "" { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: e.ErrorShowUidIsEmpty, Status: e.Failed, }) return } res, err := service.ApprovalProvider.ListApprovalByShowUID(context.Background(), req) if err != nil { service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Msg: err.Error(), Status: e.Failed, }) return } fmt.Println("============================== 画展包审批列表 ==============================") fmt.Printf("画展包审批列表:%+v\n", res) fmt.Println("============================== 画展包审批列表 ==============================") fmt.Println() service.ResponseMsg(c, e.SUCCESS, serializer.Response{ Data: res.Data, Status: e.Ok, }) }