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"
2022-11-11 05:13:19 +00:00
"fonchain-artshow/pkg/m"
uuid "github.com/satori/go.uuid"
2022-09-21 06:30:52 +00:00
"go.uber.org/zap"
"gorm.io/gorm"
2022-11-11 05:13:19 +00:00
"strings"
"time"
2022-09-21 06:30:52 +00:00
)
func SaveArtShow ( tx * gorm . DB , artShow * model . ArtShow ) ( err error ) {
2022-11-11 05:13:19 +00:00
uid , err := uuid . NewV4 ( )
if err != nil {
return nil
2022-09-21 06:30:52 +00:00
}
2022-11-11 05:13:19 +00:00
artShow . ShowUID = uid . String ( )
artShow . ShowSeq = strings . Join ( [ ] string { m . ARTSHOW_PREFIX , time . Now ( ) . Format ( "20060102150405" ) } , "" )
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-11-11 05:13:19 +00:00
func UpdateArtShow ( tx * gorm . DB , artShow * model . ArtShow ) ( err error ) {
err = tx . Model ( & model . ArtShow { } ) . Omit ( "show_uid" ) . Where ( "show_uid = ?" , artShow . ShowUID ) . Updates ( artShow ) . Error
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 { } )
2022-11-11 05:13:19 +00:00
if in . ArtistUID != "" {
queryDB = queryDB . Where ( "artist_uid = ? " , in . ArtistUID )
2022-09-21 06:30:52 +00:00
}
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
}
2022-11-11 05:13:19 +00:00
func ArtShowList_apply ( applyUID string ) ( err error , out [ ] * model . ArtShow ) {
2022-09-21 06:30:52 +00:00
out = make ( [ ] * model . ArtShow , 0 )
2022-11-11 05:13:19 +00:00
err = db . DbArtShow . Table ( "art_show as a " ) . Distinct ( "a.show_uid" ) . Select ( "a.show_uid,a.show_seq,a.show_name,a.artist_name,a.artist_uid,a.artwork_num,a.ruler,a.price,a.reward,a.show_time,a.is_show" ) . Joins ( " right join show_rel as b on a.show_uid = b.show_uid" ) . Where ( "b.apply_uid = ? " , applyUID ) . 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" )
2022-11-11 05:13:19 +00:00
tx . Joins ( " left join show_rel as b on b.show_uid = a.show_uid" ) . Where ( "a.is_show = ?" , in . IsShow )
2022-09-21 06:30:52 +00:00
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-11-11 05:13:19 +00:00
func DelArtShow ( tx * gorm . DB , show_uid string ) ( err error ) {
err = tx . Where ( "show_uid = ?" , show_uid ) . 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
}
2022-11-11 05:13:19 +00:00
func QueryArtShow ( show_uid string ) ( err error , out * model . ArtShow ) {
err = db . DbArtShow . Model ( & model . ArtShow { } ) . Where ( "show_uid = ?" , show_uid ) . Find ( & out ) . Error
2022-09-21 06:30:52 +00:00
if err != nil {
zap . L ( ) . Error ( "ArtShow Find err" , zap . Error ( err ) )
return
}
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
2022-11-11 05:13:19 +00:00
err = db . DbArtShow . Table ( "art_show as a" ) . Distinct ( "a.artist_uid" ) . Joins ( " join artwork_price as b on b.show_uid = a.show_uid" ) . Where ( "a.is_show in (1,2)" ) . Count ( & NotShowNum ) . Error
2022-10-27 08:06:36 +00:00
if err != nil {
zap . L ( ) . Error ( "ShowStatistical totalNum count err" , zap . Error ( err ) )
return
}
ShowHisNum = 0
2022-11-11 05:13:19 +00:00
err = db . DbArtShow . Table ( "art_show as a" ) . Distinct ( "a.artist_uid" ) . Joins ( " join artwork_price as b on b.show_uid = a.show_uid" ) . Where ( "a.is_show = 3 " ) . Count ( & ShowHisNum ) . Error
2022-10-27 08:06:36 +00:00
if err != nil {
zap . L ( ) . Error ( "ShowStatistical totalNum count err" , zap . Error ( err ) )
return
}
2022-09-21 06:30:52 +00:00
return
}