2022-09-21 06:30:52 +00:00
|
|
|
|
package service
|
|
|
|
|
|
|
|
|
|
import (
|
2022-10-27 08:06:36 +00:00
|
|
|
|
"errors"
|
2022-09-21 06:30:52 +00:00
|
|
|
|
"fonchain-artshow/cmd/dao"
|
|
|
|
|
"fonchain-artshow/cmd/model"
|
2022-09-22 06:23:56 +00:00
|
|
|
|
"fonchain-artshow/pb/artShow"
|
2022-09-21 06:30:52 +00:00
|
|
|
|
"fonchain-artshow/pkg/db"
|
|
|
|
|
"fonchain-artshow/pkg/m"
|
|
|
|
|
"fonchain-artshow/pkg/serializer"
|
|
|
|
|
)
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 创建 画展包 及 关联画作
|
|
|
|
|
func CreateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID string) {
|
2022-09-21 06:30:52 +00:00
|
|
|
|
artShowM := serializer.BuildArtShowM(in)
|
|
|
|
|
|
2023-02-24 08:03:06 +00:00
|
|
|
|
out, err := dao.UniqueShowName(in.ShowName)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return err, ""
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if out.ShowUID != "" {
|
|
|
|
|
return errors.New(m.ERROR_SHOW_EXIST), ""
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-21 06:30:52 +00:00
|
|
|
|
tx := db.DbArtShow.Begin()
|
|
|
|
|
|
|
|
|
|
err = dao.SaveArtShow(tx, artShowM)
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-30 03:01:14 +00:00
|
|
|
|
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)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
}
|
2022-11-11 05:13:19 +00:00
|
|
|
|
for i := 0; i < len(artworks); i++ {
|
|
|
|
|
err = dao.SaveArtworkPrice(tx, artworks[i])
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
2023-02-24 08:03:06 +00:00
|
|
|
|
return errors.New(m.ERROR_ARTWORK_CREATE), ""
|
2022-11-11 05:13:19 +00:00
|
|
|
|
}
|
2022-10-27 08:06:36 +00:00
|
|
|
|
}
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = tx.Commit().Error
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
return err, artShowM.ShowUID
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 更新 画展包 及 关联画作
|
|
|
|
|
func UpdateArtShowWithArtworkPrice(in *artShow.SaveShowReq) (err error, showUID string) {
|
|
|
|
|
tx := db.DbArtShow.Begin()
|
|
|
|
|
artShowM := serializer.BuildArtShowM(in) // 构建画展包数据
|
|
|
|
|
artworks := make([]*model.ArtworkPrice, 0)
|
2022-09-22 06:23:56 +00:00
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 查询是否已有画作存在
|
2023-02-24 08:03:06 +00:00
|
|
|
|
/*err, artworkPrices := dao.ArtworkPriceList(in.ShowUID)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-02-10 08:39:54 +00:00
|
|
|
|
fmt.Println("artworkPrices ==== ", artworkPrices)
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
if len(artworkPrices) > 0 {
|
|
|
|
|
artworks = append(artworks, artworkPrices...)
|
2023-02-24 08:03:06 +00:00
|
|
|
|
}*/
|
2022-09-21 06:30:52 +00:00
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 判断是否有新增画作
|
2022-11-30 03:01:14 +00:00
|
|
|
|
if len(in.Artwork) > 0 {
|
2023-02-24 08:03:06 +00:00
|
|
|
|
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)
|
|
|
|
|
}
|
|
|
|
|
}
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 更新 画作
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if len(artworks) > 0 {
|
2022-11-30 03:01:14 +00:00
|
|
|
|
if in.Price > 0 && in.Ruler > 0 {
|
2022-10-27 08:06:36 +00:00
|
|
|
|
artworks = serializer.CalcPrice(artShowM.Price, artShowM.Ruler, artworks)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
2022-11-11 05:13:19 +00:00
|
|
|
|
|
|
|
|
|
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, ""
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 删除旧画作
|
2022-11-30 03:01:14 +00:00
|
|
|
|
if len(in.DelArtwork) > 0 {
|
2022-11-11 05:13:19 +00:00
|
|
|
|
del := make([]string, 0)
|
2022-11-30 03:01:14 +00:00
|
|
|
|
for i := 0; i < len(in.DelArtwork); i++ {
|
|
|
|
|
del = append(del, in.DelArtwork[i].ArtworkPriceUID)
|
2022-11-11 05:13:19 +00:00
|
|
|
|
}
|
|
|
|
|
err = dao.DelArtworkPrice(tx, del)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
2022-11-11 05:13:19 +00:00
|
|
|
|
return err, ""
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
|
|
|
|
}
|
2022-09-22 06:23:56 +00:00
|
|
|
|
|
2022-09-21 06:30:52 +00:00
|
|
|
|
// 更新画展包
|
2022-11-11 05:13:19 +00:00
|
|
|
|
err = dao.UpdateArtShow(tx, artShowM)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
err = tx.Commit().Error
|
2022-11-11 05:13:19 +00:00
|
|
|
|
return err, artShowM.ShowUID
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 删除画展包
|
2022-09-22 06:23:56 +00:00
|
|
|
|
func DelArtShow(in *artShow.DelShowReq) (err error) {
|
2023-02-10 08:39:54 +00:00
|
|
|
|
queryShowErr, shows := dao.QueryArtShow(in.ShowUID)
|
|
|
|
|
if queryShowErr != nil {
|
|
|
|
|
return queryShowErr
|
|
|
|
|
}
|
2022-10-27 08:06:36 +00:00
|
|
|
|
tx := db.DbArtShow.Begin()
|
2023-02-10 08:39:54 +00:00
|
|
|
|
for i := 0; i < len(shows); i++ {
|
2023-03-30 00:58:03 +00:00
|
|
|
|
if shows[i].IsShow < m.ARTSHOW_SALE_ADDRESS_PASS {
|
2023-03-16 03:47:00 +00:00
|
|
|
|
delArtShowErr := dao.DelArtShow(tx, shows[i].ShowUID)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return delArtShowErr
|
|
|
|
|
}
|
2023-03-16 03:47:00 +00:00
|
|
|
|
delArtworkPriceErr := dao.DelArtworkPrice_showUID(tx, shows[i].ShowUID)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return delArtworkPriceErr
|
|
|
|
|
}
|
2023-02-10 08:39:54 +00:00
|
|
|
|
} else {
|
2022-10-27 08:06:36 +00:00
|
|
|
|
tx.Rollback()
|
|
|
|
|
return errors.New("存在画展包被使用,无法删除")
|
|
|
|
|
}
|
2022-09-21 06:30:52 +00:00
|
|
|
|
}
|
2022-10-27 08:06:36 +00:00
|
|
|
|
err = tx.Commit().Error
|
2022-09-21 06:30:52 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-31 09:14:18 +00:00
|
|
|
|
// 画展包列表 不携带 画展地址 画展时间
|
2022-09-22 06:23:56 +00:00
|
|
|
|
func ArtShowList(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) {
|
|
|
|
|
out = new(artShow.ShowListRes)
|
2022-11-30 03:01:14 +00:00
|
|
|
|
artShows := make([]*model.ArtShowRes, 0)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
err, out.Total, artShows = dao.ArtShowList(in)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
2022-10-27 08:06:36 +00:00
|
|
|
|
err, out.TotalArtistNum, out.TotalPackageNum, _, _, _ = dao.ShowStatistical(m.ARTSHOW_PASS)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
out.Data = serializer.BuildArtShowListRes(artShows)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2023-01-31 09:14:18 +00:00
|
|
|
|
// 画展包列表 携带 画展地址 画展时间
|
|
|
|
|
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
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 画展包关联画作信息
|
2023-02-10 08:39:54 +00:00
|
|
|
|
func ShowArtworkInfo(in *artShow.ArtworkDetailReq) (err error, out *artShow.ShowArtworkDetailRes) {
|
2022-09-22 06:23:56 +00:00
|
|
|
|
out = new(artShow.ShowArtworkDetailRes)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
artworkPriceS := make([]*model.ArtworkPrice, 0)
|
2022-11-11 05:13:19 +00:00
|
|
|
|
err, artworkPriceS = dao.ArtworkPriceList(in.ShowUID)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-03-30 00:58:03 +00:00
|
|
|
|
out.Data = serializer.BuildShowArtworkListRpc(artworkPriceS)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2022-11-11 05:13:19 +00:00
|
|
|
|
// 画展包详情
|
2022-10-27 08:06:36 +00:00
|
|
|
|
func ShowDetail(in *artShow.ShowDetailReq) (err error, out *artShow.ShowDetailRes) {
|
|
|
|
|
out = new(artShow.ShowDetailRes)
|
2023-02-10 08:39:54 +00:00
|
|
|
|
shows := make([]*model.ArtShowRes, 0)
|
2023-03-16 03:47:00 +00:00
|
|
|
|
err, shows = dao.ShowRelDetail(in)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
2023-02-10 08:39:54 +00:00
|
|
|
|
out.Data = serializer.BuildArtShowListRes(shows)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-22 06:23:56 +00:00
|
|
|
|
func ArtShowListWithApply(in *artShow.ShowListReq) (err error, out *artShow.ShowListRes) {
|
|
|
|
|
out = new(artShow.ShowListRes)
|
2022-11-30 03:01:14 +00:00
|
|
|
|
artShows := make([]*model.ArtShowRes, 0)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
err, out.Total, artShows = dao.ArtShowListByApplyStatus(in)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
err, out.TotalArtistNum, out.TotalPackageNum, _, _, _ = dao.ShowStatistical(m.ARTSHOW_PASS)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
out.Data = serializer.BuildArtShowListRes(artShows)
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
2022-09-22 06:23:56 +00:00
|
|
|
|
func ShowStatisticalInfo(in *artShow.ShowStatisticalInfoReq) (err error, out *artShow.ShowStatisticalInfoRes_Num) {
|
|
|
|
|
out = new(artShow.ShowStatisticalInfoRes_Num)
|
2022-10-27 08:06:36 +00:00
|
|
|
|
err, out.ArtistNum, out.PackageNum, out.TotalNum, out.NotShowNum, out.ShowHisNum = dao.ShowStatistical(in.IsShow)
|
2022-09-21 06:30:52 +00:00
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
return
|
|
|
|
|
}
|
2022-11-30 03:01:14 +00:00
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|
}
|
2023-03-30 00:58:03 +00:00
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
1、取消画展包 展出 , 状态 回退 到 2 (画展包可出展状态)
|
|
|
|
|
TODO
|
|
|
|
|
2、未做当前 画展包 状态检查 待确认 何种状态下 可以取消 (在 客户端 调用 画作系统 ,判断 画展包是否已 出库)
|
|
|
|
|
*/
|
|
|
|
|
func CancelShow(in *artShow.CancelShowReq) (err error) {
|
|
|
|
|
// 不删除 画展的画展包数量申请
|
|
|
|
|
tx := db.DbArtShow.Begin()
|
|
|
|
|
|
|
|
|
|
for i := 0; i < len(in.ShowUID); i++ {
|
|
|
|
|
// 删除 关联表
|
|
|
|
|
err = dao.DelShowReWithShowUID(tx, in.ShowUID[i])
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
// 更新 画展包状态 为 可展
|
|
|
|
|
show := serializer.BuildArtShowIsShowM(in.ShowUID[i], m.ARTSHOW_PASS)
|
|
|
|
|
err = dao.UpdateArtShow(tx, show)
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
// 删除相关 数据 (画作润格, 画作销售站点)
|
|
|
|
|
err = dao.UpdateArtworkInfoWithMap(tx, map[string]interface{}{"reward": "", "sale_address": ""}, in.ShowUID[i], "")
|
|
|
|
|
if err != nil {
|
|
|
|
|
tx.Rollback()
|
|
|
|
|
return err
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
err = tx.Commit().Error
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func QueryShowStatus(in *artShow.ShowStatusReq) (err error, out *artShow.ShowStatusRes) {
|
|
|
|
|
err, shows := dao.QueryArtShow(in.ShowUID)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
out = new(artShow.ShowStatusRes)
|
|
|
|
|
out.Status = serializer.BuildShowStatusRpc(shows)
|
|
|
|
|
return
|
|
|
|
|
}
|