2022-09-21 06:30:52 +00:00
package dao
import (
2022-11-30 03:01:14 +00:00
"fmt"
2022-09-21 06:30:52 +00:00
"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-11-30 03:01:14 +00:00
func ArtShowList ( in * artShow . ShowListReq ) ( err error , total int64 , out [ ] * model . ArtShowRes ) {
queryDB := db . DbArtShow . Table ( "art_show as a " ) . Distinct ( "a.id" ) .
Select ( "a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.is_show, c.address ,c.show_time" ) .
Joins ( "left join artwork_price as b on a.show_uid = b.show_uid" ) .
Joins ( "left join show_rel as c on a.show_uid = c.show_uid " )
2022-09-21 06:30:52 +00:00
2022-11-30 03:01:14 +00:00
if in . Name != "" {
queryDB . Where ( " a.artist_name like ? or a.show_name like ? or b.artwork_name like ? " , "%" + in . Name + "%" , "%" + in . Name + "%" , "%" + in . Name + "%" )
2022-09-21 06:30:52 +00:00
}
2022-09-28 06:58:19 +00:00
if in . IsShow != 0 {
2022-11-30 03:01:14 +00:00
queryDB . Where ( " a.is_show = ?" , in . IsShow )
}
if in . StartTime != "" && in . EndTime != "" {
queryDB . Where ( "convert(a.create_time, date) between ? and ?" , in . StartTime , in . EndTime )
2022-09-28 06:58:19 +00:00
}
2022-09-21 06:30:52 +00:00
2022-11-30 03:01:14 +00:00
out = make ( [ ] * model . ArtShowRes , 0 )
err = queryDB . Where ( "a.deleted_at is null" ) . Offset ( int ( ( in . Page - 1 ) * in . PageSize ) ) .
Limit ( int ( in . PageSize ) ) . Find ( & out ) . Error
2022-09-21 06:30:52 +00:00
if err != nil {
2022-11-30 03:01:14 +00:00
zap . L ( ) . Error ( "ArtShowList Find err" , zap . Error ( err ) )
2022-09-21 06:30:52 +00:00
return
}
2022-11-30 03:01:14 +00:00
err = queryDB . Where ( "a.deleted_at is null" ) . Group ( "a.id" ) . Count ( & total ) . Error
2022-09-21 06:30:52 +00:00
if err != nil {
2022-11-30 03:01:14 +00:00
zap . L ( ) . Error ( "ArtShowList Count err" , zap . Error ( err ) )
2022-09-21 06:30:52 +00:00
return
}
return
}
2022-11-30 03:01:14 +00:00
func ArtShowList_apply ( applyUID string ) ( err error , out [ ] * model . ArtShowRes ) {
out = make ( [ ] * model . ArtShowRes , 0 )
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.create_time, a.is_show, b.address ,b.show_time" ) . 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-11-30 03:01:14 +00:00
func ArtShowListByApplyStatus ( in * artShow . ShowListReq ) ( err error , total int64 , out [ ] * model . ArtShowRes ) {
out = make ( [ ] * model . ArtShowRes , 0 )
queryDB := db . DbArtShow . Table ( "art_show as a" ) . Select ( "a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.is_show, b.address ,b.show_time" ) . Joins ( " left join show_rel as b on b.show_uid = a.show_uid" ) . Where ( "a.is_show = ?" , in . IsShow )
err = queryDB . Count ( & total ) . Error
2022-09-21 06:30:52 +00:00
if err != nil {
zap . L ( ) . Error ( "ArtShowListByApplyStatus Count err" , zap . Error ( err ) )
return
}
2022-11-30 03:01:14 +00:00
err = queryDB . Offset ( int ( ( in . Page - 1 ) * in . PageSize ) ) .
2022-09-21 06:30:52 +00:00
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-30 03:01:14 +00:00
func QueryArtShow ( show_uid string ) ( err error , out * model . ArtShowRes ) {
err = db . DbArtShow . Table ( "art_show as a " ) . Select ( "a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.is_show, b.address ,b.show_time" ) . Joins ( "left join show_rel as b on a.show_uid = b.show_uid" ) . Where ( "a.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
}
2022-11-30 03:01:14 +00:00
fmt . Printf ( "%+v\n" , 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
2022-11-30 03:01:14 +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) and a.deleted_at is null" ) . 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-30 03:01:14 +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 and a.deleted_at is null" ) . 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
}
2022-11-30 03:01:14 +00:00
func QueryArtShowForArtwork ( in * artShow . ShowListForArtworkReq ) ( err error , total int64 , out [ ] * model . ArtShowRes ) {
// 查询 画家已出展 画展包
queryDB := db . DbArtShow . Table ( "art_show as a " ) . Select ( "a.show_uid, a.show_seq, a.show_name, a.artist_name, a.artist_uid, a.artwork_num, a.ruler, a.price, a.create_time, a.is_show, b.address ,b.show_time" ) . Joins ( "left join show_rel as b on a.show_uid = b.show_uid" ) . Where ( "a.artist_uid = ? and a.is_show = ?" , in . ArtistUID , 3 )
err = queryDB . Count ( & total ) . Error
if err != nil {
zap . L ( ) . Error ( "QueryArtShowForArtwork count err" , zap . Error ( err ) )
return
}
out = make ( [ ] * model . ArtShowRes , 0 )
err = queryDB . Offset ( int ( ( in . Page - 1 ) * in . PageSize ) ) .
Limit ( int ( in . PageSize ) ) . Find ( & out ) . Error
if err != nil {
zap . L ( ) . Error ( "QueryArtShowForArtwork err" , zap . Error ( err ) )
return
}
return
}