package service import ( "fonchain-artshow/cmd/dao" "fonchain-artshow/cmd/model" "fonchain-artshow/pb/test" "fonchain-artshow/pkg/db" "fonchain-artshow/pkg/m" "fonchain-artshow/pkg/serializer" "fonchain-artshow/pkg/utils" ) func CreateArtShowWithArtworkPrice(in *test.SaveShowReq) (err error, showID uint) { artShowM := serializer.BuildArtShowM(in) tx := db.DbArtShow.Begin() err = dao.SaveArtShow(tx, artShowM) if err != nil { tx.Rollback() return } artworks := serializer.BuildShowArtworkM(in.ShowArtwork, artShowM.ID) err, artworks = serializer.CalcPrice(artworks, artShowM.Ruler, artShowM.Price) if err != nil { return } err, artworks = serializer.CalcReward(artworks, artShowM.Reward) if err != nil { return } err, _ = dao.SaveArtworkPrice(tx, artworks) if err != nil { tx.Rollback() return } err = tx.Commit().Error return err, artShowM.ID } func UpdateArtShowWithArtworkPrice(in *test.SaveShowReq) (err error, showID uint) { err, artShowExist := dao.QueryArtShow(uint(in.ID)) if err != nil { return } err, artworkPrices := dao.ArtworkPriceList(artShowExist.ID) if err != nil { return } tx := db.DbArtShow.Begin() artShowM := serializer.BuildArtShowM(in) // 构建画展包数据 artworks := make([]*model.ArtworkPrice, 0) if len(in.ShowArtwork) < 1 && (in.Price != 0 || in.Reward != 0) { artworks = artworkPrices } else { artworks = serializer.BuildShowArtworkM(in.ShowArtwork, uint(in.ID)) } if len(artworks) > 0 { if in.Price != 0 { err, artworks = serializer.CalcPrice(artworks, artShowM.Ruler, artShowM.Price) if err != nil { return } } if in.Reward != 0 { err, artworks = serializer.CalcReward(artworks, artShowM.Reward) if err != nil { return } } // 更新画作价格 err, newIDs := dao.SaveArtworkPrice(tx, artworks) if err != nil { tx.Rollback() return err, 0 } // 删除旧画作 _, del, _ := utils.BeUniqueSlice_uint(serializer.BuildArtworkPriceIDs(artworkPrices), newIDs) if len(del) > 0 { err = dao.DelArtworkPrice(tx, del) if err != nil { tx.Rollback() return err, 0 } } } // 更新画展包 err = dao.SaveArtShow(tx, artShowM) if err != nil { tx.Rollback() return } err = tx.Commit().Error return err, artShowM.ID } func DelArtShow(in *test.DelShowReq) (err error) { err = dao.DelArtShow(in) if err != nil { return } // 暂不处理 画展包里的 画作 return } func ArtShowList(in *test.ShowListReq) (err error, out *test.ShowListRes) { out = new(test.ShowListRes) artShows := make([]*model.ArtShow, 0) err, out.Total, artShows = dao.ArtShowList(in) if err != nil { return } err, out.TotalArtistNum, out.TotalPackageNum = dao.ShowStatistical(m.ARTSHOW_PASS) if err != nil { return } out.Data = serializer.BuildArtShowListRes(artShows) return } func ShowInfo(in *test.ShowDetailReq) (err error, out *test.ShowArtworkDetailRes) { out = new(test.ShowArtworkDetailRes) artworkPriceS := make([]*model.ArtworkPrice, 0) err, artworkPriceS = dao.ArtworkPriceList(uint(in.ShowID)) if err != nil { return } out.Data = serializer.BuildShowArtworkRpc(artworkPriceS) return } func ArtShowListWithApply(in *test.ShowListReq) (err error, out *test.ShowListRes) { out = new(test.ShowListRes) artShows := make([]*model.ArtShow, 0) err, out.Total, artShows = dao.ArtShowListByApplyStatus(in) err, out.TotalArtistNum, out.TotalPackageNum = dao.ShowStatistical(m.ARTSHOW_PASS) if err != nil { return } out.Data = serializer.BuildArtShowListRes(artShows) return } func ShowStatisticalInfo(in *test.ShowStatisticalInfoReq) (err error, out *test.ShowStatisticalInfoRes_Num) { out = new(test.ShowStatisticalInfoRes_Num) err, out.ArtistNum, out.PackageNum = dao.ShowStatistical(in.IsShow) if err != nil { return } return }