You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

253 lines
6.4 KiB
Go

2 years ago
package service
import (
2 years ago
"errors"
2 years ago
"fonchain-artshow/cmd/dao"
"fonchain-artshow/cmd/model"
2 years ago
"fonchain-artshow/pb/artShow"
2 years ago
"fonchain-artshow/pkg/db"
"fonchain-artshow/pkg/m"
"fonchain-artshow/pkg/serializer"
)
2 years ago
// 创建 画展包 及 关联画作
func CreateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID string) {
2 years ago
artShowM := serializer.BuildArtShowM(in)
2 years ago
out, err := dao.UniqueShowName(in.ShowName)
if err != nil {
return err, ""
}
if out.ShowUID != "" {
return errors.New(m.ERROR_SHOW_EXIST), ""
}
2 years ago
tx := db.DbArtShow.Begin()
err = dao.SaveArtShow(tx, artShowM)
if err != nil {
tx.Rollback()
return
}
if len(in.Artwork) > 0 {
artworks := serializer.BuildShowArtworkM(in.Artwork, artShowM.ShowUID)
if in.Price > 0 && in.Ruler > 0 {
artworks = serializer.CalcPrice(artShowM.Price, artShowM.Ruler, artworks)
2 years ago
}
2 years ago
for i := 0; i < len(artworks); i++ {
err = dao.SaveArtworkPrice(tx, artworks[i])
if err != nil {
tx.Rollback()
2 years ago
return errors.New(m.ERROR_ARTWORK_CREATE), ""
2 years ago
}
2 years ago
}
2 years ago
}
err = tx.Commit().Error
2 years ago
return err, artShowM.ShowUID
2 years ago
}
2 years ago
// 更新 画展包 及 关联画作
func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID string) {
tx := db.DbArtShow.Begin()
artShowM := serializer.BuildArtShowM(in) // 构建画展包数据
artworks := make([]*model.ArtworkPrice, 0)
2 years ago
2 years ago
// 查询是否已有画作存在
2 years ago
/*err, artworkPrices := dao.ArtworkPriceList(in.ShowUID)
2 years ago
if err != nil {
return
}
2 years ago
fmt.Println("artworkPrices ==== ", artworkPrices)
2 years ago
if len(artworkPrices) > 0 {
artworks = append(artworks, artworkPrices...)
2 years ago
}*/
2 years ago
2 years ago
// 判断是否有新增画作
if len(in.Artwork) > 0 {
2 years ago
for i := 0; i < len(in.Artwork); i++ {
if in.Artwork[i].ArtworkPriceUID != "" {
queryErr, oldArtwork := dao.QueryArtworkPrice_uid(in.Artwork[i].ArtworkPriceUID)
if queryErr != nil {
return queryErr, ""
}
artworks = append(artworks, oldArtwork)
//fmt.Println("artworkPrices ==== ", oldArtwork)
} else {
newArtwork := serializer.BuildShowArtwork(in.Artwork[i], in.ShowUID)
artworks = append(artworks, newArtwork)
//fmt.Println("artworkPrices ==== ", newArtwork)
}
}
2 years ago
}
2 years ago
// 更新 画作
2 years ago
if len(artworks) > 0 {
if in.Price > 0 && in.Ruler > 0 {
2 years ago
artworks = serializer.CalcPrice(artShowM.Price, artShowM.Ruler, artworks)
2 years ago
}
2 years ago
for i := 0; i < len(artworks); i++ {
if artworks[i].ArtworkPriceUID != "" {
// 更新画作价格
err := dao.UpdateArtworkPrice(tx, artworks[i])
if err != nil {
tx.Rollback()
return err, ""
}
} else {
err = dao.SaveArtworkPrice(tx, artworks[i])
if err != nil {
tx.Rollback()
return err, ""
}
}
}
}
// 删除旧画作
if len(in.DelArtwork) > 0 {
2 years ago
del := make([]string, 0)
for i := 0; i < len(in.DelArtwork); i++ {
del = append(del, in.DelArtwork[i].ArtworkPriceUID)
2 years ago
}
err = dao.DelArtworkPrice(tx, del)
2 years ago
if err != nil {
tx.Rollback()
2 years ago
return err, ""
2 years ago
}
}
2 years ago
2 years ago
// 更新画展包
2 years ago
err = dao.UpdateArtShow(tx, artShowM)
2 years ago
if err != nil {
tx.Rollback()
return
}
err = tx.Commit().Error
2 years ago
return err, artShowM.ShowUID
2 years ago
}
2 years ago
// 删除画展包
2 years ago
func DelArtShow(in *artShow.DelShowReq) (err error) {
2 years ago
queryShowErr, shows := dao.QueryArtShow(in.ShowUID)
if queryShowErr != nil {
return queryShowErr
}
2 years ago
tx := db.DbArtShow.Begin()
2 years ago
for i := 0; i < len(shows); i++ {
if shows[i].IsShow != m.ARTSHOW_SHOWING {
2 years ago
delArtShowErr := dao.DelArtShow(tx, in.ShowUID[i])
2 years ago
if err != nil {
tx.Rollback()
return delArtShowErr
}
2 years ago
delArtworkPriceErr := dao.DelArtworkPrice_showUID(tx, in.ShowUID[i])
2 years ago
if err != nil {
tx.Rollback()
return delArtworkPriceErr
}
2 years ago
} else {
2 years ago
tx.Rollback()
return errors.New("存在画展包被使用,无法删除")
}
2 years ago
}
2 years ago
err = tx.Commit().Error
2 years ago
return
}
2 years ago
// 画展包列表 不携带 画展地址 画展时间
2 years ago
func ArtShowList(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) {
out = new(artShow.ShowListRes)
artShows := make([]*model.ArtShowRes, 0)
2 years ago
err, out.Total, artShows = dao.ArtShowList(in)
if err != nil {
return
}
2 years ago
err, out.TotalArtistNum, out.TotalPackageNum, _, _, _ = dao.ShowStatistical(m.ARTSHOW_PASS)
2 years ago
if err != nil {
return
}
out.Data = serializer.BuildArtShowListRes(artShows)
return
}
2 years ago
// 画展包列表 携带 画展地址 画展时间
func ArtShowListWithRel(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) {
out = new(artShow.ShowListRes)
artShows := make([]*model.ArtShowRes, 0)
err, out.Total, artShows = dao.ArtShowListWithRel(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
}
2 years ago
// 画展包关联画作信息
2 years ago
func ShowArtworkInfo(in *artShow.ArtworkDetailReq) (err error, out *artShow.ShowArtworkDetailRes) {
2 years ago
out = new(artShow.ShowArtworkDetailRes)
2 years ago
artworkPriceS := make([]*model.ArtworkPrice, 0)
2 years ago
err, artworkPriceS = dao.ArtworkPriceList(in.ShowUID)
2 years ago
if err != nil {
return
}
out.Data = serializer.BuildShowArtworkRpc(artworkPriceS)
return
}
2 years ago
// 画展包详情
2 years ago
func ShowDetail(in *artShow.ShowDetailReq) (err error, out *artShow.ShowDetailRes) {
out = new(artShow.ShowDetailRes)
2 years ago
shows := make([]*model.ArtShowRes, 0)
err, shows = dao.QueryArtShow(in.ShowUID)
2 years ago
if err != nil {
return
}
2 years ago
out.Data = serializer.BuildArtShowListRes(shows)
2 years ago
return
}
2 years ago
func ArtShowListWithApply(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) {
out = new(artShow.ShowListRes)
artShows := make([]*model.ArtShowRes, 0)
2 years ago
err, out.Total, artShows = dao.ArtShowListByApplyStatus(in)
2 years ago
err, out.TotalArtistNum, out.TotalPackageNum, _, _, _ = dao.ShowStatistical(m.ARTSHOW_PASS)
2 years ago
if err != nil {
return
}
out.Data = serializer.BuildArtShowListRes(artShows)
return
}
2 years ago
func ShowStatisticalInfo(in *artShow.ShowStatisticalInfoReq) (err error, out *artShow.ShowStatisticalInfoRes_Num) {
out = new(artShow.ShowStatisticalInfoRes_Num)
2 years ago
err, out.ArtistNum, out.PackageNum, out.TotalNum, out.NotShowNum, out.ShowHisNum = dao.ShowStatistical(in.IsShow)
2 years ago
if err != nil {
return
}
return
}
func QueryArtShowForArtwork(in *artShow.ShowListForArtworkReq) (err error, out *artShow.ShowListForArtworkRes) {
out = new(artShow.ShowListForArtworkRes)
err, total, shows := dao.QueryArtShowForArtwork(in)
if err != nil {
return err, out
}
if len(shows) > 0 {
out.Total = total
out.Data = serializer.BuildArtShowListRes(shows)
}
return
}