2022-09-21 06:30:52 +00:00
package dao
import (
"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"
"go.uber.org/zap"
"gorm.io/gorm"
2022-10-27 08:06:36 +00:00
"log"
2022-09-21 06:30:52 +00:00
)
func SaveArtShow ( tx * gorm . DB , artShow * model . ArtShow ) ( err error ) {
if artShow . ID != uint ( 0 ) {
2022-10-27 08:06:36 +00:00
err = tx . Model ( & model . ArtShow { } ) . Omit ( "id" ) . Where ( "id = ?" , artShow . ID ) . Updates ( artShow ) . Error
2022-09-21 06:30:52 +00:00
} else {
2022-10-27 08:06:36 +00:00
err = tx . Model ( & model . ArtShow { } ) . Create ( & artShow ) . Error
2022-09-21 06:30:52 +00:00
}
if err != nil {
zap . L ( ) . Error ( "ArtShow err" , zap . Error ( err ) )
return
}
return
}
2022-09-22 06:23:56 +00:00
func ArtShowList ( in * artShow . ShowListReq ) ( err error , total int64 , out [ ] * model . ArtShow ) {
2022-09-21 06:30:52 +00:00
queryDB := db . DbArtShow . Model ( & model . ArtShow { } )
if in . ArtistID != "" {
queryDB = queryDB . Where ( "artist_id = ? " , in . ArtistID )
}
if in . StartTime != "" && in . EndTime != "" {
queryDB = queryDB . Where ( "convert(show_time, date) between ? and ?" , in . StartTime , in . EndTime )
}
2022-09-28 06:58:19 +00:00
if in . IsShow != 0 {
queryDB = queryDB . Where ( "is_show = ?" , in . IsShow )
}
2022-09-21 06:30:52 +00:00
err = queryDB . Count ( & total ) . Error
if err != nil {
zap . L ( ) . Error ( "ArtShowList Count err" , zap . Error ( err ) )
return
}
out = make ( [ ] * model . ArtShow , 0 )
err = queryDB . Offset ( int ( ( in . Page - 1 ) * in . PageSize ) ) .
Limit ( int ( in . PageSize ) ) . Find ( & out ) . Error
if err != nil {
zap . L ( ) . Error ( "ArtShowList Find err" , zap . Error ( err ) )
return
}
return
}
func ArtShowList_apply ( applyID uint ) ( err error , out [ ] * model . ArtShow ) {
out = make ( [ ] * model . ArtShow , 0 )
2022-09-22 06:23:56 +00:00
err = db . DbArtShow . Table ( "art_show as a " ) . Select ( "a.*" ) . Distinct ( "a.id" ) . Joins ( " right join show_rel as b on a.id = b.show_id" ) . Where ( "b.apply_id = ? " , applyID ) . Find ( & out ) . Error
2022-09-21 06:30:52 +00:00
if err != nil {
zap . L ( ) . Error ( "ArtShowList_apply Find err" , zap . Error ( err ) )
return
}
return
}
2022-09-22 06:23:56 +00:00
func ArtShowListByApplyStatus ( in * artShow . ShowListReq ) ( err error , total int64 , out [ ] * model . ArtShow ) {
2022-09-21 06:30:52 +00:00
out = make ( [ ] * model . ArtShow , 0 )
tx := db . DbArtShow . Table ( "art_show as a" )
tx . Joins ( " left join show_rel as b on b.show_id = a.id" ) . Where ( "a.is_show = ?" , in . IsShow )
err = tx . Count ( & total ) . Error
if err != nil {
zap . L ( ) . Error ( "ArtShowListByApplyStatus Count err" , zap . Error ( err ) )
return
}
err = tx . Offset ( int ( ( in . Page - 1 ) * in . PageSize ) ) .
Limit ( int ( in . PageSize ) ) . Find ( & out ) . Error
if err != nil {
zap . L ( ) . Error ( "ArtShowListByApplyStatus Find err" , zap . Error ( err ) )
return
}
return
}
2022-10-27 08:06:36 +00:00
func DelArtShow ( tx * gorm . DB , show_id int64 ) ( err error ) {
err = tx . Where ( "id = ?" , show_id ) . Delete ( & model . ArtShow { } ) . Error
2022-09-21 06:30:52 +00:00
if err != nil {
zap . L ( ) . Error ( "ArtShow delete err" , zap . Error ( err ) )
return
}
return
}
func QueryArtShow ( id uint ) ( err error , out * model . ArtShow ) {
err = db . DbArtShow . Model ( & model . ArtShow { } ) . Where ( "id = ?" , id ) . Find ( & out ) . Error
if err != nil {
zap . L ( ) . Error ( "ArtShow Find err" , zap . Error ( err ) )
return
}
2022-10-27 08:06:36 +00:00
log . Println ( out )
2022-09-21 06:30:52 +00:00
return
}
2022-10-27 08:06:36 +00:00
func ShowStatistical ( isShow int32 ) ( err error , artistNum , packageNum , totalNum , NotShowNum , ShowHisNum int64 ) {
2022-09-21 06:30:52 +00:00
2022-10-27 08:06:36 +00:00
artistNum = 0
2022-09-21 06:30:52 +00:00
err = db . DbArtShow . Model ( & model . ArtShow { } ) . Distinct ( "artist_name" ) . Where ( "is_show = ?" , isShow ) . Count ( & artistNum ) . Error
if err != nil {
zap . L ( ) . Error ( "ShowStatistical artistNum count err" , zap . Error ( err ) )
return
}
2022-10-27 08:06:36 +00:00
packageNum = 0
2022-09-21 06:30:52 +00:00
err = db . DbArtShow . Model ( & model . ArtShow { } ) . Where ( "is_show = ?" , isShow ) . Count ( & packageNum ) . Error
if err != nil {
zap . L ( ) . Error ( "ShowStatistical packageNum count err" , zap . Error ( err ) )
return
}
2022-10-27 08:06:36 +00:00
totalNum = 0
err = db . DbArtShow . Model ( & model . ArtShow { } ) . Count ( & totalNum ) . Error
if err != nil {
zap . L ( ) . Error ( "ShowStatistical totalNum count err" , zap . Error ( err ) )
return
}
NotShowNum = 0
err = db . DbArtShow . Table ( "art_show as a" ) . Distinct ( "b.artist_name" ) . Joins ( " join artwork_price as b on b.show_id = a.id" ) . Where ( "a.is_show in (1,2)" ) . Count ( & NotShowNum ) . Error
if err != nil {
zap . L ( ) . Error ( "ShowStatistical totalNum count err" , zap . Error ( err ) )
return
}
ShowHisNum = 0
err = db . DbArtShow . Table ( "art_show as a" ) . Distinct ( "b.artist_name" ) . Joins ( " join artwork_price as b on b.show_id = a.id" ) . Where ( "a.is_show = 3 " ) . Count ( & ShowHisNum ) . Error
if err != nil {
zap . L ( ) . Error ( "ShowStatistical totalNum count err" , zap . Error ( err ) )
return
}
2022-09-21 06:30:52 +00:00
return
}